Come scaricare da Megavideo tramite script shell su Ubuntu Linux

Come scaricare da Megavideo tramite script shell su Ubuntu Linux

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 = [email protected]

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

Post Simili

thumbnail
Installare Rtorrent sull’NSLU2 – guida completa

Oggi vediamo come installare rtorrent sull'nslu2 con debian. Premetto che ci sarebbe anche la possibilità di installare wtorrent (il client web che si interfaccia con...


thumbnail
Come far partire rtorrent all’avvio dell’NSLU2

Mi stressava ogni volta che facevo partire il mio nslu2 avviare manualmente rtorrent. Quindi dopo un po' di smanettamenti e tra screen, bash e init.d ho creato questo...


thumbnail
Copiare file da nslu a pc fisso e viceversa – NSLU2 Guida

Per copiare file da nslu a pc e da pc a nslu basta usare il comando scp. Scp è un protocollo di secure copy, quindi potete copiare i file in modo criptato, a...


thumbnail
Scansione velocissima della rete – Come trovare host connessi alla rete – ip scan network

Se dovete trovare pc, stampanti o cellulari connessi in rete e non vi ricordare l'ip su linux può essere molto utile utilizzare nmap. Per installarlo niente di più...


thumbnail
Cancellare impostazioni gnome dopo aggiornamento Ubuntu o prove varie

Se volete avere l'ultima interfaccia di gnome dopo un aggiornamento o perchè semplicemente avete fatto un disastro e non sapete più come tornare indietro ecco come...


Commenti

15 Commenti :

  1. none

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

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

  3. simone

    ciao ottima guida soluzioni x megaupload?

  4. tony

    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.

  5. @simone
    per megaupload ci sto lavorando.. mooolto più complicato per la storia del captcha..
    Qualcuno conosce un OCR testuale??

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

  7. tony

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

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

  9. simone

    ciao admin sai come installare pyload su nslu2 debian lenny sul sito ufficiale http://pyload.org/ la spiegazzione e poco chiara.

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

  11. simone

    ciao admin novita sull’installazione di pyload

  12. daniel

    Al comando wget aggiungerei -c che permette il resume.

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.

  Tags: , , , , ,