我从Reddit获取一个JSON文件,并使用TWIT库在Twitter上使用相同的标题和图像重新发布每个帖子。但是我遇到的问题是图像要么与标题不对应,要么图像下载了一半(看起来扭曲)并跨越多个帖子:
例如: https://twitter.com/LCHSHITPOST
我猜这与在发送推文之前图像没有完全下载这一事实有关(调用makeImgTweet函数)。
此代码段获取json文件,然后遍历帖子以获取标题和图片网址。然后它从url下载图像并调用makeImgTweet函数。
var url = "https://www.reddit.com/r/teenagers/top.json?t=all";
request({
url: url,
json: true
}, function (error, response, file) {
if (!error && response.statusCode === 200) {
// loop through posts in JSON file
// makes image tweet with title and image url
(file.data.children).forEach(function(post) {
var picStream = fs.createWriteStream('image.jpg');
picStream.on('close', function() {
console.log('file done');
makeImgTweet(post.data.title);
});
request(post.data.url).pipe(picStream);
})
}
})
图像的路径始终相同,因为我不想保留它们。
makeImgTweet()函数:
function makeImgTweet(text) {
var b64content = fs.readFileSync("./image.jpg", { encoding: 'base64' })
// first we must post the media to Twitter
Twit.post('media/upload', { media_data: b64content }, function (err, data, response) {
// now we can assign alt text to the media, for use by screen readers and
// other text-based presentations and interpreters
if (!err) {
var mediaIdStr = data.media_id_string;
var altText = text;
var meta_params = { media_id: mediaIdStr, alt_text: { text: altText } };
Twit.post('media/metadata/create', meta_params, function (err, data, response) {
if (!err) {
// now we can reference the media and post a tweet (media will attach to the tweet)
var params = { status: text, media_ids: [mediaIdStr] }
Twit.post('statuses/update', params, function (err, data, response) {
if (!err) {
console.log(data)
}
})
} else {
console.log(err);
}
})
} else {
console.log(err);
}
})
}