Подписка

добавить на Яндекс

Наши проекты

Delphi+Google

Google API

Google API в Delphi - проект с открытым исходным кодом.

Chrono

Chrono

Хронометр - программа для ведения списка задач.

ODFProc

ODFProc

ODFProc - работа с документами OpenOffice в Lazarus и FreePascal.

Поддержка блога

А тут я коплю на лицензию Delphi XE на iPad =).
Сумма пожертвования не фиксирована.

Публикации

Год назад

Случайный пост

Последние

Сообщения форума

Комментарии

Социальные сети

Google

Facebook

Twitter

Опрос

Вы сейчас или в ближайшем обозримом будущем планируете разрабатывать кроссплатформенное приложение с использованием Firemonkey?



Loading ... Loading ...

Блоги и сообщества

Статьи по Delphi DelphiFeeds.ru - Все Delphi-блоги Рунета Сообщество умных людей VR-Online.RU Бесплатный журнал для программистов и всех, кто интересуется IT Статьи и уроки по Delphi Новостной блог о высоких технологиях
Система Orphus
Опубликовал Vlad 18 марта 2010 в 22:10.
Категории: Моя работа.


Вчера я рассмотрел способ работы со списками 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 адресе, то выполните этот же самый код, но без логина и пароля.

---------------------------
Как я говорил вчера, Twitter полезен для продвижеия сайтов. Если же у Вас не своего сайта, но очень хочется, то можно заказать разработку сайтов в Новосибирске по разумным ценам у дизайн-студии Spirals. Ну, а если у Вас нет никакого желания связывать свою будущую профессию с Интернет, программированием и прочими техническими заморочками, то можете смело проходить курсы по обучению поваров . А что? Всегда будешь сыт, чист и рядом с кухней ;)
---------------------------
Понравилась статья? Тогда:
Делись! Загружай! Плюсуй!
   Отправить PDF на   
Читай ещё статьи на WebDelphi.ru

Комментарии (5)

WP_Cloudy
  • Алексей пишет:

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

  • Vlad пишет:

    :) Уже написал, только для движка WordPress. В доступ пака не выкладываю, т.к. ещё надо провести тучу работы по оптимизации затрат времени и трафика, но уже опробовал в своем Твиттере — работает как часы

  • Алексей пишет:

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

  • Vlad пишет:

    WordPress API + Twitter API = постинг новостей блога как угодно :) Могу с периодом в несколько минут постить заголовки со ссылками, могу только последнюю запись отправлять в Твиттер.. Короче здорово :)

  • Алексей пишет:

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

Ваш ответ

Внимание: Все комментарии модерируются, и это может вызвать задержку их публикации. Отправлять комментарий заново не требуется.

Пожалуйста, заключайте исходный код в тэги [code][/code].
Если код большой, то воспользуйтесь Вставкой кода на отдельной странице и оставьте в комментарии ссылку на исходник