Jak jsem konvertoval vsechny blogy na tento blog a Program na upload na Picasu/Blogger

Cesta k tomuto byla cca 2 tydenni, no hruza. Zacalo to tim ze jsem chtel mit nejake veci na vsech blozich, ale jak to udelat, kdyz kazdy blog je samostatny, ma vlastni sablonu a prihlasovaci udaje – menit to na 15 blozich se mi fakt nechtelo. Zacal jsem tedy pomalu pracovat na Blogger uploaderu.

Byl den 1., 26.2. . Prvne jsem si vzal sablonu a trochu ji upravil. Ted uz nemela chybu :-). ANi ne prekvapeni bylo kdyz sablona nesla uploadovat v novem rozhrani bloggeru, ale ve starem v pohode. To bylo 26.2. Nakonec jsem se rozhodl ze ten blog bude skutecne na bloggeru. Mel jsem v podstate jen 3 moznosti: blogger, wordpress, posterous. WP mi nejak nesedl, posterous me zklamal a to blogger taky ale tak bylo to to nejmensi zlo. Ten den jsem to jeste zkousel dat na vlastni hosting. Zridil jsem si freehosting na endore ale nepovedlo se mi nastavit CName zaznamy v DNS a navic bych musel mit v paticce reklamu. Zkousel jsem i ruzne jine freehostingy ale kazdy mel nejakou vadu. Snazil jsem se tu sablonu prevest na WP format ale skoncil jsem na tom ze nerozumim PHP.

Dalsi den, 27.2., jsem zacal psat samotny program. Prvne ty tridy parseru, u ktere jsem si planoval, ze ho dam volne na internet. Proto jsem ke vsem polozkam dal i anglicke popisy a nazvy promennych a vlastnosti byly taky anglicke. Pak jsem se pokousel postovat na blogger. Ale ouha, nekdy mi to vracelo jen vyjimku “Execution resulted in a redirect from http://google.cz a ´jindy zase “method not allowed”.

Co to bylo netusim. Snazil jsem se to resit ruzne, stahovani gdata v Jave, Pythonu, JavaScriptu. U Pythonu jsem zjistil ze to proste nedam ten jazyk, JS by byl neohrabany a Java – to je to nejvetsi zlo. Instaloval jsem snad 7 IDE, vsechny samozrejme pomale az to boli a vetsinou v Jave. Ale v zadnem se mi nepodarilo do projektu vlozit ty Java soubory!!

Takze nakonec jsem na Javu rezignoval a zatvrdil se ze Javu uz never more! Snazil jsem se i dekompilovat gdata .net knihovnu, ale samozrejme mi to vyhodilo milion chyb. Tak jsem je opravil jak jsem dokazal ale pak jsem narazil na chybu kterou jsem opravit nedokazal – totiz jedna trida se porovnavala se stejnou tridou prekrytym operatorem == a ten zase jen volal sebe.

Nakonec jsem zkusil ukazku primo od Googlu z webu a svete div se, ono to jelo. Pouceni: nepouzivat kody z webu, kdyz jsou primo officialne. Nemusi byt aktualni atd. Ono to mozna bylo tim ze jsem mail nezadaval jako sunamoCZ@gmail.com ale jako sunamocz@gmail.com . Pak uz se ta vyjimka “Execution resulted in a redirect from google.cz” dala pochopit.

Samozrejme pri tom jak jsem slepy, nervozni, blby a vsechno si domyslim potkavali takove veci, ze jsem vsechno udelal s “public” a teprve az kdyz mi ten program nefungoval a ja ho debuggoval jsem zjistil ze to bylo publish!! Dnes jsem take dokoncil parser wrx souboru. Samozrejme s plno chybama ale jakasi alfa verze byla dokoncena.

Vecer v 8h jsem jsem uz mel formular ktery mi dovoloval zaskrtnout ktere posty chci uploadnout: http://cl.ly/EZ3F . Nicmene nic jineho ten formular zatim neumel. Ve 8:20 jsem procitl. Doslo mi ze vlastne WLWriterem to nenauploaduji a ze se budu muset sam postarat o upload na picasu. Uz 26.2. nebo 25.2. jsem zkoumal pluginy pro WLWriter ale zjistil ze se takovy plugin ktery bych ja potreboval se udelat neda – da se uploadovat maximalne jeden prispevek, s moznosti na vice serveru. Ted me napada ze by to mohlo jit ale tehdy jsem usoudil ze to fakt nejde.

Dalsi den, 28.2. jsem uz zacal trochu vice programovat. Prvne jsem udelal naprosto silenou smycku pro vypocet velikosti thumbnailu, dal jsem ji 4 ruzne vstupy a v jednom mi to vratilo spatnou hodnotu. Nastesti muj dobry kamos mi poradil jak se te smycky zbavit a dokonce to vracelo vzdy presne vysledky!

Konkretne ta moje metoda se smyckami vypadala nejak takto: http://pastebin.com/E3xiSb65 . Dnes jsem jeste nevedel co s jinymi typy souboru nez s obrazky, napriklad .pdf, .doc, .mp3, atd. Pak jsem nevedel jak mam ukladat do slozky obrazky abych poznal zda ten obrazek na disku je ten co musim nauploadovat. Mel jsem tyto 3 verze:

1)Ukladat soubory napriklad 1.jpg a mit slovnik, kde budu mit jejich skutecne nazvy

2)Pridavat k nazvum souboru napriklad “soubor_velikost_45678” s tim ze pokud uz souboru bude obsahovat “_velikost_” tak ji nahradim..

3)Ukladat do podslozek “45678/soubor” (trochu vice implementace)

Nakonec zvitezila verze 1. Tak jsem dnes zjistoval jak se zbavit tech “Picasa html entit” ktere mi to vracelo to API. Ty divne znaky tam byly pokud byl obrazek na serveru ggpht.com a tak ja uploadoval vsechny pismenka diakritiky jako obrazky po jednom na picasu a zkousel. Nakonec mi z toho vysli 3 ruzne slovniky a tu jsem skoncil – vzdycky se to chovalo jinak.
Dale jsem chtel to udelat pres IE-OP WebBrowser ale do toho se mi moc nechtelo, protoze WB potrebuje MTA a ten ja nemam rad, bo mi pri nem nefunguje dalsi polovina programu. A hlavne nemam rad IE :-). Jinak jsem to zkousel stahnout ve vsech browserech(Opera, Firefox, Chrome, IE) a vsechny sli, jen ty .net tridy ne :-(. Tak jsem to zkusel s Awesomium.net. Prvne tu byl problem ze se mi nedarilo zkompilovat ten C++ wrapper nad chromiem.

Nedal jsem si ani den pauzu a prisel dalsi den, 29.2. . Dneska jsem se snazil pomoci .NET trid stahnout ty obrazky na disk. Nicmene neslo to nijak, zkousel jsem ruzne hlavicky, atd. ale vzdycky jsem se dostal akorat k chybe. Dobre, tak jsem to udelal jako s temi camminy. Vygeneroval jsem html soubor, otevrel v FF a stahl. Ale ouha, stahlo mi to vzdycky jen html soubor kde byl az odkaz na stazitelny obrazek.

Nicmene mi to znicilo diakritiku takze se z “i ze” stalo ” e”. Dneska jsem taky naprogramoval na sebe hodne kodu, ale to by se neprojevila moje smula kdyby mi to neco nepokazilo – zrejme se mi PC prehral, vypnul se a po najeti VC# nefungovala AutoRestore 🙁 . Az do ted jsem nepremyslel nad tim ze bych ten program uverejnil at ho mohou vyuzit vsichni. Take jsem dnes blbnul s WordPressem – totiz jsem se snazil aby jsem importoval do WP blogy z bloggeru a pak je exportoval, cim ziskal wrx ale wordpress je strasny smejd – napriklad WP neumi odstranit z prispevku kategorii – to je do nebe volajici. Zkousel jsem to vsemi moznymi zpusoby, ale proste to neslo. Nakonec v noci pred pulnoci jsem se rozhodl ze program bude kontrolovat na duplicity na webu pomoci souboru ktery bude mit zapsany u sebe na disku.

Z noci na 1.3. jsem ponocoval. Za 1h jsem to mel naprogramovane, melo by to fungovat nejak takto: pokud se najdou jiz uploadovane, preskoci a ulozi se..po dokonceni akt. smycky se zobrazi dialog s nalezenymi moznymi duplikaty..uzivatel si vybere co chce i presto nauploadovat.(hm, ted me opet napadlo ze jsem tam mel udelat aby kdyz se klikne jednou – zaskrtnout, 2x – spustit ten blogpost se kterym koliduje, ale to bych to musel doplnit trochu, protoze ted to uklada pouze zdrojovy blog a nazev prispevku)..

kdyz neco zaskrtne a da “Uploadovat”, tak se mu to nauploaduje… O pul sedme rano jsem jsem se pokousel na WP naimportovat aspon posterous blogy. Ale ani to moc WP neslo. Tak jsem si stahl 2 Posterous .NET API. Zacal jsem dale delat na CopyBlogForm. To byl takovy formular kde bude mozno libovolne kombinovane prevadet blogy z Bloggeru/Posterous na Blogger/Posterous. Dale jsem se pak snazil uploadovat na posterous skze api. V te library byla jedina metoda na toto a ta vyzad ovala jako parametr PosterousNewPost. Opet se projevilo to ze ja neumim cist a jak jsem roztekany a nesoustredeny, protoze jsem “videl” nutnost PosterousPost, ktery neslo nijak vytvorit – nebyl public, trida si ho vytvarela interne. Pres console API na posterous.com/api mi ty prispevky sli normalne pridavat, tak jsem si stahl wireshark a snazil se to okopirovat.

Zkousel jsem to s WebRequest, HttpWebRequest i WebClient s presne temi hlavickami co posterous odesilal – to jeste slo. Ale jakmile jsem neodeslal hlavicku cookie, v jejiz hodnote bylo asi 20 ruzne generovanych textu, v me neznamem sifrovani, kodovani nebo enkodovani(zkousel jsem vsechny kodovani v .netu a za enkodovani base6

4). Protoze .net tridy pro praci s xml jsou strasne neohrabane, hledal jsem vlastni tridy ktere by mi ulehcili praci s nimi. Nenasel jsem nic presne co jsem hledal, a tak jsem se na to vykaslal a delal to s pomoci XmlGenerator na urovni pouhych retezcu. Navic jeste k te Posterous console API – nechtela mi rict muj API token. Na jinem uctu ano ale tento byl specialne vytvoreny s jinym heslem jen pro ucely testovani toho API a zde to jaksi neslo. Ale to ja jeste tehdy nevedel. A ten ucet byl vubec nejaky divny. Chci poprve nacist z posterousu 6 kratkych prispevku(vice tam neni) pres API a pry 403 Forbidden (Rate Limit Exceeded)..

Bylo po poledni a byl den 6, 2.3.. Ja jsem se trapil nad tim ze nemuzu porad prijit na to proc mi nejde uploadovat na posterous. Pricital jsem to za vinu tomu ze to API co mam je v1 ale aktualni je v2 – takze napriklad ze ta dll generuje spatny auth token. Mozna ze v2 podporouje jen OAuth/XAuth. ALe to nemuzu rict, protoze jsem se o tom nikde nic nedozvedel. Pitomy posterous. Fakt jediny zdroj na celem netu byla ta console api. Uplne jako posledni moznost jsem vyzkousel si zazadat o ten api token.

Tak jsem tak udelal a slibili ze se ozvu brzy. Po celou dobu se mi to nezdalo co to je za blbost protoze kdyz to bude token meho uctu tak s nim bude moci kdokoliv pracovat (i kdyz bych ho zasifroval asymetrickym klicem, tak si ho muze kdokoliv odposlednout pomoci hlavicek a spojeni celkove, takze pak jedine sifrovat pomoci ssl, ale to nevim zda .net tridy umi.) Nakonec jsem se na to vykvaknul a rekl jsem ze se bude importovat pouze na Blogger. Taky se ten muj program jmenuje SunamoBloggerBatchUploader.

Dale jsem pak byl v Polsku a v Tesine nakupovat a vyrizovat s rodici a ja sam lampu. O tom jeste napisu samostatny clanek. Ve 16h jsem stale resil tu autorizaci. Cetl jsem par veci na netu o tomto, ale zadne reseni. Jen jsem zjistil ze auth_token ktery posilala api console je jiny nez auth_token ktery posilala ta moje knihovna a take ze neni v Base64 jak jsem se docital vsude na netu a hlavne v te .net dll. Pak me jeste napadlo se podivat do zdrojaku Writerous-u. Ale ta to delala s tou stejnou knihovnou se kterou ja a tedy nefungovala. Po tomhle jsem usoudil ze to nefunguje nikomu a vykaslal jsem se na to.

3.3. uz muj program umel se prihlasit na posterous i blogger a ulozit si ty data do registru bude li uz. chtit. Dale Stahnout blogy na disk – jak soubory wrx/xml tak i vsechny obrazky. Pak s temi wrx umi pracovat – vyhledavat v nich, vytvaret vlastni z existujicich .. pak ve formu CopyBlog zobrazuje co se prave deje v programu a ma to progress bar.

Uklada si to nauploadovane posty a kdyz to najde nejaky ktery jiz byl nauploadovan, preskoci ho a zepta se na konec co s kazdym takovym. Uploadovat selektivnim zpusobem – tedy uz si muze vybrat jen ty prispevky co chce uploadovat a nemusi je delat v tom mem manageru nebo nedejboze rucne. Nedelal jsem jen na tom BloggerUploaderu, ale i na jinych, napriklad jsem do ParsovacCammin pridaval i podporu pro parsovani cammin stazenych z House-Mixes. A pak take Converter reseni a projektu z jinych verzi na verzi 2005. Treba zrovna u toho byl ten problem ze mi to nechtelo zkompilovat linq: http://cl.ly/EiVv .. tak jsem to po mnoha pokusech prepsal do normalniho C# :). U prvniho prevedeneh projektu ho to prevedlo dobre: http://cl.ly/EjGd .

Zkousel jsem prevest par svych projektu, jeste jsem nezkousel zda to bylo funkcnim – vim ze mi to jen vyhazovalo varovani: Vecer jsem delal na CreateCustomWRXForm. To je form kde uzivatel si muze vybrat co chce mit v novem wrx a pak jen zada nazev a on se vytvori. Dale jsem zjistil ze je treba nutno pridat s1600/ pred nazev souboru, coz jsem nechapal, protoze co jsem vnimal, tak vcera to jeste nebylo uplne tak nutno. Tak jsem to opravil a zacal jsem pomoci API uploadovat prispevky. Ale ouha, brzo jsem zjistil ze na Blogger mohu dat jen 50 prispevku a pak az za 12h dalsich 50. Hlasilo to zase vserikajici chybu “(50

3) Server Unavailable” nebo “(400) Bad request”. Snazil jsem se tam nastavit prodlevu az 6 minut ale moc velky smysl to nemelo.

4.3. byla zase zmena:upload na picasu(doufam ze tam neni tra. limit jak na blogger),vygenerovani xml(take muj program)->importovat do blogger pres web. Pote jsem resil ze se mi sice importovali na blogger xml ok ale neimportoval se ani jeden prispevek. Do toho jsem resil problemy s netem, protoze mi nektere aplikace tahali jen na 3KB/S a Upload byl cca 10KB/S misto obvyklych 20KB/S. Navic se mi misto obrazku zobrazovali jen vystrazne cerne trojuhelniky a navic ke vsemu nerespektovali sirku sloupce, takze to budu muset taky vyresit, protoze to do dnes(8.3.) neni: http://cl.ly/ErSm . Stejne jako do dnesniho dne neumi muj program exportovat v bloggeru(to proto ze poprve mi to vracelo verbose html ale pak uz normalni xml v cem uz se dal snaze vyznat – snad – jeste jsem ho moc nestudoval. Samozrejme i zde kdyz jsem se pokousel uploadovat na picasu jsem se nevyhnul vyjimkam: “Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.” Tak jsem si rekl “pokud to jeste jednou udela, tak tam dam try-catch a do catch Thread.Sleep(1000 * 60 *

2) a za to stejne volani..pokud to opet selze tak uz se mi program zastavi s vyjimkou”. Taky ze udelalo a ja to zmenil ten kod a od te doby jsem se s touto vyjimkou nesetkal :).

5.3. – Dnes jsem se dozvedel, ze zdrojove kody tech webovych utilit pro prevadeni ruznych formatu blogu jsou na Google Code. Zel byly v pythonu a ten fakt jaksi nedavam, takze jsem se je pokousel nejak do C# prevest a kdyz to ne, tak aspon zkompilovat jako .net assembly. Nakonec jsem si rekl ze na seznam jazyku, kterym se budu vyhybat velkym obloukem odedneska pribude k Jave i Python. Nakonec jsem se rozhodl ze zkusim zjistit co mam spatne v tom mem wrx exportu, ze mi ho ta webova utilita nechtela brat.

6.3. – Objevil jsem limit picasy, maximalne 1000 fotek na jedno album. Dobre, tak jsem dopsal nejaky kod ktery by mi po dovrseni 1000fotek zalozil nove album s cislem o 1 vyssi, takze by to vypadalo treba sunamo, sunamo1, sunamo2 atd. Nicmene zase jsem udelal chybu v tom ze jsem sice nove album vytvoril ale uz si ho neulozil do programu a ten pri kazde dalsi fotce tak to album vytvarel znovu! nastesti tam stihl dat jen 9 fotek nez jsem si toho vsiml a opravil ten kod. Take mi Blogger API nechtelo vratit seznam prispevku, coz bylo divne, protoze kdyz jsem tu adresu dal do chrome, tak se mi vysledek zobrazil v pohode. A zatim jsem takto prenesl 3 Blogger blogy,takze ze by to .net API nefungovalo zcela se rict neda. Dale jsem dnes resil proc mi nektere tagy, zvlaste

, presahuji sirku sloupce. Zkusil jsem ruzne nastaveni od width, max-width, overflow a jinych az jsem nakonec zkusil opovrhovane word-wrap. A to bylo presne to co jsem potreboval. Sice mi to zalamovalo slova v polovine ale aspon ze mi to fungovalo :).

7.3. – Dneska jsem to uz konecne na ten blog vsechno dal. A pak jsem zjistil ze .. vsechno spatne :'(.

1)vsiml jsem si ze fotky od urcite v 365ce jsou nevysvetlitelne posunute o 1. Dale pak nektere posty meli natvrdo nastavenou cernou barvu text a tak jsem z nich nic nevidel. Tak jsem se ptal kamose ktere tagy bych mel vyhledat. On na me ze si mam zjistit tridy a id tech blogpostu. NJ, ale to neslo kdyz mi se to tim exportem a importem vsechno ztratilo, bylo li tam neco. Takze jsem to nakonec udelal s tim co napadlo me – tagy p, div a span. A zda se ze to bylo naprosto dostacujici. Dnes jsem taky udelal program pro spravu, hledani a nahrazovani v mych logech. Kdo se v te smesi pismenek mel normalne vyznat.. http://t.co/jCchBSCe . Diky tomu zvyrazneni jsem vedel ze nenahradim nic co bych nemel.

8.3. – Dnes jsem se nastval a udelal si program na to co jsem delal cely vcerejsek – tedy export do Blogger xml. Dale jsem dnes prevedl sdilene tridy a metody v swf do AJ. Jeste me to ceka se vsemi ostatnimi tridami a metodami v tom reseni. Nejvic problemu mi zpusobilo blogger datum – nejdrive jsem si myslel ze se musi doplnil na 2 mista vse. Kdyz to ne tak jsem si vsiml ze jsem v case misto : daval -. A pak jeste neco, ale to si nevzpomenu presne co. Pokazde jsem si musel prochazet ruzne exporty a porovnavat, aby to bylo uplne stejne.

9.3. – Delal jsem i na jinych programech. Jinak v tomto jsem pokracoval v te motivaci to dat verejne na internet a proto jsem udelal uplne nove rozhrani uplne od piky a cele v AJ, ktere umelo krizove i jednosmerne prevadet ruzne exporty na ruzne importy, umelo odstranovat pomoci predprogramovanych parametru, umelo vyhledavat v nazvech i obsahech atd. Uz do dokazalo zdarne vyparsovat export se vsemi mymi blogposty, tedy celkem 1448 🙂 Nicmene jsem i zjistil ze jsem nemel mazat z picasy album “Windows Live Writer”. To proto ze nejak na polovine blogu z Bloggeru i z Posterousu mi to nechalo odkazy na puvodni fotky a obrazky a tak jsem takhle musel hodne blogpostu editovat rucne a ty fotky upravit.

10.3. – Zaverecny den po snad 15 dnech ruznorode prace. Dnes jsem pouze editoval ruzne posty, poucil ze se nemam nahrazovat globalne & za ” and ” protoze to dopadlo tak ze jsem mel v prohlizeci pak texty jako “& ” misto “&&”. Skryval jsem i jine nezadouci prispevky, jako napriklad nedokoncene, celkem jsem jich skryl 15. No, cekal jsem ze jich bude vice. A uz toho mam tak akorat plne zuby, ted jdu ten svuj program, resp. jeho anglickou cast uverejnit.

Zaver: vynalozil jsem na to hodne casu, ale jeste to bude chtit hodne prace nez se to stane pouzitelne vsechno co jsem naprogramoval. Nejvice me nastvalo ze ty obrazky jsou stale na bloggerech a posterousech a ja tak nemuzu ty blogy smazat. ALe co, aspon tam budu moci dat text a odkaz ze se blog prestehoval. A ted jdu tu na tento blog dopsat dalsi prispevky..

Leave a Reply