希望制作一个 twitter 机器人,它将按顺序从文件夹中发布图像。使用 node.js

Posted

技术标签:

【中文标题】希望制作一个 twitter 机器人,它将按顺序从文件夹中发布图像。使用 node.js【英文标题】:looking to make a twitter bot that will post images from a folder in order. using node.js 【发布时间】:2020-08-11 19:03:53 【问题描述】:

所以基本上我一直在关注在线指南,该指南向我展示了如何创建一个推特机器人,该机器人将从我的电脑上的一个文件夹中发布图像。我有一个很大的照片库,我想发推文,但是,本指南只是向我展示了一种以随机顺序发推文的方法。我希望能够按照照片在文件夹内的排序顺序发布照片。这是我正在使用的。我想问题在于[Math.floor(Math.random() * images.length)]; 行。如果这是一个愚蠢的问题,我道歉。我对这一切都很陌生。

var Twit = require('twit')

var fs = require('fs'),
    path = require('path'),
    Twit = require('twit'),
    config = require(path.join(__dirname, 'config.js'));

var T = new Twit(config);

function random_from_array(images)
  return images[Math.floor(Math.random() * images.length)];


function upload_random_image(images)
  console.log('Opening an image...');
  var image_path = path.join(__dirname, '/images/' + random_from_array(images)),
      b64content = fs.readFileSync(image_path,  encoding: 'base64' );

  console.log('Uploading an image...');

  T.post('media/upload',  media_data: b64content , function (err, data, response) 
    if (err)
      console.log('ERROR:');
      console.log(err);
    
    else
      console.log('Image uploaded!');
      console.log('Now tweeting it...');

      T.post('statuses/update', 
        media_ids: new Array(data.media_id_string)
      ,
        function(err, data, response) 
          if (err)
            console.log('ERROR:');
            console.log(err);
          
          else
            console.log('Posted an image!');
          
        
      );
    
  );

【问题讨论】:

到底发生了什么?图片没有发布吗? 图片正在发布,但它们是以随机顺序发布的。我希望能够按照它们在我的图像文件夹中列出的顺序发布推文。 你帖子的标题说你想按顺序发布,但功能说是随机的。 是的,这就是我正在关注的教程所面临的问题。如何更改代码以便他们按顺序发布?我分享的代码是教程告诉我发布的,但显然我希望它不是随机的。 【参考方案1】:

您希望机器人按顺序发布下一张图片,而不是随机发布一张,这需要对函数 upload_random_image() 进行一些重组,我将复制粘贴该函数,添加一个参数,然后重命名新函数 upload_all (images, n) 它看起来像这样:

function upload_all(images, n)
  console.log('Opening an image...');
  var image_path = path.join(__dirname, '/images/' + n),
      b64content = fs.readFileSync(image_path,  encoding: 'base64' );

  console.log('Uploading an image...');

  T.post('media/upload',  media_data: b64content , function (err, data, response) 
    if (err)
      console.log('ERROR:');
      console.log(err);
    
    else
      console.log('Image uploaded!');
      console.log('Now tweeting it...');

      T.post('statuses/update', 
        media_ids: new Array(data.media_id_string)
      ,
        function(err, data, response) 
          if (err)
            console.log('ERROR:');
            console.log(err);
          
          else
            console.log('Posted an image!');
          
        
      );
    
  );
  if ( n < images.length()-1)
    return upload_all(images, n++);
  

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于希望制作一个 twitter 机器人,它将按顺序从文件夹中发布图像。使用 node.js的主要内容,如果未能解决你的问题,请参考以下文章

以简单的方式或工具在 Twitter(机器人)中自动回复推文?

使用自然语言处理从推文中提取地址

Rails 5 - 在不同的URL上呈现2个不同的发布顺序

如何使用机器人更改用户的 Twitter 名称?

Python 脚本,用于转发特定推文的 twitter 机器人

如何从机器人聊天中获取 Twitter OAuth 访问令牌/秘密?