我使用Python & Tweepy开发了一个非常基本的Twitter机器人。它成功地在twitter上发布了一条推特,我可以修改这一行代码中的文本:response = client.create_tweet( text='Testing' ),以生成不同的tweet。
我为此使用的完整代码是:
import tweepy
client = tweepy.Client(consumer_key="XXXXX",
consumer_secret="XXXXX",
access_token="XXXXX",
access_token_secret="XXXXX")
# Create Tweet
response = client.create_tweet(
text='Testing'
)
print(f"https://twitter.com/user/status/{response.data['id']}")我想弄清楚的是,如何对Bot进行编码,以随机读取存储在文件中的数据,并将其完全用于形成一个可读的句子或段落,有点像邮件合并的工作方式。下面是一个示例,有3个文件或3个值:
Value1
Check out this, View this, See this
Value 2
product, item, piece
Value 3
on our online shop, on our store, on our website如果bot能够随意读取和选择数据,它可以从文件或值中按任何顺序选择任何数据,并将它们放在一起,这样就可以作为一个句子或段落使用。
经过研究,我发现使用文本或JSON文件是可能的。我学习了一个JSON教程,并重新创建了一个类似于文本和图像的示例:
[
{
"text": "hi",
"image": "/image1.jpg"
},
{
"text": "hello",
"image": "/image2.jpg"
}
]我想我已经解决了如何用以下代码读取JSON文件:
import json
with open(r"C:\Users\Administrator\Desktop\Python\test.json") as f:
info = json.load(f)
randomChoice = random.randrange(len(info))
print (info[randomChoice])我真正挣扎的是实现这一目标的最佳方法,以及如何创建代码来发布它所选择的随机数据所形成的tweet。
在我尝试将Tweepy和从JSON文件读取数据的能力结合起来时,这就是我所拥有的,但我无法让它工作,因为我不知道如何将它读取的数据发布到Twitter:
import tweepy
import random
import json
with open(r"C:\Users\Administrator\Desktop\Python\test.json") as f:
info = json.load(f)
client = tweepy.Client(consumer_key="XXXXX",
consumer_secret="XXXXX",
access_token="XXXXX",
access_token_secret="XXXXX")
# Create Tweet
randomChoice = random.randrange(len(info))
print (info[randomChoice])
response = client.create_tweet(
text='NOT SURE HOW TO CODE THIS PART SO TWEEPY POSTS RANDOMLY SELECTED DATA'
print(f"https://twitter.com/user/status/{response.data['id']}")我是Python和Tweepy的新手,所以我对Python和Tweepy的理解非常有限,但我非常感谢您的帮助。
发布于 2022-04-24 09:39:02
关于存储的:
您可以使用split(",")方法读取文件并解析每一行,但是JSON可能是最好的解决方案,因为它已经格式化了。
您需要一个可供选择的列表(即字符串列表),那么为什么不简单地使用列表呢?
您的JSON文件应该是:
[
["Check out this", "View this", "See this"],
["product", "item", "piece"],
["on our online shop", "on our store", "on our website"]
]关于Python代码的:
不需要生成随机索引就可以在列表中选择元素:
randomChoice = random.randrange(len(info))
print (info[randomChoice])随机模块可以帮助您:
random.choice(info)关于句子构建的:
现在您可以跨越主列表,从每个备选方案列表中选择一个替代方案,并将其添加到您将要发布的句子中:
full_sentence = ""
for alternatives in data:
selected_alternative = random.choice(alternatives)
full_sentence += ' ' + selected_alternative 最终代码:
import json
import random
# You can start by loading the JSON file
with open(r"test.json") as f:
data = json.load(f)
# You can then build your full sentence
full_sentence = ""
for alternatives in data:
selected_alternative = random.choice(alternatives)
full_sentence += ' ' + selected_alternative
# You can now post your full sentence on Twitter
client = tweepy.Client(consumer_key="XXXXX", ...)
response = client.create_tweet(text=full_sentence)发布于 2022-04-27 20:33:02
非常感谢你帮我把这一切都做好。我一直在修改JSON文件并修改代码,现在我已经有了一个脚本,该脚本正按预期在twitter上发布
这是我的最后代码:
import tweepy
import random
import json
# Start by loading the JSON file
with open(r"C:\Users\Administrator\Desktop\Twitterbot\test.json") as f:
data = json.load(f)
# Building the full sentence from values in JSON file
full_sentence = ""
for alternatives in data:
selected_alternative = random.choice(alternatives)
full_sentence += ' ' + selected_alternative
# You can now post your full sentence on Twitter
client = tweepy.Client(consumer_key="XXXXX",
consumer_secret="XXXXX",
access_token="XXXXX",
access_token_secret="XXXXX")
response = client.create_tweet(text=full_sentence)
print(f"https://twitter.com/user/status/{response.data['id']}")干杯
杰米
https://stackoverflow.com/questions/71982733
复制相似问题