2014-10-17 79 views
0

我一直在這個項目上工作了一段時間。讓我首先解釋一下目標:我們有四個Twitter帳戶(與代碼無關),我們的辦公室裏有一個人花費數小時除掉每個帳戶的交互。他記下了1.提及我們的帳戶的任何人的手柄(或根據API的screen_name)2.最喜愛我們的推文3.轉發我們的推文之一。我正在處理4個不同的文件(每個Twitter賬戶一個),所以現在基本上只需要關注一個文件。檢索與Twitter帳戶交互的用戶列表?

不必要的信息:我們正在查看最後一次#ff是什麼時候發佈的,因爲在收集完所有句柄之後,我們辦公室的人推特回覆說#ff謝謝@foo @bar與我們互動。因此,一旦它在最近的推文列表中發現包含#ff的推文,它就會獲得該推文的日期。簡而言之,我們正在收集此日期之後的所有互動(每週以某種方式)。

<?php 
require_once('./top.php'); 

// oAuth library 
$twitter = new TwitterAPIExchange($valpo_settings); 

// get recents 
$string_recents = json_decode($twitter->setGetfield($getfield.$valpo_id)->buildOauth($url_recents, 'GET')->performRequest(), $assoc = true); 

// get mentions 
$string_mentions = json_decode($twitter->setGetfield($getfield.$valpo_id)->buildOauth($url_mentions, 'GET')->performRequest(), $assoc = true); 

// get retweets 
$string_retweets = json_decode($twitter->setGetfield($getfield.$valpo_id)->buildOauth($url_retweets, 'GET')->performRequest(), $assoc = true); 

// error (recents) 
if($string_recents["errors"][0]["message"] != "") {echo "<h1>error (recents)</h1><p>".$string_recents[errors][0]["message"]."</p>";exit();} 

// error (mentions) 
if($string_mentions["errors"][0]["message"] != "") {echo "<h1>error (mentions)</h1><p>".$string_mentions[errors][0]["message"]."</p>";exit();} 

// error (retweets) 
if($string_retweets["errors"][0]["message"] != "") {echo "<h1>error (mentions)</h1><p>".$string_retweets[errors][0]["message"]."</p>";exit();} 

// filter recents 
foreach($string_recents as $items_recents) { 
    // echo "<pre>"; 
    // print_r($items_recents); 
    // echo "</pre>"; 

    // filter hashtags 
    foreach($items_recents['entities']['hashtags'] as $items_hashtags) { 
     $hashtag_text = strtolower($items_hashtags['text']); 

     if ($hashtag_text == $hashtag && $vi != 1) { 
      $date = date('z', strtotime($items_recents['created_at'])); 
      $time = date('H-i-s', strtotime($items_recents['created_at'])); 
      $vi = 1; // prevents finding the date of previous tweets 
     } 
    } 
} 

// filter mentions 
foreach($string_mentions as $items_mentions) { 
    if (date('z', strtotime($items_mentions['created_at'])) == $date && date('H-i-s', strtotime($items_mentions['created_at'])) >= $time || date('z', strtotime($items_mentions['created_at'])) > $date) { 
     $names[] .= $items_mentions['user']['screen_name']; 
     $vxm++; 
    } 
} 

// filter retweets 
foreach($string_retweets as $items_retweets) { 
    echo "<pre>"; 
    print_r($items_retweets); 
    echo "</pre>"; 

    foreach ($items_retweets['entities']['user_mentions'] as $items_retweets_user) { 
     if (date('z', strtotime($items_retweets['created_at'])) == $date && date('H-i-s', strtotime($items_retweets['created_at'])) >= $time || date('z', strtotime($items_retweets['created_at'])) > $date) { 
      $names[] .= $items_retweets_user['screen_name']; 
      $vxr++; 
     } 
    } 
} 

// eliminates duplicate handles 
$unames = array_unique($names); 

// creates directory if needed 
if (!is_dir("./".date('Y-m-d'))) { 
    mkdir("./".date('Y-m-d'), 0777, true); 
} 

$file = fopen("./".date('Y-m-d')."/".date('H-i-s')."-valpo.txt", "w"); 

foreach ($unames as $value) { 
    fwrite($file, '@'.$value.' '); 
    $unames_size += strlen($value) + 2; // + 2 accomadates for @ and a space 
} 

fclose($file); 

$unames_size = ceil($unames_size/140); 

echo " 
      <div class='row'> 
       <div class='col x3'></div> 

       <div class='col x6'> 
        <span class='title'>ValpoLife</span> 

        <span class='info'> 
         <p><i class='fa fa-comments'></i> ".$vxm." &nbsp; <i class='fa fa-star'></i> ".$vxm." &nbsp; <i class='fa fa-retweet'></i> ".$vxr." &nbsp; <i class='fa fa-user'></i> ".count($unames)."</p> 
         <p><i class='fa fa-slack'></i> ".$hashtag." &nbsp; <i class='fa fa-calendar-o'></i> ".($curdate - $date)." days ago</p> 
         <p>Appoximately ".$unames_size." tweet(s) needed</p> 
        </span> 

        <a href='./index.php' class='button sec animated' target='blank'><i class='fa fa-chevron-left'></i></a><a href='./".date('Y-m-d')."/".date('H-i-s')."-valpo.txt' class='button pri animated' target='blank'><i class='fa fa-file-text'></i> View handles</a> 
       </div> 
      </div> 

      <footer> 
       &copy; Ideas In Motion Media. All Rights Reserved. 
      </footer> 
     </div> 
    </body> 
</html> 
"; 
?> 

以上是該帳戶的其中一個文件的所有代碼。正如你所看到的,它包含了只包含一些全局變量的top.php,html的頭文件和每個賬戶的oAuth信息。現在一切正常,除了檢索收藏夾和轉發。提及工作正常,最近也是如此。我嘗試了幾件事情來獲得收藏或轉推工作,但似乎沒有做到這一點。我已經取消了上面收藏夾的代碼,因爲我更關心獲取轉發。如果需要收藏夾代碼,請讓我知道,因爲我很樂意分享它。感謝您的任何幫助。

tl;dr

使用Twitter API,我已成功檢索到最近的推文以及提及我們的Twitter帳戶的任何推文。現在我試圖檢索喜歡或轉推我們的推文的人的名字/句柄。

回答