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

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

3天内不再提示

通过Twython在Raspberry Pi上发推文!(第2部分)

张明 来源:DevicePlus 作者:DevicePlus 2023-03-01 10:19 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。 poYBAGPzHnGAWZigAAIsFch76gw770.png

原文最初由deviceplus.jp.发布,本文为英译版。
欢迎来到通过“Twython”在Raspberry Pi上发推文的第2部分。
和上次一样,我们将遵循Raspberry Pi 官方网站文档中的内容来完成本项目。本次,我们将介绍如何发布包含随机字符串的推文,包含图片的推文以及与如何实现流式API的连接。
本文中,我们将使用2017年11月29日发布的“Raspbian Stretch with desktop”操作系统和“Raspberry Pi2Model B”。
有关第1部分的内容,请查看→“通过Twython在Raspberry Pi上发推文!(第1部分)”

发布随机推文

第七页中的“随机发布推文信息”功能使用了Python 中的“random”模块,并使用了一个用于发布随机信息的程序。

01  import random
02
03  from twython import Twython
04
05  from auth import (
06
07       consumer_key,
08       consumer_secret,
09       access_token,
10       access_token_secret
11  )
12
13
14  twitter = Twython(
15      consumer_key,
16      consumer_secret,
17      access_token,
18      access_token_secret
19
20  )
21
22
23
24  messages = [
25      "Hello world",
26      "Hi there",
27      "What's up?",
28      "How's it going?",
        "Have you been here before?",
        "Get a hair cut!",
]
message = random.choice(messages)
twitter.update_status(status=message)
print("Tweeted: %s" % message)

然后我们将文件以“random_tweet.py”的名称保存在“/home/pi”目录中。
第3行中名为“auth”的模块就是我们上次所创建的“auth.py”。该模块将“消费者密钥(API密钥)”、“消费者秘密(API秘密)”、“访问令牌”和“访问令牌秘密”都放置在了一起。接下来,我们把该模块放入和“random_tweet.py”相同的路径中。
auth.py

01 consumer_key  = 'ABCDEFGHIJKLKMNOPQRSTUVWXYZ'
02 consumer_secret = '1234567890ABCDEFGHIJKLMNOPQRSTUVXYZ'
03 access_token = 'ZYXWVUTSRQPONMLKJIHFEDCBA'
04 access_token_secret = '0987654321ZYXWVUTSRQPONMLKJIHFEDCBA'

*将每个值替换为您在Twitter Apps上获取的值。
第2-15行和我们在上一篇文章末尾创建的Twitter发布程序(twitter.py)相同。
将“import random”添加到第一行,以能够使用随机数。在第17-24行,我们以数组的形式存储了六个信息,接下来我们在第25行中选择其中的一个信息。

pYYBAGPzHnSAUtSXAAC2XbN3nQk378.png图 1

输出内容为“How’s it going?”。这是存储在“messages”变量(数组)中的第四个字符串。

poYBAGPzHneABm0LAAB39ybgmSw040.png图 2

通过查看实际发布的推文,我们可以确认发布的内容为“How’s it going?”。虽然这是随机发布的,但是如果重复发布相同的字符串,Twitter就会报错。出现这种情况时,请隔一会再发布推文,并且尽量不要发布相同的字符串(例如,包含相同的时间或字符串)。这样一来应该能够解决该问题。

发布包含图片的推文!

在开始一个新的程序之前,我们先准备好一张图片。这次,我们将需要对文档进行调整,并将图像文件“image.png”存储到“ /home/pi/Downloads/ ”目录中。

from twython import Twython
from auth import
(
consumer_key,
consumer_secret,
access_token,
access_token_secret
)
twitter = Twython(
consumer_key,
consumer_secret,
access_token,
access_token_secret
)
message = "Hello world - here's a picture!"
with open('/home/pi/Downloads/raspberry.png', 'rb') as photo: twitter.update_status_with_media(status=message, media=photo)
print("Tweeted: %s" % message)

第17-18行需要将“update_status”改为“update_status_with_media”。

pYYBAGPzHnmAVCnvAADcQQvzM8o438.png图 3

上图显示的是运行的结果。不知道为什么,出现了一些警告信息。
查看一下警告内容,其中显示当前不建议使用“update_status_with_media”函数。

poYBAGPzHoGAP8f9AAECBely0a4529.png图 4

虽然不推荐,但是看起来这并不影响我们成功发布推文。不过我们对于发生的状况产生了一些兴趣。查看Twython 官方网站手册之后,我们重新写了程序!

from twython import Twython
from auth import (
consumer_key,
consumer_secret,
access_token,
access_token_secret
twitter = Twython(
consumer_key,
consumer_secret,
access_token,
access_token_secret
message = "Hello world - here's a picture!"
photo = open('/home/pi/Downloads/raspberry.png','rb')
response = twitter.upload_media(media=photo)
twitter.update_status(status=message,
media_ids=[response['media_id']]
print("Tweeted: %s" % message)

查看手册中“Updating Status with Image”(使用图片更新状态)部分后,我们更改了发布推文的有关内容。
我们在“update_status”函数中添加了图像的参数后,成功发布了推文,并且没有产生任何错误!(推文与图4相同)。

实时推特操作!

我们将要介绍的最后一项内容是第九页中的“测试Twython Streamer”!
这次我们要做的是“获取”已经发布的推文,而非“发布”推文。
查看文档中的示例后,我们进行了一定程度的修改,程序源如下所示:

from twython import TwythonStreamer
from auth import (
consumer_key,
consumer_secret,
access_token,
access_token_secret
class MyStreamer(TwythonStreamer):
def on_success(self, data):
if 'text' in data:
username = data['user']['screen_name']
tweet = data['text']
date = data['created_at']
print("%s @%s: %s" % (date,username, tweet))
print("----------")
stream = MyStreamer(
consumer_key,
consumer_secret,
access_token,
access_token_secret
stream.statuses.filter(track='#raspberrypi')

首先,第1行的导入模块部分发生了变化。之前,所有的示例程序都在“Twython”类下,但本步更改为“TwythonStreamer”。
Streaming message (流式信息) 类型 — Twitter 开发者
“TwythonStreamer” 是一种用于Twitter中流式API的类。
Streaming message (流式信息)类型 — Twitter 开发者
在第9-16行,声明了名为“MyStreamer”的类。这用于在找到推文时指定操作。
在上述程序源中,除了推文的正文外,日期、账户名称和分隔线都是在输出内容中自定义的。
在第18-24行,我为新的“MyStreamer”类创建了一个实例,并开始追踪包含“# raspberrypi”的推文。

pYYBAGPzHoSABAjKAAIIKxPSF3w987.png图 5

如果您找到了推文,输出将如上所示。在您停止该程序之前,它会继续获取该类型的推文(该程序似乎不区分大小写)。
寻找包含“#raspberrypi”的推文
接下来让我们访问Twitter并查看搜索结果。
您会得到部分的时间日志,不过我想从中可以大致证明这些信息是实时获取的。

总结

至此,我们结束了介绍如何使用“Twython”的第2部分。您现在可以更加轻松地在Twitter上发布和搜索推文了!
我认为基于Python的“Twython”可以很容易地应用到任何使用元器件电子产品中。“Twython”是将通过API进行的内部处理部分与以可视化形式输出的部分之间相连接的好方法。通过发布您所拍摄的照片,或者对包含特定关键字的推文进行一些操作,您可以结合所学的知识创建出各种各样的事物!

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

审核编辑黄宇

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

    关注

    51

    文章

    4678

    浏览量

    83479
  • Raspberry Pi
    +关注

    关注

    1

    文章

    552

    浏览量

    22058
收藏 人收藏

    评论

    相关推荐

    震惊!居然有人给 Raspberry Pi 5 做 X 射线!

      Jeff Geerling 会做一些莫名其妙的怪事,比如用信鸽来对抗网速,不过这也是我们喜欢他视频的原因。最近,杰夫对 Raspberry Pi 5 进行了 X 光透视,揭示
    的头像 发表于 01-10 16:42 232次阅读
    震惊!居然有人给 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 做 X 射线!

    raspberry pi 0应多少伏供电?

    raspberry pi 0 5V 2A供电板太热,5V 1A可以吗
    发表于 11-07 06:52

    Raspberry Pi 3 官方套件入门指南

    Raspberry Pi 3套件介绍Raspberry Pi 3套件安装Raspberry Pi
    发表于 10-09 07:53

    【树莓派Pi5】树莓派 Raspberry Pi 5 正式发布!

    这款 Pi 5从英国树莓派总部跨洋而来,作为树莓派的官方代理商,上海晶珩EDATEC荣幸地在首发时刻,率先揭开了 Pi 5 的神秘面纱: Raspberry Pi 5:瞩目新生!超越
    的头像 发表于 09-28 17:30 1037次阅读
    【树莓派<b class='flag-5'>Pi</b>5】树莓派 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 正式发布!

    使用计算库Raspberry PI和HiKey 960分析AlexNet

    ARM- ACM-0 702397 问题 1. 1.3 本指南解释如何使用简化程序来描述Arm Concompute 图书馆用于 Raspberry Pi 和 HiKey 960 版板
    发表于 08-29 08:05

    Raspberry Pi从源代码构建OpenVINO 2021.3收到错误怎么解决?

    Raspberry Pi 从源代码构建 OpenVINO™2021.3。 运行OpenVINO™推理,并收到错误消息: ModuleNotFoundError:没有
    发表于 08-15 08:24

    官方Raspberry Pi零W概述和案例

    电子发烧友网站提供《官方Raspberry Pi零W概述和案例.zip》资料免费下载
    发表于 07-04 11:17 0次下载
    官方<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>零W概述和案例

    通过USB对Raspberry Pi进行编程

    电子发烧友网站提供《通过USB对Raspberry Pi进行编程.zip》资料免费下载
    发表于 06-30 10:24 0次下载
    <b class='flag-5'>通过</b>USB对<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>进行编程

    使用Raspberry Pi进行汽车诊断

    电子发烧友网站提供《使用Raspberry Pi进行汽车诊断.zip》资料免费下载
    发表于 06-20 09:31 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>进行汽车诊断

    Raspberry Pi的Teams Presence

    电子发烧友网站提供《Raspberry Pi的Teams Presence.zip》资料免费下载
    发表于 06-16 15:17 0次下载
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的Teams Presence

    Raspberry Pi烟雾测量站

    电子发烧友网站提供《Raspberry Pi烟雾测量站.zip》资料免费下载
    发表于 06-16 10:12 0次下载
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>烟雾测量站

    Raspberry PI的TVOC提醒

    电子发烧友网站提供《Raspberry PI的TVOC提醒.zip》资料免费下载
    发表于 06-15 10:47 0次下载
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>PI</b>的TVOC提醒

    使用Bittle和Raspberry Pi 4的ROS SLAM

    电子发烧友网站提供《使用Bittle和Raspberry Pi 4的ROS SLAM.zip》资料免费下载
    发表于 06-14 15:23 0次下载
    使用Bittle和<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4的ROS SLAM

    如何通过SPI使用Raspberry PI零与FPGA通信

    电子发烧友网站提供《如何通过SPI使用Raspberry PI零与FPGA通信.zip》资料免费下载
    发表于 06-13 15:52 0次下载
    如何<b class='flag-5'>通过</b>SPI使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>PI</b>零与FPGA通信

    如何实现只将ESP8266模块连接到Raspberry Pi Zero?

    先嗨。刚刚在这里注册。我搜索了它,但没有真正出现,因为我在技术不是超级喜欢 Raspberry Pi 并且刚刚遇到 ESP8266 连接世界我有问题。 主要是我只想将 ESP8266 模块连接
    发表于 05-19 15:01