Мно­гим из­вест­но, что твит­тер стал зна­ме­ни­тым не толь­ко по при­чи­не сво­ей про­сто­ты и ка­кой-то супер идеи, но и благо­да­ря уни­каль­но­му, ин­ту­и­тив­но по­нят­но­му для раз­ра­бот­чи­ка с IQ вы­ше шим­пан­зе-оли­гофре­на, но в то же вре­мя мощ­но­му API на ко­то­ром по­яви­лось уже OVER 9000 разных кли­ен­тов, сер­ви­сов, сайтов, ко­то­рые соб­ствен­но этот API и ис­поль­зу­ют. Так вот, мне ста­ло ин­терес­но по­лу­чать ста­ти­сти­ку этих са­мых кли­ен­тов: кто кру­че и на греб­не вол­ны, дру­ги­ми сло­ва­ми. Дан­ные мож­но бы­ло во­ро­вать ва­го­нет­ка­ми без ка­кой-ли­бо ав­то­ри­за­ции в xml, json, rss или atom обыч­ным GET запро­сом. За 10 ми­нут на ле­вой ко­лен­ке был со­бран ма­лень­кий пер­ло­вый де­мон с ку­чей не­нуж­но­го му­со­ра и кри­вой ло­ги­кой (ис­ход­ный код), ко­то­рый рас­пар­си­вал xml, до­ста­вал ссыл­ку кли­ен­та, его на­зва­ние и всо­вы­вал все это в БД. Единствен­ной пробле­мой ока­за­лось то, что дан­ные это­го запро­са твит­те­ром ке­ши­ру­ют­ся на 1 ми­ну­ту - ста­ти­сти­ка со­би­ра­лась очень медлен­но и ран­дом­но, и я уже по­чти по­ло­жил пе­нис, как уви­дел вни­зу до­ков линк на Streaming API. Как ока­за­лось, су­ще­ству­ет не­кая аль­фа-вер­сия ин­тер­фей­са, поз­во­ля­ю­щая со­би­рать дан­ные http-по­то­ком с до­воль­но жир­ным рейтом. На на­пи­са­ния сле­ду­ю­ще­го ро­га­то­го с ви­ла­ми де­мо­на ушло еще мень­ше вре­ме­ни, за­то эта вер­сия во­об­ще бы­ла ли­ше­на не­нуж­ной хуйни и кон­фе­ти (ис­ход­ный код). While (1) в прин­ци­пе и не ну­жен, LWP и так за­цик­ли­ва­ет­ся, ка­чая дан­ные из по­то­ка, но я за­ме­тил, что стрим­мер твит­тера ино­гда об­ры­ва­ет со­еди­не­ние 2-3 ра­за в сут­ки, так что ме­ра предо­сто­рож­но­сти не по­ме­ща­ет.

За па­ру-трой­ку ча­сов на­ваял и ху­до­соч­ный фронт­энд с не­кра­си­вым ми­ни­ма­лист­ским ди­зай­ном. Про­жи­ва­ет он по ад­ре­су /twitterapp, об­нов­ляет­ся в ри­ал­тайме (за сут­ки со­жрал мил­лион твит­тов и не по­да­вил­ся), го­во­рит по ан­глий­ски. Бы­ло на­столь­ко лень что-то услож­нять, что для ге­не­ра­ции гра­фи­ка ис­поль­зу­ет­ся Google Charts API, ко­то­рый ока­зал­ся очень да­же ок для та­ких мел­ких дел. Если ну­жен код php-фронт­эн­да - сту­чи­те, но там все стан­дарт­но и ни­че­го ин­терес­но­го. Сер­вис про­сто just for fun, но за­то узнал па­роч­ку ин­терес­ных при­ло­же­ний из то­па. И да, мой лю­би­мый Twettie по­пал фде­сят­ку, это при­ят­но.