0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用树莓派和Node.js构建推文Twitter Bot的照片

454398 来源:网络整理 作者:网络整理 2019-12-02 10:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

是否正在寻找一种使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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    122

    文章

    2069

    浏览量

    109699
  • NODE.JS
    +关注

    关注

    1

    文章

    49

    浏览量

    33866
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于树莓(RaspberryPi)构建高效实时监控系统

    由于树莓体积小、可开发性强等特性,常被用于视频监控场景中,结合 ZeroNews,可实现用户在任意位置都能实时安全得访问视频监控系统。 先决条件:树莓正常连接网络,可访问互联网 第
    的头像 发表于 09-22 15:14 858次阅读
    基于<b class='flag-5'>树莓</b><b class='flag-5'>派</b>(RaspberryPi)<b class='flag-5'>构建</b>高效实时监控系统

    如何使用树莓与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一个树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用树莓
    的头像 发表于 08-14 17:45 957次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>与OpenCV实现面部和运动追踪的云台系统?

    树莓操作系统:版本、特性及设置完整指南!

    树莓操作系统是什么?树莓操作系统是由树莓基金会专为树莓
    的头像 发表于 07-28 18:26 821次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>操作系统:版本、特性及设置完整指南!

    树莓6 传闻:发布日期与规格!

    每当我想再为我的收藏增添一款树莓时,总会在是立即购买还是等待硬件更强大的下一代之间犹豫不决。但新树莓型号的发布往往容易被错过,尤其是在你的信息流被病毒式传播的猫咪视频占据时。因此,
    的头像 发表于 07-11 16:21 1344次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>6 传闻:发布日期与规格!

    树莓小技巧:无需键盘或显示器,如何通过WiFi设置树莓

    树莓是一款小巧便携的USB供电计算机,可以隐藏起来用于小型项目,如网络服务器或家庭自动化。通常,设置树莓需要键盘和显示器来编辑和查看树莓
    的头像 发表于 06-26 15:41 1043次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>小技巧:无需键盘或显示器,如何通过WiFi设置<b class='flag-5'>树莓</b><b class='flag-5'>派</b>?

    树莓分类器:用树莓识别不同型号的树莓

    在本教程系列的第一部分中,您将学习如何使用树莓AI摄像头来检测不同的树莓型号。本系列由DavidPlowman创建,他是树莓
    的头像 发表于 06-13 16:39 984次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>分类器:用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>识别不同型号的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>!

    树莓“揪出”家里的耗电怪兽!

    在本应用中,我们将使用树莓设置一个CE电流监测器,并通过网页界面显示电路的电流读数。本项目使用的组件硬件组件树莓2ModelBx112通道20安培电流监测控制器x1项目背景介绍在本
    的头像 发表于 06-04 15:33 1142次阅读
    用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>“揪出”家里的耗电怪兽!

    HarmonyOS5云服务技术分享--ArkTS开发Node环境

    ✨ 你好呀,开发者小伙伴们!今天我们来聊聊如何在HarmonyOS(ArkTS API 9及以上)中玩转云函数,特别是结合Node.js和HTTP触发器的开发技巧。文章会手把手带你从零开始,用最接地
    发表于 05-22 17:21

    树莓“吉尼斯世界记录”:将树莓的性能发挥到极致的项目!

    树莓是一款功能强大、体积小巧且高度可定制的设备,多年来,我们见证了它被应用于众多领域。无论是将其装入3D打印的经典游戏机外壳,还是简单地将它隐藏起来作为家庭文件服务器,我们都报道过在社区里用树莓
    的头像 发表于 05-22 16:53 1199次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>“吉尼斯世界记录”:将<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的性能发挥到极致的项目!

    树莓 Zero 打造的智能漫游车!

    使用PXFMini和树莓Zero打造您自己的自主漫游车。本项目所用组件硬件组件ErleRoboticsPXFmini×1树莓Zero×1树莓
    的头像 发表于 05-13 16:39 869次阅读
    用 <b class='flag-5'>树莓</b><b class='flag-5'>派</b> Zero 打造的智能漫游车!

    rpi-image-gen:树莓软件镜像构建的终极神器!

    树莓设备上,软件的多样性令人印象深刻。树莓操作系统虽然适用于许多场景,但我们深知它并非万能,尤其在一些特定用途的产品中更是如此。如果您正在开发嵌入式系统或工业控制器,您需要对设备
    的头像 发表于 04-08 15:43 654次阅读
    rpi-image-gen:<b class='flag-5'>树莓</b><b class='flag-5'>派</b>软件镜像<b class='flag-5'>构建</b>的终极神器!

    树莓派上构建和部署 Node.js 项目

    探索在RaspberryPi上构建和部署Node.js项目的最佳实践。通过我们的专业提示和技巧,克服常见挑战,使您的项目顺利运行。去年圣诞节,我收到了一份极其令人着迷的礼物,它占据了我许多周末的时间
    的头像 发表于 03-25 09:44 511次阅读
    在<b class='flag-5'>树莓</b>派上<b class='flag-5'>构建</b>和部署 <b class='flag-5'>Node.js</b> 项目

    仅仅使用代码,就能点亮树莓的 GPIO 世界

    RaspberryPi的一个流行应用是构建Web服务器。为此,我们可以使用不同的技术,如Python、Node.JS甚至PHP。由于RaspberryPi的绝大多数脚本都是用Python编写的,因此
    的头像 发表于 03-25 09:31 486次阅读
    仅仅使用代码,就能点亮<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的 GPIO 世界

    【干货】什么是Node-RED?一带你了解!

    一什么是Node-RED?首先我们来认识一下什么是Node-RED。Node-RED是一个基于Node.js的开源可视化编程工具,于2013年由IBM公司推出。它可以通过浏览器的图形化
    的头像 发表于 03-13 19:32 1513次阅读
    【干货】什么是<b class='flag-5'>Node</b>-RED?一<b class='flag-5'>文</b>带你了解!

    Bun 1.2震撼发布:全力挑战Node.js生态的JavaScript运行时新星

    了与 Node.js 的兼容性,还为开发者带来了内置的数据库支持和云服务集成能力,进一步强化了其“全能工具包”的定位。Node.js 兼容性获得突破性进展在此次更新中,最引人注目的是 Bun 在 Node.js 兼容性
    的头像 发表于 01-24 10:42 1322次阅读
    Bun 1.2震撼发布:全力挑战<b class='flag-5'>Node.js</b>生态的JavaScript运行时新星