我正在使用Streaming API跟踪特定用户以获取所有推文和转推。但是,据我所知,没有办法捕获转推的转发,因为它没有出现在流API上。例如,我正在跟踪用户A.用户B转发任何A的推文,流API将能够捕获它。但是,如果用户C从B的时间轴中看到任何有趣的内容并单击转发,则流式传输无法捕获该内容。
我尝试使用statuses/retweets
API来识别B从A的推文中转发的推文的ID,并将其显示为空。所以,我想知道无论如何我都可以转推转推。
我现在遇到的问题是。假设A的推文获得转发5k,但流媒体API仅捕获1K,因为用户直接转发来自A的推文。然而,剩下的4K转发来自A的追随者,其中流无法捕获。
这是我的流API代码。
#!/usr/bin/env python
#Import the necessary methods from tweepy library
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import json
from pymongo import MongoClient
from sweepy.get_config import get_config
config = get_config()
MONGO_URL = config.get('MONGO_URL')
MONGO_PORT = config.get('MONGO_PORT')
MONGO_USERNAME = config.get('MONGO_USERNAME')
MONGO_PASSWORD = config.get('MONGO_PASSWORD')
connection = MongoClient(MONGO_URL, int(MONGO_PORT))
db = connection['tweets']
# MongoLab has authentication
db.authenticate(MONGO_USERNAME, MONGO_PASSWORD)
#Variables that contains the user credentials to access Twitter API
consumer_key = config.get('STREAM_TWITTER_CONSUMER_KEY')
consumer_secret = config.get('STREAM_TWITTER_CONSUMER_SECRET')
access_token = config.get('STREAM_TWITTER_ACCESS_TOKEN')
access_token_secret = config.get('STREAM_TWITTER_ACCESS_TOKEN_SECRET')
#This is a basic listener that just prints received tweets to stdout.
class StdOutListener(StreamListener):
def on_data(self, data):
mydata = json.loads(data)
db.raw_tweets.insert_one(mydata)
return True
def on_error(self, status):
mydata = json.loads(status)
db.error_tweets.insert_one(mydata)
if __name__ == '__main__':
#This handles Twitter authetification and the connection to Twitter Streaming API
l = StdOutListener()
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, l)
#This line filter Twitter Streams to capture data by the keywords: 'python', 'javascript', 'ruby'
stream.filter(follow=['121817564'])
答案 0 :(得分:0)
这不是一个答案,但是评论太长了......
在你的问题中有一些我没有理解的东西,也许它不太合适:我要说的是,如果来自A的推文得到5k转推,那么流式api可能会得到它们(但在实践中,您将获得一个样本,具体取决于您的终端,认证状态等)。
让我们看看:如果B转发A,可以通过两种方式实现(1)发布新文本和(2)不发布任何内容,只是转发。
在情况(2)中,任何C转发B的推文就好像它是转发A:A的转发计数更新,你将在流式api中得到它。
然而在情况(1)中,如果C看到推文时跟随B,则C可以以两种方式转发:(1.1)如果C仅转发来自B的推文,则A的推文计数将不会更新并且流式传输api不会得到它,但是(1.2)如果C点击A消息并转发那个消息,那么它就像是情况(2)。
所以,如果你的问题与A推文转发的数量完全一致,那么转发的问题不会转发,而是转发API的限制。但是,如果您希望按照案例(1.1)进行转发,我没有答案。
希望它有所帮助。