Я уже публиковал Powershell скрипты для Вконтакте использующие его API vk.com. Теперь решил автоматизировать и Twitter при помощи PHP скриптов и Twitter API.
Для этого понадобится:
- Скачать и Установить PHP (Windows)
- Скачать PHP библиотеку TwitterOAuth (список библиотек на dev.twitter.com). Скачанный архив распаковать в папку, где будут находится PHP-скрипты. У меня получилась папка "C:\Dropbox\Programming\PHP\twitteroauth\".
- Создать приложение в Twitter
- Написать PHP скрипт
Скачивание, установка PHP и распаковывания архива библиотеки TwitterOAuth не должны вызвать вопросов. Перейдем к этапу создания приложения в Twitter.
Как создать приложение в Twitter
- Идем на страницу для создания приложения - apps.twitter.com/app/new
- Заполняем поля Name, Description, Website и соглашаемся с условиями. Жмем "Create your Twitter application" (если у Вас в твитере не добавлен телефон, то попросят добавить)
- На вкладке настройки прав "Permission" указываем что мы будем читать и редактировать информацию в Twitter - выбираем "Read and Write"
- На вкладке "Keys and Access Tokens" жмем кнопку "Create my access token" - создаем ключи
- Переходим на вкладку "Keys and Access Tokens" и копируем ключи которые нам понадобятся в скрипте:
- Consumer Key (API Key)
- Consumer Secret (API Secret)
- Access Token
- Access Token Secret
PHP Скрипты для Twitter
Теперь используя Twitter API создаем скрипты (текстовые файлы с расширением PHP).
Подписываемся в Twitter на какую либо Twitter страницу
<?php //Подключаем библиотеку TwitterOAuth require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //Указываем ключи созданного приложения в Twitter $token = '**********************************'; $token_secret = '**********************************'; $consumer_key = '**********************************'; $consumer_secret = '**********************************'; //Создаем подключение $connection = new TwitterOAuth($consumer_key, $consumer_secret, $token, $token_secret); //Подписываемся $result = $connection->post("friendships/create", array("screen_name" => "habrahabr")); ?>
Как видите скрипт очень прост:
- "friendships/create" - это путь к файлу "https://api.twitter.com/1.1/friendships/create.json"
- array("screen_name" => "habrahabr") - массив с передаваемыми переменными, в данном случае указываем что подписываемся на страницу с именем "habrahabr"
Публикуем в Twitter сообщение "Привет Мир!"
<?php //Подключаем библиотеку TwitterOAuth require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //Указываем ключи созданного приложения в Twitter $token = '**************************'; $token_secret = '*********************************'; $consumer_key = '*************************'; $consumer_secret = '************************'; //Создаем подключение $connection = new TwitterOAuth($consumer_key, $consumer_secret, $token, $token_secret); //Сообщение $tweetMessage = mb_convert_encoding('Привет мир!', "utf-8", "windows-1251"); // Убеждаемся что твит не длинее 140 символов if(strlen($tweetMessage) <= 140) { //Отправляем твит $result = $connection->post('statuses/update', array('status' => $tweetMessage)); } ?>
Сохраняем в файл id всех подписчиков Twitter
<?php //Подключаем библиотеку TwitterOAuth require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //Указываем ключи созданного приложения в Twitter $token = '***************'; $token_secret = '*****************'; $consumer_key = '*******************'; $consumer_secret = '**********************'; $file = 'C:\Temp\Twitter.txt'; //файл вывода $connection = new TwitterOAuth($consumer_key, $consumer_secret, $token, $token_secret); //создаем подключение $cursor=-1; while ($cursor != 0) { //если cursor будет = 0, значит дошли до конца списка $result = $connection->get("followers/ids", array("screen_name" => "pritchi2","count" => "5000","cursor" => $cursor)); $ids = implode("\n", $result->ids); //записываем каждый элемент массива в отдельную строку $cursor = $result->next_cursor_str; file_put_contents($file, $ids . "\n", FILE_APPEND); //добавляем список id в файл } ?>
Подписываемся в Twitter
У нас есть два файла:
- Файл со списком id страниц в Twitter на которые нужно подписаться. Каждый id в отдельной строке
- Файл со списком id страниц в Twitter на которые уже подписаны или подписывались
Задача PHP скрипта: подписаться на 100 страниц с id из первого файла, при этом проверять что мы уже не подписывались на этот id (при помощи списка id во втором файле).
PHP Код:
<?php //Подключаем библиотеку TwitterOAuth require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //Указываем ключи созданного приложения в Twitter $token = '**************'; $token_secret = '*****************'; $consumer_key = '***************'; $consumer_secret = '*************************'; $file_follow_id = 'C:\Temp\twitter-AphRU-followers.txt'; //файл с id которые нужно добавить $file_added_id = 'C:\Temp\twitter-test-added.txt'; //файл с id которые уже добавлялись $connection = new TwitterOAuth($consumer_key, $consumer_secret, $token, $token_secret); //Создаем подключение $result = $connection->get("users/show", array("screen_name" => "test")); //получаем информацию о странице $followers_count = $result->followers_count; //количество подписчиков $friends_count = $result->friends_count; //количество подписок $max_friends_count = $followers_count*1.1;//высчитываем максимальное количество друзей echo "max friends count:" . $max_friends_count . "\n"; echo "friends count:" . $friends_count . "\n"; echo "followers_count:" . $followers_count . "\n"; $follow = file($file_follow_id);//вгружаем в массив список id на которые нужно подписаться $followed = file($file_added_id);//вгружаем в массив список id на которые уже подписывались $i = 0; //счетчик id $j = 0; //счетчик оформленных подписок в ходе текущей работы скрипта while (($j <= 100)and($friends_count < $max_friends_count)) { //пока не подписались на 100 страниц и оформлено подписок менее допустимого количества if (in_array($follow[$i],$followed)) { //если уже подписывались на текущий id echo "i=" . $i . " j=" . $j . " already followed " . substr($follow[$i],0,-1) . "\n"; } else { //если еще НЕ подписывались на текущий id echo "i=" . $i . " j=" . $j . " not followed " . substr($follow[$i],0,-1) . "\n"; $result = $connection->post("friendships/create", array("user_id" => substr($follow[$i],0,-1))); //подписываемся file_put_contents($file_added_id, substr($follow[$i],0,-1) . "\n", FILE_APPEND); //Записываем id в файл с добавленными id $j++;$friends_count++; } $i++; } ?>
Скрипт отписки в Twitter
Этот скрипт отписывается от 125 страниц, на которые twitter аккаунт уже подписан. Чтобы не отписываться от тех страниц, на которые только подписались, скрипт отписывается от конца (если страница подписана на менее чем 10 000 страниц) либо в обратном порядке начиная с 10 000-й подписанной страницы.
<?php include "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; function twitter_unfollow($screen_name, $token, $token_secret, $consumer_key, $consumer_secret) { $connection = new TwitterOAuth($consumer_key, $consumer_secret, $token, $token_secret); //Создаем подключение $i = 0;$cursor=-1; while (($cursor != 0)or($i<5000)) { $result = $connection->get("friends/ids", array("screen_name" => $screen_name,"count" => "5000","cursor" => $cursor)); $ids = $result->ids; //записываем каждый элемент массива в отдельную строку $cursor = $result->next_cursor_str; echo "page " . $i . "\n"; $i = $i + 5000; } $i = 0;$j = count($ids); while ($i < 125) { $i++;$j--; echo "\ni=" . $i . " j=" . $j . " j[" . $j . "]=" . $ids[$j]; $result = $connection->post("friendships/destroy", array("user_id" => $ids[$j])); //отписываемся } } //Указываем ключи созданного приложения в Twitter $token = '**************'; $token_secret = '*************'; $consumer_key = '****************'; $consumer_secret = '*********************'; $screen_name = "name_elims"; //имя нашей страницы twitter_unfollow($screen_name, $token, $token_secret, $consumer_key, $consumer_secret); ?>
Примеры скриптов будут добавляться.