【问题标题】:Tweet Strings via Tweepy通过 Tweepy 推文字符串
【发布时间】:2018-12-16 08:41:38
【问题描述】:

我正在使用 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()

【问题讨论】:

  • 您能否更新您的问题以展示您如何在推特上发布 URL 列表?这是 URL 的字符串列表还是字符串列表?无论如何,如果您知道最大允许长度,只需在发推文前检查长度。如果要发送的推文大于最大长度,则分块到列表并发送每个块。

标签: python twitter tweepy


【解决方案1】:

您的代码与您要解决的问题无关。 main() 不仅似乎没有接受任何论据(推文?),而且你没有展示你目前是如何尝试解决这个问题的。考虑以下代码:

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 定义了每条推文的拆分位置以允许多条推文。

to_tweet 列表将包含每条推文,按照您的初始列表顺序,扩展为 TWEET_MAX_LENGTH 长度字符串的多条推文。

您可以使用该列表来输入您实际发布的 tweepy 函数。这种方法非常随意,并且不会对维护拆分推文的顺序进行任何检查。根据您实现最终推文功能的方式,这可能是一个问题,但也是一个单独的问题。

【讨论】:

  • 谢谢,这很有帮助。我知道我的问题有点含糊。
猜你喜欢
  • 1970-01-01
  • 2014-08-17
  • 2017-08-20
  • 2021-04-30
  • 2012-08-06
  • 1970-01-01
  • 2013-09-05
  • 2018-02-24
  • 1970-01-01
相关资源
最近更新 更多