Scaricare la musica in copyleft o di dominio pubblico disponibile su Wikimedia Commons

Attenzione: Questo post sta avendo un numero di lettori singoli abbastanza inusitato per la media di questo blog. Ricordo ai frequentatori occasionali di questo posto che qui non viene trattato materiale i cui termini di distribuzione non permettono la libera e gratuita circolazione degli stessi. Se venite qui sperando di trovare dritte su come trovare l’ultimo album dei Tokio Hotel - sorvolando sull’oggettiva violenza che fareste alle vostre orecchie, IMHO - avete sbagliato fermata.

La musica, quella senza vincoli - che poi è la migliore - è in Ogg; è che a volte si è troppo tordi per degustarla.

Rino Finazzo

Continuate a leggere questo post solo se:

  • avete deciso che ascoltare Britney Spears  non è proprio il modo migliore di trattare le vostre orecchie;
  • avete a disposizione una shell di tipo UN*X (preferibilmente Bourne);
  • vi avanza un po’ di spazio nella vostra directory personale (tanto, in realtà: si tratta di qualche centinaio di file, di dimensione variabile tra 1 e circa 30 MBytes ciascuno).

Ancora qui? Bene, mi fa piacere per voi.

Spostatevi in una directory a vostro piacimento (è sufficiente che possiate scriverci e vi sia abbastanza spazio disponibile) e date un bel

export W=http://en.wikipedia.org/wiki
export L=$W/Wikipedia:Sound/list/playlist
export T=$(mktemp)
curl $L -o $T
wget -nc $(echo -n $(grep http://upload.wikimedia.org/ $T))
export L=
export W=
rm $T
export T=

Potete anche non usare le variabili d’ambiente, ed ottenere una scrittura molto più compatta. Ho sistemato i comandi in modo tale da non creare ambiguità date da stringhe troppo lunghe per essere contenute nei margini assegnati dal foglio di stile di questo blog al tag <code>: in questo modo posso presentarvi un comando per ogni riga.

Abbiate cura di:

  • aver indicato al vostro lettore di indicizzare i nuovi file;
  • avere a disposizione delle cuffie o un impianto per la diffusione del suono decente;
  • quantomeno cominciare a pensare di contribuire attivamente a uno o più dei progetti della Wikimedia Foundation (sì, non esiste solo Wikipedia). Fa bene alla salute e ripaga gli sforzi vostri e altrui.

Per una spiegazione più tecnica delle righe di comando che ho scritto, potete vedere qui. Saluti.

10 commenti

  1. unformatted
    Inviato 18 Novembre 2007 alle 13:20 | Permalink

    fa sempre piacere ascoltare un po’ di buona musica :)

  2. Inviato 18 Novembre 2007 alle 15:59 | Permalink

    mmm..stai cambiando comandi BASH in diretta, o sono io che ho problemi di visualizzazione? Ottima dritta cmq.. Ah nella pagina di wiki addirittura direbbero di salvare la lista come .m3u e di caricarla ad es. in Amarok, così si risparmia il superdownload però a me la bufferizzazione non funziona come dovrebbe e mi si impianta a 10 secondi di riproduzione..
    Ciao, complimenti per il blog

  3. Inviato 18 Novembre 2007 alle 16:07 | Permalink

    emilator: Sì, li sto cambiando in diretta per cercare di evitare ambiguità date da comandi che spanciano (il comando che ho usato io, e che ho scritto in origine, è unico:

    wget -nc $(curl “http://en.wikipedia.org/wiki//Wikipedia:Sound/list/playlist” | grep “http://upload.wikimedia.org/”)

    ma non entra bene nei margini concessi dal CSS di default di questo tema, e non ho i circa 20 euro che servono per comprare l’upgrade :-D ; sto quindi cercando di “aggiustarlo” nei limiti del possibile, e sperando di non introdurre errori.

    Quanto al discorso dello streaming, si tratta di una soluzione forse migliore - io però pensavo alla possibilità di un ascolto offline (che è pur sempre possibile secondo i termini di distribuzione di quei file). Non ho provato, in realtà, i tempi di reazione alla riproduzione dello stream, nè da Amarok, nè da XMMS ( l’altro player esplicitamente “consigliato”), quindi non posso esserti d’aiuto.

    Grazie per i complimenti :-)

  4. Inviato 18 Novembre 2007 alle 16:22 | Permalink

    ok grazie..non sono ancora un esperto di script BASH.. potresti spiegarmi brevemente perchè fai eseguire il download il quel modo? voglio dire, wget ok, però non mi è chiarissima la concatenazione di curl e grep.. curl trasferisce file attraverso vari protocolli possibili, grep ricerca testo nei file, giusto? Capisco che il risultato finale è scaricare tutti i file della lista presente in quella pagina, ma più tecnicamente? grazie ancora

  5. Inviato 18 Novembre 2007 alle 16:40 | Permalink

    emilator: Non è un problema di shell Bourne Again (bash), di C shell (csh) o di una delle numerose altre alternative disponibili. Quello che affronto è un problema di “comunicazione” in senso stretto.

    cURL, usato in quel modo, schiaffa sullo standard output ciò che viene restituito dalla locazione che ho specificato: una pagina HTML risultato del parsing dei dati, generati e prodotti in un modo che non è strettamente necessario sapere, da parte di MediaWiki, il software che viene usato per presentare wikimediafoundation.org.

    Nei sistemi di tipo UN*X il concetto di standard output (e, in generale, di periferica) è molto flessibile: il principio fondamentale è “l’output di un programma può diventare l’input per un altro programma”. Si tratta di un concetto immediato che caratterizza in maniera unica la filosofia di utilizzo di questi sistemi, da sempre.

    Tornando a noi: visto che quello che mi restituisce cURL è testo semplice non formattato (proprio il codice HTML della pagina), non ho limitazioni funzionali se voglio cercarvi qualcosa all’interno: nella fattispecie una lista di indirizzi diretti di file contenenti audio Vorbis incapsulato in contenitori Ogg, di cui conosco parte del pattern in anticipo (gli script sono sì potenti, ma non onniscienti, perchè tale non è chi li ha scritti :-d).

    wget, per sua costituzione intrinseca, è in grado di (provare) a scaricare tutte le risorse che posso piazzargli come argomento prima del lancio. Visto il modo in cui opera grep, posso permettermi di usare direttamente le stringhe che ho ottenuto come risorse da contattare.

    P.S. Un suggerimento: se, come ho capito, ti piace (ci piace) esaminare script non scritti da te, prova a leggerli partendo dall’interno verso l’esterno, e con la documentazione (pagine di manuale, Texinfo, o quello che vuoi) alla mano. Nonostante quel che possano dire in giro i miei professori universitari (di Ingegneria Informatica), non si può fare informatica senza. Chi ha scritto lo script che stai leggendo, se sei fortunato, sarà d’accordo con me ;)

  6. Inviato 18 Novembre 2007 alle 18:53 | Permalink

    Ah ecco, ora ho capito. Mi ero anche accorto che cURL restituiva tutto l’html della pagina..ma non avevo collegato bene all’azione di grep. Adesso mi è chiaro tutto.
    In risposta al tuo suggerimento, sono assolutamente d’accordo con te. Di solito consulto subito –help o il manuale..quello di curl è di 1800 righe e non avevo tutta questa voglia di impegnarmi a scovare le parti utili a me..però, per quanto usi GNU/Linux da più o meno 7 mesi, mi rendo conto di quanto in realtà ci si possa arrangiare con la documentazione fornita, e credo che se uno avesse il tempo di dedicarsi da solo a leggersela concluderebbe ben di più di quanto potrebbe fare ad es. in un corso universitario.. Da un po’ ho sviluppato la “shell mania”, e sto riducendo drasticamente le azioni da ambiente desktop..ne sono esempi i miei ultimi post (anzi, se hai suggerimenti accetto commenti molto volentieri).
    Grazie ancora della spiegazione, ciao!

  7. David
    Inviato 19 Novembre 2007 alle 21:07 | Permalink

    Complimenti! Bella idea. Aspetto con impazienza la procedura per scaricare i brani di libero download su last.fm
    Lo script a me non funziona correttamente, ovviamente creando un file lista con il contenuto della pagina http://en.wikipedia.org/wiki/Wikipedia:Sound/list/playlist e dando il comando wget -nc $(cat lista) va tutto perfettamente.
    Grazie ancora per queste piccole perle.

  8. Inviato 19 Novembre 2007 alle 21:18 | Permalink

    David: Grazie per avermi fatto notare ancora una volta che se una cosa funziona, è meglio non toccarla. Come dicevo a emilator nel secondo commento a questo post, il comando che ho scritto io in origine era molto semplice e self-contained. Nel tentativo di renderlo più “esteticamente appetibile” ho finito per distruggerlo :-|

    Almeno, adesso, ho avuto occasione per aggiungere una funzionalità in più: invece di usare un file fisso di nome lista, genero un file temporaneo dal nome “unique” (ossia sicuramente non esistente). Così i prossimi avventori non dovranno preoccuparsi di che cos’hanno salvato nella loro directory ;)

    Grazie a te della visita.

  9. Inviato 6 Dicembre 2007 alle 20:00 | Permalink

    Grazie Emanuele, ascoltare buona musica (ma quella proprio bbuona bbuona) libera la mente ed armonizza lo spirito. Non ho avuto difficoltà ad utilizzare il tuo script: semplice ed efficace.
    Ciao

  10. Inviato 6 Dicembre 2007 alle 20:05 | Permalink

    PaCo58: Grazie a te.

2 Trackback

  1. Cresciamo in fretta 2 « Emanuele Cipolla su 18 Novembre 2007 alle 16:48

    [...] l’altra volta. Che dire di più? Sembra che alla gente piaccia la buona musica in public [...]

  2. [...] Emanuele Cipolla La tua ADSL non ti soddisfa [...]

Pubblica un Commento

La tua email non verrà mai pubblicata o diffusa. I campi obbligatori sono contrassegnati con *

*
*