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获取类中常量,属性,及方法列表的方法
Apr 09 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
Oct 23 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
Jan 05 PHP
php开发时容易忘记的一些技术细节
Feb 03 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
Aug 07 PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 PHP
PHP数组访问常用方法解析
Sep 05 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接口中interface存在的意义
2013/06/27 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
Bootstrap每天必学之表格
2015/11/23 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
详解Python中namedtuple的使用
2020/04/27 Python
什么是python的id函数
2020/06/11 Python
Python 串口通信的实现
2020/09/29 Python
html5使用canvas实现图片下载功能的示例代码
2017/08/26 HTML / CSS
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
班组长的岗位职责
2013/12/09 职场文书
小学生读书感言
2014/02/12 职场文书
《童趣》教学反思
2014/02/19 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
纠风工作实施方案
2014/03/15 职场文书
化工实习心得体会
2014/09/09 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
初中信息技术教学计划
2015/01/22 职场文书
校长一岗双责责任书
2015/05/09 职场文书
焦点访谈观后感
2015/06/11 职场文书
廉洁自律证明
2015/06/24 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python
vue自定义右键菜单之全局实现
2022/04/09 Vue.js