Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: skript na konverzi ebooku : PDB -> epub  (Přečteno 15268 krát)

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
skript na konverzi ebooku : PDB -> epub
« kdy: 17 Března 2010, 11:43:43 »
Zdravim

Mam sbirku knizek - je jich nekolik stovek -ve formatu PDB, s timto formatem si ale neporadi moje ctecka (Foxit eSlick). Zkousel jsem uz driv ruzne zpusoby konverze, ale pokazde mi to zmrsilo diakritiku. Kdyz jsem si jendu z tech knizek otevrel ve fbreaderu, zjistil jsem ze kodovani je windows-1250 - stredoevropske - jazyk cestina. Mam nainstalovany program calibre, dival jsem se do manualu a nasel nakonec reseni :
Kód: [Vybrat]
ebook-convert /media/data/eBooks/knizka.PDB /home/karlitos/Desktop/test.epub --input-encoding windows-1250
No a svete div se, ale jak calibre ebok-viewer tak i fbreader po konverzi do .epub formatu ukazuji diakritiku v poradku. No a ted muj problem : tech knizek jsou stovky, jsou razeny stylem : ebooks/nazev_autora/tituly . Takze bych potreboval skript ktery by rekurzivne prosel cely adresar ebooks a u kazde knizky provedl konverzi podle vyse uvedeneho prikazu a vyslednou knizku ulozil do ebooks2/nazev_autora/titul
Neco jako
Kód: [Vybrat]
IF dalsi adresar existuje
FOR vsechny knizky v nem DO
ebook-convert cesta_k_titulu.pdb /media/data/ebook2/cesta_k_titulu_epub --input-encoding windows-1250

Snazim se snazim ale tohle proste v bashi nedam, tak moc prosim nekoho zkusenejsiho o pomoc.
diky K
« Poslední změna: 17 Března 2010, 15:37:42 od karlitos »
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

stenliq

  • Návštěvník
  • Příspěvků: 81
Re: skript na koverzi ebooku : PDB -> epub
« Odpověď #1 kdy: 17 Března 2010, 12:14:22 »
Možná by se to dalo vyřešit jednoduše - použít find k nalezení knih a pustit na ně ten ebook-convert. Například (hrubý nástřel):

Kód: [Vybrat]
find *.pdb | while read file
do
  ebook-convert $file
done

Berte to opravdu jenom jako inspiraci, v BASHi jsem dělal před hodně dlouhou dobou :))
Case: Fractal Design Define R2
CPU: AMD Phenom II X4 965 Black Edition
MB: Asus M4A89GTD PRO/USB3 RAM: 4GB DDR3, 1333 MHz GPU: MSI R5770 HDD: WD Caviar Blue 320 GB (Windows 7 + Archlinux)

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
Re: skript na konverzi ebooku : PDB -> epub
« Odpověď #2 kdy: 17 Března 2010, 15:56:58 »
Tak trochu jsem googlil a myslim ze inspiraci by mohl byt tenhle prispevek
Kód: [Vybrat]
#!/bin/sh

convert_ebooks()
{
   for file in "$1"/*; do
      if [ -d "$file" ]; then
         convert_ebooks "$file"
      else
         dirname=`dirname "$file"`
         basename=`basename "$file"`

         singlename=${basename%.*}
        beg_name=${basename:0:4}
         extension=${basename##*.}

    # If extension is pdb
       if [[ "$extension" == "pdb" ]]; then
       ebook-convert $dirname/  .... ########

Tak a tady uz dal nevim ######

fi
   done
}

for dir in $@; do
   dirpath="$PWD/$dir"
   if [ -d "$dirpath" ]; then
      echo "Dir: $dirpath"
      rename_recursive "$dirpath"
   fi
done
Ale pevne verim ze i tohle je moc slozity zpusob a navic to stejne nedam dohromady. Takze moc prosim o zasah shora  ;)
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: skript na konverzi ebooku : PDB -> epub
« Odpověď #3 kdy: 17 Března 2010, 17:31:04 »
@karlitos
to co psal stenliq je imho pro tve ucely uplne dostacujici - az teda na chybu toho findu, ma to byt  "find . -name '*.pdb'" (popr misto tecky / nebo ~)
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
Re: skript na konverzi ebooku : PDB -> epub
« Odpověď #4 kdy: 17 Března 2010, 18:53:25 »
No dobre a jak zajistim to aby se mi konvertovane knihy ulozily presne podle puvodni struktury jen do jineho adresare ? A aby to zkonvertovalo jen knihy v danem adresari ?
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

stenliq

  • Návštěvník
  • Příspěvků: 81
Re: skript na konverzi ebooku : PDB -> epub
« Odpověď #5 kdy: 18 Března 2010, 10:45:01 »
Kód: [Vybrat]
find . -name '*.pdb'
Ta tečka tam znamená prohledávaný (tečka znamená současný) adresář. Takže knihy pouze v jednom adresáři a jeho podstromu vyhledáte např. konkrétním zadáním
Kód: [Vybrat]
find /home/karlitos/knihy -name '*.pdb'.

Pokud chcete ukládat knihy do jiného adresáře se stejnou adresářovou strukturou, uděláte to zadáním jiného parametru tomu ebook-convertu.

Nevím přesně, který příkaz to dělá (někdo upřesněte :))), ale zjistíte si, kde se nachází daná .pdb kniha a například pomocí sedu upravíte cestu tak, aby se to celé ukládalo do jiného adresáře (např. ebook2 místo ebook). Pokud se nepletu, tak i find dokáže vypsat celou cestu k souboru, takže tím by se to dalo vyřešit.
Case: Fractal Design Define R2
CPU: AMD Phenom II X4 965 Black Edition
MB: Asus M4A89GTD PRO/USB3 RAM: 4GB DDR3, 1333 MHz GPU: MSI R5770 HDD: WD Caviar Blue 320 GB (Windows 7 + Archlinux)

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
Re: skript na konverzi ebooku : PDB -> epub
« Odpověď #6 kdy: 18 Března 2010, 12:09:05 »
Diky za vysvetleni. Opravdu mi to vyhodilo vetsinu titulu i s cestou. Nektere tituly ale maji vyjmecne i jine koncovky, treba pcr. SLo by to poresit nejakym OR operatorem ?
Kód: [Vybrat]
find . -name '*.pdb' OR '*.pcr' OR ... ?

Jinak syntaxe toho konvertoru je : ebook-convert cesta_k_titulu/kniha.pdb kam_se to_ma_ulozit/kniha.epub  --input-encoding windows-1250
No ale ja bych nerad aby mi to ty knizky davalo do stejneho hlavniho adresare ebooks, rad bych aby je to davalo pri zachovani struktury do adresare ebooks2. Aby to vzalo tu cestu k titulu a na zacatek pripojilo /media/data/ebooks2 a s koncovkou epub
Tohle mi treba vyhodi find :
Kód: [Vybrat]
./Lévi, E/Lévi_Éliphas-Klíč_k_velkým_tajemstvím.pdb
./Dickens, Ch/Dickens Charles-Oliver Twist.pdb
./Burroughs, ER/Burroughs_Edgar_Rice-6-Šílený_vědec_na Marsu.pdb
Jak z toho vytahnu JEN tu strukturu adresaru + jmeno ? tedy napriklad : Burroughs, ER/Burroughs_Edgar_Rice-6-Šílený_vědec_na Marsu Ten druhy argument ebook-convertoru podle sve koncovky (epub, pdf ...) urcuje totiz vystupni format.

Diky moc za rady K
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

stenliq

  • Návštěvník
  • Příspěvků: 81
Re: skript na konverzi ebooku : PDB -> epub
« Odpověď #7 kdy: 18 Března 2010, 14:30:28 »
S první částí vám mohu poradit hned:

Kód: [Vybrat]
find . -name '*.pdb' -o -name '*.pcr'
mělo by to fungovat hned.

Na tu další část se kouknu, až budu u nějaké linuxové mašiny...
Case: Fractal Design Define R2
CPU: AMD Phenom II X4 965 Black Edition
MB: Asus M4A89GTD PRO/USB3 RAM: 4GB DDR3, 1333 MHz GPU: MSI R5770 HDD: WD Caviar Blue 320 GB (Windows 7 + Archlinux)

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
Re: skript na konverzi ebooku : PDB -> epub
« Odpověď #8 kdy: 19 Března 2010, 21:57:20 »
Tak vyhledat soubory podle pripon - i vice neni problem, ale ten zbytek jsem stale nevyresil. Zkousel jsem i nejake jine skripty ktere jsem si nasel prez google, ale moje znalost bashe je bohuzel prilis slaba. Koukam ze skoro bude jednodussi to udelat prez javu nebo matlab - ty trochu ovladam , akorat i to prijde jako prasarna.
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

c4pp4

  • Aktivní člen
  • *
  • Příspěvků: 309
Re:skript na konverzi ebooku : PDB -> epub
« Odpověď #9 kdy: 06 Července 2013, 11:56:42 »
Zkopíruj skript a ulož pod nějakým názvem:
Kód: [Vybrat]
#!/bin/bash
echo "Tento skript provádí v zadané složce rekurzivní převod souborů z formátu PDB, PRC nebo TXT do formátu EPUB."
if [ -z $1 ]; then echo "Nápověda: Jako parametr zadej název složky obsahující soubory určené pro převod. Pro zadání aktuální složky uveď jako parametr './'"; exit 0; fi
echo "Pozor! Po převodu dojde ke smazání souborů v původním formátu."
echo "Chceš zahájit převod? (1/2)"
select an in "Ano" "Ne"; do
    case $an in
        Ano )
                find "$1" -depth -name '*' | while read file; do
                    folder=$(dirname "$file")
                    sourcefile=$(basename "$file")
                    name=$(basename "${file%.[PpPpTt][DdRrXx][BbCcTt]}")
                    if [ "$sourcefile" != "$name" ]; then
                        echo "#######################################################################"
                        echo "Zahájen převod souboru $sourcefile"
                        echo "#######################################################################"
                        ebook-convert "$folder/$sourcefile" "$folder/$name.epub" --input-encoding windows-1250 --no-default-epub-cover </dev/null
                        rm "$folder/$sourcefile"
                    fi
                done;
                break;;
        Ne )
                echo "Převod byl zrušen."
                exit;;
    esac
done

Skript je třeba nastavit jako spustitelný pomocí:
Kód: [Vybrat]
chmod +x <název_skriptu>
Spouští se:
Kód: [Vybrat]
./<název_skriptu> <název_složky>
Pokud chcete projet aktuální složku, tak parametr názvu složky je:
Kód: [Vybrat]
./
Upozorňuji, že po konverzi se smažou původní soubory, takže je lepší si udělat zálohu.

Samozřejmě je předpoklad nainstalovaného Calibre:
Kód: [Vybrat]
sudo apt-get install --no-install-recommends calibre
« Poslední změna: 06 Července 2013, 12:01:21 od c4pp4 »
IBM/Lenovo ThinkPad R61i [8932-9ZG / NF09ZCV]
Ubuntu 12.04 MATE 1.6 [plná podpora hardware]

pahel

  • Návštěvník
  • Příspěvků: 5
Re:skript na konverzi ebooku : PDB -> epub
« Odpověď #10 kdy: 06 Července 2013, 13:12:58 »
Zdravím,
 potřeboval bych taky poradit.Používám pro převod "*.pdb to *.txt"

Citace
txt2pdbdoc -d *.pdb  | iconv -f cp1250 -t utf8 > soubor.txt

ale jde mi o to, výstup je "soubor.txt" jak docílit aby se pojmenoval po vstupním souboru.
A ještě jedna otázka dalo by se toto vsunout do kotextového menu souboru v Dolphinoví? 

Díky
« Poslední změna: 06 Července 2013, 13:15:11 od pahel »

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:skript na konverzi ebooku : PDB -> epub
« Odpověď #11 kdy: 07 Července 2013, 21:20:37 »

pahel

  • Návštěvník
  • Příspěvků: 5
Re:skript na konverzi ebooku : PDB -> epub
« Odpověď #12 kdy: 07 Července 2013, 22:32:26 »
to pacholik

Kód: [Vybrat]
file="soubor.pdb"
txt2pdbdoc -d "$file" | iconv -f cp1250 -t utf8 > "${file%.pdb}.txt"

tohle bohužel vůbec nefunguje :'(

výpis

Kód: [Vybrat]
pavel@pavel-mint ~/Share $ file="soubor.pdb"
pavel@pavel-mint ~/Share $ txt2pdbdoc -d "$file" | iconv -f cp1250 -t utf8 > "${file%.pdb}.txt"
txt2pdbdoc: can not open soubor.pdb for input



pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:skript na konverzi ebooku : PDB -> epub
« Odpověď #13 kdy: 08 Července 2013, 23:15:34 »
No tak tam asi místo soubor.pdb napiš soubor kterej chceš konvertovat. Nebo možná jsi chtěl
Kód: [Vybrat]
file=*.pdb

pahel

  • Návštěvník
  • Příspěvků: 5
Re:skript na konverzi ebooku : PDB -> epub
« Odpověď #14 kdy: 10 Července 2013, 00:58:18 »
to pacholik

Děkuji za tvou pomoc, už jsem dosáhl kýženého výsledku, složením mého a tvého příkazu

Kód: [Vybrat]
txt2pdbdoc -d *.pdb  | iconv -f cp1250 -t utf8 > "${file%.pdb}.txt"
Teď to funguje tak jak jsem si představoval, vezme jakýkoliv *.pdb načte jeho název překóduje
a převede do txt a hlavně pojmenuje po původním pdb.
Teď se budu snažit pochopit jak to dostat do toho kontextového menu.

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:skript na konverzi ebooku : PDB -> epub
« Odpověď #15 kdy: 10 Července 2013, 20:20:27 »
To může správně pojmenovávat jenom pro jeden soubor, pro ten, kterej sis zapsal do proměnné $file. Správně by mělo být opravdu
Kód: [Vybrat]
file="*.pdb"
txt2pdbdoc -d "$file" | iconv -f cp1250 -t utf8 > "${file%.pdb}.txt

 

Provoz zaštiťuje spolek OpenAlt.