Login   Register  
PHP Classes
elePHPant
Icontem

File: megavideo.class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Aziz S. Hussain  >  Megavideo Premium Link Generator  >  megavideo.class.php  >  Download  
File: megavideo.class.php
Role: Class source
Content type: text/plain
Description: Main Class
Class: Megavideo Premium Link Generator
Retrieve URLs of video streams of Megavideo.com
Author: By
Last change:
Date: 4 years ago
Size: 5,210 bytes
 

Contents

Class file image Download
<?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($chCURLOPT_URL,$this->finalLink);
        
curl_setopt($chCURLOPT_COOKIEFILE'megavideoCookie.txt');
        
curl_setopt($chCURLOPT_COOKIEJAR'megavideoCookie.txt');
        
curl_setopt($chCURLOPT_FAILONERROR1);
        
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
        
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
curl_setopt($chCURLOPT_TIMEOUT50);
    
        
$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$reg34);
            
$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;
    }    

}


?>