Вывод последнего твита

Вывод последнего твита

Сегодня таки дошли руки до написания этого функционала. Задачей стало написать максимально короткую функцию, которая не нуждается в сложной конфигурации, то есть без использования API-twitter.

Естественно это будет парсер htmlконтента, в качестве источника данных принял решение использовать стандартную станицу поиска https://twitter.com/search?q=from:{$login} Как видим поисковая ссылка включает в себя переменную from в которой и передается идентификатор конкретного пользователя.

Комментарии по самой функции смотрите в коде.

function wt_parser_last_tweet($login){
			$feed = "https://twitter.com/search?q=from:{$login}";
			$content = file_get_contents($feed);
			$stepOne = explode("<p class=\"js-tweet-text tweet-text\">", $content);
			$stepTwo = explode("</p>", $stepOne[1]);
			$last_tweet = $stepTwo[0];
		return $last_tweet;
	}

Я повесил вывод последнего трита в футер этого блога. Соответственно каждый раз разбирать станицу поиска не только нет смысла, но и сильно тормозит загрузку блога поэтому для ускорения процесса загрузки немного допилил функционал добавив хранение твита в сессию и возможностью задавать период разбора контента, в моем случае это 1 раз в час. Т.е. при первой загрузке сайта если твита нет в сесии парсим страницу получаем твит, записываем время парсинга и твит в сессию. Потом при серфинге пользователем сайта проверяем время загрузки твита и если оно превышает 3600 секунд (1час) перезаписываем твит в сессии заново полученным значением. Конечную версию функции смотрите ниже, результат её  работы в подвале блога.

function wt_parser_last_tweet($login){
		if (!$_SESSION['last_tweet']['date'] || (strtotime(date('Y-m-d H:i:s'))-strtotime($_SESSION['last_tweet']['date']))>3600){ // парсим твит какждый новый час...
			$feed = "https://twitter.com/search?q=from:{$login}";
			$content = file_get_contents($feed);
			$stepOne = explode("<p class=\"js-tweet-text tweet-text\">", $content);
			$stepTwo = explode("</p>", $stepOne[1]);
			$last_tweet = $stepTwo[0];
			$_SESSION['last_tweet']['date'] = date("Y-m-d H:i:s");
			$_SESSION['last_tweet']['tweet'] = $last_tweet;
			}
		else {
			$last_tweet = $_SESSION['last_tweet']['tweet'];
			}
	return $last_tweet;
	}

Для использования функции с WordPressпросто скопируйте её код в файл function.phpкоторый хранится в корне вашей активной темы. Код вывода последнего твита выглядит так.

<?=wt_parser_last_tweet($login)?>

Всем удачи…



Комментарии

  1. Аноним

    Хтмл код твита поменяется, и придется переписывать функцию. А через апи уже ничего менять не придется. И для хранилища можно юзать бд. Через нее тоже быстро будет. А чтобы раз в час собирать, в крон достаточно положить.

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

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


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>