уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Вчера я рассмотрел способ работы со списками followers и following при котором в ответном XML-документе возвращается вся информация о пользователях в списке, включая имя, местоположение, информацию о профиле, последнем сообщении пользователя и т.д. и т.п. Однако для того, чтобы провести элементарную проверку пользователя, например, определить добавил он Вас в свой список following или нет, тащить из Сети такой массив лишней информации достаточно затратно, хотя бы даже по времени выполнения запроса. К счастью, разработчики Twitter API предусмотрели и другой, более экономичный способ работы со списками followers и following.

Обратимся к набору методов API из раздела «Social Graph Methods». Здесь содержится всего два метода: friends/ids и followers/ids. По названию уже становится понятным, что первый метод вернет нам following, второй — followers. Так как методы эти по своей работе и набору параметров идентичны, то рассмотрим их на примере friends/ids — списка друзей.
Метод возвращает список ID пользователей из списка. Аутентификауия требуется только для защищенных (protected) пользователей. Что замечательно, так это то, что за раз в документе возвращается до 5000 записей, в то время как statuses/friends за раз взвращает только 100. Разница более, чем ощутима. Получить весь список можно так:

[...]
  Login:=Edit1.Text;
  Pass:=Edit2.Text;
  Cursor:='-1';
  Memo1.Lines.Clear;
  while Cursor<>'0' do
    begin
      with THTTPSend.Create do
        begin
          URL := EncodeURL(AnsiToUtf8('http://'+Login+':'+Pass+
          '@api.twitter.com/1/friends/ids/WebDelphi.xml?cursor='+Cursor));
          if HTTPMethod('GET',URL)then
            begin
             aDoc:=NewXMLDocument();
             aDoc.LoadFromStream(Document);
             for I := 0 to aDoc.DocumentElement.ChildNodes.Count - 1 do
               begin
                 if aDoc.DocumentElement.ChildNodes[i].NodeName='ids' then
                    Node:=aDoc.DocumentElement.ChildNodes[i]
                 else
                   if aDoc.DocumentElement.ChildNodes[i].NodeName='next_cursor' then
                     Cursor:=aDoc.DocumentElement.ChildNodes[i].Text;
               end;
             for i:=0 to Node.ChildNodes.Count-1 do
                 Memo1.Lines.Add(Node.ChildNodes[i].NodeValue);
           end;
    end;
    end;
[...]

Определение значения next_cursor, в принципе, осталось «про запас», так как никогда незнаешь кто воспользуется алгоритмом (мож Обама решит массфолловинг устроить :)).
Точно также просто можно вывести весь список ID пользователей из списка followers. Ну, а после того, как списки получены, вы можете воспользоваться методом friendships/exists, используя вместо screen_name id пользователя и устраивать, что угодно — массово добавлять новых друзей, удалять тех, кто вас не «фолловит» и т.д. и т.п. Только следует помнить, что такие действия как массфолловинг и противоположное — массовый UnFollow может привести к блокировке Вашего аккаунта.
Также следует помнить, что некоторые из методом, например, тот же friendships/exists имеют ограничения на использование.
Кстати сказать, просмотреть текущий остаток запросов к Twitter API на Вашем аккаунте можно так:

Login:=Edit1.Text;
  Pass:=Edit2.Text;
  Memo1.Lines.Clear;
  with THTTPSend.Create do
    begin
      URL := EncodeURL(AnsiToUtf8('http://'+Login+':'+Pass+
        '@api.twitter.com/1/account/rate_limit_status.xml'));
      if HTTPMethod('GET',URL)then
        begin
          aDoc:=NewXMLDocument();
          aDoc.LoadFromStream(Document);
          //осталось запросов
          Node:=aDoc.DocumentElement.ChildNodes.FindNode('remaining-hits');
          label17.Caption:=Node.Text;
          //доступно запросов в час
          Node:=aDoc.DocumentElement.ChildNodes.FindNode('hourly-limit');
          label18.Caption:=Node.Text;
        end;
    end;

Если же Вам нужен остаток запросов не на аккаунте, а на Вашем IP адресе, то выполните этот же самый код, но без логина и пароля.

0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
5 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Алексей
Алексей
19/03/2010 14:48

Нет ли у Вас идеи написать, программу для Twitter? для обновления новостей???

Алексей
Алексей
21/03/2010 12:06

В плане для движка WP???

Алексей
Алексей
22/03/2010 10:34

Я не совсем понял, а зачем тут Delphi?