使用循环自动回复推文

Posted

技术标签:

【中文标题】使用循环自动回复推文【英文标题】:Reply Tweet Automatically Using Loop 【发布时间】:2021-12-17 14:32:34 【问题描述】:

我的目标是使用 tweepy 回复某条推文并暂停(time.sleep()) 回复格式是status,最后是i的值。但我的代码不起作用,我不知道为什么。 (注意:它只回复一次,不打印报告)

import tweepy
import random
import datetime
import time


def spam():
    for i in range(amount):
        send = str(status) + " " + str(i+1)
        pause = random.randint(5,12)

        auth = tweepy.OAuthHandler("xxxx", "xxxx")
        auth.set_access_token("xxxx-xxxx", "xxxx")
        api = tweepy.API(auth)
        api.update_status(send, in_reply_to_status_id = tweetid , auto_populate_reply_metadata=True)
        print("succes, pause =",pause+"s\t",datetime.datetime.now()) # for report
        time.sleep(pause)

amount = int(input("amount>> "))
status = input("status>> ")
tweetid = input("id>> ")

spam()

【问题讨论】:

有错误吗? @Harmon758 不,但它没有按计划工作。它只回复了一次 你的意见是什么? 【参考方案1】:

据我所知,Twitter 会屏蔽彼此相似的推文。只有一条这样的推文可以发出。即使我尝试改变推文之间的时间,也尝试改变一两个字符,但还是被阻止了。您的代码没有任何问题,它是 Twitter 的防御机制,它已经启动以防止垃圾邮件。另外请注意,如果您尝试发送垃圾邮件,您的 API 访问也可能会被阻止。

另外你不需要每次运行循环时都进行身份验证,你可以只做一次并获取api对象,你可以在循环中使用它,如下所示

import tweepy
import random
import datetime
import time


def spam():
  auth = tweepy.OAuthHandler("xxxx", "xxxx")
  auth.set_access_token("xxxx-xxxx", "xxxx")
  api = tweepy.API(auth)
  for i in range(amount):
    send = str(status) + " " + str(i+1)
    pause = random.randint(5,12)
    api.update_status(send, in_reply_to_status_id = tweetid , auto_populate_reply_metadata=True)
    print("succes, pause =",pause+"s\t",datetime.datetime.now()) # for report
    time.sleep(pause)

amount = int(input("amount>> "))
status = input("status>> ")
tweetid = input("id>> ")

spam()

【讨论】:

我之前已经运行过代码,但没有使用 Time 和 Datetime 并且它有效。但是当我将它与时间和日期时间结合使用时,它不起作用。

以上是关于使用循环自动回复推文的主要内容,如果未能解决你的问题,请参考以下文章

从 twitter 流中排除回复 - tweepy

如何获取给定回复的原始推文

获取推文作者对特定推文的推文回复

从特定用户那里获取对特定推文的推文回复

使用 nTwitter 使用 node.js 回复推文

使用 Tweepy - Python 回复推文