56.com视频采集接口程序(PHP)


Posted in PHP onSeptember 22, 2007

楼下也有一个所谓56站程序的,忽悠到了极致,不喜欢被人忽悠的,还是自己做个站吧!
我给大家个采集接口,你爱自己采集可以用自己的FLASH播放器直接播放56.com的flv吧!不用帮人家做免费广告那么傻了!

<?php 
$url = "http://www.56.com/u75/v_MTkwMTIwMjQ.html"; 
$html = @file_get_contents($url); 
preg_match_all("/var _oFlv_o = '([\S|\s]+)'/isU", $html, $matches); 
$o = decode56($matches[1][0]); 
include_once "json.php"; //当php没有配置支持json的时候有用 
$o = str_replace("'", '"', $o); 
$o = json_decode($o); 
//print_r($o); 
$swf = "http://www.56.com/n_" . str_replace(":88", "", str_replace(".56.com", "", $o->img_host)) . 
                "_/" . str_replace(".56.com", "", $o->URL_host) . 
                "_/" . $o->URL_pURL . 
                "_/" . $o->URL_sURL . 
                "_/" . $o->user_id . 
                "_/" . $o->URL_URLid . 
                "_/" . $o->totaltime . 
                "_/" . $o->effectID . 
                "_/" . $o->id . ".swf"; 
$flv = "http://hot-chinacache.56.com/flvdownload/" . $o->URL_pURL . 
                "/" . $o->URL_sURL . 
                "/" . $o->user_id . 
                "@56.com_56flv_" . $o->URL_URLid . ".flv"; 
echo "FLASH文件路径: " . $swf; 
echo "<br>"; 
echo "FLV文件路径: " . $flv; $de = 0; 
function decode56($str) { 
    global $de; 
    $c1 = ""; 
    $c2 = ""; 
    $c3 = ""; 
    $c4 = ""; 
    $c5 = array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, 41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1); 
    $c6 = charCodeAt($str, 0); 
    $c7 = ""; 
    $i = ""; 
    $len = ""; 
    $out = ""; 
    if(!$de) { 
        $de = 1; 
        $c7 = decode56($str); 
        $str = substr($c7, $c6); 
    } 
    $len = strlen($str); 
    $i = 1; 
    $out = ""; 
    while ($i < $len) { 
        do { 
            $c1 = $c5[charCodeAt($str, $i++) & 0xff]; 
        } 
        while($i < $len && $c1 == -1); 
        if ($c1 == -1) break; 
        do { 
            $c2 = $c5[charCodeAt($str, $i++) & 0xff]; 
        } 
        while ($i < $len && $c2 == -1); 
        if($c2 == -1) break; 
        $out .= chr(($c1 << 2) | (($c2 & 0x30) >> 4)); 
        do { 
            $c3 = charCodeAt($str, $i++) & 0xff; 
            if($c3 == 61) return $out; 
            $c3 = $c5[$c3]; 
        } 
        while ($i < $len && $c3 == -1); 
        if($c3 == -1) break; 
        $out .= chr((($c2 & 0XF) << 4) | (($c3 & 0x3C) >> 2)); 
        do { 
            $c4 = charCodeAt($str, $i++) & 0xff; 
            if($c4 == 61) return $out; 
            $c4 = $c5[$c4]; 
        } 
        while ($i < $len && $c4 == -1); 
        if ($c4 == -1) break; 
        $out .= chr((($c3 & 0x03) << 6) | $c4); 
    } 
    return $out; 
} 
function charCodeAt($str, $i){ 
    return ord(substr($str, $i, 1)); 
} 
//该程序仅为技术交流,交流可加QQ群: 1714987 
?>

json.php
<?php 
define('HTML_AJAX_JSON_SLICE',   1); 
define('HTML_AJAX_JSON_IN_STR',  2); 
define('HTML_AJAX_JSON_IN_ARR',  4); 
define('HTML_AJAX_JSON_IN_OBJ',  8); 
define('HTML_AJAX_JSON_IN_CMT', 16); 
define('HTML_AJAX_JSON_LOOSE_TYPE', 10); 
define('HTML_AJAX_JSON_STRICT_TYPE', 11); class HTML_AJAX_JSON 
{ 
    function HTML_AJAX_JSON($use=HTML_AJAX_JSON_STRICT_TYPE) 
    { 
        $this->use = $use; 
    } 
    function encode($var) 
    { 
        switch(gettype($var)) { 
            case 'boolean': 
                return $var ? 'true' : 'false'; 
            case 'NULL': 
                return 'null'; 
            case 'integer': 
                return sprintf('%d', $var); 
            case 'double': 
            case 'float': 
                return sprintf('%f', $var); 
            case 'string': // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT 
                $ascii = ''; 
                $strlen_var = strlen($var); 
                for($c = 0; $c < $strlen_var; $c++) { 
                    $ord_var_c = ord($var{$c}); 
                    if($ord_var_c == 0x08) { 
                        $ascii .= '\b'; 
                    } elseif($ord_var_c == 0x09) { 
                        $ascii .= '\t'; 
                    } elseif($ord_var_c == 0x0A) { 
                        $ascii .= '\n'; 
                    } elseif($ord_var_c == 0x0C) { 
                        $ascii .= '\f'; 
                    } elseif($ord_var_c == 0x0D) { 
                        $ascii .= '\r'; 
                    } elseif(($ord_var_c == 0x22) || ($ord_var_c == 0x2F) || ($ord_var_c == 0x5C)) { 
                        $ascii .= '\\'.$var{$c}; // double quote, slash, slosh 
                    } elseif(($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)) { 
                        // characters U-00000000 - U-0000007F (same as ASCII) 
                        $ascii .= $var{$c}; // most normal ASCII chars 
                    } elseif(($ord_var_c & 0xE0) == 0xC0) { 
                        // characters U-00000080 - U-000007FF, mask 110XXXXX, see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 
                        $char = pack('C*', $ord_var_c, ord($var{$c+1})); $c+=1; 
                        $ascii .= sprintf('\u%04s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8'))); 
                    } elseif(($ord_var_c & 0xF0) == 0xE0) { 
                        // characters U-00000800 - U-0000FFFF, mask 1110XXXX, see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 
                        $char = pack('C*', $ord_var_c, ord($var{$c+1}), ord($var{$c+2})); $c+=2; 
                        $ascii .= sprintf('\u%04s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8'))); 
                    } elseif(($ord_var_c & 0xF8) == 0xF0) { 
                        // characters U-00010000 - U-001FFFFF, mask 11110XXX, see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 
                        $char = pack('C*', $ord_var_c, ord($var{$c+1}), ord($var{$c+2}), ord($var{$c+3})); $c+=3; 
                        $ascii .= sprintf('\u%04s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8'))); 
                    } elseif(($ord_var_c & 0xFC) == 0xF8) { 
                        // characters U-00200000 - U-03FFFFFF, mask 111110XX, see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 
                        $char = pack('C*', $ord_var_c, ord($var{$c+1}), ord($var{$c+2}), ord($var{$c+3}), ord($var{$c+4})); $c+=4; 
                        $ascii .= sprintf('\u%04s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8'))); 
                    } elseif(($ord_var_c & 0xFE) == 0xFC) { 
                        // characters U-04000000 - U-7FFFFFFF, mask 1111110X, see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 
                        $char = pack('C*', $ord_var_c, ord($var{$c+1}), ord($var{$c+2}), ord($var{$c+3}), ord($var{$c+4}), ord($var{$c+5})); $c+=5; 
                        $ascii .= sprintf('\u%04s', bin2hex(mb_convert_encoding($char, 'UTF-16', 'UTF-8'))); 
                    } 
                } 
                return sprintf('"%s"', $ascii); 
            case 'array': 
                if(is_array($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) 
                    return sprintf('{%s}', join(',', array_map(array($this, 'name_value'), array_keys($var), array_values($var)))); 
                return sprintf('[%s]', join(',', array_map(array($this, 'encode'), $var))); 
            case 'object': 
                $vars = get_object_vars($var); 
                return sprintf('{%s}', join(',', array_map(array($this, 'name_value'), array_keys($vars), array_values($vars)))); 
            default: 
                return ''; 
        } 
    } 
    function name_value($name, $value) 
    { 
        return (sprintf("%s:%s", $this->encode(strval($name)), $this->encode($value))); 
    } 
    function reduce_string($str) 
    { 
        $str = preg_replace('#^\s*//(.+)$#m', '', $str); // eliminate single line comments in '// ...' form 
        $str = preg_replace('#^\s*/\*(.+)\*/#Us', '', $str); // eliminate multi-line comments in '/* ... */' form, at start of string 
        $str = preg_replace('#/\*(.+)\*/\s*$#Us', '', $str); // eliminate multi-line comments in '/* ... */' form, at end of string 
        $str = trim($str); // eliminate extraneous space 
        return $str; 
    } 
    function decode($str) 
    { 
        $str = $this->reduce_string($str); 
        switch(strtolower($str)) { 
            case 'true': 
                return true; 
            case 'false': 
                return false; 
            case 'null': 
                return null; 
            default: 
                if(is_numeric($str)) { 
                    return ((float)$str == (integer)$str) 
                        ? (integer)$str 
                        : (float)$str; 
                } elseif(preg_match('/^".+"$/s', $str) || preg_match('/^\'.+\'$/s', $str)) { 
                    $delim = substr($str, 0, 1); 
                    $chrs = substr($str, 1, -1); 
                    $utf8 = ''; 
                    $strlen_chrs = strlen($chrs); 
                    for($c = 0; $c < $strlen_chrs; $c++) { 
                        $substr_chrs_c_2 = substr($chrs, $c, 2); 
                        $ord_chrs_c = ord($chrs{$c}); 
                        if($substr_chrs_c_2 == '\b') { 
                            $utf8 .= chr(0x08); $c+=1; 
                        } elseif($substr_chrs_c_2 == '\t') { 
                            $utf8 .= chr(0x09); $c+=1; 
                        } elseif($substr_chrs_c_2 == '\n') { 
                            $utf8 .= chr(0x0A); $c+=1; 
                        } elseif($substr_chrs_c_2 == '\f') { 
                            $utf8 .= chr(0x0C); $c+=1; 
                        } elseif($substr_chrs_c_2 == '\r') { 
                            $utf8 .= chr(0x0D); $c+=1; 
                        } elseif(($delim == '"') && (($substr_chrs_c_2 == '\\"') || ($substr_chrs_c_2 == '\\\\') || ($substr_chrs_c_2 == '\\/'))) { 
                            $utf8 .= $chrs{++$c}; 
                        } elseif(($delim == "'") && (($substr_chrs_c_2 == '\\\'') || ($substr_chrs_c_2 == '\\\\') || ($substr_chrs_c_2 == '\\/'))) { 
                            $utf8 .= $chrs{++$c}; 
                        } elseif(preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6))) { // single, escaped unicode character 
                            $utf16 = chr(hexdec(substr($chrs, ($c+2), 2))) . chr(hexdec(substr($chrs, ($c+4), 2))); 
                            $utf8 .= mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); 
                            $c+=5; 
                        } elseif(($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F)) { 
                            $utf8 .= $chrs{$c}; 
                        } elseif(($ord_chrs_c & 0xE0) == 0xC0) { 
                            $utf8 .= substr($chrs, $c, 2); $c += 1; 
                        } elseif(($ord_chrs_c & 0xF0) == 0xE0) { 
                            $utf8 .= substr($chrs, $c, 3); $c += 2; 
                        } elseif(($ord_chrs_c & 0xF8) == 0xF0) { 
                            $utf8 .= substr($chrs, $c, 4); $c += 3; 
                        } elseif(($ord_chrs_c & 0xFC) == 0xF8) { 
                            $utf8 .= substr($chrs, $c, 5); $c += 4; 
                        } elseif(($ord_chrs_c & 0xFE) == 0xFC) { 
                            $utf8 .= substr($chrs, $c, 6); $c += 5; 
                        } 
                    } 
                    return $utf8; 
                } elseif(preg_match('/^\[.*\]$/s', $str) || preg_match('/^{.*}$/s', $str)) { 
                    if($str{0} == '[') { 
                        $stk = array(HTML_AJAX_JSON_IN_ARR); 
                        $arr = array(); 
                    } else { 
                        if($this->use == HTML_AJAX_JSON_LOOSE_TYPE) { 
                            $stk = array(HTML_AJAX_JSON_IN_OBJ); 
                            $obj = array(); 
                        } else { 
                            $stk = array(HTML_AJAX_JSON_IN_OBJ); 
                            $obj = new stdClass(); 
                        } 
                    } 
                    array_push($stk, array('what' => HTML_AJAX_JSON_SLICE, 'where' => 0, 'delim' => false)); 
                    $chrs = substr($str, 1, -1); 
                    $chrs = $this->reduce_string($chrs); 
                    if($chrs == '') { 
                        if(reset($stk) == HTML_AJAX_JSON_IN_ARR) { 
                            return $arr; 
                        } else { 
                            return $obj; 
                        } 
                    } 
                    $strlen_chrs = strlen($chrs); 
                    for($c = 0; $c <= $strlen_chrs; $c++) { 
                        $top = end($stk); 
                        $substr_chrs_c_2 = substr($chrs, $c, 2); 
                        if(($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == HTML_AJAX_JSON_SLICE))) { 
                            $slice = substr($chrs, $top['where'], ($c - $top['where'])); 
                            array_push($stk, array('what' => HTML_AJAX_JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); 
                            if(reset($stk) == HTML_AJAX_JSON_IN_ARR) { // we are in an array, so just push an element onto the stack 
                                array_push($arr, $this->decode($slice)); 
                            } elseif(reset($stk) == HTML_AJAX_JSON_IN_OBJ) { // we are in an object, so figure out the property name and set an element in an associative array, for now 
                                if(preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { // "name":value pair 
                                    $key = $this->decode($parts[1]); 
                                    $val = $this->decode($parts[2]); 
                                    if($this->use == HTML_AJAX_JSON_LOOSE_TYPE) { 
                                        $obj[$key] = $val; 
                                    } else { 
                                        $obj->$key = $val; 
                                    } 
                                } elseif(preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { // name:value pair, where name is unquoted 
                                    $key = $parts[1]; 
                                    $val = $this->decode($parts[2]); 
                                    if($this->use == HTML_AJAX_JSON_LOOSE_TYPE) { 
                                        $obj[$key] = $val; 
                                    } else { 
                                        $obj->$key = $val; 
                                    } 
                                } 
                            } 
                        } elseif((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != HTML_AJAX_JSON_IN_STR)) { // found a quote, and we are not inside a string 
                            array_push($stk, array('what' => HTML_AJAX_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); 
                            //print("Found start of string at {$c}\n"); 
                        } elseif(($chrs{$c} == $top['delim']) && ($top['what'] == HTML_AJAX_JSON_IN_STR) && (($chrs{$c - 1} != "\\") || ($chrs{$c - 1} == "\\" && $chrs{$c - 2} == "\\"))) { // found a quote, we're in a string, and it's not escaped 
                            array_pop($stk); 
                            //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); 
                        } elseif(($chrs{$c} == '[') && in_array($top['what'], array(HTML_AJAX_JSON_SLICE, HTML_AJAX_JSON_IN_ARR, HTML_AJAX_JSON_IN_OBJ))) { // found a left-bracket, and we are in an array, object, or slice 
                            array_push($stk, array('what' => HTML_AJAX_JSON_IN_ARR, 'where' => $c, 'delim' => false)); 
                            //print("Found start of array at {$c}\n"); 
                        } elseif(($chrs{$c} == ']') && ($top['what'] == HTML_AJAX_JSON_IN_ARR)) { // found a right-bracket, and we're in an array 
                            array_pop($stk); 
                            //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); 
                        } elseif(($chrs{$c} == '{') && in_array($top['what'], array(HTML_AJAX_JSON_SLICE, HTML_AJAX_JSON_IN_ARR, HTML_AJAX_JSON_IN_OBJ))) { // found a left-brace, and we are in an array, object, or slice 
                            array_push($stk, array('what' => HTML_AJAX_JSON_IN_OBJ, 'where' => $c, 'delim' => false)); 
                            //print("Found start of object at {$c}\n"); 
                        } elseif(($chrs{$c} == '}') && ($top['what'] == HTML_AJAX_JSON_IN_OBJ)) { // found a right-brace, and we're in an object 
                            array_pop($stk); 
                            //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); 
                        } elseif(($substr_chrs_c_2 == '/*') && in_array($top['what'], array(HTML_AJAX_JSON_SLICE, HTML_AJAX_JSON_IN_ARR, HTML_AJAX_JSON_IN_OBJ))) { // found a comment start, and we are in an array, object, or slice 
                            array_push($stk, array('what' => HTML_AJAX_JSON_IN_CMT, 'where' => $c, 'delim' => false)); 
                            $c++; 
                            //print("Found start of comment at {$c}\n"); 
                        } elseif(($substr_chrs_c_2 == '*/') && ($top['what'] == HTML_AJAX_JSON_IN_CMT)) { // found a comment end, and we're in one now 
                            array_pop($stk); 
                            $c++; 
                            for($i = $top['where']; $i <= $c; $i++) 
                                $chrs = substr_replace($chrs, ' ', $i, 1); 
                            //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); 
                        } 
                    } 
                    if(reset($stk) == HTML_AJAX_JSON_IN_ARR) { 
                        return $arr; 
                    } elseif(reset($stk) == HTML_AJAX_JSON_IN_OBJ) { 
                        return $obj; 
                    } 
                } 
        } 
    } 
} 
if ( !function_exists("json_encode") || !function_exists("json_decode") ) { 
    include_once "json.php"; 
    function json_encode($data) { 
        $json = new HTML_AJAX_JSON(); 
        return $json->encode($data); 
    } 
    function json_decode($data) { 
        $json = new HTML_AJAX_JSON(); 
        return $json->decode($data); 
    } 
} 
?>
PHP 相关文章推荐
使用php+xslt在windows平台上
Oct 09 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
php for 循环语句使用方法详细说明
May 09 PHP
遍历指定目录下的所有目录和文件的php代码
Nov 27 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
Feb 14 PHP
深入php self与$this的详解
Jun 08 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
Jan 07 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
php模拟实现斗地主发牌
Apr 22 PHP
从MySQL数据库表中取出随机数据的代码
Sep 05 #PHP
从一个不错的留言本弄的mysql数据库操作类
Sep 02 #PHP
利用static实现表格的颜色隔行显示的代码
Sep 02 #PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 #PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 #PHP
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 #PHP
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
Aug 19 #PHP
You might like
PHP文件下载类
2006/12/06 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
php时区转换转换函数
2014/01/07 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
实例分析编写vue组件方法
2019/02/12 Javascript
Python转换HTML到Text纯文本的方法
2015/01/15 Python
Python中的多重装饰器
2015/04/11 Python
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
python生成大写32位uuid代码
2020/03/03 Python
python轮询机制控制led实例
2020/05/03 Python
倩碧英国官网:Clinique英国
2018/08/10 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
幼儿园家长会邀请函
2014/01/15 职场文书
集体备课反思
2014/02/12 职场文书
股权转让协议书范本
2014/04/12 职场文书
企业安全生产责任书
2014/04/14 职场文书
生日宴会策划方案
2014/06/03 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
安全承诺书格式范本
2015/04/28 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
Go 语言结构实例分析
2021/07/04 Golang