Script php per scaricare video da Youtube
7 Agosto 2008 Nessun commento »Questo post proverà a spiegare il procedimento che permette il download dei video da youtube. Ho realizzato uno semplice script php fruibile in questa pagina dimostrativa.
Per iniziare la spiegazione dobbiamo innanzi tutto analizzare la struttura di una pagina video youtube:
http://youtube.com/watch?v=wtzlyzjSCkU
watch viene chiamata servlet e cioè un programma residente sul server di youtube, che si occupa di farci visualizzare la pagina di youtube che siamo abituati a vedere.
Il punto interrogativo indica che tutto quello che segue nell’indirizzo sono delle informazioni (valori) che vengono passate alla servlet.
v=wtzlyzjSCkU è un codice univoco che distingue un video da un altro, che la servlet prende ed elabora per mostrarci la pagina del video. Chiameremo questo codice id video.
Youtube ci mette a disposizione anche un’altra servlet “get_video” che è quella che ci permette di scaricare il video da youtube. Ma non è molto semplice da usare. Per prelevare un video dobbiamo passare due valori alla servlet: il primo lo conosciamo già (id video), il secondo viene chiamato codice di sessione ed è una stringa di caratteri che cambia sempre ad ogni visualizzazione della pagina youtube.
Questo codice di sessione può essere reperito nel codice sorgente della pagina youtube. Collegandosi all’indirizzo:
http://youtube.com/get_video?video_id=[id video]&t=[codice sessione]
è possibile scaricare il video. Qui c’è il codice sorgente dello script php che esegue tutti i passaggi sopra elencati
if( isset($_POST[‘yurl’]) && isset($_POST[‘download’]) ) {
$url = $_POST[‘yurl’];
if( preg_match(‘/(v=)([0-9A-Za-z_-]{11})/’, $url, $match) ) {
$video_id = $match[2];
$page = file_get_contents(‘http://youtube.com/watch?v=’.$video_id);
if( $page ) {
if( preg_match(‘/(&t=)([0-9A-Za-z_-]+)/’, $page, $match) ) {
$t = $match[2];
header(‘Location: http://youtube.com/get_video?video_id=’.$video_id.‘&t=’.$t);
}
else
$message = ‘La pagina di youtube non è valida’;
}
else
$message = ‘non riesco a trovare l\’indirizzo che hai inserito’;
}
else
$message = ‘Indirizzo di youtube non valido’;
}
Rimando sempre alla pagina dimostrativa per scaricare lo script.



Commenti recenti