• Blogparser

    Tento program umožňuje převod obsahu blogu z blog.cz do WordPressu. Funguje tak, že projde celý obsah blogu, vytvoří seznam článků a pak tyto články jeden po druhém stáhne do vašeho počítače. Ze stažných dat vyextrahuje nejdůležitější informace (podrobněji viz dále) a vše nakonec uloží do souboru formátu WXR.

    Soubor WXR pak lze již velmi snadno nahrát na libovolné stránky fungující na systému WordPress (viz např. tento návod v angličtině).

    Licence

    Program je pod licencí GPL3.

    Návod na spuštění a ovládání programu

    Spuštění nebude pro techicky méně zdatné uživatele asi úplně snadné. Níže uvedené návody jsou psané jen narychlo, v případě nejasností či problémů se ozvěte.

    Windows

    1. Nainstalujte si (pokud již nemáte) Java SE Runtime Environment. Doporučuji hned potom počítač restartovat.
    2. Stáhněte si Groovy (k dispozici je přímo instalační program pro Windows) a nainstalujte jej.
      1. Pokud si Groovy stěžuje, že nemůže nalézt proměnnou JAVA_HOME, postupujte ještě podle tohoto návodu.
    3. Stáhněte si nejnovější verzi programu v sekci níže.

    Linux

    Návod je psaný pro Ubuntu, ale postup bude pochopitelně velmi podobný i pro jiné distribuce.

    1. Nainstalujte si Groovy:
      1. sudo apt-add-repository ppa:groovy-dev/groovy
        sudo apt-get update
        sudo apt-get install groovy
      2. Případně můžete využít návod na instalaci.
    2. Stáhněte si nejnovější verzi programu v sekci níže.
    3. Program spustíte stejně, jako kterýkoliv jiný program v Javě, tedy např. pomocí příkazu java -jar blogparser.jar

    Ovládání programu

    Program na začátku vyžaduje pouze dvě informace: Název blogu, který má zpracovat (ne celá adresa, tzn. pro http://mujblog.blog.cz zadejte jen mujblog), a adresář, do kterého bude ukládat výstupní soubory. Můžete je dodat v tomto pořadí na příkazové řádce:

    java -jar blogparser.jar mujblog ~/export

    Jinak budete k jejich zadání vyzváni dvěma primitivními dialogy. Každopádně ale doporučuji spouštět program v příkazové řádce, momentálně se jinam nevypisuje průběh jeho činnosti.

    Program hned po získání údajů začne pracovat a do konzole bude vypisovat, co právě dělá. Zastaví buď zprávou FINISHED, což indikuje úspěch, nebo chybovou hláškou. Nejčastějším problémem asi bude nedostupnost připojení k síti, neexistující výstupní adresář, špatně zadaný název blogu, atd. Pokud příčinou není nic z uvedených, prosím kontaktujte mě (viz níže) a připojte okopírovaný výpis z konzole.

    Stažení

    blogparser 2.0 – 29.10.2013

    • Kompletní přepsání do Groovy
    • Funguje spolehlivě, ale zatím neumí zpracovávat obrázky odkazované v příspěvcích.

    starší verze

    • Pouze pro úplnost. V současnosti nejsou funkční, neboť blog.cz změnil strukturu stránek.

    Kontakt

    Ohledně blogparseru mi, prosím, pište pouze do komentářů na této stránce.

    Poznámky

    • Formát WXR není oficiálně dokumentovaný a to, co blogparser stvoří, je spíš minimum nutné, aby import fungoval. U nových verzí importovacího pluginu se v budoucnu může stát, že se s tím nespokojí.
    • Pozor, neručím nijak za funkčnost programu ani jakékoliv případné škody související s jeho používáním (viz. licence).
    • Blogparser byl napsán v Groovy 2.1.8, je tedy nejspíše zapotřebí mít alespoň tuto verzi.
    • Tvorba celého programu (verze 2.0) mi trvala jen pár dnů, pospíchal jsem – a podle toho to vypadá. Prosím tedy o shovívavost. :-)

     

    This post is also available in: English

    4 reakce na Blogparser

    1. pruky
      4.3.2014 v 19:04

      Blogparser má problém s datem. U novějších přízpěvků a komentů píše chybu: „date parsing error – using current date“. Samozřejmě se to dá upravit ručně, ale je to hodně práce. Je kdyspozici někde zdroják toho scriptu?

    2. pruky
      16.3.2014 v 21:08

      catched exception ‚java.lang.StringIndexOutOfBoundsException: String
      index out of range: 16385′ while downloading the page.
      waiting for 10 seconds
      trying again – attempt 2 of 5
      catched exception ‚java.lang.StringIndexOutOfBoundsException: String
      index out of range: 16385′ while downloading the page.
      waiting for 10 seconds
      trying again – attempt 3 of 5
      catched exception ‚java.lang.StringIndexOutOfBoundsException: String
      index out of range: 16385′ while downloading the page.
      waiting for 10 seconds
      trying again – attempt 4 of 5
      catched exception ‚java.lang.StringIndexOutOfBoundsException: String
      index out of range: 16385′ while downloading the page.
      waiting for 10 seconds
      trying again – attempt 5 of 5
      Exception in thread „main“ java.lang.reflect.InvocationTargetException
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
      der.java:58)
      Caused by: groovy.lang.GroovyRuntimeException: Could not find matching construct
      or for: blogparser.BlogparserException(java.lang.String)
      at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1550)
      at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1404)
      at org.codehaus.groovy.runtime.callsite.MetaClassConstructorSite.callCon
      structor(MetaClassConstructorSite.java:46)
      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstru
      ctor(CallSiteArray.java:57)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor
      (AbstractCallSite.java:182)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor
      (AbstractCallSite.java:190)
      at blogparser.DirtyHTMLReader.read(DirtyHTMLReader.groovy:112)
      at blogparser.DirtyHTMLReader$read.call(Unknown Source)
      at blogparser.BlogCzParser.parsePost(BlogCzParser.groovy:212)
      at blogparser.BlogCzParser.this$3$parsePost(BlogCzParser.groovy)
      at blogparser.BlogCzParser$this$3$parsePost.callCurrent(Unknown Source)
      at blogparser.BlogCzParser.retrieveAllPosts(BlogCzParser.groovy:110)
      at blogparser.BlogCzParser.parse(BlogCzParser.groovy:66)
      at blogparser.BlogCzParser$parse.call(Unknown Source)
      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
      teArray.java:45)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
      llSite.java:108)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
      llSite.java:116)
      at blogparser.Main.main(Main.groovy:32)
      at blogparser.GroovyLauncher.main(GroovyLauncher.java:7)
      … 5 more

      • 11.5.2014 v 09:41

        Ve verzi z githubu by to mělo být vyřešené – tedy aspoň tak, aby při chybě program nespadl. Ale se samotnou chybou asi nic udělat nedovedu, dochází k ní v knihovně jTidy, kterou blogparser používá.

    Napsat komentář

    Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *