以下のコードを使用して、nodejs (cheerio を使用) を使用して URL からオープン グラフ メタデータを取得しようとしています。
私はこれを埋める必要があります: var result={};
for (var ogCounter = 0; ogCounter < metalist.length; ogCounter++) {
if (!utils.isEmpty(metalist[ogCounter].attribs.property) && !utils.isEmpty(metalist[ogCounter].attribs.content)) {
if (metalist[ogCounter].attribs.property.indexOf('og') == 0) {
var ogname = metalist[ogCounter].attribs.property.split(':');
var property = ogname[1];
var content = metalist[ogCounter].attribs.content;
if (utils.isEmpty(result[property])) {
result[property] = content;
} else {
if (result[property].push) {
result[property].push(content);
} else {
result[property] = [result[property], content];
}
}
}
}
}
JSON に変換した結果を入力した後、このコードを使用すると、次のような結果が得られます。
type: "video",
image: "http://i3.ytimg.com/vi/fWNaR-rxAic/mqdefault.jpg",
video: [
"http://www.youtube.com/v/fWNaR-rxAic?version=3&autohide=1",
"application/x-shockwave-flash",
"1920",
"1080"
]
しかし、私が欲しいのは次のようなものです:
type: "video",
image: "http://i3.ytimg.com/vi/fWNaR-rxAic/mqdefault.jpg",
video: {
"http://www.youtube.com/v/fWNaR-rxAic?version=3&autohide=1",
{
type:"application/x-shockwave-flash",
width:"1920",
height:"1080"
}
}
この「if」を試していますが、うまくいきません:
if (utils.isEmpty(result[property])) {
result[property] = content;
} else {
if (result[property].push) {
result[property].push(content);
} else {
var subresult={};
subresult[name[2]]=content;
subresult[property]=result[property] ;
result[property] = subresult;
}
}
すべてのメタを 2 回循環させたくないのですが、javascript と nodejs 関数が苦手です... 何か提案はありますか? ありがとう