获取优酷视频真实下载地址的PHP源代码

原文地址:http://www.51mzw.com/show-84-535-1.html

<?php 
//--调用方法/demo.php?url=http://v.youku.com/v_show/id_XMzkyODA2NTEy.html 
echo  getYoukuFlv( $_GET [ 'url' ]); 
       
function  getYoukuFlv( $url ){ 
     preg_match( "#id_(.*?)\.html#" , $url , $out ); 
     $id = $out [1]; 
     $content =get_curl_contents( 'http://v.youku.com/player/getPlayList/VideoIDS/' . $id ); 
     $data =json_decode( $content ); 
     foreach ( $data ->data[0]->streamfileids AS  $k => $v ){ 
     $sid =getSid(); 
     $fileid =getfileid( $v , $data ->data[0]->seed); 
     $one =( $data ->data[0]->segs-> $k ); 
     if ( $k  ==  'flv'  ||  $k  ==  'mp4' return  "http://f.youku.com/player/getFlvPath/sid/{$sid}_00/st/{$k}/fileid/{$fileid}?K={$one[0]->k}"
     continue
    
}  
function  get_curl_contents( $url $second  = 5){ 
     if (!function_exists( 'curl_init' ))  die ( 'php.ini未开启php_curl.dll' ); 
     $c  = curl_init(); 
     curl_setopt( $c ,CURLOPT_URL, $url ); 
     $UserAgent = $_SERVER [ 'HTTP_USER_AGENT' ]; 
     curl_setopt( $c ,CURLOPT_USERAGENT, $UserAgent ); 
     curl_setopt( $c ,CURLOPT_HEADER,0); 
     curl_setopt( $c ,CURLOPT_TIMEOUT, $second ); 
     curl_setopt( $c ,CURLOPT_RETURNTRANSFER, true); 
     $cnt  = curl_exec( $c ); 
     $cnt =mb_check_encoding( $cnt , 'utf-8' )?iconv( 'gbk' , 'utf-8//IGNORE' , $cnt ): $cnt ; //字符编码转换 
     curl_close( $c ); 
     return  $cnt
function  getSid() { 
     $sid  = time().(rand(0,9000)+10000); 
     return  $sid
function  getkey( $key1 , $key2 ){ 
     $a  = hexdec( $key1 ); 
     $b  $a  ^ 0xA55AA5A5; 
     $b  dechex ( $b ); 
     return  $key2 . $b
function  getfileid( $fileId , $seed ) { 
     $mixed  = getMixString( $seed ); 
     $ids  explode ( "*" , $fileId ); 
     unset( $ids [ count ( $ids )-1]); 
     $realId  ""
     for  ( $i =0; $i  count ( $ids );++ $i ) { 
     $idx  $ids [ $i ]; 
     $realId  .=  substr ( $mixed , $idx ,1); 
    
     return  $realId
function  getMixString( $seed ) { 
     $mixed  ""
     $source  "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890"
     $len  strlen ( $source ); 
     for ( $i =0; $i $len ;++ $i ){ 
     $seed  = ( $seed  * 211 + 30031) % 65536; 
     $index  = ( $seed  / 65536 *  strlen ( $source )); 
     $c  substr ( $source , $index ,1); 
     $mixed  .=  $c
     $source  str_replace ( $c "" , $source ); 
    
     return  $mixed
?>

你可能感兴趣的:(获取优酷视频真实下载地址的PHP源代码)