kernel panic in userspace

my own self destruction
  • Blog
  • about
  • articles
    • Virtualbox bridge
    • linux blogging
    • Gentoo on Acer Extensa 5630Z
  • code
    • @unfollowr
    • WordPress
      • WordPress-bbPress syncronization
      • IE Warning
      • PostAds
    • Callisto overlay
    • @listwatcher
  • CV
  • belarusian
  • russian
  • english

whitelisted unfollowr troubles

Nov 13 2009
  • belarusian
  • russian

Свершилось чудо и моего ненаглядного @unfollowr добавили в список избранных пользователей Twitter, которым позволено использовать API запросы без ограничений. Теперь мне пишет, что осталось 20000 запросов в час, а не 150, хотя сколько бы я их ни делал, всё равно число не меняется. Не знаю даже, с какой попытки мне всё это далось. Далее о печальном и разном.

Незадолго до этого я вообще решил переписать бота с Perl на Python. Просто так захотелось, да и Python надо немножко вспоминать иногда, а то я его что-то подзабросил. Переписалось всё отлично, даже лучше чем было. Как только можно было делать неограниченное количество запросов к API, так я даже от Yahoo Pipes отказался, который порой выдавал не самые полные данные, что, к слову, компенсировалось частыми проходами по спискам. Только вот Twitter API — вещь в себе и большая загадка порой.

Вот к примеру, есть некие люди, которые не хотят, чтобы их обновления видели другие люди, если им на то дозвол не выдан. Ну и бг с ними, пускай. Эдакие социопаты тоже не прочь узнать, кто это такой подлый перестал их читать. Тоже можно понять. Они фолловили @unfollowr, тот им через Yahoo Pipes тягал список фолловеров и вроде бы как и считал что-то. Вроде и считал, а вроде и нет. Когда всё работало через Pipes, было незаметно, что там API говорит по поводу таких пользователей (за всеми и не уследишь), а когда работа начала вестись напрямую, тут и всплыли странные глюки. На некоторые запросы Python начал спрашивать пароль, хоть тот и указывался явно в URL в виде http://user:pass@host/. Я уж думал, что это просто API глючит местами, написал WorkAround даже (об этом позже), да вот только всё не то.

Оказывается, если пользователь с закрытыми апдейтами читает тебя, а ты его нет, то получить список его фолловеров через API нельзя. В Web интерфейсе поглазеть можно, а через API забрать нельзя. Логика шопппц. Причём мало того, что нельзя, выдавало бы хоть какую инфу в ответе, так нет, делается хитрее. Выдаётся HTTP Error 401 (Not Authorized) и требуется авторизация. Новая авторизация, как будто блин у меня 500 логинов в этот чертов твиттер и я буду их перебирать. По такому радостному поводу я даже написал в Google группу twitter-development-talk. Пока тихо, будем ждать результатов.

К слову, о том, как избежать запроса пароля в консоли, если данные получаются с помощью urllib в python. По умолчанию используется “Opener” FancyURLopener, который берёт на себя грязную работу по обработке многих ситуаций. Так вот именно он и выдаёт запрос пароля. Можно унаследовать от него ещё один класс, в нём перегрузить метод получения пароля, но это всё тупиковый путь и нам не нужен в общем. Нам просто нужно использовать другой класс для получения данных, а именно просто URLOpener, который будет не запрашивать пароль, а генерировать исключение, которое мы сможем потом красиво обработать в автоматическом режиме. Листинги давать не буду, почитать подробнее можно вот здесь, сам код @unfollowr лежит на Github, там можно посмотреть, как оно вообще у меня реализовано и работает.

Виртуальный сервер – vps — XEN виртуализация на дороге не валяется

  • belarusian
  • russian

Здарылася неверагоднае і майго ненагляднага @unfollowr дадалі ў сьпіс выбраных карыстачоў Twitter, якім дазволена выкарыстоўваць API запыты без абмежаваньняў. Цяпер мне піша, што засталося 20000 запытаў на гадзіну, а не 150, хаця колькі б я іх не рабіў, усё роўна чысло не зьмяняецца. Ня ведаю нават, зь якой спробы мне ўсё гэта далося. Далей пра сумнае і рознае.

Незадоўга да гэтага я ўвогуле вырашыў перапісаць бота з Perl на Python. Проста так захацелася, ды й Python трэба ўзгадваць час ад часу, а то я нешта яго падзакінуў. Перапісалася ўсё проста цудоўна, нават лепей, чым было. Як толькі зьявілася магчымасьць рабіць неабмежаваную колькасьць запытаў да API, дык я адразу адмовіўся ад Yahoo Pipes, які час ада часу выдаваў не самыя поўныя дадзеныя, что, дарэчы, кампенсавалася частымі праходамі па сьпісах. Толькі вось Twitter API — рэч у сабе і вялікая загадка.

Вось напрыклад, ёсьць нейкія людзі, якія ня хочуць, каб іх аднаўленьні чыталі іншыя людзі, калі ім на тое не далі дазволу. Ну й фіг зь імі, няхай. Эдакія сацыяпаты таксама не супраць даведацца, хто такі подлы перастаў іх чытаць. Таксама можна зразумець. Яны фолавілі @unfollowr, той ім праз Yahoo Pipes цягаў сьпісы фолавераў і здаецца нават нешта там вылічваў. Здаецца і вылічваеў, а атрымваецца, што і не. Калі ўсё працавала праз Pipes, было незаўважна, што там API кажа наконт такіх карыстальнікаў (за ўсімі не ўгледзеш), а калі праца пачала весьціся напрамую, тут і ўсплылі дзіўныя глюкі. На некаторыя запыты Python пачаў запытваць пароль, хоць той і даваўся яўна ў URL у выглядзе http://user:pass@host/. Я ўжо думаў, што гэта проста API глючыць месцамі, напісаў WorkAround нават (аб гэтым пазьней), ды вось толькі ўсё ня тое.

Выяўляецца, калі карыстач з закрытымі аднаўленьнямі чытае цябе, а ты яго не, то атрымаць сьпіс ягоных фолавераў праз API нельга. У Web інтэрфейсе паглядзець можна, а праз API забраць нельга. Логіка шоппц. Прычым мала таго, што нельга, выдавала б хоць якую інфу ў адказе, дые не, робіцца дзіўней. Выдаецца HTTP Error 401 (Not Authorized) і патрабуецца аўтарызацыя. Новая аўтарызацыя, нібыта блін у мяне 500 логінаў у гэты чортавы твітэр і я іх буду перабіраць. З такой радаснай нагоды я нават напісаў у Google групу twitter-development-talk. Пакуль ціха, будзем чакаць рэзультатаў.

Дарэчы пра тое, як пазьбегчы запыту пароля ў кансолі, калі дадзеныя атрымліваюцца праз urllib у python. Па змоўчаньні выкарыстоўваецца “Opener” FancyURLopener, які бярэ на сабе брудную працу па апрацоўцы многіх сітуацый. дык вось менавіта ён і выдае запыт пароля. Можна зрабіць для яго патомка, у ім перагрузіце мэтад атрыманьня пароля, але гэта тупіковы шлях і нам ён непатрэбны ўвогуле. Нам проста трэба выкарыстоўваць іншы клас для атрыманьня дадзеных, а менавіта проста URLOpener, які будзе не запытваць пароль, а генерыраваць выключэньне, якое мы зможам прыгожа апрацаваць у аўтаматычным рэжыме. Лістынгі даваць ня буду, пачытаць падрабязьней можна вось тут, сам код @unfollowr ляжыць на Github, там можна паглядзець, як яно ўвогуле ў мяне рэалізавана і працуе.

Виртуальный сервер – vps — XEN виртуализация на дороге не валяется

{ Comments : 2 Comments » }
{ Tags: 401, api, code, FancyURLopener, github, google groups, http, python, twitter, unfollowr, urllib, yahoo pipes }

RSS antisocial feeling

  • Ворачиваться в страну шпрот собираешься?
  • (via priskorbno) хочу. давно хотел. где купить?
  • ??
  • "((foldl (+) 0 [1..100]) ^ 2) - (foldl (+) 0 (map (^ 2) [1..100]))"
  • ?

Tags

bash belarus blog blogs bugs coding concerts download friends fun gentoo google images internet javascript kde language life links linux livejournal me money music overlays perl photos php plugins portage projects rss school shell social social networks ssh studying tests twitter ubuntu univer vkontakte wifi wordpress

links

  • asocial feeling
  • Callisto overlay
  • daThumbs
  • last.fm
  • twitter
  • Vkontakte
  • ~idioteque

Recent Comments

  • bobrik on @listwatcher
  • Process_of_illumination on WordPress-bbPress syncronization
  • Process_of_illumination on WordPress-bbPress syncronization
  • Aviva Gabriel on @listwatcher
  • Aviva Gabriel on @listwatcher
  • Larry D. Halstead on @listwatcher
  • neagaoleg on Hide Mentions in Twitter Web Interface
  • neagaoleg on about
  • Martina Bella on @unfollowr
  • gamersroute.com on WordPress-bbPress syncronization

Archives

  • January 2010 (1)
  • November 2009 (2)
  • October 2009 (5)
  • September 2009 (2)
  • August 2009 (2)
  • July 2009 (3)
  • June 2009 (1)
  • April 2009 (2)
  • March 2009 (1)
  • February 2009 (1)
  • January 2009 (2)
  • December 2008 (12)
  • November 2008 (17)
  • October 2008 (20)
  • September 2008 (13)
  • August 2008 (25)
  • July 2008 (18)
  • June 2008 (15)
  • May 2008 (7)
  • March 2008 (1)
  • February 2008 (9)
  • January 2008 (11)
  • December 2007 (24)
  • November 2007 (27)
  • October 2007 (21)

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

Creative Commons License rss comments rss valid xhtml