rets-client 无法获取照片 ReplyCode 20403 (NO_OBJECT_FOUND)

rets-client cannot get photo ReplyCode 20403 (NO_OBJECT_FOUND)

我从 npm 安装了 rets-client 包。

我 运行 其他 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

的示例列表查询 return
{ 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' }

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

P.S。我也尝试使用一个 L_ListingIDL_Status 作为 Active 而不是 Expired 但结果是相同的

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

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

  1. 确保您有权访问列表图像。
  2. 其次检查您是否有图像下载权限或public图像url访问权限(CDN link)?取决于 RETS 服务器将授予一个或两个权限。
  3. 要下载 images/imageURLs,您需要照片 ID。这里 "listingId" 或 "listingKey" 都可以工作,同样取决于 RETS 服务器。所以两者都试试。
  4. 您可以访问多种图像类型,例如缩略图、正常尺寸和高分辨率。您也可以在 "getObject" 方法中提及。
  5. 下载 image/imageURL 后,经常交叉检查照片修改时间戳字段以识别对 image/imageURL 的任何修改。
  6. 一些 RETS 服务器将通过媒体、旅游等资源提供图像 URL 作为数据