Wszystko, co powiesz, może zostać wykorzystane przeciwko Tobie
Jestem information junkie. W szczególności chodzi o informacje dotyczące samego siebie — ponieważ pamięć mam kiepską (a raczej dobrą, tylko krótką), lubię ją rozszerzać na swój twardy dysk — i tak mam zarchiwizowaną historię maili, rozmów na GG, IRC-u, SMS-ów i wszelkiej innej komunikacji sięgającą dziesięć lat wstecz. Lubię móc zawsze sprawdzić dokładnie, kiedy coś się wydarzyło — bo nawet jeśli nie było o tym bezpośrednio mowy, to ludzka pamięć jest kojarzeniowo na tyle dobra, że często potrafi dopowiedzieć, o czym się w okolicach danego wydarzenia z kim rozmawiało.
Przeglądanie takiej historii wywołuje lawinę wspomnień — czasami chcianych, czasami nie, ale przecież naszych — tych kawałków, z których jest zbudowane nasze ja — i dobrze jest nie zapominać, albo przynajmniej w każdej chwili być władnym się dowiedzieć, co to za kawałki, bo przecież to jest chyba najistotniejszy element wiedzy o nas samych — znajomość własnej przeszłości. Bez tego nawet, jeśli wiemy, kim jesteśmy — to nie wiemy już, dlaczego.
Jak niektórzy z Was pewnie wiedzą, zacząłem ostatnio przelotny romans z blipem. Ci, którzy go nie skosztowali, mogą nie wiedzieć, że można tam przesyłać nie tylko statusy — publiczne wiadomości, ale także tzw. wiadomości kierowane: o których jest informowany tylko adresat (choć każdy może je przeczytać na kokpicie nadawcy i odbiorcy). Problem jest taki, że — podczas gdy statusy są rejestrowane w bliplogu — to wiadomości kierowane giną bezpowrotnie w czeluściach blipowej bazy danych, kiedy tylko znikną z kokpitu. A gdzie moja historia? Jak będę mógł w przyszłości wypomnieć reuptake-owi gg-ową propagandę, jeśli nie będę miał z tego żadnych zapisów? (Oczywiście ta propaganda z przymrużeniem oka (a przynajmniej tak sobie wciąż powtarzam ;) ), proszę jeszcze wideł nie wyciągać i nie palić pochodni, gwiazdy jeszcze nie są całkiem nie w porządku.)
No, ale od czego jest API. Króciutki skrypcik — i już nam się wszystko zapisuje:
conffile = open(CONFFILENAME, 'r')
login, password = conffile.read().rstrip().split(':')
conffile.close()
blip = blip.Connection(login, password)
last_update = 0
while 1:
updates = blip.updates.poll()
newupdates = []
for update in updates:
if last_update >= update.id:
break
newupdates.append(update)
last_update = updates[0].id
newupdates.reverse()
for update in newupdates:
message = "[" + str(update.id) + "]@("
message += update.created_at.strftime("%F %T") + ") "
message += update.src_user.login
if update.type == "dirmsg":
message += " > " + update.dst_user.login
message += ": " + update.body + "\n"
print message.encode("UTF-8"),
if len(newupdates) > 0:
sys.stdout.flush()
time.sleep(INTERVAL)
Próbka outputu:
[23585]@(2007-06-12 09:44:07) dividedmind: wkurwiam się na skype i openwengo -- jest coś dobrego do voip i video-over-ip, co działa i jest ideologicznie słuszne?
[23596]@(2007-06-12 09:50:22) reuptake > dividedmind: nagłos :))))
[23599]@(2007-06-12 09:51:30) dividedmind > reuptake: widzę że już Was zaczęli indoktrynować ;-)
[23600]@(2007-06-12 09:51:58) reuptake > dividedmind: zabrali przy wejściu komórkę, kazali używać nagłosu.
[23602]@(2007-06-12 09:52:48) dividedmind > reuptake: a gdzie to się w kadu włącza? ;)
[23603]@(2007-06-12 09:53:26) reuptake > dividedmind: "kadu detected. missiles launched."
[23605]@(2007-06-12 09:54:32) dividedmind > reuptake: aww, how sweet of you... aż na opis wziąłem, pozwolisz :D
[23607]@(2007-06-12 09:59:06) dividedmind > reuptake: a w oryginalnym kliencie gg i tak za bardzo reklamy pod wine nie chcą się pokazywać
[23610]@(2007-06-12 09:59:48) reuptake > dividedmind: to bądź uczciwy i nie uzywaj jak nie widzisz reklamy albo jej nie rozumiesz :)
[23611]@(2007-06-12 10:00:30) dividedmind > reuptake: może oni powinni taką stronę zrobić specjalną dla uczciwych użytkowników innych klientów? z samymi bannerami ;D
[23613]@(2007-06-12 10:01:22) reuptake > dividedmind: spokojnie. blip to tylko przymiarka. kasa jest, w kolejce czeka wykop, jogger, potem się kupi jabbę i nie będzie niczego ;)
[23616]@(2007-06-12 10:02:18) dividedmind > reuptake: A-HA! a tutaj się wszystko nagrywa, zobaczysz, co będzie, jak ta taśma do mediów trafi ;)
[23618]@(2007-06-12 10:03:02) reuptake > dividedmind: pikiety, demonstracjie, rzucanie instalkami slackware'a
[23619]@(2007-06-12 10:03:31) dividedmind > reuptake: zamawianie hurtowych ilości płytek ubuntu celem zapchania skrzynek
Kod na GPL 2.0 lub wyższym, copyright (c) 2007 mój.
Edit: mały bug w kodzie, layout

