2
Мар
2010
Мар
2010
Вывод последних записей из Twitter

Сегодняшний пост будет о популярном блогхостинге Twitter, а точнее – о выводе последних записей из Twitter на свой сайт.
Да-да, у меня были похожие посты, но там можно было вывести только один последний твит. А сейчас можно вывести любое количество.
Скрипт ниже. Не забудьте изменить первые две строчки на нужные данные.
<?php
$name = 'neoantox'; //Измените это на свой ник в в твиттере
$count = '5'; // Количество записей, которое нужно вывести
//------------------------
$c = $count + 1;
$dom = new DomDocument();
$dom->load('http://twitter.com/statuses/user_timeline/'.$name.'.xml?count='.$c);
$twit = $dom->getElementsByTagName('text');
$date = $dom->getElementsByTagName('created_at');
$id = $dom->getElementsByTagName('id');
for ($i=0;$i<$count;$i++){
list($dweek, $m, $d, $time, $cl, $y) = explode(' ', $date->item($i*2)->nodeValue);
$month_str = array(
'Jan','Feb','Mar',
'Apr','May','Jun',
'Jul','Aug','Sep',
'Oct','Nov','Dec');
$month_int = array(
'января', 'февраля', 'марта',
'апреля', 'мая', 'июня',
'июля', 'августа', 'сентября',
'октября', 'ноября', 'декабря');
$m = str_replace($month_str, $month_int, $m);
$postdate = $d.' '.$m.' '.$y;
$postid = $id->item($i*2)->nodeValue;
$post = $twit->item($i)->nodeValue;
echo '<p><a href="http://twitter.com/'.$name.'/status/'.$postid.'">'.$postdate.'</a> - '.$post.'</p>';
}
?>
Также, вы можете его скачать.
Скачать (730 байт)
Вывод последних записей из Twitter
А вот мой

спасибо!! только скажите – а как выводить не дату публикации , а скажем «1 минуту назад», или «час назад»??
Вот, написал на скорую руку. Скрипт не идеален, но работает.
Скачать
У меня вот эта строка не работает, просто пустота выводится:
if (date(«H») == $hour) {
if (date(«i»)==$min)
return «Несколько секунд назад»;
if (date(«i»)>$min) {
$omg = date(«i»)-$min.’ ‘.number_ending(date(«i»)-$min, ‘минут’, ‘минуту’, ‘минуты’);
return $omg.» назад»;
}
}
т.е. не выводятся твиты только что созданные или которым не больше часа..
спасибо!
Стал разбираться в вашем коде.. вот непонимаю кое каих строк…
Поможете?
$omg = date(«i»)-$min.’ ‘.number_ending(date(«i»)-$min, ‘минут’, ‘минуту’, ‘минуты’);
в частности вот что такое number_ending(date(«i»)-$min
number_ending этот искал в инете , чтото не нашлось.
и ещё
list($hour,$min,$sec) = explode(‘:’,$time); – ненашёл где берёться переменная time
$postid = $id->item($i*2)->nodeValue; – что значит это и все похожие выражения?
Если можно, поподробнее, а то мне важно разобраться..
number_ending – это функция, которая склоняет окончания. Например, 5 минут, 1 минута или 3 минуты
date(“i”)-$min – узнает сколько сейчас минут и вычитает из него время, когда был опубликован твит. Таким образом, определятся сколько минут прошло
переменая $time – это время, когда опубликован твит, оно передается функции TwitterTime и уже потом идет её обработка. Время в формате 15:32:16 делится на отдельные части, т.е. $hour = 15; $min = 32; $sec = 16
$postid = $id->item($i*2)->nodeValue; – эта строка парсит xml код, расположенный в http://twitter.com/statuses/user_timeline/neoantox.xml.
Кстати, если нужно, могу выложить версию с кэшированием.
Я так чисто пантуюсь, что у мя аватар есть, а у naikom нету!!! =)
iMax очень смешно))))
NeoAntoX слушайте , спасибо, разобрался во всем кроме одного – может разьясните более детально логику функции
number_ending . а то чтото как в потёмках она для меня)
Функцию я взял из интернета, но все равно объясню, как она работает.
$num100 = $number % 100; – Берет две последние цифры от числа
$num10 = $number % 10; – Берет последнюю цифру от числа.
Как работает функция:
Например, 2 минуты или 4 минуты.
да и кстати – вставляю ваш код в мой сайт..
вот что вижу-
http://s59.radikal.ru/i165/1005/cd/20dc8b7c70be.jpg
и не могу избавиться от этих 19 20 – это видимо час, когда был написан твит.
пробовал убрать, неполучается..
скажите, что и в какой строке там удалить надо?
удалите эту строку:
echo $hour;
Кстати, у вас окончания не правильно ставятся. Должно быть 1 час назад, а у вас – 1 часов назад.
спасибо! попробую сам поменять!
кстати молодец наиком. ты в отличии от некоторых посты каждый день пишеш
С кодом вроде разобрался. Спасибо. Кстати, планирую пост про этот скрипт с ссылкой на этот блог разумеется.
Спасибо. Буду очень благодарен :)
Спасибо за код. а что нужно удалить, чтобы дату вообще не показывало. Т.е. просто текст твита
И еще вопрос. Сильно ли нагружает страницу этот код? ну т.е. будет ли она дольше грузиться?
Чтобы не показывало дату:
Замените эту строку
echo '<p><a href="http://twitter.com/'.$name.'/status/'.$postid.'" rel="nofollow">'.$postdate.'</a> - '.$post.'</p>';на
echo '<p>'.$post.'</p>';Насчет второго:
Страница, конечно же, будет дольше грузиться. Всё зависит от степени нагрузки самого твиттера. Но у меня есть версия с кэшированием, она будет загружать твиты только один раз, а потом брать их из файла. Могу выложить, если надо
Да, было бы здорово. Спасибо огромное. Сделал ретвит вашей странички
http://neoantox.ru/?file_id=6 – Вот
Начало файла отредактируете как вам нужно, комментарии есть.
Ах да, спасибо за ретвит!
А как лучше втыкать? код вставлять или вставлять файл с кодом(инклюдить)?
смысла нет код вставлять, проще с inculde
блин вставил сначал просто код(до вашего сообщения) и запорол все. сайт не грузит и пишет
Parse error: syntax error, unexpected ‘}’ in /мойпуть/lib/kernel.php(885) : eval()’d code on line 333
возможно, когда вы удаляли код, не удалили его полностью или наоборот что-то лишнее стерли.
Попробуйте удалить } с 333 строки файла lib/kernel.php
да в kernel.php то ничего не писал. из кэша сайта удалил виджет с кодом твитов, но ничего не дало. теперь бы найти, где виджеты хранит мой движок(Блоголет)
Хм, не знаком с этим движком. И даже не знаю, как бороться с данной проблемой. Попробуйте обратиться к автору движка.
да не знаю, как описать им проблему эту. там я вроде удалил код из виджета, но теперь 158 строку требует
Все ок. исправил. Я вашу другую версию кода втыкал и все ок было. Ту, которая без кэша. Может это из-за кэша так?
Или мне просто попробовать инклюдом?
Прошу прощения, моя вина. Удалите символ } с предпоследней строки. Либо скачайте файл заново.
Ещё один способ тут:
http://ainursafin.com/node/267
будет не лишним для тех у кого движок не на utf-8 )
$post = iconv(‘UTF-8′,’WINDOWS-1251′,$post);
Это то? что мне нужно, но куда это вставить? Я только начинаю осваивать php ^)