如何在树莓派上运行 Twitter 机器人?

在这个项目中,我们将探索如何使用 Python 编程语言来建立基本的低成本树莓派 Twitter Bot。

在这个 Twitter 机器人教程中,我们将向您展示如何在实现 Twython 软件包的同时编写脚本,并且您会惊讶于它的设置如此简单。我们还将探索如何使用 Twython 软件包及其主要功能。

我们还将向您展示如何使 Twitter Bot 鸣叫您的树莓派的 CPU 温度或定期拍摄照片并将其作为鸣叫上传。

您可以使用树莓派 Twitter 机器人自动执行各种不同的任务,这些任务包括从每小时将图片发布到您的 Twitter 帐户以监视植物的生长,甚至从 [连接到树莓派的传感器] 上发布值。 (/categories/raspberry-pi-sensors/)。

设备清单

以下是本树莓派 Twitter Bot 教程中使用的所有点点滴滴。

推荐的

  • 树莓派 2 或 3

  • Micro SD 卡

  • 电源

  • Ethernet Cord 或 * Wifi dongle (Pi 3 内置 WiFi) )

可选的

  • 树莓派外壳

注册 Twitter 应用

1 要使用 Twitter API,我们首先必须将我们的帐户注册为 Twitter 应用程序。该 API 将允许我们使用 REST 接口,并且将用于将新推文发布到 Twitter 并通常与网站进行交互。

登录打算使用的 Twitter 帐户后,请转到 Twitter 的新应用页面。您将看到下面的屏幕。

您需要在此处重点关注的三件事是 ** Name Description Website ,您可以将它们设置为任意值,因为这将不是面向用户的应用程序。 ** 回调 URL ** 可以留空,因为我们不需要任何回调。完成后,您可以单击”** 创建您的 Twitter 应用程序 “按钮。

2 创建 Twitter 应用后,将带您到下面显示的页面,在这里单击 “键和访问令牌 **” 选项卡。

3 在此屏幕上,您将要同时复制消费者密钥 (** API 密钥 **) 和消费者密钥 (** API 密钥 **)。我们需要将它们都连接到 ** Twitter API **。

可以忽略所有者所有者 ID **,因为我们不需要它们与 API 进行交互。

抄下这两个不同的值后,单击” 创建我的访问令牌 “(2 ) 按钮。

4 创建访问令牌后,页面将刷新。向下滚动到页面底部,然后复制访问令牌访问令牌密钥 **。这些是设置树莓派 Twitter Bot 所需的最终值。

为树莓派设置和编写 Twitter Bot

1 借助我们的 API 令牌,我们现在可以开始设置和编写树莓派 Twitter 机器人。我们应该做的第一件事是通过在树莓派上运行以下命令来确保它是最新的。

sudo apt-get update
sudo apt-get upgrade

2 现在更新了树莓派,让我们安装设置树莓派 Twitter Bot 所需的工具。我们将利用 Python 软件包 ** twython ** 与 Twitter 的 API 进行交互。让我们通过在终端中运行以下几个命令来开始安装软件包。

sudo apt-get install python-setuptools
sudo easy _install pip
sudo 点安装 twython 

3 最后,我们可以开始在树莓派上编写 Twitter 机器人了。多亏了我们刚刚安装的 Twython 软件包,这非常容易做到。首先,让我们创建一个目录,在其中保存脚本并通过运行以下命令开始编写脚本。

mkdir〜/twitterbot
光盘〜/twitterbot
sudovimTwitterBot.py

4 现在,在此文件中,让我们编写以下代码。借助 Twython 库,此代码非常简单,在编写代码之前,我们将解释每段代码的功能,因此您可以了解它们的全部工作原理。

** 从 twython 导入 Twython ** –我们使用它来对 Twitter 进行 API 调用,它大大简化了 Python 脚本。

** import sys ** –导入 sys 库,我们使用该库来获取传递给脚本的系统参数。下一段代码定义了我们在本教程前面写下的各种键,并将这些值传递给 Twython 。在继续操作之前,请确保替换 ** CONSUMER \ _KEY CONSUMER \ _SECRET ACCESS \ _KEY ACCESS \ _SECRET 的值。
然后,我们定义我们的变量
API 来存储 Twython 对象 **,并使用所有访问键和使用者键创建该对象。该对象使对 Twitter 的 API 调用变得简单,因为所有数据都已准备就绪,可供使用。

最后,我们向 ** api 对象发出 update \ _status ** API 调用。该调用应将任何传递到脚本中的文本推到您的 Twitter 帐户。

#!/usr/bin/env python
导入系统
从 twython 进口

#定义常量变量,这是我们在教程第一部分中写下的所有数据。
CONSUMER_KEY ='***************您的数据*****************'
CONSUMER_SECRET ='***************您的数据*****************'
ACCESS_KEY ='***************您的数据*****************'
ACCESS_SECRET ='***************您的数据*****************'

#使用所有密钥和机密创建 Twython 对象的副本,以允许简单的命令。
api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)

#使用我们新创建的对象,利用 update _status发送通过 CMD 传递的文本
api.update_status(status = sys.argv [1])

完成编写代码后,请依次按 ** Ctrl + X Y ,然后按 Enter **,保存文件。

5 现在编写了 Twitter Bot 脚本,我们需要使脚本可执行,因此我们可以通过将文本作为参数传递到 Python 文件来发送文本。

sudo chmod + x TwitterBot.py

6 现在,通过运行以下命令来测试 Twitter Bot 脚本,这将确保我们与 Twitter API 建立了有效的连接并确保已编写。命令运行后,检查您的 Twitter 帐户以查看新的推文。

sudo python TwitterBot.py"这是 PiMyLifeUps Twitter机器人的测试推文"

7 一旦您确认该推文已成功发送,我们就可以开始使用 Twitter Bot 做一些有趣的事情,仅发送一条简单的消息毕竟有点无聊。

接下来的两部分将探讨使 Twitter 机器人发送从网络摄像头获取的图像,并向您展示如何使 Twitter 机器人发布树莓派的 CPU 温度。

首先,我们将探讨如何抢夺 CPU 温度,如果您对网络摄像头图片发送更感兴趣,则将其发布到 Twitter 上,然后可以跳至下一页。

鸣叫树莓派的 CPU 温度

1 首先,通过在树莓派上运行以下命令来编辑 Twitter Bot 脚本。

sudovimTwitterBot.py

2 现在,我们已经开火了,我们可以进行以下更改。

导入系统

用。。。来代替

导入操作系统

由于我们不再需要担心会传入参数,因此可以用新的 os 库替换 sys 库。操作系统库允许我们与操作系统本身进行交互,在本例中,我们将使用它来在操作系统上发出命令并获取结果。您将在接下来的许多代码更改中看到这一点。

api.update_status(status = sys.argv [1])

用。。。来代替

cmd ='/opt/vc/bin/vcgencmd measure_temp'
行= os.popen(cmd).readline()。 strip ()
temp = line.split('=')[1] .split("'")[0]
api.update_status(status ='我当前的 CPU 温度是'+ temp +'C')

基本上,这段代码的作用是向 Raspbian 终端发出命令,该命令调用一个二进制文件,该文件返回树莓派的温度。然后,我们处理该文件以获取我们要获取的正确值,然后简单地使用 ** update \ _status ** 命令发送一条包含我们捕获到的值的 Tweet 。

完成编写代码后,请依次按 ** Ctrl + X Y ,然后按 Enter **,保存文件。

3 我们可以通过在树莓派上运行以下命令来测试这段新代码。

python TwitterBot.py

如果您签出自己的 Twitter 帐户,您会注意到您将拥有一条新的推文,其中显示了树莓派的 CPU 温度。

完成此操作后,除非您想了解如何将网络摄像头照片从树莓派发送到 Twitter ,否则您现在可以跳到我们使树莓派 Twitter Bot 自动化的部分。

通过您的树莓派 Twitter Bot 发布网络摄像头照片

1 首先,通过在树莓派上运行以下命令来编辑 Twitter Bot 脚本。

sudovimTwitterBot.py

2 现在,我们可以对我们的漫游器进行以下更改,以使其从附加的视频界面发送图像。

导入系统

用。。。来代替

导入 pygame 
导入 pygame .camera
从 pygame .locals导入*我们用 pygame **替换 sys 库**,因为我们不再需要获取传递到脚本中的任何变量。 ** Pygame **是一个库,其中包含许多旨在编写游戏的 Python 模块。当然,我们不是在写游戏,但是 pygame 有一个非常出色且易于使用的模块来利用相机,因此我们将利用该模块来设置树莓派 Twitter Bot。

api.update_status(status = sys.argv [1])

用。。。来代替

pygame.init()
pygame.camera.init()
cam = pygame.camera.Camera("/dev/video0",(640,480))
cam.start()
图片= cam.get_image()
pygame.image.save(image,'webcam.jpg')

照片=打开('webcam.jpg','rb')
api.update_status_with_media(media = photo,status ='Test 树莓派 Image Bot =>')

我们首先需要将原始 ** update \ _status 调用替换为其他几个调用。我们添加的第一个函数会设置并初始化 pygame 库 **。然后,我们继续启动 pygame 的相机模块,并对其进行设置,以便我们可以从我们的界面之一中读取该模块。

然后,我们将 camera 对象的副本存储在我们的 cam 变量中,将其设置为使用我们的 **/dev/video0 接口,并对从设备捕获的图片使用 640×480 ** 的分辨率。

完成此操作后,我们可以使用新对象并启动相机,这使我们可以从相机中抓取图像,这在下面的代码行中进行。

现在将图像保存到树莓派中,我们需要做的就是使用 open 函数读回该图像,然后使用另一个方便的 Twython 函数。

此功能是 ** update \ _status \ _with \ _media **,它使我们能够发送带有图像的推文,非常适合发送我们刚刚抓取的网络摄像头照片。

完成编写代码后,请依次按 ** Ctrl + X Y ,然后按 Enter **,保存文件。

3 请注意,如果您将树莓派相机用作网络摄像头,请确保运行命令下面,请先运行此脚本。此命令允许它显示为 */dev/video \ ** 界面。

sudo modprobe bcm2835-v4l2

4 我们可以通过运行以下命令来测试这段新代码。

python TwitterBot.py

完成之后,您现在可以跳到我们的 Twitter Bot 自动化部分。

自动化您的 Twitter Bot

1 如果您必须始终手动运行 Twitter Bot,那么它就没有太多用处,要使机器人连续被触发的最佳方法之一就是使用 Cron Jobs。

您可能想知道为什么我们不连续运行脚本,原因有两个,就是不能保证脚本不会在某个时候挂起,另一个原因是它消耗了宝贵的处理周期必须不断循环并检查我们是否应该发布推文。

现在开始运行以下命令来编辑 crontab 。

sudo crontab -e

2 在此文件中,您要将以下文本行添加到文件底部,基本上,此操作将是每小时自动触发一次脚本。

如果您想自己想让脚本触发但又不习惯 Cron Jobs 的时间,可以尝试使用在线工具,例如我们的 Crontab 生成器。它将提供 cron 时间表的人类可读版本。只需将 ** \ */60 \ * \ * \ * \ *** 替换为您生成的值即可。

*/60 * * * * python /home/pi/twitterbot/TwitterBot.py

完成编写代码后,请依次按 ** Ctrl + X Y ,然后按 Enter **,保存文件。

现在,您应该希望拥有一个完全可操作的基本 Twitter Bot,该机器人 Bot 将在每次 cron 任务结束时持续发布。我们希望我们已经对代码进行了足够的解释,并保持了足够的基础,以使您可以轻松地扩展该机器人以执行更复杂的任务。

如果您喜欢本树莓派 Twitter 机器人教程,还可以查看我们的 Twitch 主持人 bot 教程。如果您对本教程有任何反馈或遇到任何问题,请随时在论坛上发表评论。

分享到