Python Twitter - Tweepy 到 post 使用来自 txt 或 JSON 文件的数据的独特内容

Python Twitter - Tweepy to post unique content using data from txt or JSON files

我使用 Python & Tweepy 开发了一个非常基本的 Twitter 机器人。已成功 post 将一条推文发送到 Twitter,我可以修改这行代码中的文本:response = client.create_tweet( text='Testing' ) 制作不同的推文

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

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']}")

我想弄清楚的是我如何编写一个机器人来随机读取存储在文件中的数据,并将它们放在一起形成一个可读的句子或段落,有点像邮件合并的工作方式。这是一个例子,有 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

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

经过研究,我发现使用文本或 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])

我真正苦苦挣扎的事情是实现这一目标的最佳方法,以及如何创建代码,post 推文用它具有的随机数据制定 selected

这是我目前所拥有的,因为我试图结合 Tweepy 和从 JSON 文件中读取数据的能力,但我无法让它工作,因为我不知道如何post 已读入 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 的新手,所以只有很少的了解,但非常感谢任何帮助

关于存储:

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

你想要一个备选列表(字符串列表),那么你为什么不简单地使用列表列表呢?

你的 JSON 文件应该是这样的:

[
    ["Check out this", "View this", "See this"],
    ["product", "item", "piece"],
    ["on our online shop", "on our store", "on our website"]
]

关于您的 Python 代码:

您不需要为 select 列表中的元素生成随机索引:

randomChoice = random.randrange(len(info))
print (info[randomChoice])

随机模块可以为您完成:

random.choice(info)

关于造句:

您现在可以跨越主列表,select 从每个备选列表中选择一个备选并将其添加到您将 post:

的句子中
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:\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']}")

干杯

杰米