电子说
是否正在寻找一种使Twitter更有用的方法(如果仅对其他人有用)?一种方法是创建一个自动的Twitter机器人,该机器人在推特上添加有用的描述。您可以手动执行此操作…,也可以使用Node.js进行构建并将其托管在Raspberry Pi上。继续阅读以了解操作方法。
为什么要构建Twitter Bot?
如果您曾经在Twitter上看到过发布照片,事实,卡通等的帐户,那么绝大多数情况下这些都是自动化的。这是一种吸引对同一主题感兴趣的人群的好方法。
但是,除了转发和关注之外,还有另一个原因。构建Twitter机器人将教您一些有用的编程技巧。先前我们已经研究了如何使用Python(也在Raspberry Pi上)构建基本的Twitter机器人,但是这次我们采用了另一种方法。
在此项目中,我们将使用Node.js在Raspberry Pi上构建照片发布机器人。这些照片将是第一次世界大战的照片,并附有简短的句子和署名。这些信息将存储在一个数组中,即一个基本数据库。
入门:构建数据库
如果您想构建照片发布机器人,则需要从以下步骤开始收集您要共享的图像。这些应该是您自己的图像,也可以是您根据知识共享或其他开放源代码许可获得的图像。
您还应该留意图像的归属和其他信息。僵尸程序启动并运行后,我们将在稍后返回该信息。
在Raspbian上安装Node.js
首先要安装Node.js。您应该已经安装了Raspbian,并已经在运行Raspberry Pi。对于此项目,我们建议使用Raspberry Pi 2或更高版本。该项目已在Raspberry Pi 3 B +上进行了测试。
在终端中(或通过SSH),更新系统软件包列表,并升级到最新版本:
sudo apt-get update
sudo apt-get dist-upgrade
按照屏幕上的提示进行操作,然后等待您的Pi更新。完成后,使用
sudo reboot
重新启动。完成后,使用curl下载Node.js:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
下一步,使用
sudo apt-get install -y nodejs
进行安装。完成所有操作后,运行检查以确保软件已正确安装。最简单的方法是检查版本号:
node -v
响应应该类似于v8.11.3(或更高版本)。如果您看到类似的内容,则可以确信可以使用Node.js。
构建您的Twitter Bot
下一步是输入将创建以下内容的代码:机器人。首先创建一个目录:
mkdir twitterbot
然后,将其更改为您的机器人的新目录:
cd twitterbot
在这里,创建一个名为server.js的文件
sudo nano server.js
在此文件中,输入一行:
console.log(‘I am a Twitter bot!’);
按 Ctrl + X 保存并退出,然后运行脚本:
node ‘/home/pi/twitterbot/server.js’
这应该返回短语“我是Twitter机器人!” 。现在,您已经确认它可以运行了,是时候使用 npm ( Node Package Manager )安装Twit库了。再次输入以下内容以确保已安装:
npm -v
再次,您应该会看到显示的版本号。
然后执行以下操作:
npm init
这首先提示您输入有关正在创建的Node.js应用程序的信息。显示默认选项(像这样),因此您只需点击Enter即可接受它们。您也可以选择输入自己的详细信息。配置结束后,将要求您单击“是”确认详细信息。
下一步是从npm安装Twit模块。
npm install twit --save
等待文件下载到node_modules子目录中。完成后,再次在nano中打开server.js文件。
sudo nano server.js
在这里,删除先前输入的命令,将其替换为:
var fs = require(‘fs’),
path = require(‘path’),
Twit = require(‘twit’),
config = require(path.join(__dirname, ‘config.js’));
像以前一样保存并退出。
创建一个Twitter应用
要构建一个有效的Twitter机器人,您需要创建一个Twitter应用。这是一个简单的过程,需要您首先注册一个新的Twitter帐户。请注意,这还需要一个电话号码来验证该帐户,完成此操作后,请前往developer.twitter.com来创建该应用程序。
如果您没有开发人员帐户,则可能需要一些时间,因为需要填写一定数量的表格。这是Twitter为避免垃圾邮件而采取的步骤,请花点时间并准确回答问题。
点击创建应用,然后根据要求添加详细信息。在撰写本文时,开发人员系统正在进行大修,因此您可能必须等待几天(并回答一些其他问题)。
下一步,切换到密钥和令牌标签,然后在权限下找到访问权限,并确保将其设置为读取并撰写(如果没有,请使用编辑)。然后切换到“密钥和令牌”并记下以下内容:
消费者密钥
消费者秘密
“在访问权限下”令牌,单击创建以生成:
访问令牌
访问令牌密钥
这些是API密钥
返回命令行,在nano中创建config.js:
sudo nano config.js
添加以下
var config = {
consumer_key: ‘XXXXX’,
consumer_secret: ‘XXXXX’,
access_token: ‘XXXXX’,
access_token_secret: ‘XXXXX’
}
module.exports = config;
在其读为“ XXXXX”的地方,替换您自己的相应API密钥详细信息。
保存并退出,然后打开server.js。
sudo nano server.js
在此处,在文件末尾添加以下几行:
var T = new Twit(config);
T.post(‘statuses/update’, { status: ‘My first tweet!’ }, function(err, data, response) {
console.log(data)
});
应如下所示:
再次保存并退出,然后在命令行中输入
node server.js
在浏览器中打开您的Twitter帐户以查看结果:
您已经确认该机器人正在发推文,因此该该做点事情了!
创建图像文件夹
要发送照片,请将收集的图像复制到文件夹中(通常命名为图像)。从大约一打开始。
接下来,返回到server.js文档:
sudo nano server.js
在这里,删除发送推文的代码,即T.post(‘statuses/update’)开头的行。
接下来,将其替换为名为 random_from_array 的函数。这将从图像文件夹中随机选择图像。
function random_from_array(images){
return images[Math.floor(Math.random() * images.length)];
}
完成此操作后,您需要添加第二个功能, upload_random_image :
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!’);
}
}
);
}
});
}
此功能从images文件夹中随机选择一个图像,选择后将使用媒体/上传API将其上传到Twitter。
接下来,添加以下代码。这将找到images目录,并从中获取一张图像,每60秒随机发布一张。您可以(并且应该)编辑此时间,该时间在代码中用数字60000表示。建议使用更大的间隙。
setInterval(function(){
upload_random_image(images);
}, 60000);
}
});
使用 Ctrl + X ,然后单击是进行保存。 (您可以在GitHub上找到该项目的完整代码)。
只需使用一次 node server.js 命令,就会提示照片开始发推! (如果您需要结束帖子,请按 Ctrl + Z 来取消server.js脚本。)
向照片推文中添加文字
如果您需要在图像中添加文本,可以使用数组来完成。该数组将引用图像的文件名,并列出应添加的文本。例如,您可以为未拍摄的图片添加归因。或者,您可以添加一些事实或报价。
通过创建images.js
sudo nano images.js
在这里,添加以下代码。这是一个数组,具有两个元素,文件和源。它们保存图像的文件名和属性(通常是URL)。
var images = [
{
file: ‘image0001.png’,
source: ‘http://www.example.com/image0001.png’
},
{
file: ‘image0002.png’,
source: ‘http://www.example.com/image0002.png’
},
]
根据需要对每个图像重复此操作,然后使用以下命令结束images.js文件:
module.exports = images;
保存并关闭文件,然后再次打开server.js,并将其添加到变量列表中:
images = require(path.join(__dirname, ‘images.js’));
保存并退出,然后再次使用 node server.js 命令重新启动Twitter机器人。
您还可以使用“源”字段添加一些文本,解释图片的背景。
您的第一个Twitter Bot,准备重用!
现在,您应该已经启动并运行了一个自动发布的Twitter bot,可以共享照片,事实和给定主题的属性。
总而言之,过程是:
收集照片
安装Node.js
构建您的Twitter机器人
在Twitter上申请开发人员身份
创建一个Twitter应用
添加归因数组
开始发推文!
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !