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之第九天
Oct 09 PHP
php下MYSQL limit的优化
Jan 10 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
php小技巧之过滤ascii控制字符
May 14 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php实现插入排序
Mar 29 PHP
PHPExcel笔记, mpdf导出
May 03 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
PHP实现的XML操作类【XML Library】
Dec 29 PHP
PHP的Trait机制原理与用法分析
Oct 18 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编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
phpwind放自动注册方法
2006/12/02 Javascript
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
webpack打包js的方法
2018/03/12 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
[04:03][TI9趣味短片] 小鸽子茶话会
2019/08/20 DOTA
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
浅谈Python peewee 使用经验
2017/10/20 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python3获取url文件大小示例代码
2019/09/18 Python
python如何将图片转换素描画
2020/09/08 Python
合作协议书范文
2014/08/20 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏