ABCDE - ripujte pohodlně i z terminálu

Při zálohování vašich CD nemusíte již volit mezi jednoduchostí grafického prostředí nebo relativní nepochopitelností stejného postupu v příkazové řádce.

1.4.2005 06:00 | Pavel Kácha | přečteno 9134×

V linuxu máme spoustu skvělých malých programů, které perfektně plní svůj účel, ale pro nic jiného se nedají využít. Tato filosofie má svoje nesporné výhody, ale pro nezasvěceného nováčka to může být docela tvrdý oříšek zjistit, jak správně mezi sebou propojit jednotlivé programy tak, aby dělaly přesně to, co od nich očekává. Z tohoto důvodu se často uchylují ke grafickým nadstavbám, které poskytují většinou jen okleštěné funkce původních programů.

Netvrdím, že je na grafických programech něco špatného, ale já dávám přednost programům pro příkazovou řádku. Už třeba jen proto, že jsou všeobecně méně náročné na výkon počítače a nevyžadují spousty grafických knihoven a nastavený X server. Nedocenitelné jsou pro mě hlavně programy links, centericq, irssi, mp3blaster a od nedávné doby i abcde, se kterým bych vás chtěl dnes seznámit.

abcde je textový frontend pro několik programů, které se hodí při tvorbě záloh vašich drahocenných CD. Tento program ale není jen obyčejný frontend. Dokáže vás velice jednoduše provést i celým procesem komprimace hudby.

abcde docela pravděpodobně najdete ve formě balíčku ve své oblíbené distribuci. Pokud by tento postup selhal, můžete si stáhnout zdrojové kódy (v době psaní článku byla k dispozici verze 2.2.3. Další informace jako třeba seznam pochvalných článků o tomto softwaru si můžete přečíst na jeho domovské stránce.

Shellový script abcde sám o sobě nepotřebuje žádné další programy, ale pokud ho chcete nějak rozumně používat, budete potřebovat programy, pro které tvoří abcde nadstavbu. Konkrétně to budou například tyto (možností je mnoho, tento script je velice tvárný):

Používání abcde je velice snadné (to si ostatně za chvíli ukážeme) a celým procesem nás script jasně vede. Základem jednoduchého používání je ale správné nastavení, na které právě teď podíváme.

Konfigurace abcde

Základní konfigurační soubor je /etc/abcde.conf. Pro lepší personalizaci je lepší si tento soubor překopírovat do ~/.abcde.conf nebo si tento soubor vytvořit po svém od začátku. Výhodou je, že v základním nastavení jsou všechny řádky zakomentované, takže stačí jen přenastavit ty hodnoty, jejichž výchozí nastavení vám nevyhovuje. Probereme si postupně všechny důležité hodnoty, které můžeme nastavit. Pokud byste potřebovali něco speciálního, program má velice dobrou dokumentaci nebo se můžete zeptat v diskuzi.

Proměnná CDDBURL překvapivě nastavuje URL adresu CDDB serveru, který chceme používat pro zjišťování názvů skladeb. Výchozí hodnota http://freedb.freedb.org/~cddb/cddb.cgi není nijak problémová, proto nevidím důvod ji měnit. Další proměnné spojené s CDDB si shrneme v následující tabulce.

Proměnná Popis
HELLOINFO Jelikož CDDB vyžaduje jistou informaci o uživateli - konkrétně řetězec ve formátu uzivatel@hostname. Upravovat není třeba nebo můžete nastavit zdánlivě nesmyslnou hodnotu.
CDDBSUBMIT Adresa, kterou používáte pro přidávání vlastních záznamů do CDDB.
CDDBCOPYLOCAL Mají se stažené údaje ukládat na lokální disk? Povolené hodnoty "y" nebo "n".
CDDBLOCALDIR Proměnná určuje, kam se mají ukládat data z CDDB na lokálním disku, např. $HOME/.cddb
CDDBUSELOCAL Zda používat lokálně uložené a případně pozměněné údaje stažené z CDDB. Povolené hodnoty "y" nebo "n".

Do proměnné MP3ENCODERSYNTAX nebo OGGENCODERSYNTAX zapíšeme jméno programu-encoderu, který chceme používat. Nejspíše nám ale bude stačit výchozí volba default, která znamená pro tvorbu mp3 použít encoder lame a pro tvorbu ogg používat oggenc.

NORMALIZESYNTAX nastavuje jakou syntaxi chceme použít pro normalizování hlasitosti. Zatím jsem nepotřeboval ji nějak měnit.

CDROMREADERSYNTAX určuje, který program bude použit pro stažení obsahu CD do wav. Povolené jsou tyto možnosti: cdparanoia, cdda2wav, dagrab a cddafs.

Pokud chcete po encodování ponechat zdrojové wav soubory, nastavte proměnné KEEPWAVS hodnotu y, jinak nastavte n.

Další nastavení je poměrně důležité, pokud si chcete zachovat správné číslování písní z alba. Proměnná PADTRACKS, pokud má hodnotu y, působí, že čísla písní budou "odsazeny" nulami. Takže soubor s první písní se bude jmenovat "01-Nazev_prvni_pisne.wav" a nikoli "1-Nazev_prvni_pisne.wav".

V další části původního konfiguračního souboru jsou uvedeny programy, které se dají používat. Tento seznam prakticky nemá cenu měnit, jedině, pokud byste vyžadované programy neměli uvedené v cestě ke spustitelným souborům.

Dále si nastavíte s jakými parametry se má volat encodér. K tomu slouží proměnná složená z názvu encodéru a zkratky OPTS. Já požívám například pro kódování souborů mp3 encodér lame, proto nastavuji proměnnou LAMEOPTS. Konkrétně používám parametry -v -V 1 -b 64 -B 320 (VBR 1, od 64 do 320 kbps).

S abcde nejste odsouzeni k jednou danému postupu, ale sami si můžete zvolit které kroky chcete při tvorbě záloh vaší hudby provádět. Jenom musíte dát pozor, protože některé akce vyžadují, aby jim předcházely jiné. Například pokud chcete encodovat, je docela logicky vyžadováno, že musíte mít nejdříve načtená nějaká data z CD. Zde je ukázka, jak může vypadat řádek definující jednotlivé kroky kódování:

ACTIONS=cddb,read,normalize,encode,tag,move,playlist,clean

A tento řádek říká abcde, že se má nejdříve zeptat CDDB serveru a pokusit se zjistit názvy písní, načíst data z CD a uložit do wav, normalizovat píseň, zkomprimovat ji, přiřadit k ní tagy, přesunout na správné místo (doteď se pracovalo v pomocném adresáři, vytvořeném právě pro toto kopírování), vytvořit playlist a odstranit zbytky dat, které po sobě mohl proces v systému zanechat.

Velice důležitou proměnnou je CDROM, která určuje, z jakého zařízení se má číst.

Proměnnou OUTPUTDIR sdělíte systému, kam chcete hotově kopie písní ukládat.

Pro určení typu vytvořených souborů je tu proměnná OUTPUTTYPE, její hodnotou může být i několik souborů oddělených čárkou.

Pro přesnější určení místa, kam chcete výsledky encodování ukládat je proměnná OUTPUTFORMAT její hodnota může být například následující '${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}'. Totéž se dá nastavit speciálně pro CD, které vytvořilo několik umělců (soundtracky a podobně), proměnná se ale musí jmenovat VAOUTPUTFORMAT.

Pokud máte malý disk nebo z jakéhokoli jiného důvodu dáváte přednost postupu, kdy nejdříve naripujete jednu skladbu, kterou encodujete a teprve potom začnete ripovat další, tak nastavte proměnné LOWDISK hodnotu y, jinak nemusíte nastavovat nic, výchozí nastavení je n.

Ještě pomocí proměnné PLAYLISTFORMAT, resp. PLAYLISTFORMAT nastavíme informace pro přesné umístění playlistu, například takto: PLAYLISTFORMAT='${ARTISTFILE}/${ALBUMFILE}/!${ARTISTFILE} - ${ALBUMFILE}.m3u'

Program ošetřuje "nebezpečné znaky" v názvech souborů, mezi tyto nebezpečné znaky počítá i mezery, které nahrazuje podtržítky, pokud nechcete o své mezery v názvech souborů přijít (ale další nebezpečné znaky odfiltrovat), přidejte si do konfiguračního souboru toto:

mungefilename ()
{
echo "$@" | sed s,:,\ -,g | tr / _ | tr -d \'\"\?\[:cntrl:\]
}

Pro zpomalení otáčení CD jen na "4 rychlosti" připište do svého konfiguračního souboru toto:

pre_read ()
{
eject -x 4
}

A nakonec pokud chcete po skončení kopírování vysunout disk připište si ještě EJECTCD=y.

Práce s programem

Všechno potřebné máme nastavené, tak se můžeme pustit do práce. :)

Vložíme CD do mechaniky, kterou jsme si v konfiguraci nastavili a stačí napsat abcde a dál už se script zeptá na všechno potřebné. Zálohování jednoho CD si pro jistotu, ale přeci jen ukážeme.

Nyní si program zjistí, kolik je na CD stop, jaký použije pracovní adresář a zjistí názvy písní z CDDB serveru a podá vám o tom zprávu podobnou této:

Getting CD track info... Grabbing entire CD - tracks: 01 02 03 04 05 06 07 08 09 10 11 12 13
abcde: attempting to resume from /home/integer/abcde.b109280d..
Selected: #1
---- Queen / Sheer Heart Attack ----
1: Brighton Rock
2: Killer Queen
3: Tenement Funster
4: Flick Of The Wrist
5: Lily Of The Valley
6: Now I'm Here
7: In The Lap Of The Gods
8: Stone Cold Crazy
9: Dear Friends
10: Misfire
11: Bring Back That Leroy Brown
12: She Makes Me (Stormtrooper In Stilettos)
13: In The Lap Of The Gods... Revisited
Edit selected CDDB data? [y/n] (n):

Na posledním řádku předchozího výpisu se nás script ptá, zda chceme názvy nějak upravit. Pokud zadáme y, otevře se nám editor vim a v něm můžeme názvy patřičně poupravit. Při editaci názvů je třeba dát pozor na to, že číslování skladeb pro CDDB začíná od Track0 a tudíž je číslo poslední skladby o jednu nižší než máte asi uvedeno na obalu CD.

Poté budeme dotázáni zda je CD od jednoho umělce nebo jde o "multi-artist CD" (tedy soundtrack k filmu, výběr rockových balad a podobně). Podle toho bude script používat pro ukládání hodnoty uvedené buď v proměnné OUTPUTFORMAT, PLAYLISTFORMAT nebo VAOUTPUTFORMAT, VAPLAYLISTFORMAT. A potom už se rozběhne kopírování a už se o celý proces nemusíme dál starat. Jednoduché, že?

Na následujícím výpisu je vidět, co všechno se ještě zobrazí, než program už zcela převezme vládu a už se nás na nic neptá. Poslední řádky jsou už v režii riperu cdparanoia.

Is the CD multi-artist? [y/n] (n): n
Creating playlist...
Grabbing track 01: Brighton Rock...
cdparanoia III release 9.8 (March 23, 2001)
(C) 2001 Monty and Xiphophorus

Report bugs to paranoia@xiph.org
http://www.xiph.org/paranoia/

Ripping from sector 0 (track 1 [0:00.00])
to sector 23294 (track 1 [5:10.44])

outputting to /home/integer/abcde.b109280d/track01.wav

(== PROGRESS == [++++!> | 003741 00 ] == :-P . ==)

Může se stát, že nebudete chtít stáhnout celé CD. To není žádný problém, stačí jenom za jméno programu dopsat čísla stop, které chcete zkopírovat. stopy můžete zadávat jako interval nebo i jako jednotlivá čísla. Následující příklad zkopíruje stopy číslo 1, 3,4,5,6 a 8.

$ abcde 1 3-6 8

Zkopírovat celé CD do jednoho souboru také není problém, stačí zadat

$ abcde -1

Pokud máte konfigurační soubor v nestandardní cestě (tzn. není ani v /etc/abcde.conf a ani v ~/.abcde.conf) můžete zadat cestu k němu pomocí parametru -c /cesta/ke/konfiguračnímu/souboru.

V případě, že je CD v jiné mechanice než která je uvedena v konfiguračním souboru, použijeme parametr -d zařízení.

Další volby programu najdete v manuálových stránkách, které mají velice dobrou úroveň a rychle v nich najdete to, co hledáte.

Doufám, že vás tento šikovný skript zaujal a třeba ho i někdy použijete. Na závěr ještě přidám výpis mého konfiguračního souboru.

Konfigurační soubor

HELLOINFO="offspring@gmail.com"
CDDBCOPYLOCAL="y"
CDDBLOCALDIR="$HOME/.cddb"
CDDBUSELOCAL="y"

MP3ENCODERSYNTAX=default

NORMALIZERSYNTAX=default

CDROMREADERSYNTAX=cdparanoia

KEEPWAVS=n

PADTRACKS=y

# Paths of programs to use
#LAME=lame
#GOGO=gogo
#BLADEENC=bladeenc
#L3ENC=l3enc
#XINGMP3ENC=xingmp3enc
#MP3ENC=mp3enc
#VORBIZE=vorbize
#OGGENC=oggenc
#FLAC=flac
#SPEEXENC=speexenc
#ID3=id3
#ID3V2=id3v2
#CDPARANOIA=cdparanoia
#CDDA2WAV=cdda2wav
#CDDAFS=cp
#CDDISCID=cd-discid
#CDDBTOOL=cddb-tool
#EJECT=eject
#MD5SUM=md5sum
#DISTMP3=distmp3
#VORBISCOMMENT=vorbiscomment
#NORMALIZE=normalize
#CDSPEED=eject

# MP3:
LAMEOPTS="-v -V 1 -b 64 -B 320"

# Actions to take
# Comma-separated list of one or more of the following:
# cddb,read,normalize,encode,tag,move,playlist,clean
# encode implies read
# normalize implies read
# tag implies cddb,read,encode
# move implies cddb,read,encode,tag
# playlist implies cddb
# The default action list is defined in the following comment.
ACTIONS=cddb,read,normalize,encode,tag,move,playlist,clean

CDROM=/dev/cdrom

OUTPUTDIR=/home/integer/mp3
OUTPUTTYPE=mp3

OUTPUTFORMAT='${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}'
VAOUTPUTFORMAT='Various/${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}'

LOWDISK=y

PLAYLISTFORMAT='${ARTISTFILE}/${ALBUMFILE}/!${ARTISTFILE} - ${ALBUMFILE}.m3u'

VAPLAYLISTFORMAT='Various/${ALBUMFILE}/!${ARTISTFILE} - ${ALBUMFILE}.m3u'

mungefilename ()
{
echo "$@" | sed s,:,\ -,g | tr / _ | tr -d \'\"\?\[:cntrl:\]
}
pre_read ()
{
eject -x 4
}

EJECTCD=y
Online verze článku: http://www.linuxsoft.cz/article.php?id_article=778