PHP

индекс
206,76

TwittReader – твитты на вашем сайте


Выкладываю свой велосипед с:
  • возможностью вывода одного или нескольких последних статусов
  • подсветкой ссылок, e-mail, юзеров, хэш-тегов
  • кэшированием, которое работает в т.ч. когда Твиттер упал (а такое бывает)
  • перекодировкой (если на сайте используется не UTF-8)
  • гибкими настройками, собственными шаблонами


Требования: PHP5, cURL, DOMDocument.

По сути, это класс-обертка для RSS отдельного пользователя твиттера.

Свойства класса



Свойство Значение по умолчанию Описание
cacheFile twitter.txt файл, где класс будет хранить кэш
cachePeriod 1800 время, через которое кэш устареет и твитты будут обновлены (в секундах)
timeout 5 время в секундах, через которое будет считаться, что сервер недоступен
twittsMaxCount 9 количество твиттов, которое отображать
twittWrapper <li><p>[status]</p><p><a href=\"[link]\">[date]</a></p></li>\n
шаблон для твитта с переменными [status], [link] и [date]
dateFormat d.m.Y H:i:s формат даты
errorNotAvailable Service not available. сообщение, которое выводится при недоступности сервера и отсутствии кэша
errorNoStatuses No statuses found for this user. сообщение, которое выводится, когда у пользователя не обнаружено твиттов
curlOptions array(), то есть пустой массив если вы хотите задать дополнительные свойства для CURL, например работа через прокси
charset FALSE, то есть остается кодировка UTF-8 если задано, то твитт будет перекодироваться в соответствующую кодировку
highlightUrls FALSE подсвечивать ссылки
highlightEmails FALSE подсвечивать e-mail (не рекомендую, конечно, из-за спамеров, но может кому-нибудь пригодится :)
highlightUsers FALSE подсвечивать пользователей твиттера вида @user
highlightHashtags FALSE подсвечивать т.н. хэштеги вида #tag


Примеры использования



Выводим 9 последних статусов пользователя:

$tr = new TwittReader('user');
echo '<ul>' . $tr->getTwitts() . '</ul>';


Теперь настроим немножко под себя:

$tr = new TwittReader('user');
 
$tr->dateFormat = 'H:i'; // показывать только время твитта
$tr->twittWrapper = "<li><strong>[date]</strong> [status]</li>"; // изменим шаблон твитта
$tr->twittsMaxCount = 3; // выводить три последних твитта
$tr->cachePeriod = 60; // кэш устаревает через одну минуту
$tr->highlightUsers = TRUE; // подсвечивать пользователей
$tr->highlightUrls = TRUE; // подсвечивать ссылки
$tr->highlightHashtags = TRUE;  // подсвечивать хэштеги
 
$tr->charset = 'windows-1251'; // кодировка
 
// возможные ошибки
$tr->errorNotAvailable = '<span class="error">Сервер не доступен.</span>';
$tr->errorNoStatuses = '<span class="error">Нет твиттов.</span>';
 
// использовать прокси
$tr->curlOptions = array(
    CURLOPT_PROXY => "127.0.0.1:3128"
);
 
echo '<ul>' . $tr->getTwitts() . '</ul>';


Скачать (2.8 KB)
Проект на Google Code
+5
13 октября 2009, 01:02
30

комментарии (17)

0
falone #
А никто не подскажет, нет ли сервиса, который собирал бы твиты, допустим, за день, и публиковал их по рсс? типа твиттерфида, только наоборот. Знаю, что для вордпресса есть такой плагин, но мне нужно для другой блогоплатформы
+3
Kakysha #
Хм, спарсить твитты, емнип, около 20 строк кода на PHP, и столько же послать все это по RSS. Вот откопал у себя парсинг XML о статусами юзера.

function getTwitterStatus($twitterUser, $howMany = 1)
{
$url = sprintf("http://twitter.com/statuses/user_timeline/%s.xml?count=%d",
$twitterUser, $howMany);
$parsed = new SimpleXMLElement(file_get_contents($url));

$tweets = array();

foreach($parsed->status as $status)
{
$message = preg_replace("/http:\/\/(.*?)\/[^ ]*/", '\\0', $status->text);
$time = $this->niceTime(strtotime(str_replace("+0000", "", $status->created_at)));
$tweets[] = array('message' => $message, 'time' => $time);
}

return $tweets;
}
0
falone #
Эммм. А если учесть, что я не программист и необходимыми навыками не обладаю?
+1
mOlind #
хороший повод потренироваться. простая задача и полеза от решения будет.
0
falone #
Вместо «потренироваться» будет более подходящим слово «научиться». Поймите, не все на Хабре являются профессионалами в ИТ, есть и любители типа меня. Хотя таких, конечно, мало.
+2
mOlind #
да, я это и имел ввиду. самое приятное обучение — когда сам заинтересован в получении хорошего/рабочего результата.
+3
megatondetrua #
А чашка относительно блюдца не в перспективе =(
+1
Tokolist #
:) Мне проще написать что-нибудь на ассемблере, чем нарисовать иконку, поэтому картинка не моя и ответить вам ничего не могу.
+1
striker_vlad #
Не хочу никого обидеть, но для чего это на хабре? Я пока не забыл, как работать с xml и с curl.
0
Tokolist #
Готовое решение. Возможно сэкономит вам некоторое время :)
0
caIIIa #
Я просто парсю RSS, в программировании не претендую на хоть какое-то умение, использую стандартную функцию разбора XML не сочите за рекламу способ описан тут webdev.vdzr.ru/articles/modxtwitter

С кэшированием тоже ничего невозможного — на хостинге есть cron и лента раз в час дергается целиком и разбирается, возможно, кому-то пригодится.
0
electrocat #
ваш вариант мне понравился больше )
забыли только подсветку поиска #
0
Tokolist #
чем больше понравился? если не секрет :)
0
electrocat #
наверно не корректно выразился
он просто короче.
буквально вчера подумал, что хочу прикрутить к своему блогу и увидел ваш пост.

код выше мне понравился тем, что он короче, мне было его проще воткнуть себе, глянуть не разбираясь, кеширование и прочие радости были, не находил времени посмотреть как. а тут пару строк выдрал себе и готово.

у вас завершённое творение, оно замечательно. мне просто не нужен был готовый вариант. не могу + топик, поднял карму ) спасибо за тему и за готовую реализацию. уверен, что ей не раз воспользуются. :)
0
Tokolist #
Просто интересовался возможными путями улучшения скрипта :) Спасибо! :)
0
Rory #
А пример посмотреть?
+1
Tokolist #
Т.е. рабочий пример?
Вывод твиттов первого попавшегося юзера.
Вам остается только красиво оформить с помощью стилей.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.