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: pomoc s príkazom - mp3 bitrate  (Přečteno 5004 krát)

makak

  • Aktivní člen
  • *
  • Příspěvků: 103
pomoc s príkazom - mp3 bitrate
« kdy: 10 Dubna 2011, 18:47:46 »
Nazdar.

Chcel by som zbúchať nejaký skript, ktorý by mi do textového súboru vypísal názvy všetkých albumov (aj interpretov), ktoré majú nižší bitrate ako 256kbps, prípadne ak nie sú v mp3, tak ich vypíše povedzme s hviezdičkou pred názvom.

Na bitrate mám je jeden tool - exiftool, ktorý mi vypíše pri vstupe "exiftool -AudioBitrate nazov_pesnicky.mp3" výstup v tvare "Audio Bitrate : XXX kbps".

Čiže potrebujem prejsť rekurzívne všetky priečinky, z každého zobrať náhodne jeden súbor (alebo prvý súbor), spustiť na ňom exiftool -AudioBitrate, nejak z neho dostať hodnotu bitratu, porovnať či je menšia ako 256, a ak je, vypísať cestu k súboru vzhľadom na priečinok s hudbou, prípadne ak nedá žiadnu hodnotu, tak vypísať cestu a pred ňu hviezdičku.

Pomôže mi niekto ?

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #1 kdy: 10 Dubna 2011, 20:46:12 »
tohle ti vypíše všechny empétrojky ve složce Hudba s tokem menším než 256K, stačí ?
Kód: [Vybrat]
IFS="\n"
find Hudba/ -iname *.mp3 | while read i; do [ `exiftool -p '$AudioBitrate' "$i"` -lt 256000 ] && echo "$i"; done

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #2 kdy: 10 Dubna 2011, 21:23:44 »
mensi problem  ;)
Kód: [Vybrat]
$ find Hudba/ -iname *.mp3 | while read i; do [ `exiftool -p '$AudioBitrate' "$i"` -lt 256000 ] && echo "$i"; done

find: paths must precede expression: sms2.mp3
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

makak

  • Aktivní člen
  • *
  • Příspěvků: 103
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #3 kdy: 10 Dubna 2011, 21:42:00 »
Mne zas píše

Kód: [Vybrat]
bash: [: too many arguments
A všetky mp3ky keď mi vypíše, to mi moc nepomôže. Mal by som iba pár stoviek názvov súborov v tvare "XX - nazov_pesnicky.mp3" a zas by som musel hľadať na ktorom albume to bolo, a tak.

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #4 kdy: 10 Dubna 2011, 22:22:18 »
mozna
Kód: [Vybrat]
find ~/Hudba -type d | while read dir; do find "$dir" -maxdepth 1 -type f -iname '*.mp3' | ( read F && { br=`file "$F" | grep -Eo '[0-9]+\ kbps' | sed 's:\ kbps::'`; [[ $br -lt 256 ]] && echo "$F - $br"; } || echo "$dir - no music here"); doneje pouzito jen "file", zmen si na exiftool pokud potreba

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #5 kdy: 10 Dubna 2011, 22:25:02 »
ok, najde všechny složky ve složce Hudba, ve kterých je alespoň jedna empétrojka  s tokem menším než 256K
Kód: [Vybrat]
IFS="\n"
find Hudba/ -iname *.mp3 | while read i; do [ `exiftool -p '$AudioBitrate' "$i"` -lt 256000 ] && dirname "$i"; done | sort -u
(jen to nějakejch pár minut trvá no)

teď už jenom vymyslet proč mi to jede a vám ne :D

makak

  • Aktivní člen
  • *
  • Příspěvků: 103
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #6 kdy: 11 Dubna 2011, 00:40:40 »
Tipujem to na inú verziu programu. Tebe možno vypľuje ten príkaz iba integer, mne to hádže v tvare "XXX kbps".

Tomu nasvedčuje aj chyba, ktorú mi vypisuje :
Kód: [Vybrat]
bash: [: 320 kbps: integer expression expected

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #7 kdy: 11 Dubna 2011, 17:05:03 »
Takže máš asi Ubuntu 10.04 nebo starší. No než abysme se s tím plácali bude nejjednodužší když si prostě nainstaluješ verzi z mavericka.

makak

  • Aktivní člen
  • *
  • Příspěvků: 103
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #8 kdy: 11 Dubna 2011, 18:10:39 »
Nope, mám Mavericka, exiftool dokonca novší ako to čo si postoval (nie 8.15-1, ale 8.54). Neinštaloval som to z repo, ale sťahoval z ich stránky.

GR!nCh

  • Návštěvník
  • Příspěvků: 22
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #9 kdy: 11 Dubna 2011, 19:35:52 »
Posílám script, který jsem pro tuto činnost taky někdy napsal a přenechávám volně k inspiraci. Výsledek otvírám v OOo Calc pro větší přehlednost.
Kód: [Vybrat]
#!/bin/bash
#
# Projde rekurzivne vsechny soubory a adresare v aktualnim adresari.
# U kazde mp3ky vypise:
#
# bitrate;soubor;cislo;nazev;umelec;album;rok;zanr
#

rec_bitrate()
{
  cd "$1"
  for x in *; do
    if [ -d "$x" ]; then #je-li prvek adresare adresar
      echo "$x" #tisk nazvu adresare
      ( rec_bitrate "$x" ) #rekurzivni pruchod adresarovou strukturou
    elif [ `echo ${x##*.} | tr [:upper:] [:lower:]` = mp3 ]; then
      #prevod pripony soubouru na lowcase a porovnani s "mp3"
      echo -n "$x;" #tisk nazvu souboru bez eneteru
      enconv <<< `mp3info -p "%n;%t;%a;%l;%y;%g;%r" "$x"`
    fi #tisk ID3 tagu a bitrate prekodovani
  done
  echo #volny radek za kazdym albem
}

rec_bitrate .
Ubuntu GNU/Linux @ Lenovo ThinkPad T61 14"

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #10 kdy: 11 Dubna 2011, 20:41:00 »
tak sem zkusil tu novou verzi, vypadalo by to s ní takhle
Kód: [Vybrat]
IFS="\n"
find Hudba/ -iname *.mp3 | while read i; do [ `exiftool -p '$AudioBitrate' "$i" | cut -d " " -f 1` -lt 256 ] && dirname "$i"; done | sort -u

makak

  • Aktivní člen
  • *
  • Příspěvků: 103
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #11 kdy: 11 Dubna 2011, 23:14:42 »
Wow, si pán. Díky moc. Zdá sa že to funguje. Pridal som na koniec ">> file.txt" a spravilo mi to 29kb (760 riadkový) súbor :D

Len škoda že tomu celkom nerozumiem.

Predpokladám že to čo je medzi "do" a "done" sa robí pre všetky súbory. Neviem čo tam robia tie hranaté zátvorky, tie `` znaky a && (to sú tie veci ktoré sa ťažko gúglia).

Chcel by som to možno tak upraviť, aby mi to za názov súboru vypísalo aj bitrate (prípadne môže byť aj tak, že vypíše všetky, ale dá tam ten bitrate - z toho by som si ja už vedel vyfiltrovať 320kbps, a tak.

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #12 kdy: 12 Dubna 2011, 00:13:15 »
lehčí bylo upravit to co psal daysleeper
Kód: [Vybrat]
#!/bin/sh

IFS="\n"

find Hudba/ -type d | while read dir; do
file="`find "$dir" -maxdepth 1 -iname *.mp3 2> /dev/null | head -n1`"
[ -e "$file" ] && bitrate=`exiftool -p '$AudioBitrate' "$file" | cut -d " " -f 1`
[ -e "$file" ] && [ $bitrate -lt 256 ] && echo "$dir"\; $bitrate
done

hranaté závorky jsou ekvivalent příkazu test, pokud je podmínka splněna vrátí nulu
co je za ampersandy se vykoná pokud příkaz před nimi skončil nulou, dá se místo toho použít běžný if
`` říká aby se bral výsledek příkazu mezi nimi a ne příkaz jako text, zkus třeba echo uname -a a echo `uname -a`
« Poslední změna: 12 Dubna 2011, 00:26:37 od pacholik »

makak

  • Aktivní člen
  • *
  • Příspěvků: 103
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #13 kdy: 13 Dubna 2011, 10:52:31 »
Yay, toto je ešte lepšie. Prebehlo to oveľa rýchlejšie. Díky moc všetkým čo pomohli.

A ten tutorial čo si postol je super, určite si to raz celé prejdem.

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re: pomoc s príkazom - mp3 bitrate
« Odpověď #14 kdy: 13 Dubna 2011, 16:09:39 »
Prebehlo to oveľa rýchlejšie.
Jasně. Já testoval všechny soubory a tisknul kde se nachází a pak odstranil duplicity. daysleeper testoval jenom první soubor v adresáři. Určitě máš teď těch nalezenejch alb míň.

MrJames

  • Návštěvník
  • Příspěvků: 48
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #15 kdy: 17 Února 2013, 10:56:05 »
Zdravím, prešiel som z windows na linux a mám problém s bitrate. Na windows som mal v Total Commander plugin, kde mi po prejdení nad mp3 súborom vypísalo bitrate. Teraz keď ho spúštam cez wine to nefunguje (je to tento http://www.totalcmd.net/plugring/wdx_media.html). Potreboval by som poradiť nejaký príkaz aby sa dala doňho vpísať cesta (napr. Domov/Hudba/Interpret/Album) a vypísalo všetky mp3 súbory spolu s bitrate. Možno sa to dá upraviť s týchto príkazov čo sú vyššie ale nemám žiadne skúsenosti s príkazmi.

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #16 kdy: 17 Února 2013, 12:07:08 »
Kód: [Vybrat]
#!/bin/sh

for i in "$1"/*.mp3; do exiftool -p '$FileName - $AudioBitrate' "$i"; done

MrJames

  • Návštěvník
  • Příspěvků: 48
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #17 kdy: 17 Února 2013, 12:40:07 »
Ďakujem, funguje. Dalo by sa aj tak že sa tam nedá ten názov albumu ale ukončí sa len názvom interpreta? Aby vypísalo mp3ky aj z podpriečinkov?
« Poslední změna: 17 Února 2013, 12:45:48 od MrJames »

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #18 kdy: 17 Února 2013, 20:04:21 »
Kód: [Vybrat]
IFS='
'
find "$1" -iname *.mp3 | while read i; do exiftool -p '$FileName - $AudioBitrate' "$i"; done

možná tam budeš chtít vedle $FileName tagy $Title a $Album

MrJames

  • Návštěvník
  • Příspěvků: 48
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #19 kdy: 17 Února 2013, 21:58:45 »
Ďakujem, funguje to presne ako som chcel.  8)

MrJames

  • Návštěvník
  • Příspěvků: 48
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #20 kdy: 23 Března 2013, 14:33:28 »
Tak ešte jeden možno dosť podobný príkaz by som potreboval. Po zadaní cesty (s podpriečinkami) vyhľadať mp3ky a ich dĺžku sčítať. Netreba vypisovať názvy lebo mám toho dosť veľa, stačí len výsledný čas.
Neviem ako to funguje ale keď sa sťahuje nejaká aplikácia z netu tak tam píše priebeh v %. Dá sa to aj tu? Odhadom je to asi 200+ dní a to bude asi chvíľu trvať tak aby som vedel či to pracuje alebo nie.

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #21 kdy: 23 Března 2013, 16:45:58 »
nainstaluj bc pokud nemáš (bash neumí desetinná čísla)
Kód: [Vybrat]
shopt -s globstar #rekurzivní vyhledávání

cd "$1"
s=0
for i in **/*.mp3; do
s=`exiftool -n -p $s+'$Duration' "$i" | bc`
done

echo $s
výsledek v sekundách

MrJames

  • Návštěvník
  • Příspěvků: 48
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #22 kdy: 23 Března 2013, 17:09:15 »
bc mám ... cestu treba dať namiesto $1? a zadávať mám po riadkoch alebo spolu?

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #23 kdy: 24 Března 2013, 14:29:51 »
zadej to jak chceš nebo si z toho udělej skript a spouštěj
Kód: [Vybrat]
bash délka_alba.sh moje_album$1 znamená první parametr skriptu

MrJames

  • Návštěvník
  • Příspěvků: 48
Re:pomoc s príkazom - mp3 bitrate
« Odpověď #24 kdy: 24 Března 2013, 14:41:38 »
nerozumiem vôbec ako to myslíš ... ten riadok čo si napísal je načo? a kde mám zadať cestu?

 

Provoz zaštiťuje spolek OpenAlt.