我一直在這個項目上工作了一段時間。讓我首先解釋一下目標:我們有四個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." <i class='fa fa-star'></i> ".$vxm." <i class='fa fa-retweet'></i> ".$vxr." <i class='fa fa-user'></i> ".count($unames)."</p>
<p><i class='fa fa-slack'></i> ".$hashtag." <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>
© Ideas In Motion Media. All Rights Reserved.
</footer>
</div>
</body>
</html>
";
?>
以上是該帳戶的其中一個文件的所有代碼。正如你所看到的,它包含了只包含一些全局變量的top.php,html的頭文件和每個賬戶的oAuth信息。現在一切正常,除了檢索收藏夾和轉發。提及工作正常,最近也是如此。我嘗試了幾件事情來獲得收藏或轉推工作,但似乎沒有做到這一點。我已經取消了上面收藏夾的代碼,因爲我更關心獲取轉發。如果需要收藏夾代碼,請讓我知道,因爲我很樂意分享它。感謝您的任何幫助。
tl;dr
使用Twitter API,我已成功檢索到最近的推文以及提及我們的Twitter帳戶的任何推文。現在我試圖檢索喜歡或轉推我們的推文的人的名字/句柄。