Portál AbcLinuxu, 30. dubna 2025 18:45

bash: neco.mp3 + .m3u -> nn-neco.mp3

22.4.2006 20:47 | Přečteno: 2064× | Linux & BSD | poslední úprava: 22.4.2006 20:48

Měl jsem na disku v neotagovaných mp3 (pojmenovaných pouze jménem stopy) několik alb, která jsem chtěl dát do pořádku. Bohužel jsem nenarazil na tagger, který by to zvládl celé sám, a tak jsem tomu musel trochu pomoci

Za velkého úsilí jsem napsal krátký skript, který vytáhne z .m3u playlistu názvy souborů a těm předřadí číslo stopy. Tady je:

#!/bin/sh
# Script adding track numbers from m3u playlists to
# beginning of file names

# Exit if no playlist given
if [ -z "$1" ]
then    echo "Usage: $0 playlist.m3u"
        exit 1
fi

# if we aren't in working directory, cd there
echo $1| grep '/' >/dev/null && \
        cd "${1%/*}"
LIST="${1##*/}"

# first line is number one
N=1

# get each file name, change \ to /, mv it
grep -v '^#' "${LIST}" | sed -e 's/\\/\//' |while read FILE
do
        #Remove trailing \r (needed for lists created in DOS)
        FILE=$(echo $FILE |sed -e 's/\r//' )

        # If aren't files in same directory,
        # split path to "dir" and "file" parts
        if echo $FILE | grep -v '/' >/dev/null
        then    file=${FILE}
                dir=""
        else    dir="${FILE%/*}/"
                file="${FILE##*/}"
        fi

        # pad 1-9 with 0 (for proper sorting)
        [ $N -lt 10 ] && n=0$N || n=$N

        # Do the job
        mv "${dir}${file}" "${dir}${n}-${file}"

        N=$(($N+1))
done

Skript si tak, jak je teď, poradí s \ v cestách, mezerami v názvech souborů a adresářů i DOSovými konci řádků. Pokud mi někdo poradí, jak šikovně nahradit ty sedy a grepy čistým bashem, budu rád.

Po přidání čísla stopy do jména souboru už je jednoduché naskenovat pořadí a provést s tagy (nebo jmény) všemožné kejkle. :-)

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

David Watzke avatar 22.4.2006 20:55 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: bash: neco.mp3 + .m3u -> nn-neco.mp3
Odpovědět | Sbalit | Link | Blokovat | Admin
Poradil bych ti jak nahradit jeden test... Místo
[ $N -lt 10 ]
dej
(($N<10))
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
22.4.2006 20:59 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: bash: neco.mp3 + .m3u -> nn-neco.mp3
Test je snad builtin, ne? Viz bash(1) a v něm CONDITIONAL EXPRESSIONS. ;-)
David Watzke avatar 22.4.2006 21:02 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: bash: neco.mp3 + .m3u -> nn-neco.mp3
No nevím...
$ which [ test
/usr/bin/[
/usr/bin/test
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Luboš Doležel (Doli) avatar 22.4.2006 21:04 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: bash: neco.mp3 + .m3u -> nn-neco.mp3
Svět je zrádný ;-)
lubos@ares ~ $ type [
[ is a shell builtin
lubos@ares ~ $ type test
test is a shell builtin
David Watzke avatar 22.4.2006 21:08 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: bash: neco.mp3 + .m3u -> nn-neco.mp3
Já netvrdím, že to není pravda, ale je mi to divný... for, if, do, else... taky nejsou v /usr/bin :-D
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
23.4.2006 00:51 Paulus | skóre: 15 | Jihlava
Rozbalit Rozbalit vše Re: bash: neco.mp3 + .m3u -> nn-neco.mp3
Odpovědět | Sbalit | Link | Blokovat | Admin
A co EasyTag? Já zatím narazil jen na málo věcí, co by nezvládl.. Sice asi neumí pojmenovat z m3u, ale zato z txt ano... :-) Jestli teda nevadí, že je to klikátko...
23.4.2006 09:29 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: bash: neco.mp3 + .m3u -> nn-neco.mp3
Toto je právě příprava pro EasyTag. Jinak .m3u není nic jinýho než texťák, který vypadá nějak takto:
#EXTM3U
#EXTINF:232,Howard Shore - Foundations Of Stone
Howard Shore - Foundations Of Stone.mp3
# atd.
přičemž ty komentáře tam být nemusí. Průšvih je, že z tohoto si to EasyTag nenačte, tak se mu to musí předchroupat...
xvasek avatar 24.4.2006 09:01 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: bash: neco.mp3 + .m3u -> nn-neco.mp3
Odpovědět | Sbalit | Link | Blokovat | Admin
Já jsem si natagovat a přejmenoval ve vxMusik všechny svoje věci asi za dvě hodiny, mám toho 6GB bez předchozích náznaků údržby. Dobrý soft, jenom složitá kompilace.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.