2009-12-06 7 views
7

ट्विटर एपीआई (और ओएथ) का उपयोग करना अगर मैं उपयोगकर्ता अनुयायियों, (स्थिति/अनुयायियों) के लिए कॉल करना चाहता हूं तो मुझे केवल 99 परिणाम लौटा दिए जाएंगे।ट्विटर एपीआई: अनुयायियों को प्राप्त करें +99

क्या कोई तरीका है कि मैं 99 वापस कर सकता हूं, फिर अनुयायी 100 से फिर से कॉल करें, फिर कॉलिंग की इस शैली के माध्यम से लूपिंग करें जब तक अनुयायियों की कुल संख्या वापस नहीं आती है?

या बस सभी अनुयायियों को वापस करें?

उत्तर

4

आपको in the API documrnation वर्णित कर्सर पैरामीटर निर्दिष्ट करने की आवश्यकता है। जैसे कर्सर निर्दिष्ट = -1 पहले पृष्ठ का अनुरोध करने के लिए और फिर का उपयोग पहली प्रतिक्रिया में लौटे एक next_cursor मूल्य:

http://twitter.com/statuses/followers/barackobama.xml?cursor=-1 
    http://twitter.com/statuses/followers/barackobama.xml?cursor=1300794057949944903 
+0

आप जब आप इन यूआरएल की कोशिश "इस endpoint उपयोग करने के लिए अधिकृत नहीं किया गया" हो .. मुझे लगता है कि वे अपने एपीआई परिवर्तित हो सकती है? – babonk

1

सुनिश्चित करें कि आप सही कॉल का उपयोग कर रहे हो। followers/ids आपको एक समय में 5000 देता है (लेकिन यह सिर्फ आईडी की एक सूची है)। यह कॉल भी उपयोगकर्ताओं के पृष्ठों के माध्यम से कदम रखने के लिए कर्सर का उपयोग करता है। जब आप सबके पास हों तो आपको शून्य वापस मिल जाएगा।

0

ट्विटर केवल प्रति घंटे एपीआई अनुरोधों की एक निश्चित संख्या की अनुमति देता है, और मैं मिनट सोचता हूं। हो सकता है कि आप एक बार में 99 से अधिक अनुरोधों को पुनर्प्राप्त नहीं कर पाएंगे।

+1

कुल 150 प्रति घंटा है। तो वह 100 लोगों को 150 बार (या 5000 लोग 150 बार, वह कॉल के आधार पर प्राप्त कर सकता है) प्राप्त कर सकता है। यह संख्या उन कॉलों के लिए है जिन्हें प्राधिकरण की आवश्यकता नहीं है। कॉल जिन्हें प्राधिकरण की आवश्यकता होती है अलग-अलग की जाती है। आप अपने ऐप के लिए श्वेतसूची का अनुरोध कर सकते हैं, लेकिन यह भी एपीआई विली-नली पर बैंगिंग करने के लिए पर्याप्त नहीं है, इसलिए यदि आप उच्च मात्रा वाली सेवा की अपेक्षा करते हैं, तो आपको कुछ कैशिंग करने की आवश्यकता है। – Nosredna

+0

लेकिन आप एक अच्छा मुद्दा बनाते हैं। 15,000 से अधिक अनुयायियों के साथ कई खाते हैं। आप अपने सभी एपीआई हिट्स को एक साथ अपने साथ उपयोग करेंगे। – Nosredna

+1

वे प्रति OAuth उपयोगकर्ता आधार पर हैं - यदि उपयोगकर्ता_1 उनकी सीमा को हिट करता है ..उन्हें त्रुटियां मिलती हैं, लेकिन उपयोगकर्ता_2 अभी भी ठीक रहेगा – tarnfeld

3
<?php 
$trends_url = "http://api.twitter.com/1/statuses/followers/fawadghafoor.json"; 
$ch  = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $trends_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$curlout = curl_exec($ch); 
curl_close($ch); 
$response = json_decode($curlout, true); 

foreach($response as $friends){ 
     $thumb = $friends['profile_image_url']; 
     $url = $friends['screen_name']; 
     $name = $friends['name']; 
?>       
<a title="<?php echo $name;?>" href="http://www.twitter.com/<?php echo $url;?>"><img class="photo-img" src="<?php echo $thumb?>" border="0" alt="" width="40" /></a> 
    <?php } ?> 
0

हालांकि मैंने कुछ समय पहले यह पूछा था, मैं हाल ही में कुछ समान (+ नए प्रोग्रामिंग कौशल) बनाने के लिए वापस आया था।

मैंने देखा कि ट्विटर एपीआई के पास उपयोगकर्ता अनुयायियों (या अनुवर्ती) उपयोगकर्ता आईडी के सभी को एक अनुरोध में प्राप्त करने का तरीका है। मुझे array_chunk पर 100 का बैच में आईडी का सबसे अच्छा तरीका मिला (और केवल पहले 30 एरे लेते हैं क्योंकि मैं उस समय सभी उपयोगकर्ताओं को एपीआई अनुरोधों का उपयोग नहीं करना चाहता हूं - वे वास्तव में ट्वीट करना चाहते हैं!)। फिर एक ऐसी विधि है जो आपको 100 उपयोगकर्ताओं तक पहुंचने की अनुमति देती है (वर्तमान में प्रमाणीकृत उपयोगकर्ता के दृश्य से) तो मैं बस एक लूप (थोड़ी देर के बीच सो जाओ) और फिर आपके पास 30,000 ट्विटर अनुयायियों को मिला है!

मैं कतार प्रणाली में यह असीमित रूप से ऐसा करने की अनुशंसा करता हूं, जैसे कि यदि आप साइट पर किसी पृष्ठ का अनुरोध करते हैं तो यह फ्लाई पर ऐसा करता है, यह बहुत धीमा हो सकता है और आप HTTP टाइमआउट के लिए प्रवण हो सकते हैं। नरक की तरह उन्हें कैश भी करें!

खेद है कि मैं किसी भी कोड पोस्ट नहीं किया, लेकिन उम्मीद है कि इस विचार प्रक्रिया में मदद मिलेगी किसी :)

0
$cursor = -1; 
$account_from = 'twitter_account'; 
do 
{ 
    $json = file_get_contents('http://api.twitter.com/1/statuses/followers/' . $account_from .'json?cursor=' . $cursor); 
    $accounts = json_decode($json); 
    foreach ($accounts->users as $account) 
    { 

      array(
       ':twitter_id' => $account->id_str, 
       ':account' => $account->screen_name, 
       ':description' => $account->description, 
      ); 
    } 
    $cursor = $accounts->next_cursor; 

} 
while ($cursor > 0); 
+1

क्या आप कृपया अपने उत्तर के लिए स्पष्टीकरण का सबसे छोटा सा जोड़ भी जोड़ सकते हैं? * उसे * उसके कोड में शामिल करने के तरीके के बारे में अतिरिक्त जानकारी भी अच्छी होगी। –

1

ट्विटर एपीआई हमें प्रतिबंधित करता विधि अनुयायियों के लिए API कॉल बनाने के लिए/आईडी 15 मिनट प्रति 15 अनुरोध है। यदि आप इस एपीआई से अधिक कमाते हैं तो आपको एक त्रुटि संदेश मिलेगा जो दर सीमा तक पहुंच जाएगा।

चहचहाना एपीआई दर सीमा की अधिक जानकारी के लिए Visit- https://dev.twitter.com/docs/rate-limiting/1.1 और https://dev.twitter.com/docs/rate-limiting/1.1/limits

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