Back to Blog

Twitter DSP

03 May 2016

Po krótkiej odskoczni, czyli budowania wykresów w D3.js, wracam ponownie do statystyk konkursu, a dokładnie danych z Tweetera. Tag #dajsiepoznac żyje i ma się dobrze, więc warto spróbować skorzystać i z tego źródła.

Pierwszym krokiem będzie znalezienie wszystkich kont uczestników na Twitterze. Na stronie konkursu są tylko podane adresy blogów i repozytoriów na GitHubie, więc trzeba znaleźć na to jakiś sposób. Zakładając, że aktywni uczestnicy tweetują opublikowane posty z tagiem #dajsiepoznac, moim pierwszym pomysłem było:

  1. Pobrać wszystkie tweety #dajsiepoznac
  2. Odfiltrować te, które nie są tweetami podanymi dalej.
  3. Pobrać linki z tweetów, ewentualnie rozwijając ich skrót z “http://ury.ty/erturwy” do rzeczywistego adresu.
  4. Jeśli link pasuje do adresu bloga, to autor tweeta prawie na pewno jest uczestnikiem konkursu.

Twitter API

Do pobrania szczegółów tweetów użyłem API Tweetera i jego klienta w Pythonie. API zwraca każdego tweeta w bardzo przystępnym formacie JSON, zwalniając użytkownika z parsowania hashtagów, linków i napomknień o użytkownikach (w nomenklaturze API te elementy są nazywane encjami). Problematyczne pozostaje pobranie WSZYSTKICH tweetów, ponieważ API szukajki indeksuje tweety za ostatnie 6-9 dni i nawet w tym przedziale nie gwarantuje zwrócenia każdego tweeta.

Rozwiązanie tego problemu było dość łopatologiczne. Jako że search zupełnie inaczej działa przez UI i na stronie wyszukanie po hashtagu zwraca poprawnie wszystkie wpisy, zwyczajnie zescrapowałem wszystkie tweety ze strony wyszukiwania i stworzyłem na tej podstawie listę ich identyfikatorów. Sposób prymitywny, ale skuteczny, bo pozwolił na pobranie tweetów od samego początku, nawet tych dotyczących poprzedniej edycji z 2010 roku i bez ryzyka pominięcia któregoś z nich. Mając identyfikatory, wystarczyło skorzystać metody API, lookup, aby pobrać resztę danych tweeta, w tym wyodrębnione z tekstu linki.

Na dzisiaj, tweetów z hashtagiem #dajsiepoznac dotyczących tylko drugiej edycji (tj. od daty ogłoszenia konkursu, 1 lutego 2016) jest 726. Dzięki nim udało mi się znaleźć 73 konta uczestników. Lista dostępna jest tutaj.

Ciąg dalszy nastąpi.