Ниже представлены несколько фрагментов код на PHP, которые позволяют взаимодействовать с популярной системой микроблоггинга — Twitter.
- Автофолловинг в Twitter средствами PHP.
- Покажите количество фолловеров.
- Отобразите Ваш последний статус в Twitter.
- Граббер e-mail адресов из Twitter.
- Функция таймлайн.
- Покажите ваши записи из Twitter на своем блоге WordPress.
Оригинал статьи на сайте Cats Who Code.com. Я выбрал только те функции, которые мне были интересны.
1 — Скрипт автофолловинга (PHP)
Данный фрагмент кода позволяет вам автоматически фолловить пользователей, которые пишут в Twitter на определенную тему. Например, если вы хотите следить за пользователями, пишущими на тему PHP — просто введите это слово в значение переменной $term на строке 7.
Как использовать скрипт
1. Укажите нужные значения:
$user — укажите ваше имя пользователя в Twitter
$pass — укажите ваш пароль в Twitter
$term — укажите интересующую вас тему
2. Вставьте скрипт в файл *.php и загрузите файл на сервер.
3. Запустите скрипт из браузера через адресную строку.
<?php // Twitter Auto-follow Script by Dave Stevens - http://davestevens.co.uk $user = ""; $pass = ""; $term = ""; $userApiUrl = "http://twitter.com/statuses/friends.json"; $ch = curl_init($userApiUrl); curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $apiresponse = curl_exec($ch); curl_close($ch); $followed = array(); if ($apiresponse) { $json = json_decode($apiresponse); if ($json != null) { foreach ($json as $u) { $followed[] = $u->name; } } } $userApiUrl = "http://search.twitter.com/search.json?q=" . $term . "&rpp=100"; $ch = curl_init($userApiUrl); curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $apiresponse = curl_exec($ch); curl_close($ch); if ($apiresponse) { $results = json_decode($apiresponse); $count = 20; if ($results != null) { $resultsArr = $results->results; if (is_array($resultsArr)) { foreach ($resultsArr as $result) { $from_user = $result->from_user; if (!in_array($from_user,$followed)) { $ch = curl_init("http://twitter.com/friendships/create/" . $from_user . ".json"); curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,"follow=true"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $apiresponse = curl_exec($ch); if ($apiresponse) { $response = json_decode($apiresponse); if ($response != null) { if (property_exists($response,"following")) { if ($response->following === true) { echo "Now following " . $response->screen_name . "\n"; } else { echo "Couldn't follow " . $response->screen_name . "\n"; } } else { echo "Follow limit exceeded, skipped " . $from_user . "\n"; } } } curl_close($ch); } else { echo "Already following " . $from_user . "\n"; } } } } } ?> |
2 — Покажите количество фолловеров (PHP)
Если у вас есть сайт или блог и вы используете Twitter — отличным решением является демонстрация количества своих фолловеров. Для того, чтобы это сделать — используйте вот такой короткий код:
<?php $xml=file_get_contents('http://twitter.com/users/show.xml?screen_name=Proofsite'); if (preg_match('/followers_count>(.*)</',$xml,$match)!=0) { $tw['count'] = $match[1]; } echo $tw['count']; ?> |
Для вывода количества своих фолловеров, необходимо заменить Proofsite на свое имя в Twitter.
3 — Отобразите Ваш последний статус в Twitter (PHP)
Простая PHP функция позволит вам получить последний статус в Twitter, а также выведет его на страницах вашего блога или сайта + небольшая корректировка от меня, для вывода статуса в правильной кодировке.
Как узнать свой ID в Twitter?
<?php $twitter_id = 82862879; function get_status($twitter_id, $hyperlinks = true) { $c = curl_init(); curl_setopt($c, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/$twitter_id.xml?count=1"); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); $src = curl_exec($c); curl_close($c); preg_match('/<text>(.*)<\/text>/', $src, $m); $status = htmlentities($m[1]); if( $hyperlinks ) $status = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $status); return($status); } $status = get_status($twitter_id, $hyperlinks); echo wp_specialchars($status); ?> |
4 — Граббер e-mail адресов из Twitter (PHP)
Вы прекрасно знаете, что не стоит указывать свой e-mail адрес на всех сайтах подряд. Включая и Twitter. Учитывая популярность сайта, спамеры создают скрипты для того, чтобы считать ваш e-mail со страниц сайта. Например, вот такие:
<?php $file = file_get_contents("http://search.twitter.com/search?q=gmail.com+OR+hotmail.com++OR+%22email+me%22"); $file = strip_tags($file); preg_match_all( "([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b)siU", $file, $matches); print_r($matches); ?> |
5 — Функция таймлайн (PHP)
Как только Twitter набрал популярность, многие стали восхищаться принципом вывода информации о времени написания твиттов: 1 час назад, около 7 дней назад, менее минуты назад и т.д. Это именно та задача, которую выполняет написанная ниже функция.
function timespan($time1, $time2 = NULL, $output = 'years,months,weeks,days,hours,minutes,seconds') { $output = preg_split('/[^a-z]+/', strtolower((string) $output)); if (empty($output)) return FALSE; extract(array_flip($output), EXTR_SKIP); $time1 = max(0, (int) $time1); $time2 = empty($time2) ? time() : max(0, (int) $time2); $timespan = abs($time1 - $time2); isset($years) and $timespan -= 31556926 * ($years = (int) floor($timespan / 31556926)); isset($months) and $timespan -= 2629744 * ($months = (int) floor($timespan / 2629743.83)); isset($weeks) and $timespan -= 604800 * ($weeks = (int) floor($timespan / 604800)); isset($days) and $timespan -= 86400 * ($days = (int) floor($timespan / 86400)); isset($hours) and $timespan -= 3600 * ($hours = (int) floor($timespan / 3600)); isset($minutes) and $timespan -= 60 * ($minutes = (int) floor($timespan / 60)); isset($seconds) and $seconds = $timespan; unset($timespan, $time1, $time2); $deny = array_flip(array('deny', 'key', 'difference', 'output')); $difference = array(); foreach ($output as $key) { if (isset($$key) AND ! isset($deny[$key])) { $difference[$key] = $$key; } } if (empty($difference)) return FALSE; if (count($difference) === 1) return current($difference); return $difference; } |
6 — Покажите ваши записи из Twitter на своем блоге WordPress
Приведенный ниже код позволяет отобразить 5 последних записей из Twitter на вашем WordPress блоге с помощью интеграции RSS-ленты.
<?php include_once(ABSPATH . WPINC . '/rss.php'); wp_rss('http://twitter.com/statuses/user_timeline/15985955.rss', 5); ?> |
Данный код подходит только для англоязычных твиттов. Для того, чтобы кириллические твитты выводились правильно, используйте нижеследующий код:
<?php require_once (ABSPATH . WPINC . '/rss.php'); $rss = @fetch_rss('http://twitter.com/statuses/user_timeline/82862879.rss'); if ( isset($rss->items) && 0 != count($rss->items) ) { ?> <ul> <?php $rss->items = array_slice($rss->items, 0, 5); foreach ($rss->items as $item ) { ?> <li> <a href='<?php echo wp_filter_kses($item['link']); ?>'> <?php echo wp_specialchars($item['title']); ?> </a> </li> <?php } ?> </ul> <?php } ?> |