TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
DownTube: lo script per scaricare i video sul PC
È sufficiente eseguirlo, passargli l’indirizzo del filmato e scegliere un nome da dare al file, dopodiché lui lo scarica e lo converte in formato MPEG
(pagina 1 di 2)
A volte capita di fare un giro su YouTube (www.youtube.com) e trovare qualche video interessante che magari ci piacerebbe rivedere in seguito, ma senza dover per forza di cose ricollegarci a Internet ogni volta che vogliamo farlo. Purtroppo, YouTube non prevede un sistema per scaricare i filmati sull’hard disk, tutt’altro, per cui dobbiamo attrezzarci per poterlo fare da “soli”. In rete sono disponibili numerosi programmi per eseguire il download dei video, ma come al solito non ci siamo accontentati e abbiamo creato uno script composto da poche righe di codice Bash (per la precisione sono 12 in tutto!), che consente di scaricare i filmati sull’hard disk del PC. Utilizzarlo è facilissimo, basta andare su YouTube cercare il filmato che ci interessa e copiarne l’indirizzo. A questo punto, basta eseguire lo script, passargli l’URL appena copiato e inserire un nome a nostra scelta. Sarà lo script a scaricare il filmato in locale e convertirlo in formato MPEG compatibile con qualsiasi player multimediale:
./downtube
Ecco come si usa praticamente lo script:
./downtube http://www.youtube.com/watch?
v=-v-UQ5XnLz8 ramon
Adesso passiamo all’analisi dello script [01-06] Le prime 6 righe si occupano di inizializzare le variabili usate per “governare” lo script: in particolare la prima riga comunica al sistema con quale programma eseguire lo script (/bin/bash, in questo caso); alla riga numero 02 troviamo un controllo sul numero di parametri passati allo script, che deve essere di 2: la condizione posta è infatti che se il numero di parametri ($#) è inferiore a 2 (-lt sta per “less than”, minore di), venga stampato un messaggio a video e lo script termini (exit). Il messaggio fornito all’utente è semplicemente il nome dello script seguito dai nomi dei parametri che ci si attende. Il nome dello script non viene scritto nel codice, in quanto lo script stesso potrebbe essere rinominato dall’utente, ma viene ricavato dalla riga di comando: il nome del programma eseguito è infatti passato al programma stesso come primo elemento della riga di comando, e si trova quindi nella variabile $0. Alle righe 03 e 04 i due parametri forniti dall’utente vengono assegnati a due variabili dal nome identico ai parametri stessi (per chiarezza di codice). Alla riga 05 viene preimpostato un nome per il file temporaneo in cui verrà salvato il video scaricato da YouTube, mentre alla riga 06 viene salvato in una variabile l’URL che verrà utilizzato per scaricare il video (una funzione PHP messa a disposizione da YouTube stesso). I parametri attesi dallo script sono video_url e video_name: video_url è l’indirizzo del video così come è visualizzato nella barra degli indirizzi del browser (ad esempio “http://it.youtube.com/watch?v=5-VBaaCF9LAh) e video_name è il nome del file che vogliamo ottenere in locale, senza estensione, la quale verrà aggiunta automaticamente. [07 -08] Recentemente YouTube ha introdotto un sistema piuttosto complesso di identificazione dei video, motivo per il quale molti degli script Bash che si trovano in rete non funzionano più. Essi si basano sulla ricerca della stringa “player2.swf” nel codice della pagina web, stringa che era seguita dal codice identificativo del video nel database di YouTube. Nel nuovo formato, invece, il video è identificato da una query un po’ più lunga, che è ricavabile dalla stringa relativa alla visualizzazione a schermo intero. In particolare, in una pagina di YouTube, si troverà la seguente riga (presa dall’URL di esempio fornito prima):
var fullscreenUrl = ‘/watch_
fullscreen?fs=1&BASE_
YT_URL=http%3A%2F%2Fit.youtube.com%2F&vq=
None&video_id=5-VBaaCF9LA&l=199&sk=ENVhxKJy4
kjxndFO5UqMUwC&fmt_map=&t=OEgsToPDskIkXath7h_
KwuC11avhzyWM&hl=it&plid=AARIuJZ3CLJEr
WCBAAAAIAAQAAA&title=Val di Fiemme’;
La query che ci interessa si trova subito dopo la parola “fullscreen”, dal punto di domanda in poi, fino alla stringa “&title” esclusa; per ricavarla è sufficiente estrarre la riga con un comando grep, per poi rimuovere con il comando sed le parti che non ci interessano; per ottenere la riga del codice HTML utilizzeremo il comando wget, che ci servirà anche in seguito per scaricare effettivamente il video; passando a wget un indirizzo, esso scarica la pagina associata sul disco: utilizzando però l’opzione -O possiamo indicare il nome del file su cui scaricare la pagina; per evitare di creare un ulteriore file temporaneo, inoltre, indichiamo come nome di file “-” che wget interpreta come “standard output”, stampando quindi il codice della pagina a video. Con un comando pipe, poi possiamo passare tale codice ad altri comandi, come grep e sed. In particolare, il primo comando sed rimuove qualsiasi carattere (.*) prima della stringa “fullscreen?” inclusa, mentre il secondo rimuove la stringa “&title” e tutto ciò che la segue (.*) fino alla fine della riga. Una volta che abbiamo ottenuto la query è sufficiente concatenarla con l’URL della funzione PHP che YouTube mette a disposizione per scaricare i video, che è “http://youtube. com/get_video.php”, cosa che viene fatta alla riga 08. [09- 10] Prima di scaricare il video, infine, cancelliamo eventuali file temporanei lasciati da esecuzioni precedenti (riga 09). A questo punto, per scaricare il video è sufficiente passare a wget l’indirizzo ricavato alla riga 08, unitamente al nome del file dove porre il video (che è contenuto nella variabile tmp_file, impostata alla riga 05). [11-12] La riga 11 contiene la chiamata al programma ffmpeg, che converte il file in formato FLV in un file in formato MPEG; le varie opzioni passate al comando sono: “-ab” imposta il bit rate del flusso audio (in kbit/s), “-ar” imposta la frequenza di campionamento dell’audio, “-b” stabilisce il bit rate del flusso video, “-s” imposta la dimensione del video. Una volta terminato il programma ffmpeg possiamo cancellare il file temporaneo in formato FLV (riga 12).

Dopo il download la conversione con FFmpeg


Da Youtube a MPeG
Downtube.sh
Pagina 1/2
Lascia un commento
Tag: DownTube, script, scaricare, video, pc
Condividi