
Narazil jsem na dobrý blog o skriptech pro práci s mp3 na abíčku http://www.abclinuxu.cz/blog/FluxBlog/2008/12/jednoduche-skripty-pro-upr.... Přímo skript pro práci s id3 tagy tam nenajdete, nicméně skript pro snižování bitrate úpravu id3 tagy potřeboval a byla tam pěkně užita ulitka id3v2. Tuto ulitku samozřejmě potřebuje i můj skript.
Něco takového jsem už dlouho potřeboval a dneska jsem se konenečně dokopal to napast (last.fm si furt stěžuje, jak mám všechno prasácky otagováne a je to pravda ;-)). Nějakou masivní gui aplikaci jsem instalovat nechtěl a je ve hvězdách, jestli by splnila přesně to co chci...
Konečně k věci, program taguj vytáhne při parametru --generate ze všech mp3 v aktuálním adresáři id3 tagy do souboru out.tag. Ten nyní můžete jakkoliv upravit (třeba použít program iconv, přepsat tagy bez diakritiky na diagritiku, tagy doplnit). A nakonec se spustí taguj --sign, který tagy ze souboru zpět uloží do mp3jek.
PS: Je to prasácké, bash neovládám a sem rád že jsem to nějak zkutil...
PPS: id3v2 možná umí i jiné formáty než mp3, nicméně jsem to nezkoušel a skript by ve foru potřeboval úpravu.
Skript je zde: http://hfechs.cz/taguj, případně nakopírovaný sem. Good luck.
UPDATE: Přidal sem podporu i pro editaci pořadí tracku
UPDATE2: Podpora pro editaci tracku byla rozbitá, nyní je to již OK. Doporučuji updatovat.
#!/bin/bash # Author: HFechs # # # Dekuji pushkinovi, jeho skripty mi byly vzorem # ( http://www.abclinuxu.cz/blog/FluxBlog/2008/12/jednoduche-skripty-pro-upr... ) if [ "$1" == "--generate" ]; then num=0; if [ -e out.tag ]; then echo "File out.tag exist!" exit fi for file in *.[Mm][Pp][3] do num=$((num+1)) if [ "`id3v2 -l \"$file\" | grep id3v2`" == "" ]; then title=`id3v2 -l "$file" | grep Title | sed 's/Title : //' | sed 's/ [[:print:]]*//'` artist=`id3v2 -l "$file" | grep Title | sed 's/[[:print:]]*Artist: //' | sed 's/ [[:print:]]*//'` album=`id3v2 -l "$file" | grep Album | sed 's/Album : //' | sed 's/ [[:print:]]*//'` year=`id3v2 -l "$file" | grep Album | sed 's/[[:print:]]*Year: //' | sed 's/,[[:print:]]*//'` genre=`id3v2 -l "$file" | grep Album | sed 's/[[:print:]]*(//' | sed 's/)//'` track=`id3v2 -l "$file" | grep Comment | sed 's/[[:print:]]*Track: //' | sed 's/,[[:print:]]*//'` else title=`id3v2 -l "$file" | grep TIT2 | sed 's/[[:print:]]*: //'` artist=`id3v2 -l "$file" | grep TPE1 | sed 's/[[:print:]]*: //'` album=`id3v2 -l "$file" | grep TALB | sed 's/[[:print:]]*: //'` year=`id3v2 -l "$file" | grep TYER | sed 's/[[:print:]]*: //'` genre=`id3v2 -l "$file" | grep TCON | sed 's/[[:print:]]*(//' | sed 's/)//'` track=`id3v2 -l "$file" | grep TRCK | sed 's/[[:print:]]*: //'` fi echo "title[${num}]=\"$title\"" >> out.tag echo "artist[${num}]=\"$artist\"" >> out.tag echo "album[${num}]=\"$album\"" >> out.tag echo "year[${num}]=\"$year\"" >> out.tag echo "genre[${num}]=\"$genre\"" >> out.tag echo "track[${num}]=\"$track\"" >> out.tag echo "" >> out.tag done elif [ "$1" == "--sign" ]; then if [ ! -e out.tag ]; then echo "File out.tag not found!" exit fi source out.tag for file in *.[Mm][Pp][3] do num=$((num+1)) id3v2 -t "${title[$num]}" -a "${artist[$num]}" -A "${album[$num]}" -y "${year[${num}]}" -g "${genre[$num]}" "$file" -T "${track[$num]}" done else echo "Usage: taguj [--generate | --sign]" echo "" echo " --generate Create file out.tag in actual directory with tags" echo " from all mp3 files in actual directory" echo " --sign Set tags from out.tag in actual directory to all" echo " mp3 in actual directory" fi
A ano, sem krutor! Fuck off...
Poslední komentáře
před 43 týdny 15 hod
před 43 týdny 4 dny
před 43 týdny 4 dny
před 1 rok 19 týdnů
před 1 rok 19 týdnů
před 1 rok 19 týdnů
před 1 rok 37 týdnů
před 1 rok 44 týdny
před 1 rok 45 týdnů
před 2 roky 3 týdny