首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tweepy使用txt或JSON文件中的数据发布唯一的内容

Tweepy使用txt或JSON文件中的数据发布唯一的内容
EN

Stack Overflow用户
提问于 2022-04-23 18:50:51
回答 2查看 83关注 0票数 0

我使用Python & Tweepy开发了一个非常基本的Twitter机器人。它成功地在twitter上发布了一条推特,我可以修改这一行代码中的文本:response = client.create_tweet( text='Testing' ),以生成不同的tweet。

我为此使用的完整代码是:

代码语言:javascript
运行
复制
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个值:

代码语言:javascript
运行
复制
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教程,并重新创建了一个类似于文本和图像的示例:

代码语言:javascript
运行
复制
[
  {
    "text": "hi",
    "image": "/image1.jpg"
  },
  {
    "text": "hello",
    "image": "/image2.jpg"
  }
]

我想我已经解决了如何用以下代码读取JSON文件:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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的理解非常有限,但我非常感谢您的帮助。

EN

Stack Overflow用户

回答已采纳

发布于 2022-04-24 09:39:02

关于存储的

您可以使用split(",")方法读取文件并解析每一行,但是JSON可能是最好的解决方案,因为它已经格式化了。

您需要一个可供选择的列表(即字符串列表),那么为什么不简单地使用列表呢?

您的JSON文件应该是:

代码语言:javascript
运行
复制
[
    ["Check out this", "View this", "See this"],
    ["product", "item", "piece"],
    ["on our online shop", "on our store", "on our website"]
]

关于Python代码的

不需要生成随机索引就可以在列表中选择元素:

代码语言:javascript
运行
复制
randomChoice = random.randrange(len(info))
print (info[randomChoice])

随机模块可以帮助您:

代码语言:javascript
运行
复制
random.choice(info)

关于句子构建的

现在您可以跨越主列表,从每个备选方案列表中选择一个替代方案,并将其添加到您将要发布的句子中:

代码语言:javascript
运行
复制
full_sentence = ""

for alternatives in data:
    selected_alternative = random.choice(alternatives)
    full_sentence += ' ' + selected_alternative 

最终代码:

代码语言:javascript
运行
复制
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)
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71982733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档