Pull to refresh

Автопостилка цитаток в Twitter на PHP

Доброго времени суток хабрасообщество. Я очень долго думал о чем бы написать статью чтобы получить инвайт и наконец то решил обозреть то что я сделал сам. Речь в этой статье пойдет о том как сделать парсинг цитаток известных людей и их публикацию в твиттер.

Для начала давайте создадим приложение в developer центре twitter, для этого переходим по ссылке и нажимаем по кнопочке «Create a new application». После этого нам необходимо будет заполнить имя нашего приложения, описание и ссылку на Ваш сайт. Так же необходимо поставить галочку напротив «Yes, I agree» и ввести капчу и нажать на кнопку «Create your Twitter application», на этом создание приложения законченно.

Теперь нам нужно получить ключи доступа для приложения, правда уровня доступа «Read-only» нам не хватит, поэтому переходим на вкладку «Settings» и в самом низу ищем список с названием «Access» и ставим чекбокс напротив «Read and Write», сделали? Теперь сохраняем изменения и переходим обратно на вкладку «Details».

После смены уровня доступа приложение листаем вниз до раздела «OAuth settings» там появились новые функции, такие как создание персонального токена. Чтобы его создать нажимаем кнопку «Create my access token».

Теперь ищем на странице следующие поля:
  • Consumer key
  • Consumer secret
  • Access token
  • Access token secret

Сохраним их куда нибудь чтобы не забыть.

Теперь переходим к сути а именно программированию грабера цитат и публикация их в твиттер. Для этого нам понадобится класс для работы с Twitter API скачать который Вы можете сдесь.

Первым делом подключим к проекту этот самый класс для работы с Twitter API:
require_once "twitteroauth/twitteroauth.php";

Затем объявим переменные с нашими данными ключей:
$CONSUMER_KEY = "YOUR CONSUMER KEY";
$CONSUMER_SECRET = "YOUR CONSUMER SECRET";
$OAUTH_TOKEN = "YOUR OAUTH TOKEN";
$OAUTH_SECRET = "YOUR OAUTH SECRET";

Теперь создадим объект класса TwitterOAuth с нашими параметрами:
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $OAUTH_TOKEN, $OAUTH_SECRET);

Для получения цитат я предлагаю использовать сервис Forismatic, это отличный сборник цитат на любой вкус, так же сервис обладает простым API.

Чтобы получить цитату сделаем HTTP GET запрос к API:
$quote = file_get_contents("http://api.forismatic.com/api/1.0/?method=getQuote&format=text&language=ru");

Так как в Twitter разрешено публиковать твиты не более 140 символов добавим простую проверку:
// Если длинна цитаты меньше 140 символов
if(strlen($quote) < 140){
    // публикуем твит
	$connection->post('statuses/update', array('status' => $quote));
}

На этом наша работа законченна, осталось только повесить этот скрипт на cron и все. Главное не постить цитаты сильно часто, иначе Ваша твиттер лента превратится в стену одной из юнных пользовательниц вконтакте.

На всякий случай выложу полный код:
Код
require_once "twitteroauth/twitteroauth.php";

$CONSUMER_KEY = "PgnLVZYVbl1irMQup8Bw";
$CONSUMER_SECRET = "rmOHVumQ7Ws7tAcxsUXHR3MoH6tdusTtx1FcSImCjA";
$OAUTH_TOKEN = "914232847-1lNW4vIko3qW3I4CH4rSOo9rTQG15VEUH9jiP1Yp";
$OAUTH_SECRET = "8R0KxMqT9z8166d0jX7WYt7960XwyiTqu2Te7LY";

$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $OAUTH_TOKEN, $OAUTH_SECRET);

$quote = file_get_contents("http://api.forismatic.com/api/1.0/?method=getQuote&format=text&language=ru");
if(strlen($quote) < 140){
	$connection->post('statuses/update', array('status' => $text));
}



На этом все дорогой друг, увидимся в моих следующих хабрапостах.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.