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

Aprite la shell e digitate:

./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”;
?>

15 risposte

  1. Possibilità di effettuare una coda di download o, ancora meglio, un file di testo con i elencati tutti i link da scaricare?
    Grazie!

  2. 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.

  3. @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!

  4. 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 : )

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.