Discussione: script creare parecchie playlist
-
dross Guest
script creare parecchie playlist
ho diversi file audio organizzati in directory così:
artista\anno album\num. traccia titolo.estensione.
ora vorrei creare delle playlist (una per directory) che abbiano come
nome file lo schema "artista - anno album" presi dai nomi delle
directory e dei file.
per crearne una per volta è facile, si va nelle singole directory, si fa
ls *.estensione>playlist.m3u e la lista viene poi letta senza problemi
dai vari programmi, almeno sotto linux, ma penso che né i player per
windows né i vari lettori portatili siano schizzinosi.
però vorrei evitarmi la seccatura di spostarmi nelle varie directory e
scrivere il nome del file. c'è un modo elegante per dare un comando
ricorsivo o qualcosa del genere?
-
Mario M. Macaluso Guest
Re: script creare parecchie playlist
On 26 Lug, 13:17, dross <dros...*TOGLIMIgmail.com> wrote:
> ho diversi file audio organizzati in directory così:
> artista\anno album\num. traccia titolo.estensione.
quindi una cosa così:
A/a1/t
A/a2/t
A1/a/t
A1/a2/t
...
AN/an/t
> ora vorrei creare delle playlist (una per directory) che abbiano come
> nome file lo schema "artista - anno album" presi dai nomi delle
> directory e dei file.
> per crearne una per volta è facile, si va nelle singole directory, si fa
> ls *.estensione>playlist.m3u e la lista viene poi letta senza problemi
> dai vari programmi, almeno sotto linux, ma penso che né i player per
> windows né i vari lettori portatili siano schizzinosi.
> però vorrei evitarmi la seccatura di spostarmi nelle varie directory e
> scrivere il nome del file. c'è un modo elegante per dare un comando
> ricorsivo o qualcosa del genere?
il tuo script deve:
- creare la lista degli 'A'
- creare la lista degli 'a'
- creare la lista delle 't'
inizia a scrivere, e po fai sapere.
ciao
michele
PS
è più facile di quanto sembri, le indentazioni hanno un significato,
a te scoprirlo.
-
THe_ZiPMaN Guest
Re: script creare parecchie playlist
On 07/26/2010 01:17 PM, dross wrote:
> per crearne una per volta è facile, si va nelle singole directory, si fa
> ls *.estensione>playlist.m3u e la lista viene poi letta senza problemi
cd ~/music
find . -type d -mindepth 2 -maxdepth 3 | while read dir
do
album=$(basename "$dir")
cd "$dir"
ls -1 > "$album.m3u"
cd -
done
--
Flavio Visentin
Ubuntu in Zulu significa "Non so usare Debian". (cit. CtRiX)
-
mallin.shetland Guest
Re: script creare parecchie playlist
Addì lunedì 26 luglio 2010 22:43 THe_ZiPMaN scrisse:
> On 07/26/2010 01:17 PM, dross wrote:
>> per crearne una per volta è facile, si va nelle singole directory, si fa
>> ls *.estensione>playlist.m3u e la lista viene poi letta senza problemi
>
> cd ~/music
> find . -type d -mindepth 2 -maxdepth 3 | while read dir
> do
> album=$(basename "$dir")
> cd "$dir"
> ls -1 > "$album.m3u"
> cd -
> done
>
Due cose.
Il modo giusto per fare è:
find . -type d -mindepth 2 -maxdepth 3 -print0 |
while IFS= -rd'' read dir
do
...
accettabile anche:
find . -type d -mindepth 2 -maxdepth 3 -print |
while -r read dir
do
...
Attento a ``ls'' è il comando meno affidabile da usare in uno script
perché il suo output è il meno affidabile ed il più vario possibile.
Certo nella maggior parte dei casi funziona ma questo è proprio il
caso su mille dove potresti avere problemi.
In questo caso il problema è la codifica dei caratteri: il formato
m3u usa la codifica 1252 mentre in genere nei sistemi Linux si usa
Latin-16 o UTF-8. niente di grave, iconv può aggiustare questo e
comunque rischi solo che il lettore mp3 non potrÃ* leggere quella
playìlist.
-
mallin.shetland Guest
Re: script creare parecchie playlist
Addì lunedì 26 luglio 2010 13:17 dross scrisse:
> ..
> per crearne una per volta è facile, si va nelle singole directory, si fa
> ls *.estensione>playlist.m3u ...
Per riprodurre tutti i file in una directory molto più semplicemente:
cd ~/musica/mp3/
pwd > $(pwd)/playlist.m3u
> .. e la lista viene poi letta senza problemi
> dai vari programmi, almeno sotto linux, ma penso che né i player per
> windows né i vari lettori portatili siano schizzinosi.
> ...
Purtroppo no. m3u usa la codifica 1252 e sia i lettori portatili che i vari
Windows sono schizzinosi su questo. Nel caso iconv risolve tutto.
Addì lunedì 26 luglio 2010 13:17 dross scrisse:
> ..
> però vorrei evitarmi la seccatura di spostarmi nelle varie directory e
> scrivere il nome del file.
> ...
GiÃ* ti hanno risposto
Addì lunedì 26 luglio 2010 13:17 dross scrisse:
> ...c'è un modo elegante per dare un comando
> ricorsivo o qualcosa del genere?
No, non c'è un modo elegante, Però la soluzione giÃ* proposta è
la migliore.
-
THe_ZiPMaN Guest
Re: script creare parecchie playlist
On 07/27/2010 09:26 AM, mallin.shetland wrote:
> Il modo giusto per fare è:
>
> find . -type d -mindepth 2 -maxdepth 3 -print0 |
> while IFS= -rd'' read dir
> do
> ...
In *questo* specifico caso non vi sono problemi, a meno che l'utente non
abbia file con un "a capo" nel nome. Certamente se si fosse dovuto passare
l'output p.es. a xargs il -print0 sarebbe stato d'obbligo.
> In questo caso il problema è la codifica dei caratteri: il formato
> m3u usa la codifica 1252 mentre in genere nei sistemi Linux si usa
> Latin-16 o UTF-8. niente di grave, iconv può aggiustare questo e
> comunque rischi solo che il lettore mp3 non potrÃ* leggere quella
> playìlist.
Didn't know... ma in effetti non ascoltando musica non mi sono mai imbattuto
nel formato m3u. :-)
--
Flavio Visentin
Ubuntu in Zulu significa "Non so usare Debian". (cit. CtRiX)
-
mallin.shetland Guest
Re: script creare parecchie playlist
Addì martedì 27 luglio 2010 09:26 mallin.shetland scrisse:
> while IFS= -rd'' read dir
> while -r read dir
Sarebbero dovuti essere rispettivamente:
while IFS= read -r -d '' dir
e
while read -r dir
Mi scuso per gli errori
-
mallin.shetland Guest
Re: script creare parecchie playlist
Prima di tutto mi scuso per i refusi
Addì martedì 27 luglio 2010 12:02 THe_ZiPMaN scrisse:
> On 07/27/2010 09:26 AM, mallin.shetland wrote:
>> Il modo giusto per fare è:
>>
>> find . -type d -mindepth 2 -maxdepth 3 -print0 |
>> while IFS= -rd'' read dir
>> do
>> ...
>
> In *questo* specifico caso non vi sono problemi, a meno che l'utente non
> abbia file con un "a capo" nel nome. Certamente se si fosse dovuto passare
> l'output p.es. a xargs il -print0 sarebbe stato d'obbligo.
Ed io infatti ho anche scritto che la variante
.... print | while read -r dir'' ...
è accettabile in questo caso.
Comunque i problemi non si verificano solo con gli a capo ma anche
con i caratteri di controllo, i file che iniziano con uno spazio o file che
contengono degli escape.
In particolare l'opzione -r di read evita l'interpretazione delle barre
rovesciate ed elimina questo ultimo problema.
-
dross Guest
Re: script creare parecchie playlist
Il 27/07/2010 09:26, mallin.shetland ha scritto:
>
> Due cose.
>
> Il modo giusto per fare è:
>
> find . -type d -mindepth 2 -maxdepth 3 -print0 |
> while IFS= -rd'' read dir
> do
> ...
>
> accettabile anche:
>
> find . -type d -mindepth 2 -maxdepth 3 -print |
> while -r read dir
> do
> ...
>
>
> Attento a ``ls'' è il comando meno affidabile da usare in uno script
> perché il suo output è il meno affidabile ed il più vario possibile.
> Certo nella maggior parte dei casi funziona ma questo è proprio il
> caso su mille dove potresti avere problemi.
> In questo caso il problema è la codifica dei caratteri: il formato
> m3u usa la codifica 1252 mentre in genere nei sistemi Linux si usa
> Latin-16 o UTF-8. niente di grave, iconv può aggiustare questo e
> comunque rischi solo che il lettore mp3 non potrÃ* leggere quella
> playìlist.
>
>
>
come è stato impostato da the_zipman è andato tutto bene, semmai proverò
anche con questa variante. in effetti ho avuto dei problemini per aver
mischiato audio di formati differenti (ad esempio ho cambiato mp3 con
ogg nello script e mi ha creato delle playlist vuote nelle directory
senza ogg sovrascrivendo quelle precedenti), ma ho prevalentemente mp3,
quindi basta 1 po' di artigianato, x fortuna nel tenere insieme i file
sono abbastanza ordinato. la "fregatura" in realtÃ* è che il mio lettore
è un creative zen che ho appena scoperto che ha un formato tutto suo di
playlist (.zpl) e probabilmente il modo meno rognoso di manipolarlo è
tramite programmi ad hoc, forse anche gli stessi rhytmbox e/o gnomad,
volendo perderci un po' di tempo. ad ogni modo, vista la semplicitÃ*
dell'output, ls liscio senza opzioni è più che sufficiente, mi scrive
nella playlist (di formato m3u)
01 traccia1.mp3
02 traccia2.mp3
eccetera
che viene aperta senza problemi sia in windows che in linux e giÃ* è
moltissimo
-
Mario M. Macaluso Guest
Re: script creare parecchie playlist
On 26 Lug, 22:32, "Mario M. Macaluso" <mcl...*email.it> wrote:
[ ... ]
>
> PS
> è più facile di quanto sembri, le indentazioni hanno un significato,
> a te scoprirlo.
in effetti tutto è in funzione di due parametri di find:
mindepth e maxdepth.
sinceramente se non avessi visto l'esempio di mallin...
ma appena visto, il neurone s'è ingrifato di brutto,
manco il viagra fà un effetto così :-P
attenzione "playlist" va messo su un file separato,
find così non la digerisce, basta adattarla alle proprie esigenze
e puoi costruirti tutti i cataloghi che vuoi.
ciao
michele
---------------------------- cut - here ----------------------
#!/bin/bash
function playlist ()
{
cd "$1"
printf "Sono nell'album: [%s] (%s)\n" "$1" "`pwd`"
ls -1
printf "\n===================================\n"
}
declare -f playlist
catalog=""
author=""
album=""
if [ $# -eq 0 ]
then
printf "usage: %s -c dir [-a author [-d album] ]\n" `basename $0`
exit
fi
while [ $# -gt 0 ]
do
case $1 in
-c)
shift
catalog="$1"
;;
-a)
shift
author=$1
;;
-d)
shift
album=$1
;;
*)
printf "usage: %s -c dir [-a author [-d album] ]\n" `basename
$0`
exit
;;
esac
shift
done
if [ -n "$catalog" -a -z "$author" -a -z "$album" ]
then
find "$catalog" -mindepth 2 -maxdepth 3 -type d -exec playlist
"{}" \;
exit
fi
if [ -n "$catalog" -a -n "$author" -a -z "$album" ]
then
find "$catalog/$author" -mindepth 1 -maxdepth 2 -type d -exec
playlist "{}" \;
exit
fi
if [ -n "$catalog" -a -n "$author" -a -n "$album" ]
then
playlist "$catalog/$author/$album"
exit
fi
printf "usage: %s -c dir [-a author [-d album] ]\n" `basename $0`
exit -1
----------------------------------------------------------
Discussioni Simili
-
Esiste uno script per una playlist di youtube?
Mi interesserebbe uno script che indicati i link dei video di youtube mi caricasse una sorta di videogallery. Esiste?Esiste uno script per una playlist di youtube? inviato Di Alce nel forum it.comp.www.phpReplies: 2Ultimo Messaggio: 01-31-2009, 05:27 PM -
batch per creare playlist m3u
Salve a tutti un collega ha scritto questo script per me, quello che voglio ottenere è una playlist m3u chiamata col path delle cartelle ad...batch per creare playlist m3u inviato Di Everett nel forum it.comp.os.dosReplies: 1Ultimo Messaggio: 07-16-2008, 09:41 AM -
[iTunes] Come creare questa playlist?
E' possibile con le regole disponibili creare una playlist speciale contenente le canzoni più ascoltate solo in un determinato periodo senza...[iTunes] Come creare questa playlist? inviato Di Popi nel forum it.comp.macintoshReplies: 1Ultimo Messaggio: 09-29-2006, 09:31 AM -
[iTunes] Esiste appz per creare copertine da playlist?
Avevo trovato una qualche applicazione che creava in modo rapido le copertine per i cd, ma non riesco a ricordare il nome ne' a trovarla su...[iTunes] Esiste appz per creare copertine da playlist? inviato Di Gia. nel forum it.comp.macintoshReplies: 7Ultimo Messaggio: 04-11-2005, 08:50 PM -
Creare playlist HTML da directory di MP3
vorrei fare una cosa tipo questa: http://www.joescafe.com/tunes2html/sample.htm ma prendendo le canzoni direttamente dalle directory e non dalla...Creare playlist HTML da directory di MP3 inviato Di koichirose nel forum it.comp.aiutoReplies: 0Ultimo Messaggio: 03-07-2005, 09:27 PM


