Io ho la comodità di poter usufruire di un mini server sempre acceso: l’NSLU2
Così grazie a questo posso scaricarmi comodamente i film con questo script scritto da Luruke.
Pacchetti richiesti:
php5-cli e wget
Per installarli su Ubuntu ovviamente:
apt-get install php5-cli wget
Poi scaricate questo pacchetto zip: download
L’archivio zip contiene 2 file:
downloader.php (script creato da Luruke che permette di estrarre il link del video passandogli come parametro l’url megavideo)
megavideodownloader.sh (script stupido creato da me stesso che permette di scaricare il video)
Una volta decompresso l’archivio
unzip megavideodwnl.zip
digitare:
chmod +x downloader.php
chmod +x megavideodownloader.sh
Ok adesso tutto è pronto:
Cercate il film che preferite su megavideo, e copiate il link
./megavideodownloader.sh www.megavideo.com?v=CODICE
Ok adesso il video verrà scaricato nella cartella corrente!
/* Megavideo Downloader
luruke.
@date = 12/02/08
@mail = lurukee@gmail.com
Usage:
$obj = new Megavideo( ID or URL ); //http://www.megavideo.com/?v=7G4OHAUW or 7G4OHAUW
$obj->get( INFO ); //if is empty return an array with all info else you can select the info
INFOS:
URL………….Url with you can download the flv video
SIZE…………The size (MB) of video
TITLE………..Title of video
DURATION……..Duration of video in minutes
SERVER……….Server of video
DESCRIPTION…..Description of video
ADDED………..Date of added
USERNAME……..Username of uploader
CATEGORY……..Category of video
VIEWS………..Number of views
COMMENTS……..Number of comments
FAVORITED…….Number of favorites by users
RATING……….Rate of video
greetz evilsocket 4 the idea.
*/
class Megavideo
{
function __construct($url)
{
preg_match(‘#\?v=(.+?)$#’, $url, $id);
$this->id = $id[1]?$id[1]:$url;
$this->getxml();
$parse = array ( ‘runtimehms’ => ‘duration’,
‘size’ => ‘size’,
‘s’ => ‘server’,
‘title’ => ‘title’,
‘description’ => ‘description’,
‘added’ => ‘added’,
‘username’ => ‘username’,
‘category’ => ‘category’,
‘views’ => ‘views’,
‘comments’ => ‘comments’,
‘favorited’ => ‘favorited’,
‘rating’ => ‘rating’,
‘k1’ => ‘key1’,
‘k2’ => ‘key2’,
‘un’ => ‘str’);
foreach($parse as $key=>$val)
{
$this->parsexml($key, $val);
}
$this->size = round($this->size/(1024*1024));
}
function get($what=false)
{
$all = array( “URL” => “http://www”.$this->server.
“.megavideo.com/files/”.
$this->decrypt($this->str, $this->key1, $this->key2).”/”,
“SIZE” => $this->size,
“TITLE” => $this->title,
“DURATION” => $this->duration,
“SERVER” => $this->server,
“DESCRIPTION” => $this->description,
“ADDED” => $this->added,
“USERNAME” => $this->username,
“CATEGORY” => $this->category,
“VIEWS” => $this->views,
“COMMENTS” => $this->comments,
“FAVORITED” => $this->favorited,
“RATING” => $this->rating
);
return $what&&array_key_exists(strtoupper($what),$all)?$all[strtoupper($what)]:$all;
}
function getxml()
{
$this->xml = file_get_contents(“http://www.megavideo.com/xml/videolink.php?v=”.$this->id.”&id=”.time()) or
die(“Error!\n”);
}
function parsexml($attribute, $name)
{
preg_match(“#\s$attribute=\”(.+?)\”#”, $this->xml, $tmp);
list(,$this->$name) = $tmp;
}
function decrypt($str, $key1, $key2)
{
$reg1 = array();
for($reg3=0; $reg3<strlen($str); $reg3++)
{
$reg0 = $str[$reg3];
switch($reg0)
{
case ‘0’: $reg1[] = ‘0000’; break;
case ‘1’: $reg1[] = ‘0001’; break;
case ‘2’: $reg1[] = ‘0010’; break;
case ‘3’: $reg1[] = ‘0011’; break;
case ‘4’: $reg1[] = ‘0100’; break;
case ‘5’: $reg1[] = ‘0101’; break;
case ‘6’: $reg1[] = ‘0110’; break;
case ‘7’: $reg1[] = ‘0111’; break;
case ‘8’: $reg1[] = ‘1000’; break;
case ‘9’: $reg1[] = ‘1001’; break;
case ‘a’: $reg1[] = ‘1010’; break;
case ‘b’: $reg1[] = ‘1011’; break;
case ‘c’: $reg1[] = ‘1100’; break;
case ‘d’: $reg1[] = ‘1101’; break;
case ‘e’: $reg1[] = ‘1110’; break;
case ‘f’: $reg1[] = ‘1111’; break;
}
}
$reg1 = join($reg1);
$reg6 = array();
for($reg3=0; $reg3<384; $reg3++)
{
$key1 = ($key1 * 11 + 77213) % 81371;
$key2 = ($key2 * 17 + 92717) % 192811;
$reg6[] = ($key1 + $key2) % 128;
}
for($reg3=256; $reg3>=0; $reg3–)
{
$reg5 = $reg6[$reg3];
$reg4 = $reg3 % 128;
$reg8 = $reg1[$reg5];
$reg1[$reg5] = $reg1[$reg4];
$reg1[$reg4] = $reg8;
}
for($reg3=0; $reg3<128; $reg3++)
{
$reg1[$reg3] = $reg1[$reg3] ^ ($reg6[$reg3+256] & 1);
}
$reg12 = $reg1;
$reg7 = array();
for($reg3=0; $reg3<strlen($reg12); $reg3+=4)
{
$reg9 = substr($reg12, $reg3, 4);
$reg7[] = $reg9;
}
$reg2 = array();
for($reg3=0; $reg3<count($reg7); $reg3++)
{
$reg0 = $reg7[$reg3];
switch($reg0)
{
case ‘0000’: $reg2[] = ‘0’; break;
case ‘0001’: $reg2[] = ‘1’; break;
case ‘0010’: $reg2[] = ‘2’; break;
case ‘0011’: $reg2[] = ‘3’; break;
case ‘0100’: $reg2[] = ‘4’; break;
case ‘0101’: $reg2[] = ‘5’; break;
case ‘0110’: $reg2[] = ‘6’; break;
case ‘0111’: $reg2[] = ‘7’; break;
case ‘1000’: $reg2[] = ‘8’; break;
case ‘1001’: $reg2[] = ‘9’; break;
case ‘1010’: $reg2[] = ‘a’; break;
case ‘1011’: $reg2[] = ‘b’; break;
case ‘1100’: $reg2[] = ‘c’; break;
case ‘1101’: $reg2[] = ‘d’; break;
case ‘1110’: $reg2[] = ‘e’; break;
case ‘1111’: $reg2[] = ‘f’; break;
}
}
return join($reg2);
}
}
$obj = new Megavideo($argv[1]);
echo “”.$obj->get( URL ).”\n”;
?>
Possibilità di effettuare una coda di download o, ancora meglio, un file di testo con i elencati tutti i link da scaricare?
Grazie!
@none
Sto lavorando ad uno script.
http://www.webtorbe.it/wp-content/uploads/2010/04/megavideoDownloader.rar
Metti i link in listadownload.txt e lo fai partire con
chmod +x dl.sh
./dl.sh
Ciao! Fammi sapere se vedi alcuni miglioramenti possibili!
ciao ottima guida soluzioni x megaupload?
Ciao,bello script ora me lo guardo con attenzione.
Io vorrei realizzare un mini script che dato l’url di megavideo e l’account premium (che possiedo) mi scarichi direttamente il file senza dover fare la seguente procedura a mano: aprire la pagina di megavideo->download file-> download esterno.
Mi sapresti aiutare? non riesco ad interagire con il flashplayer di megavideo.
@simone
per megaupload ci sto lavorando.. mooolto più complicato per la storia del captcha..
Qualcuno conosce un OCR testuale??
@tony
devi modificare il file downloader.php..
la funzione decrypt fa dei substring in base all’html della pagina…
inoltre devi utilizzare i cookie nel wget per avere l’autenticazione wget –cookies=on –keep-session-cookies
(leggiti il manuale di wget: #man wget)
Fammi sapere se ci riesci che sarei felice di condividere il tuo script… anche se incompleto!
ora vediamo che riesco a fare..l’autenticazione con wget è semplice l’ho già usata in passato..la parte difficile sarà modificare la funzione decrypt anche perché php non l’ho mai studiato : )
anche se penso che il file o va lasciato com’è perchè reperisce dal server l’flv di bassa qualità che poi è quello che viene trasmesso in streaming (ed in questo non cambia nulla essere utente premium o no)
oppure va studiato tutto un’altro sistema per poter reperire il file .avi di buona qualità che è quello che megavideo fa scaricare attraverso la procedura manuale interagendo con il player.
Pensavo tipo a passargli parametri direttamente dall’url (come si fà ad esempio nelle pagine php,asp ecc: index?var=valore… ) ma non ci sono riuscito anche perchè guardando bene il sorgene della pagina di megavideo non ha form..quidi del tutto fuori strada ero…nel parametro flashvars c’è il valore dfi05=download esterno è qui che mi interessava arrivare : )
@tony
prova magari invece del mio php a tirarti fuori quello che vuoi usando I comandi cat, tail, sed e awk (sono tutti comandi bash)
Fammi sapere.. ciao!!
ciao admin sai come installare pyload su nslu2 debian lenny sul sito ufficiale http://pyload.org/ la spiegazzione e poco chiara.
@simone
molto bello!
Farò un articolo a riguardo! Abbonati ai feed o seguimi su twitter. Appena ho una sera libera lo installo sul mio nslu!
ciao admin novita sull’installazione di pyload
Sto facendo l’articolo per te! Oggi o domani lo trovi pubblicato!
Al comando wget aggiungerei -c che permette il resume.
Megavideo non permette il resume purtroppo.. 🙁
grazie!!