2016-03-23 33 views
1

所以我試圖製作一個bot,並且試圖在轉推之前查看推文是否已轉推。問題是我似乎無法找到辦法。我已經嘗試了很多方法,如下所示,但我無法弄清楚。我已經檢查#1和Twitter4j但無法找到一個解決方案檢查推文是否已被轉推 - Twitter4j

我的代碼:

private boolean retweetedAlready(Status status) throws TwitterException { 
    System.out.println("Status ID: " + status.getId()); 
    System.out.println("Retweeted: " + status.isRetweetedByMe()); 

    List<Status> retweets = twitter.getRetweetsOfMe(); 
    Status tmp; 
    for(Status s : twitter.getUserTimeline()){ 
     tmp = s.getRetweetedStatus(); 
     System.out.println("ID: " + s.getId()); 
     System.out.println("Equal: " + status.equals(s)); 
     System.out.println("Retweeted Status id: " + tmp.getId()); 
     System.out.println(tmp.getId() + ", " + status.getId() + " - " + (tmp.getId() == status.getId())); 
     System.out.println(retweets.contains(status)); 
     System.out.println(); 
     if(s.getRetweetedStatus().getId() == status.getId()){ 
      return true; 
     } 
    } 
    return false; 
} 

輸出:

Status ID: 712688409878331392 
Retweeted: false 
ID: 712688575494688768 
Equal: false 
Retweeted Status id: 712654036646891520 
712654036646891520, 712688409878331392 - false 
false 

ID: 712688572063752194 
Equal: false 
Retweeted Status id: 712687766178365441 
712687766178365441, 712688409878331392 - false 
false 

ID: 712688568678875137 
Equal: false 
Retweeted Status id: 712663978158071810 
712663978158071810, 712688409878331392 - false 
false 

ID: 712364624251846658 
Equal: false 
Retweeted Status id: 712226571634008065 
712226571634008065, 712688409878331392 - false 
false 

ID: 712364621743661060 
Equal: false 
Retweeted Status id: 712056778410713088 
712056778410713088, 712688409878331392 - false 
false 

ID: 712361537680310274 
Equal: false 
Retweeted Status id: 712345290464886784 
712345290464886784, 712688409878331392 - false 
false 

ID: 712361535302180864 
Equal: false 
Retweeted Status id: 712361382474346497 
712361382474346497, 712688409878331392 - false 
false 

ID: 712361075149246466 
Equal: false 
Retweeted Status id: 712360810211897344 
712360810211897344, 712688409878331392 - false 
false 

ID: 712361072687239168 
Equal: false 
Retweeted Status id: 712360816801136641 
712360816801136641, 712688409878331392 - false 
false 

ID: 712361069872877569 
Equal: false 
Retweeted Status id: 712310621748862978 
712310621748862978, 712688409878331392 - false 
false 

ID: 712361066936799232 
Equal: false 
Retweeted Status id: 712360862120435712 
712360862120435712, 712688409878331392 - false 
false 

ID: 712361063744929792 
Equal: false 
Retweeted Status id: 712360922182975490 
712360922182975490, 712688409878331392 - false 
false 

ID: 712360695069872130 
Equal: false 
Retweeted Status id: 712360559329595392 
712360559329595392, 712688409878331392 - false 
false 

ID: 712360607538946050 
Equal: false 
Retweeted Status id: 712349483066105856 
712349483066105856, 712688409878331392 - false 
false 

ID: 712359955043635201 
Equal: false 
Retweeted Status id: 712292676352274433 
712292676352274433, 712688409878331392 - false 
false 

ID: 712359949565870080 
Equal: false 
Retweeted Status id: 712359728286965765 
712359728286965765, 712688409878331392 - false 
false 

ID: 712359946835333120 
Equal: false 
Retweeted Status id: 712359289365499904 
712359289365499904, 712688409878331392 - false 
false 

ID: 712359944209764352 
Equal: false 
Retweeted Status id: 709161338342248448 
709161338342248448, 712688409878331392 - false 
false 

ID: 712359940627816448 
Equal: false 
Retweeted Status id: 712359805805993985 
712359805805993985, 712688409878331392 - false 
false 
+0

工作你不顯示狀態類,但我懷疑你必須保持跟蹤你的在數據庫中發佈自己的推文,看看你之前是否發微博。 –

+0

狀態是一個Twitter4j類。我可以得到推文,但我似乎無法找到它是否是一樣的。我不想僅僅檢查文字,因爲有人可以做同樣的事情。身份證是不同的,我不能檢查他們是否相同。 – bwfcwalshy

回答

0

我認爲使用status.getRetweetCount()這回總轉推數爲鳴叫,如果是平等的是零不轉推,但大於零轉推

並檢查自己轉推是status.isRetweetedByMe()

private boolean retweetedAlready(Status status) throws TwitterException { 

     if(status.isRetweetedByMe() && status.getRetweetCount() > 1){ 

     return true; // this twit retweeted by your and others 
    } else if(status.isRetweetedByMe() && status.getRetweetCount() == 1) 
     return true; // this twit only retweeted by your 
    }else{ 
     return false; // this twit not retweeted by your but mybe others retweeted 
    } 

}

,改變getUserTimeline()getHomeTimeline()用於獲取微博,isRetweetedByMe()getUserTimeline()

+0

試過了,你可以在我上面的例子中看到,我也檢查它,並且在這種情況下它總是返回false。 – bwfcwalshy

+0

再次,這不會幫助。 isRetweetedByMe總是返回false。我不能只是檢查計數,因爲即使1它不能是我。 – bwfcwalshy

+0

isRetweetedByMe()總是返回「false」爲什麼這個API函數請調試你的代碼 –