Python Twitter语言 - 使用txt或JSON文件中的数据发布独特的内容



我使用Python开发了一个非常基本的Twitter机器人&Tweepy。它成功地向twitter发布了一条tweet,我可以修改这行代码中的文本: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']}")

我想弄清楚的是如何我可以编码一个机器人随机读取存储在文件(s)中的数据,并把它一起制定一个可读的句子或段落有点像一个邮件合并的工作原理。下面是一个例子,有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

如果机器人能够随机读取和选择数据,它可以以任何顺序从文件或值中选择任何数据,将它们放在一起,它将有意义作为一个句子或段落

经过研究,我看到使用文本或JSON文件可能是一种可能性。我按照JSON教程重新创建了一个示例,看起来像这样的文本和图像:

[
{
"text": "hi",
"image": "/image1.jpg"
},
{
"text": "hello",
"image": "/image2.jpg"
}
]

我想我已经知道如何读取JSON文件与这段代码:

import json
with open(r"C:UsersAdministratorDesktopPythontest.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:UsersAdministratorDesktopPythontest.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,所以只有一个非常小的理解,但真的很感谢任何帮助

关于存储:

您可以读取文件并使用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)

非常感谢你帮助我让这一切工作。我一直在修改JSON文件和调整代码,现在有一个脚本,是发布到twitter就像预期的

这是我最后的代码:

import tweepy
import random
import json
# Start by loading the JSON file
with open(r"C:UsersAdministratorDesktopTwitterbottest.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']}")

欢呼杰米

相关内容

最新更新