Головна Інтернет Софт Hardware Мобіленд Вебмайстру Адміну Coding Hackzone Форум

Coding:

Twitter API: курс молодого бійця


Twitter API: курс молодого бійця
У цій статті я розповім про основи роботи з Twitter API, наведу готові шматки коду.

Отже, давайте спочатку визначимося ось з чим. Навіщо він, власне, потрібен цей Twitter API і яку користь він може принести вебмайстру? Середньостатистичному клепателю псевдосайтов він, швидше за все, буде марний, але -професіоналу API цієї популярної соціальної мережі може принести відчутну користь і як база для створення нових сервісів / стартапів, і як засіб розробки додаткових інструментів просування для цілком конкретного сайту.

Для розуміння і застосування знань, викладених у цій статті, нам знадобитися таке:

  • Знання PHP на твердому середньому рівні;
  • Знання і розуміння соціальної мережі Twitter;
  • Наявність вільного часу для експериментів;
  • Традиційно — прямі руки.
Почнемо з основ.
Український Twitter Відповідно до статистики компанії Яндекс (березень 2010), за півроку український Twitter зріс вдвічі. Число користувачів, які пишуть українською мовою, за рік зросла з 15 до 27%. Яндекс нарахував в Україні понад 35500 облікових записів. Це 20% від усього кириличного Twitter — більше, ніж для будь-якого іншого блогохостинга.

Понад 27% користувачів українського Twitter пишуть українською (рік тому таких було тільки 15%).
5% від усіх твітів — це ретвіти, 25% містять в собі твітер-нік. 67% твітів містять посилання, з яких 40% — скорочені посилання, а 12% — посилання на ЗМІ. Ця статистика загальна для кириличного Twitter.

Принцип роботи

У загальному і цілому, всю роботу з Twitter API можна звести до наступної схеми:

  1. Відправляємо GET-запит з параметрами(якщо є) за адресою потрібної нам функції;
  2. Отримуємо XML або JSON дані (в залежності від обраного формату);
  3. Якщо є потреба — Парсимо ці дані.

Наприклад, для того, щоб отримати всю інформацію про потрібний нам акаунт, достатньо відправити GET-запит на адресу

http://twitter.com/users/show/імя_аккаунта

У відповідь, Twitter видасть нам повну інформацію про це акаунт, включаючи текст останнього твіту.

Ця схема підходить під абсолютної більшість функцій Твіттера. Різниця буде лише в переданих параметрах і структурі одержуваних даних. Складно? Добре, давайте докладно розберемо найпростіший Twitter-додаток, яке буде запитувати і виводити основні параметри обраного облікового запису.

Приклад програми

Для початку, традиційно, виконаємо підготовку інтерфейсу — в нашому випадку, це буде простенька форма:

accountaccount />

Далі, дивимося у список опцій на порталі dev.twitter.com і вибираємо потрібну нам функцію. Оскільки ми вирішили створювати додаток, який буде виводити основні параметри обраного облікового запису, то зупинимо свій вибір на функції users/show. Як параметр, ця функція приймає ім'я облікового запису, для якого необхідно отримати характеристики (є і деякі інші параметри, але в навчальних цілях, ми зупинимося тільки на цьому).

Ось приклад готового модуля, що реалізує запит числа фоловерів, фолловінг і останнього твіту вибраного облікового запису. Зверніть увагу, для роботи цього скрипта вам потрібно в змінних $username і $password вказати ім'я і пароль від будь-якого облікового запису в Твіттері, який буде використовуватися для формування запитів.



$account = ІМЯ_АККАУНТА;  
$username = ИМЯ_АККАУНТА_ОТ_КОТОРОГО_БУДЕМ_ПОСЫЛАТЬ_ЗАПРОС;   
$password = ПАРОЛЬ_АККАУНТА_ОТ_КОТОРОГО_БУДЕМ_ПОСЫЛАТЬ_ЗАПРОС;
$context = stream_context_create(array( 
       `http` => array( 
        `header` => "Authorization: Basic ".base64_encode("$username:$password")
        )    
)); // виконуємо авторизацію            
$api_page = `http://twitter.com/users/show/`.$account; // адресу сторінки-функції для запиту 
$xml = @file_get_contents($api_page, false, $context); // виконуємо запит
$profile = new SimpleXMLElement($xml); // розбираємо отриманий XML-потік     
echo `фоловерів: `.$profile->followers_count.`
`
; // виводимо число фоловерів echo `фолловінг: `.$profile->friends_count.`
`
; // виводимо число фолловінг echo `Останній твіт: `.$profile->status->text.`
`
; // виводимо останній твіт ?>

Просто, правда? Давайте вбудуємо цей алгоритм у наш код з формою і подивимося на результат.

<form action=`twiapi.php` method=`POST`>
<input type=`edit` name=`account` value=`=isset($_POST[`account`])?$_POST[`account`]:``?>` /> 
<input type=`submit` name=`Submit` value=`Отримати дані` /> form> if (isset($_POST) and !empty($_POST[`account`])){ $account = $_POST[`account`]; $username = `ВВЕДІТЬСЮДИ ІМ'Я ВАШОГО Аккаунта у Твіттер `; $password = `ВВЕДІТЬ СЮДИ ПАРОЛЬ Вашого аккаунта в Твіттер`; $context = stream_context_create(array( `http` => array( `header` => "Authorization: Basic ".base64_encode("$username:$password") ) )); $api_page = `http://twitter.com/users/show/`.$account; $xml = @file_get_contents ($api_page, false, $context); $profile = new SimpleXMLElement ($xml); echo `фоловерів: `.$profile->followers_count.`
`
; echo `фолловінг: `.$profile->friends_count.`
`
; echo `Останній твіт: `.$profile->status->text.`
`
; } ?>


У принципі, цей скрипт готовий до вживання, але я пропоную трохи його доопрацювати, щоб він коректно обробляв можливі помилки з боку Твіттера, які зустрічаються у нього з незавидною частотою (наприклад, класична помилка з перевищенням навантаження на сервер Twitter, викликає картинку, де пташки намагаються підняти слона). Для цього додамо пару обробників, які я не буду наводити окремо.

Ось підсумковий код скрипта, що коректно обробляє ситуації, коли зазначеного облікового запису не існує або він заблокований, а також будь-які інші помилки з боку Twitter.

<form action=`twiapi.php` method=`POST`><input type=`edit` name=`account` value=`=isset($_POST[`account`])?$_POST[`account`]:``?>` /> 
<input type=`submit` name=`Submit` value=`Отримати дані` />form> if (isset($_POST) and !empty($_POST[`account`])){ $account = $_POST[`account`]; $username = ``; $password = ``; $context = stream_context_create(array( `http` => array( `header` => "Authorization: Basic ".base64_encode("$username:$password") ) )); libxml_use_internal_errors(true); $api_page = `http://twitter.com/users/show/`.$account; $xml = @file_get_contents ($api_page, false, $context); if ($xml == false) { if ($hdrs = @get_headers(`http://twitter.com/users/show/`.$account)) { if (substr(strchr($hdrs[0], ``), 1, 3)===`404`) { echo `Данийакаунт заблокований або не існує `; exit(1); } } else { echo `Помилка сервера`; exit(1); } } try {
$profile = new SimpleXMLElement ($xml);
}
catch (Exception $ex)
{
echo `Помилка сервера`;
exit(1);
}
echo `фоловерів: `.$profile->followers_count.`
`
;
echo `фолловінг: `.$profile->friends_count.`
`
;
echo `Останній твіт: `.$profile->status->text.`
`
;
}
?>

Скрипт завершений і готовий до вживання! Тепер давайте розберемо кілька чвстих питань.

Питання і відповіді по Twitter API

Як отримати число листів (listed), в які був доданий конкретний запис?

Нажаль, готової функції для цього, програмісти Twitter не передбачили, хоча їх неодноразово про це просили. Тому я пропоную своє рішення для отримання цього параметра. Ось готова функція, приймає в якості єдиного параметра, ім'я облікового запису для, якого необхідно підрахувати число listed:



function get_twitter_listed($account)
{
$username = `Введете СЮДИ ІМ'Я ВАШОГО АККАУНТ в Твіттер `;
$password = `Введете СЮДИ ПАРОЛЬ Вашого аккаунта в Твіттер`;

$context = stream_context_create(array(
`http` => array(
`header` => "Authorization: Basic ".base64_encode("$username:$password")
)
));

$api_page = "http://api.twitter.com/1/$account/lists/memberships.xml";
$xml = @file_get_contents ($api_page, false, $context);

$memberships = new SimpleXMLElement ($xml);

$listed_count = count($memberships->lists->list);

while(count($memberships->lists->list))
{
$api_page = "http://api.twitter.com/1/$account/lists/memberships.xml?cursor=".$memberships->next_cursor;
$xml = @file_get_contents ($api_page, false, $context);

$listed_count += count($memberships->lists->list);
}

return $listed_count;
}
?>

Принцип її роботи простий: вона "пробігається" по всіх листам, в які був доданий аккаунт і підраховує їх сумарну кількість. Рішення дуже ресурсоємне, але іншого поки немає. До речі в Twirate працює саме воно.

Як збільшити ліміт запитів, що накладається на акаунт?

Кожен стандартний обліковий запис може зробити не більше 150 запитів до Twitter API на годину. Але в ряді випадків цієї квоти не вистачає і хочеться більшого. Для цього розробники Твіттера ввели процедуру під назвою whitelistening (я називаю її "відбілювання" :). Виконується вона досить просто: йдемо за цією адресою і заповнюэм наступні форми:

  • Do you want to whitelist an IP( s)in addition to your account?. Якщо вам не потрібна прив'язка вашого "вибіленого" облікового запису до IP - залишаємо це поле порожнім;
  • Describe your project in detail. Тут описуємо свій проект для якого нам потрібен "вибілений" аккаунт і чітко обгрунтовуємо для чого нам потрібні додаткові потужності. Поставтеся до цього пункту серйозно, будь кому вони ресурси не виділяють;
  • Please provide contact information. Про всяк випадок вказуємо тут свій email;
  • Whitelist your user account?. Якщо в даний момент ви як раз виконали вхід тим обліковим записом, який потрібно "відбілити" - ставимо тут галочку;

Ось і все - відправляємо форму і чекаємо на розгляд заявки протягом двох тижнів (іноді більше, іноді менше). Якщо все пройде вдало, ліміт вашого облікового запису стане 20000 запитів на годину.

Як подивитися ліміт запитів у облікового запису?

Введіть в браузер наступну адресу

http://api.twitter.com/1/account/rate_limit_status.xml?account=ІМЯ_АККАУНТА

Вам буде виданий XML-потік. залишкових запитів буде зазначено в полі "remaining-hits". До речі, цим методом можна відстежувати, "вибілили" ваш акаунт після відправлення вами заявки з попереднього питання чи ще ні.

Висновок

Розробка додатків під Twitter - це ціла область знань, яка стане (і вже стає!) прибутковим напрямком ведення справ. Сподіваюся, цей невеликий лікнеп дозволить вам зануритися в цей захоплюючий світ, де взаємодіє програмний код і великий дата-центр синьої пташки.

До речі, незайвим буде заглянути і в нещодавно сформований центр розробників для Твіттер.


За матеріалами: http://westseo.ru
19.03.2011


Коментарі (14) | Залишити коментар

Danyon | 17.04.2011 04:23
TYVM you′ve solved all my porlbems

Julissa | 17.04.2011 19:40
IMHO you′ve got the right anewsr!

KERMIMALM | 12.06.2011 04:38
Оказываем услуги по поиску потенциальных клиентов для Вашего Бизнеса
Подробнее узнайте по телефону: +79133913837
Email: prodawez@mixmail.com
ICQ: 6288862
Skype: prodawez3837

grunge | 02.02.2012 15:05
Дуже допомогла стаття. Дякую))

Buy oem Software | 10.02.2012 22:09
r7XOfZ Thanks a lot! An extremely interesting comment!!....

Buy oem Software | 10.02.2012 22:19
oj8PDx See it for the first time!!....

cheap oem software | 11.02.2012 04:07
pXuYQ7 Yeah, it is clear now !... Just can not figure out how often do you update your blog?!....

Buy oem Software | 11.02.2012 08:29
IrcoFx I almost accidentally visited to this site, but stayed here for a long time. Stayed because everything was very interesting. Surely will share with all my friends!....

buy cheap oem software | 12.02.2012 14:24
NjIYxy Uh, well, explain me a please, I am not quite in the subject, how can it be?!...

Buy Cheap OEM Software | 07.03.2012 14:41
ypf2M5 Really enjoyed this article post.Really looking forward to read more. Will read on...

Adobe OEM Software | 07.03.2012 14:42
h0qYcy I really liked your article.

Adobe OEM Software | 07.03.2012 19:55
RIToTN I really enjoy the blog.Much thanks again. Fantastic.

Discount OEM Software | 07.03.2012 19:57
15Tnv2 I appreciate you sharing this article post. Really Great.

wholesale men clothing | 20.03.2012 23:00
This is one awesome article.Really looking forward to read more. Really Great.

Додати коментарi

Iм'я:
Код (UA):
Коментарi:


Купить дешевый диплом



ФОРУМ



КНИГИ, ЛІТЕРАТУРА

Крейнер Стюарт — «Бизнес-путь: Джек Уэлч. 10 секретов величайшего в мире короля менеджмента» (аудиокнига MP3) Придбати на
AudioBooks.com.ua -
49,95 грн.
Крейнер Стюарт — «Бизнес-путь: Джек Уэлч. 10 секретов величайшего в мире короля менеджмента» (аудиокнига MP3)
Вламис Энтони, Смит Боб — «Yahoo! Секреты самой популярной Интернет – компании» (аудиокнига MP3) Придбати на
AudioBooks.com.ua -
49,95 грн.
Вламис Энтони, Смит Боб — «Yahoo! Секреты самой популярной Интернет – компании» (аудиокнига MP3)

Партнери