wtorek, lutego 01, 2011

Jak "okradłem" Google Readera ;-)

Dziś dostałem przez maila pytanie czy można w jakiś sposób pobrać zawartość "kanału" w Google Readerze bo niestety blog, który dostarczał tego kanału wziął i zaginął, nie ma więc dostępu do RSSa.

Pewnie są inne sposoby, ale ja mam swój ;-)

W Chrome otwieramy Narzędzia dla Programisty lub Konsolę JavaScript, przełączamy się na tabkę Network, odświeżamy interesujący nas kanał w Google Readerze.


Wybieramy te większe z pobranych plików, tutaj to był 4 z kolei.
Po zajrzeniu do niego okazuje się, że to stary dobry JSON :-) a nie jakiś ohydny XML! (chociaż parser XMLa w Java'ie łatwiej napisać jak mamy pomoc w postaci bibliotek do SAX ;-))
No to teraz trzeba pozyskać tylko jego bebechy.
Ja najpierw użyłem Fiddler2, czyli serwera proxy, który pozwala na podglądanie co lata między siecią, a przeglądarką. Niestety narzędzia z Chrome się nie nadają bo nie można zaznaczyć łatwo całej zawartości pobranego pliku i jej skopiować...
Można jednak skopiować adres tego pliku i go po prostu otworzyć w przeglądarce ;-)

Wycinamy zawartość pliku i zapisujemy sobie do pliku o nazwie np. toster.js.
Teraz w tym pliku na samym jego początku, w tej samej linii gdzie jest pierwszy znak "{" dodajemy:
var a = {.....

[OK, bez tych kropek, samo var a = przed pierwszym {]

Na samym zaś końcu pliku dodajemy od nowej linii:
var zaw = "<html><head><META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=windows-1250\"></head><body>";
for (var idx=0; idx<a.items.length; idx++) {
var z = "<H1>"+a.items[idx].title+"</H1><br />";
z+="<h3>"+new Date(a.items[idx].published*1000)+"</h3>";
z+=a.items[idx].summary.content
zaw+=z+"<hr />"
}
zaw+="</body></html>"
var fso = new ActiveXObject("Scripting.FileSystemObject")
var MyFile = fso.CreateTextFile("resultKradziejowy.html", true)
MyFile.writeLine(zaw)
MyFile.close()


Nagrywamy na dysku i uruchamiamy to (w Windows z WSH, ale z tego co zauważyłem to praktycznie każdy Windows to już ma ;-)).
Po chwili w tym samym katalogu gdzie nasz plik JS zobaczymy plik HTML o nazwie resultKradziejowy.html :-)

Tada!

Właśnie mamy plik z całym archwium jakiegoś bloga :-) [choć zastanawiam się czy rzeczywiście całym ;-) ... po chwili testowania, nie całym, ale wystarczy wtedy w parametrze n adresu wpisać jakąś dużą liczbę, dla mojego bloga to 2000 (bo wpisów jest koło 1300-1400), choć dla mojego bloga trzeba trochę zmodyfikować ten kod u góry, z symmary.content na content.content, no i coś się narazie wywala na zapisywaniu do pliku ;-) ale jak mi się wydaje jest to spowodowane tym, że mam w treści bloga jakiś znak, którego nie można zapisać do pliku wg. WSH, ale to się da zmienić jakby co ;-)].

Jakby kogo interesowało to tutaj jest wynik mojej niecnej działalności.


Podobne postybeta
ToDo od Trello jako "oddzielna aplikacja"
Mogłoby być łatwiej ;-)
AppInventor - pierwsze wrażenia i pierwsze programy :-)
Robimy widget do Windows 7 :-)
Najkrótsza droga do przyszłości - Polymer ;-)