我正在使用tweepy自动鸣叫URL列表。但是,如果我的列表过长(可能因推文而异),则不允许这样做。无论如何,tweepy可以在内容太长时创建一条推文线程?我的tweepy代码如下:
import tweepy
def get_api(cfg):
auth = tweepy.OAuthHandler(cfg['consumer_key'],
cfg['consumer_secret'])
auth.set_access_token(cfg['access_token'],
cfg['access_token_secret'])
return tweepy.API(auth)
def main():
# Fill in the values noted in previous step here
cfg = {
"consumer_key" : "VALUE",
"consumer_secret" : "VALUE",
"access_token" : "VALUE",
"access_token_secret" : "VALUE"
}
api = get_api(cfg)
tweet = "Hello, world!"
status = api.update_status(status=tweet)
# Yes, tweet is called 'status' rather confusing
if __name__ == "__main__":
main()
答案 0 :(得分:1)
您的代码与您要解决的问题无关。 main()
不仅似乎没有接受任何论点(tweet文本?),而且您没有显示您当前如何尝试解决此问题。考虑以下代码:
import random
TWEET_MAX_LENGTH = 280
# Sample Tweet Seed
tweet = """I'm using tweepy to automatically tweet a list of URLs. However if my list is too long (it can vary from tweet to tweet) I am not allowed."""
# Creates list of tweets of random length
tweets = []
for _ in range(10):
tweets.append(tweet * (random.randint(1, 10)))
# Print total initial tweet count and list of lengths for each tweet.
print("Initial Tweet Count:", len(tweets), [len(x) for x in tweets])
# Create a list for formatted tweet texts
to_tweet = []
for tweet in tweets:
while len(tweet) > TWEET_MAX_LENGTH:
# Take only first 280 chars
cut = tweet[:TWEET_MAX_LENGTH]
# Save as separate tweet to do later
to_tweet.append(cut)
# replace the existing 'tweet' variable with remaining chars
tweet = tweet[TWEET_MAX_LENGTH:]
# Gets last tweet or those < 280
to_tweet.append(tweet)
# Print total final tweet count and list of lengths for each tweet
print("Formatted Tweet Count:", len(to_tweet), [len(x) for x in to_tweet])
为了便于理解,尽可能将其分离。要点是,可以从用作推文的文本列表开始。变量TWEET_MAX_LENGTH
定义了将每个tweet拆分到何处以允许多个tweet。
to_tweet
列表将按照您的初始列表的顺序包含每个tweet,并扩展为长度为<= {TWEET_MAX_LENGTH
个字符串的多个tweet。
您可以使用该列表输入发布的实际tweepy函数。这种方法非常随意,并且不做任何维护拆分鸣叫序列的检查。取决于您要如何使用最终的tweet功能,这可能是一个问题,但又是一个单独问题的问题。