PHP: Скрипты для Twitter (API)

Я уже публиковал Powershell скрипты для Вконтакте использующие его API vk.com. Теперь решил автоматизировать и Twitter при помощи PHP скриптов и Twitter API.

Для этого понадобится:

Скачивание, установка PHP и распаковывания архива библиотеки TwitterOAuth не должны вызвать вопросов. Перейдем к этапу создания приложения в Twitter.

Как создать приложение в Twitter

  • Идем на страницу для создания приложения - apps.twitter.com/app/new
  • Заполняем поля Name, Description, Website и соглашаемся с условиями. Жмем "Create your Twitter application" (если у Вас в твитере не добавлен телефон, то попросят добавить)

Создание приложения в Twitter

  • На вкладке настройки прав "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

У нас есть два файла:

  1. Файл со списком id страниц в Twitter на которые нужно подписаться. Каждый id в отдельной строке
  2. Файл со списком 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);

?>

Примеры скриптов будут добавляться.

Понравилось? =) Поделись с друзьями:

Обсудить