Estaba viendo dragon ball desde dblatino.com y vi que casi todos los enlaces tienen el mismo formato y visualización y 4shared tiene visualización directa de archivos flv asi que hize un script y estoy descargando todos los archivos :D
Talves le sirva a alguien si quieren tenerlo en sus sevidores para no tener que andar haciendo streaming
Lo único que hay que hacer es crear un directorio llamado "out" al lado del archivo php y darle permisos de escritura.
El script se ejecuta preferentemente desde la consola
<?php
set_time_limit (0);
ini_set('memory_limit','16M');
echo "\nCargando configuraciones y creando enlaces...\n";
echo ".";
/* Matriz de enlaces */
$enlaces = array(
array(
'base_url' => 'http://www.dblatino.com/dbz/',
'limite' => 291
),
array(
'base_url' => 'http://www.dblatino.com/db/',
'limite' => 153
)
);
/* Matiz de enlaces compuestos */
foreach($enlaces as $enlace){
$links = array();
for($cuenta = 1; $cuenta <= $enlace['limite']; $cuenta++){
echo ".";
$links[] = array(
'href' => $enlace['base_url'].(int)$cuenta.'.htm',
'out' => (int)$cuenta.'.flv'
);
$links[] = array(
'href' => $enlace['base_url'].(int)$cuenta.'b.htm',
'out' => (int)$cuenta.'b.flv'
);
}
unset($enlace);
}
unset($enlaces);
echo "\nProcesando enlaces...\n";
foreach($links as $enlace){
echo "Procesando ".$enlace['href']." ...\n";
$buffer = file_get_contents($enlace['href']);
/* Es 4shared? */
if(str_replace('4shared.com', '', $buffer) != $buffer){
$buffer = explode('<embed src="http://www.4shared.com/', $buffer);
$buffer = explode('"', $buffer[1]);
$buffer = 'http://www.4shared.com/'.$buffer[0];
/* Solicita la url del flv */
echo " Solicitando enlace real *.flv...\n";
file_get_contents(
$buffer,
false,
stream_context_create(array('http' => array('method' => 'HEAD')))
);
/* Filtra la redirección */
foreach($http_response_header as $header){
$head = explode(': ', $header);
if(strtolower($head[0]) == 'location'){
$buffer = $head[1];
break;
}
unset($head, $header);
}
if(substr($buffer, 0, 14) == 'http://static.'){ /* Es stream? */
$buffer = explode('streamer=', $buffer);
$buffer = explode('.flv', $buffer[1]);
$buffer = $buffer[0].'.flv';
/* Obtiene el video */
echo " Descargando el video...\n";
system('wget '.$buffer.' -O "'.dirname(__file__).'/out/'.$enlace['out'].'"');
if(file_exists(dirname(__file__).'/out/'.$enlace['out']))
echo " Video descargado y guardado correctamente.\n";
else
echo " Imposible descargar archivo.\n";
/*
if($buffer = file_get_contents($buffer)){
// Guarda el video
echo " Guardando...\n";
if(file_put_contents(dirname(__file__).'/out/'.$enlace['out'], $buffer))
echo " Video descargado y guardado correctamente.\n";
else
echo " Imposible guardar el archivo.\n";
unset($buffer); // Libera la memoria
}else
echo " Imposible descargar archivo.\n";
*/
}else
echo " Imposible pharsear redireccion.\n";
}else
echo " El enlace no es 4shared.\n";
unset($enlace);
}
unset($links);
?>
Preferí usar wget para poder ir viendo el progreso de descarga y evitar sobrecargas.
Si alguien lo quiere hechar a correr en una pc con windows puede adjuntar el wget.exe que por ahi anda en internet.
Enjoy.
JAJA, entrè por que el titulo nombra dragon ball.
Lo intente usar, pero no me funciono baje el wget y nada solo me crea los archivos y hasta ahi pero de 0 bytes
que raro, yo lo bajé completo... que error te sale?
En si ningun error, en pantalla me dice que se descargo correctamente y blablabla, pero checo el archivo y me los crea pero todos estan en 0 bytes, coloque el wget que corra en modo administrador desactive el UAC y nada :/
(http://img15.imageshack.us/img15/4573/sshot1yif.png)
ese script se ejecuta desde la consola, utiliza wget asi que si no te sale el buffer de wget es porque no encuentra el comando.
Comenta la linea de wget y descomenta las demás lineas donde usa file_get_contents()
Un Backupeador de dragon ball, interesante...