首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕获转发的转发?

如何捕获转发的转发?
EN

Stack Overflow用户
提问于 2015-09-03 01:40:35
回答 1查看 694关注 0票数 1

我正在使用流式API来跟踪特定的用户,以获得所有的推文和转发。然而,据我所知,没有办法捕获转发的转发,因为它不会出现在流API中。例如,我正在跟踪用户A。用户B转发A的任何tweet,流API将能够捕捉到这一点。但是,如果用户C从B的时间线中看到任何有趣的东西并单击retweet,则流无法捕捉到这一点。

我尝试使用statuses/retweets应用程序接口使用B从A的推文中转发的推文的id,结果显示为空。所以,我想知道有没有什么办法可以让我收到转发的推文。

我现在遇到的问题是。假设A的tweet获得了5k的转发量,但流式API仅捕获了1K,因为用户直接从A的tweet转发。然而,剩下的4K转发来自A的追随者,而A的流媒体无法捕捉到这一点。

这是我的流式API代码。

代码语言:javascript
复制
#!/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'])
EN

回答 1

Stack Overflow用户

发布于 2015-09-03 17:49:10

这不是一个答案,但对于评论来说太长了……

在你的问题中有一些我不理解的东西,也许这不是很好:我要说的是,如果来自A的tweet获得5k次转发,流api可能会得到所有转发(但实际上你会得到一个样本,这也取决于你的端点,认证状态等)。

让我们看看:如果B转发A,可以通过两种方式(1)发布新的文本和(2)不发布任何内容,只是转发。

在情况(2)中,任何C转发B的tweet将就像是A的转发:A的转发计数被更新,您将在流api中获得它。

然而,在情况(1)中,如果C在B后面看到推文,C可以以两种方式转发:(1.1)如果C只是转发来自B的推文,那么A的推文计数将不会更新,流api也不会获得它,但是(1.2)如果C点击A消息并转发该消息,则就像情况(2)一样。

因此,如果您的问题仅仅是与A tweet的转发次数一致,那么问题将不是转发的转发次数,而是流api的限制。但是,如果您想要获得案例(1.1)中的转发,我没有答案。

希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32359771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档