0

rets-client我从 npm 安装了这个包。

我跑了其他query并得到meta了它的工作正常但是当我尝试这样做时photo streaming example我不断收到错误

Error: RetsReplyError: RETS Server reply while attempting getObject - ReplyCode 20403 (NO_OBJECT_FOUND); ReplyText: No Object Found [260978536:1].

我按照示例中的代码
https://github.com/sbruno81/rets-client#photo-streaming-example

try {
    rets.getAutoLogoutClient(clientSettings, async (client) => {
        const photoIds = {
            '260978536': '*',    // get all photos for listingId 260978536
        };

        const photoStream = await client.objects.stream.getObjects('Property', 'Photo', photoIds, {
            alwaysGroupObjects: true,
            ObjectData: '*'
        });

        console.log("========================================");
        console.log("========  Photo Stream Results  ========");
        console.log("========================================");
        return new Promise(function (resolve, reject) {
            let i = 0;
            photoStream.objectStream.on('data', function (event) {
                try {
                    if (event.type === 'headerInfo') {
                        console.log('   ~~~~~~~~~ Header Info ~~~~~~~~~');
                        outputFields(event.headerInfo);
                        return
                    }
                    console.log("   -------- Photo " + (i + 1) + " --------");
                    if (event.type === 'error') {
                        console.log("      Error: " + event.error);
                    } else if (event.type === 'dataStream') {
                        outputFields(event.headerInfo);
                        fileStream = fs.createWriteStream(
                            "/tmp/photo_" + event.headerInfo.contentId + "_" + event.headerInfo.objectId + "." + event.headerInfo.contentType.match(/\w+\/(\w+)/i)[1]);
                        event.dataStream.pipe(fileStream);
                    }
                    i++;
                } catch (err) {
                    reject(err);
                }
            });
            photoStream.objectStream.on('error', function (errorInfo) {
                reject(errorInfo);
            });
            photoStream.objectStream.on('end', function () {
                resolve();
            });
        })
    })
} catch (errorInfo) {
    const error = errorInfo.error || errorInfo;
    console.log("   ERROR: issue encountered:");
    outputFields(error);
    console.log('   ' + (error.stack || error).replace(/\n/g, '\n   '));
}

我使用该照片 ID 的原因是因为当我进行查询时,我可以看到该列表 ID 具有PictureCount20不知何故它没有给我找到任何对象。

相同 id 的示例列表查询返回

{ L_Area: 'Islands-Van. & Gulf',
       L_ListingID: '260978536',
       L_Status: 'Expired',
       L_PictureCount: '20',
       L_Last_Photo_updt: '2015-07-15T04:27:00',
       L_DisplayId: 'V1064230' }

有人可以帮我看看我在哪里做错了吗?提前感谢您的任何帮助和建议。

PS 我也试过用L_ListingIDasL_StatusActive不是,Expired但结果是一样的

4

2 回答 2

1

您连接的 RETS 服务器不允许下载图像,因为它是一个临时服务器,他们希望保持较低的带宽。您必须针对他们的生产服务器测试您的代码,或者要求 MLS 允许从他们的暂存环境下载。

于 2019-04-10T18:13:51.453 回答
1

从 RETS 服务器下载图片时的注意事项:

  1. 确保您有权访问列表图像。
  2. 其次检查您是否只有图像下载访问权限或公共图像 URL 访问权限(CDN 链接)?取决于 RETS 服务器,将授予一个或两个权限。
  3. 要下载图像/图像 URL,您需要 photoId。在这里,“listingId”或“listingKey”都可以工作,再次取决于 RETS 服务器。所以尝试两者。
  4. 您可以访问多种图像类型,例如缩略图、正常尺寸和高分辨率。这也可以在“getObject”方法中提及。
  5. 下载图像/图像 URL 后,经常交叉检查照片修改时间戳字段以识别对图像/图像 URL 的任何修改。
  6. 一些 RETS 服务器将通过 Media、Tour 等资源提供图像 URL 作为数据。
于 2019-05-10T07:05:43.567 回答