6 фрагментов PHP-кода для взаимодействия с Twitter

Ниже представлены несколько фрагментов код на PHP, которые позволяют взаимодействовать с популярной системой микроблоггинга — Twitter.

  1. Автофолловинг в Twitter средствами PHP.
  2. Покажите количество фолловеров.
  3. Отобразите Ваш последний статус в Twitter.
  4. Граббер e-mail адресов из Twitter.
  5. Функция таймлайн.
  6. Покажите ваши записи из Twitter на своем блоге WordPress.

Оригинал статьи на сайте Cats Who Code.com. Я выбрал только те функции, которые мне были интересны.

1 — Скрипт автофолловинга (PHP)

Данный фрагмент кода позволяет вам автоматически фолловить пользователей, которые пишут в Twitter на определенную тему. Например, если вы хотите следить за пользователями, пишущими на тему PHP — просто введите это слово в значение переменной $term на строке 7.

Как использовать скрипт
1. Укажите нужные значения:
$user — укажите ваше имя пользователя в Twitter
$pass — укажите ваш пароль в Twitter
$term — укажите интересующую вас тему
2. Вставьте скрипт в файл *.php и загрузите файл на сервер.
3. Запустите скрипт из браузера через адресную строку.

Будьте осторожны — за массфолловинг ваш аккаунт может быть заблокирован администрацией Twitter!
<?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, а также выведет его на страницах вашего блога или сайта + небольшая корректировка от меня, для вывода статуса в правильной кодировке.

Для вывода ваших статусов, 82862879 необходимо заменить на ваш Twitter ID.

Как узнать свой 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); ?>
Для вывода ваших статусов, 82862879 необходимо заменить на ваш Twitter ID.

Данный код подходит только для англоязычных твиттов. Для того, чтобы кириллические твитты выводились правильно, используйте нижеследующий код:

<?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 } ?>

19 комментариев к “6 фрагментов PHP-кода для взаимодействия с Twitter”

  1. @LaRRiKin, большое спасибо, что указали на ошибку!

    Все исправлено — к сожалению, это известная проблема со вставкой кода в WordPress и работой с визуальным редактором. Пока что не нашел как ее побороть.

    Не знаете, случайно, есть ли какой-либо плагин для адекватной работы с кодом так, чтобы он не вычищался WYSIWYG?

    ОтветитьОтветить
  2. Слушай а как у тебя здесь что за код? А то у меня чет фигово получается

    ОтветитьОтветить
  3. Сорри. Был на своей волне. Сейчас прочитал свой вопрос и вижу что не понятно :)

    Я имел ввиду трансляцию постов из твитера на сайт. У тебя симпатичный в сайдбаре. Что за код? Можешь поделиться?

    ОтветитьОтветить
  4. Спасибо за представленные скрипты. Проще конечно использовать ещё и плагины для WordPress блогов. Вот например такой: WP FollowMe :)

    ОтветитьОтветить
  5. @Руслан Белов, если мы говорим о фолловинге в Twitter, то приведенный выше скрипт позволяет произвести набор фолловеров автоматически по заданной теме, а WP FollowMe — просто предоставление пользователям возможности Вас зафолловить.

    Так что тут скорее не «проще — сложнее», а задачи совершенно разные :)

    ОтветитьОтветить
  6. Ясно. Я то просто с PHP не очень, так вот и написал, что установил плагин и всё готово. Да, а что за плагин или скрипт, который сейчас сработал и отослал мне сообщение с Вашим комментарием. Очень полезная штука. Хочу у себя тоже такую установить.

    ОтветитьОтветить
  7. @Руслан Белов, а это скрипт, который работает совершенно автономно от WordPress. То есть, его нужно просто залить на сервер и запустить через адресную строку браузера. И все.

    Это плагин, который называется Comment Notifier.

    Альтернативой ему может быть Gurken Subscribe to comments.

    ОтветитьОтветить
  8. Свой ID в Twitter можно узнать также просто в выдаче XML по ссылке twitter.com/users/show.xml?screen_name=m_shevtsov (заменив свой логин, конечно)

    ОтветитьОтветить
  9. Спасибо за подробные объяснения. Отличная альтернатива плагинам, тормозящим сайт

    ОтветитьОтветить
  10. Отличная подборка кодов. Как раз для меня, люблю работать ручками и ковыряться в коде. Добавил Ваш блог в закладки.

    ОтветитьОтветить
  11. Интересные способы! Можно было бы еще автоматизировать анонсирование поста во все блоги по средством php кода... Знаю что есть специальные плагины, платные. А вот коды на счет соц сетей первый раз встретил на вашем сайте

    ОтветитьОтветить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *