2012-05-10 22 views
0

我試圖從一個約150,000個關注者的Twitter帳戶中獲取所有followersID。我後來想映射他們的位置,但首先我需要所有這些ID。如何從用戶獲得150k followersIDs?

目前我使用此代碼:

long lCursorIDs = -1; 
    long[] fArray = new long[100]; 

    do 
    {    
     fArray = twitter.getFollowersIDs(name, lCursorIDs).getIDs();    
    } while (twitter.getFollowersIDs(name, lCursorIDs).hasNext()); 

    try 
    { 
     PrintWriter pr = new PrintWriter(filenameOutput);  

     for (int i=0; i<fArray.length ; i++) 
     { 
      pr.println(fArray[i]); 
     } 
     pr.close(); 
     System.out.println("Follower IDs collected and saved to file: " + filenameOutput); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
     System.out.println("No such file exists."); 
    } 

這適用於用戶用更少的追隨者。但有很多它總是返回一個錯誤信息 - 超出了限制。 我正在考慮每小時只能獲得一定數量的followersID,但我不知道如何做到這一點,而不是從第一個追隨者的每一小時開始。另外,我不確定我可以通過一個請求獲得多少追隨者。也許它是100,與「lookupUser」方法一樣,但我不確定..任何想法/建議?

編輯:好吧,我只是試圖獲得一個帳戶的跟隨者ID與2700追隨者,並將其正確存儲在文本文件中。它也只是「花費」一個請求。比我更改帳戶名稱與15500追隨者的帳戶,並再次崩潰與超出速率限制的消息。我不明白爲什麼,因爲它只有大約6倍的追隨者,但剩下的所有請求都會花費。對於我做錯了什麼,有什麼想法?

回答

1

答案:

int numberOfFollowers; 
    numberOfFollowers = user.getFollowersCount(); 

      //CREATE ARRAYS FOR FOLLOWER IDS 
    long cursor = -1; 
    long[] fArray = new long[numberOfFollowers]; 
    long[] local = new long[5000]; 


    IDs ids = twitter.getFollowersIDs(name, cursor); 
    int j = 0; 

      int x = 5000; 
    int durchgang = 1; 
    int d_anzahl = 1 + numberOfFollowers/5000; 
    //STROE FOLLOWER IDS IN ARRAYS 
    do 
    {      
     ids = twitter.getFollowersIDs(name, cursor);    
     local = twitter.getFollowersIDs(name, cursor).getIDs(); 
     System.out.println("Durchgang: " + durchgang + "/" + d_anzahl);   
     System.arraycopy(local, 0, fArray, j * x , local.length);   
     j++; 
     durchgang++; 

     cursor = ids.getNextCursor();   
    } while (ids.hasNext()); 

這得到任何的Twitter用戶的所有跟隨ID的數組。它計算獲取所有跟隨者ID所需的循環數,並將每個5000個ID的數組複製到最後包含所有ID的新數組中。