【发布时间】:2014-12-13 13:37:03
【问题描述】:
我在这个项目上工作了很长时间。让我先解释一下目标:我们有四个 Twitter 帐户(与代码无关),我们办公室里有一个人会花几个小时检查每个帐户的交互。他记下以下任何人的句柄(或根据 API 的 screen_name) 1. 提及我们的帐户 2. 收藏我们的推文 3. 转发我们的推文之一。我正在处理 4 个不同的文件(每个 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;博士
使用 Twitter API,我成功地检索了最近的推文以及任何提及我们 Twitter 帐户的推文。现在我正在尝试检索收藏或转发我们的推文的人的姓名/句柄。
【问题讨论】: