tweepy.error.TweepError: This method does not perform pagination

tweepy.error.TweepError: This method does not perform pagination

我正在学习如何制作 Twitter 机器人。

我创建了一个 'last_seen.txt' 文件来跟踪已经互动过的推文。

我正在使用此代码:

def read_last_seen(FILE_NAME):
    file_read = open(FILE_NAME, 'r')
    last_seen_id = int(file_read.read().strip())
    file_read.close()
    return last_seen_id

def store_last_seen(FILE_NAME, last_seen_id):
    file_write = open(FILE_NAME, 'w')
    file_write.write(str(last_seen_id))
    file_write.close()
    return

之后我宣布了这个:

tweets = tweepy.Cursor(api.search(read_last_seen(FILE_NAME), tweet_mode='extended'), q).items(tweetNumber)

现在我得到错误:

 raise TweepError('This method does not perform pagination')
tweepy.error.TweepError: This method does not perform pagination

最后一行。

是否有另一种方式来声明该行? 我知道该代码本质上没有错误,只是不受支持。

//使用完整代码进行编辑 //

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(key, secret)
api = tweepy.API(auth)

FILE_NAME = 'last_seen.txt'

def read_last_seen(FILE_NAME):
    file_read = open(FILE_NAME, 'r')
    last_seen_id = int(file_read.read().strip())
    file_read.close()
    return last_seen_id

def store_last_seen(FILE_NAME, last_seen_id):
    file_write = open(FILE_NAME, 'w')
    file_write.write(str(last_seen_id))
    file_write.close()
    return

tweetNumber = 20
q = "My search"

tweets = list(tweepy.Cursor(api.search, q, tweet_mode='extended').items(tweetNumber))


def crashBot():
    

    for tweet in reversed(tweets):
            
        try:                
            if q in tweet.full_text.lower():
                print(str(tweet.id) + '-' + tweet.full_text)
                api.update_status("@" + tweet.user.screen_name + " My Reply!", tweet.id)
                api.create_favorite(tweet.id)
                api.retweet(tweet.id)                    
                print("done!")
                store_last_seen(FILE_NAME, tweet.id)
                time.sleep(10)            
        except tweepy.tweepyError as e:
            print(e.reason)
            time.sleep(10)
            
while True:
    crashBot()    
    time.sleep(10)

当前错误:

raise TweepError(error_msg, resp, api_code=api_error_code)
tweepy.error.TweepError: [{'code': 187, 'message': 'Status is a duplicate.'}]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "crashBot.py", line 53, in <module>
    crashBot()
  File "crashBot.py", line 48, in crashBot
    except tweepy.tweepyError as e:
AttributeError: module 'tweepy' has no attribute 'tweepyError'

 raise TweepError(error_msg, resp, api_code=api_error_code)
tweepy.error.TweepError: [{'code': 139, 'message': 'You have already favorited this status.'}]

当使用 tweepy.Cursor 时,您需要传递 API 方法而不调用它,并将参数传递给游标,就像传递给该方法一样。

此外,Cursor.items returns 一个迭代器,而不是实际的 Status 对象。您可能希望将其转换为列表或遍历它。

例如:

tweets = list(tweepy.Cursor(api.search, q, tweet_mode='extended').items(tweetNumber))

我不确定您如何使用 read_last_seen(FILE_NAME),但您希望以与将其传递给 API.search 相同的方式传递它。如果是查询本身,只需将 q 替换为它即可。