This class will allow you to scrape MegaVideo Premium Links to share or use for your own.
Please note that you need to follow these steps:
1) Login into your account at MegaVideo (or MegaUpload).
2) View your cookies that you got from whichever site you loged into.
3) Replace USERNUMBER and SESSIONID with your user number and session id from the cookies in the attached file: megavideoCookie.txt.
If you do this excessively, MegaVideo will ban your IP, so you will have to renew your IP every now and then (depending on how heavy the load is).
Enjoy. Let me know if you have any problems.
Sample Implementation:
<?php
/*
MegaVideo Video Scraper
Premium Account Required
Written by Aziz S. Hussain
@
www.AzizSaleh.com
Produced under LGPL license
@
http://www.gnu.org/licenses/lgpl.html
Example Use of the class: megavideo.class.php
*/
# Include Main Class
require_once('megavideo.class.php');
# Setup the URL
$newVideo = new megaVideo('http://www.megavideo.com/?v=6PTHEVUY');
# Work to get the link
$newVideo->doScrape();
# You now have the link
echo $newVideo->getLink();
# The link can be used for download or stream
# To use for stream, you will need a flash player like JW Flash Player
# http://www.longtailvideo.com/players/jw-flv-player/
Main Class:
<?php
/*
MegaVideo Video Scraper
Premium Account Required
Written by Aziz S. Hussain
@
www.AzizSaleh.com
Produced under LGPL license
@
http://www.gnu.org/licenses/lgpl.html
Class Structure
class megaVideo
{
# MegaVideo link
private megaVideoURL
# Final link
private finalLink
void __construct(string videoURL) # Store video link
array getMegaVideoVars(string megaVideoURL) # Returns vars needed to create viewing key
string decrypt(string str, string key1, string key2)# Actually decrypts the vars into the key
void doScrape() # Does the scraping
string getLink() # Return the URL for download or streaming
}
*/
class megaVideo
{
# MegaVideo link
private $megaVideoURL;
# Final link
private $finalLink;
# Construct, just store the vide link
function __construct($videoURL)
{
$this->finalLink = $videoURL;
}
# This function will return the megaVideo vars
# Note that it uses CURL and the COOKIE megavideoCookie.txt
# Cookie text file must be in this format:
/*
# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
.megavideo.com TRUE / FALSE 1263332544 user 4BDHJJNEJOKDF4KJHKJFJIUGHUYG3.JKLHDU4
*/
# You need to change the user number 1263332544 and session 4BDHJJNEJOKDF4KJHKJFJIUGHUYG3.JKLHDU4
# You can get that information by viewing the cookie information (using firefox)
# URL passed must be in this format: http://www.megavideo.com/?v=6PTHEVUY
function getMegaVideoVars()
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$this->finalLink);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'megavideoCookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'megavideoCookie.txt');
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
$buffer = curl_exec($ch);
curl_close($ch);
preg_match('/flashvars\.un = "(.*)";.*flashvars\.k1 = "(.*)";.*flashvars\.k2 = "(.*)";.*flashvars\.s = "(.*)";/Ums',
$buffer,$results);
# Return required vars
$finalResults = array($results[4],$results[1],$results[2],$results[3]);
return $finalResults;
}
# This function will decrypt the required keys form megavideo
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);
}
# Actually return the URL that the video can be viewed without time restrictions
function doScrape()
{
# Retrieve info
list($serverID,$un,$k1,$k2) = $this->getMegaVideoVars();
# Get the key
$decKey = $this->decrypt($un,$k1,$k2);
$this->finalLink = "http://www$serverID.megavideo.com/files/$decKey/randomName$un.flv";
}
# Return the link begotten after scraping
function getLink()
{
return $this->finalLink;
}
}
Cookie File:
# Netscape HTTP Cookie File # http://www.netscape.com/newsref/std/cookie_spec.html # This file was generated by libcurl! Edit at your own risk. # MegaVideo Premium Link Scraper by Aziz S. Hussain # @ www.AzizSaleh.com .megavideo.com TRUE / FALSE USERNUMBER user USERSESSION