搜索
热搜: ROHM 模拟 车载
查看: 2077|回复: 4

【R课堂】通过Twython在Raspberry Pi上发推文!(第2部分)

  [复制链接]
回帖奖励 480 ROHM金币 回复本帖可获得 5 ROHM金币奖励! 每人限 1 次

该用户从未签到

4307

主题

5146

帖子

13

精华

管理员

最后登录
2024-4-23
发表于 2022-9-5 11:08:54 | 显示全部楼层 |阅读模式
这篇文章来源于DevicePlus.com英语网站的翻译稿。
原文最初由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 random0203  from twython import Twython0405  from auth import (0607       consumer_key,08       consumer_secret,09       access_token,10       access_token_secret11  )121314  twitter = Twython(15      consumer_key,16      consumer_secret,17      access_token,18      access_token_secret1920  )21222324  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行中选择其中的一个信息。

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

图 2
通过查看实际发布的推文,我们可以确认发布的内容为“How’s it going?”。虽然这是随机发布的,但是如果重复发布相同的字符串,Twitter就会报错。出现这种情况时,请隔一会再发布推文,并且尽量不要发布相同的字符串(例如,包含相同的时间或字符串)。这样一来应该能够解决该问题。
发布包含图片的推文!
在开始一个新的程序之前,我们先准备好一张图片。这次,我们将需要对文档进行调整,并将图像文件“image.png”存储到“ /home/pi/Downloads/ ”目录中。
from twython import Twythonfrom 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”。

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

图 4
虽然不推荐,但是看起来这并不影响我们成功发布推文。不过我们对于发生的状况产生了一些兴趣。查看Twython 官方网站手册之后,我们重新写了程序!
from twython import Twythonfrom auth import (consumer_key,consumer_secret,access_token,access_token_secrettwitter = Twython(consumer_key,consumer_secret,access_token,access_token_secretmessage = "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 TwythonStreamerfrom auth import (consumer_key,consumer_secret,access_token,access_token_secretclass 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_secretstream.statuses.filter(track='#raspberrypi')
首先,第1行的导入模块部分发生了变化。之前,所有的示例程序都在“Twython”类下,但本步更改为“TwythonStreamer”。
Streaming message (流式信息) 类型 — Twitter 开发者
“TwythonStreamer” 是一种用于Twitter中流式API的类。
Streaming message (流式信息)类型 — Twitter 开发者
在第9-16行,声明了名为“MyStreamer”的类。这用于在找到推文时指定操作。
在上述程序源中,除了推文的正文外,日期、账户名称和分隔线都是在输出内容中自定义的。

有奖问答:在第18-24行,我为新的“_____”类创建了一个实例,并开始追踪包含“_____”的推文。
Tips:点击阅读原文,获得答案

回复

使用道具 举报

该用户从未签到

0

主题

452

帖子

0

精华

金牌会员

最后登录
2023-4-23
发表于 2022-9-5 11:27:39 | 显示全部楼层

回帖奖励 +5 ROHM金币

此帖仅作者可见

使用道具 举报

该用户从未签到

0

主题

477

帖子

0

精华

高级会员

最后登录
2024-3-26
发表于 2022-9-5 23:21:29 | 显示全部楼层

回帖奖励 +5 ROHM金币

此帖仅作者可见

使用道具 举报

  • TA的每日心情
    开心
    2022-9-1 14:42
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    3207

    帖子

    0

    精华

    论坛元老

    最后登录
    2024-4-22
    发表于 2022-9-6 02:37:15 | 显示全部楼层

    回帖奖励 +5 ROHM金币

    此帖仅作者可见

    使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 536 天

    [LV.9]

    3

    主题

    5322

    帖子

    0

    精华

    论坛元老

    最后登录
    2024-4-23
    发表于 2022-9-6 08:49:49 | 显示全部楼层

    回帖奖励 +5 ROHM金币

    此帖仅作者可见

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|罗姆半导体技术社区

    GMT+8, 2024-4-23 14:58 , Processed in 0.106322 second(s), 18 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表