2013-06-21 5 views
5

मैं स्ट्रीमिंग एपीआई से कनेक्ट करने के लिए twython (पायथन के लिए ट्विटर एपीआई लाइब्रेरी) का उपयोग कर रहा हूं, लेकिन मुझे लगता है कि संभवतः सार्वजनिक ट्विटर स्ट्रीम संभवतः शब्दों द्वारा फ़िल्टर की जाती है। प्रमाणीकृत उपयोगकर्ता टाइमलाइन या @mentions की रीयल-टाइम स्ट्रीम प्राप्त करने का कोई तरीका नहीं है?ट्विटर स्ट्रीम एपीआई 1.1 के माध्यम से उल्लेख और डीएम प्राप्त करना? (Twython का उपयोग करके)

मैं उन उल्लेखों को प्राप्त करने के लिए आरईएसटी एपीआई में देरी कॉल के माध्यम से लूपिंग कर रहा हूं लेकिन ट्विटर मुझे इतने सारे अनुरोध करने के लिए पसंद नहीं करता है।

Twython दस्तावेज मुझे इसके बारे में बहुत मदद नहीं कर रहा है, न ही आधिकारिक ट्विटर दस्तावेज़ है।

यदि कोई अन्य पायथन लाइब्रेरी है जो स्ट्रीमिंग के लिए ट्विथन से बेहतर काम कर सकती है (ट्विटर एपीआई v1.1 के लिए)। मैं सुझाव की सराहना करता हूं ... धन्यवाद।

उत्तर

3

मेरे शोध की शुरुआत में मैंने सोचा कि python-twitter पायथन के लिए ट्विटर लाइब्रेरी है। लेकिन आखिरकार, ऐसा लगता है कि Python Twitter Tools अधिक लोकप्रिय और ट्विटर स्ट्रीमिंग का भी समर्थन करता है।

यह थोड़ा मुश्किल है, स्ट्रीमिंग एपीआई और आरईएसटी एपीआई सीधे संदेशों के बराबर नहीं हैं। यह छोटा सा उदाहरण स्क्रिप्ट दर्शाता है कि कैसे आपको प्रत्यक्ष संदेश प्राप्त करने के लिए उपयोगकर्ता स्ट्रीम का उपयोग कर सकते हैं:

import twitter # if this module does not 
       # contain OAuth or stream, 
       # check if sixohsix' twitter 
       # module is used! 
auth = twitter.OAuth(
    consumer_key='...', 
    consumer_secret='...', 
    token='...', 
    token_secret='...' 
) 

stream = twitter.stream.TwitterStream(auth=auth, domain='userstream.twitter.com') 

for msg in stream.user(): 
    if 'direct_message' in msg: 
     print msg['direct_message']['text'] 

यह स्क्रिप्ट सभी नए संदेश प्रिंट होगा - नहीं पहले से ही स्क्रिप्ट शुरू करने से पहले प्राप्त लोगों को।

0

प्रत्यक्ष संदेश स्ट्रीम करने का कोई तरीका नहीं है।

हालांकि, उपयोगकर्ताओं की समयरेखा स्ट्रीम करने का एक तरीका है। ट्विटर यहाँ पर दस्तावेज़ीकरण की जाँच करें: requests (https://github.com/kennethreitz/requests) जारी किया गया है का एक नया संस्करण तक https://dev.twitter.com/docs/streaming-apis/streams/user

from twython import TwythonStreamer 


class MyStreamer(TwythonStreamer): 
    def on_success(self, data): 
     if 'text' in data: 
      print data['text'].encode('utf-8') 
     # Want to disconnect after the first result? 
     # self.disconnect() 

    def on_error(self, status_code, data): 
     print status_code, data 

# Requires Authentication as of Twitter API v1.1 
stream = MyStreamer(APP_KEY, APP_SECRET, 
        OAUTH_TOKEN, OAUTH_TOKEN_SECRET) 

stream.user() 

, तथापि, अपने अनुयायियों से ट्विट्स एक पोस्ट के पीछे हो जाएगा। यह अपेक्षाकृत जल्द ही तय किया जाना चाहिए! :)

+2

यह गलत लगता है। डायरेक्ट मेसेज स्ट्रीमिंग का उल्लेख यहां दिया गया है: https://dev.twitter.com/docs/streaming-apis/streams/user#Direct_messages – lumbric

+0

ओह, मुझे खेद है; मैंने कभी दस्तावेज नहीं देखा। –

+0

डीएम स्ट्रीमिंग को प्रतिबिंबित करने के लिए अपना उत्तर अपडेट या हटाएं। – Sheharyar

संबंधित मुद्दे