suning云盘解析源码[PHP]

作者:matrix 发布时间:2015年10月29日星期四 分类:PHP

苏宁云盘的下载速度还是不错的,之前获取下载地址很简单。现在必须要求用户登录才能办到,难度也是增加不少。还好suning没做绝。GOOD LUCK!

提示: 回复可见网盘地址

源码

阅读剩余部分 »

将BCS的bucket文件保存到本地[PHP]

作者:matrix 发布时间:2015年6月3日星期三 分类:兼容并蓄 零零星星

收到百度BCS 6月30日停服提醒邮件,说是要停止服务,请自重。让咱BCS迁移到BOS...

BCS的bucket是以前创建bae时设置的,保存了一些图片文件

怎样把云存储的文件备份到本地是一个问题啊。毕竟一个一个下载太麻烦,文件有些多。。。

BCS控制台:http://developer.baidu.com/console#app/project

打开BCS控制台可以查看你的bucket名称以及API Key 和Secret Key。如果里面的文件有点多,且你想保存下来

下载 :http://pan.baidu.com/s/1mgMhp92

使用说明:

请确保解压后有个空的TTSEE文件夹,它用来存放下载的文件

只能保存一个bucket里面的文件,bucket有多层文件夹应该(我没试过)能正常使用的。

//$bcsobj->list_object_by_dir($bucket,'/',$list_model = 2);

解压后配置好bcs/conf-inc.php参数:项目对应的AK 公钥和SK私钥(百度开发者中心里复制)

调用:127.0.0.1/download.php?bucket=bucket名称

php中用到了file_put_contents函数:

$file = file_get_contents('http://bcs.duapp.com/newbuck'.$objest);//读取远程文件
file_put_contents('TTSEE'.$objest,$file);//保存到同级TTSEE目录

参考:

http://www.cnblogs.com/m199/p/3450675.html

http://www.jb51.net/article/57127.htm

PS:
150710后续更新
把bcs文件下载到本地电脑后再上传到主机空间。
之后用sql语法批量替换旧url。

UPDATE wp_posts 
SET post_content = ( Replace (post_content, 'bcs.duapp.com/newbuck/', 'www.hhtjim.com/wp-content/uploads/2015/bcsfile/') )
WHERE Instr(post_content, 'jpeg') > 0 
 OR Instr(post_content, 'jpg') > 0 
 OR Instr(post_content, 'gif') > 0 
 OR Instr(post_content, 'png') > 0

参考:
https://free.com.tw/moving-to-https-on-wordpress/

y.qq.com-php获取QQ音乐外链源码

作者:matrix 发布时间:2015年5月18日星期一 分类:零零星星

QQ音乐
MP3接口

http://tsmusic24.tc.qq.com/{音乐ID}.mp3
http:/ /stream.qqmusic.tc.qq.com/{音乐ID}.mp3
http:/ /stream{1-30都可以}.qqmusic.qq.com/{音乐ID}.mp3
http://tsmusic128.tc.qq.com/{音乐ID+30000000}.mp3 (请计算出结果)
QQ音乐高品质ogg
http://tsmusic128.tc.qq.com/{音乐ID+40000000}.ogg (请计算出结果)

M4A接口

http://tsmusic24.tc.qq.com/{音乐ID}.m4a
http://thirdparty.gtimg.com/{音乐ID}.m4a?fromtag=38
http://thirdparty.gtimg.com/C100{音乐MID}.m4a?fromtag=38
http://cc.stream.qqmusic.qq.com/C200{音乐MID}.m4a?vkey={VKEY的值}&guid=1830679348

过程

示例获取单曲页面的MP3或M4A文件链接
http://y.QQ.com/#type=song&mid=002G0sJY2wThyx
其中的002G0sJY2wThyx就是歌曲的mid
打开上面的URl浏览器会加载iframe框架http://s.plcloud.music.qq.com/fcgi-bin/fcg_yqq_song_detail_info.fcg?songmid=002G0sJY2wThyx
Ctrl +U查看源码

var g_SongData = { id: 7168586, songmid: '002G0sJY2wThyx', songname: '喜欢你', singer:'G.E.M. 邓紫棋', singerid:13948,singermid:'001fNHEf1SFEFN',albumname:'喜欢你', albumid:654246,albummid:'000cFPKx3ZGzks', status:31, fnote:0};/*status:非0(true)表示正常歌曲,0(false)表示下架歌曲或者歌曲不存在*/

说明:其中的7168586就是对应歌曲的id,而002G0sJY2wThyx是歌曲的mid,每首歌曲的信息都不同,这需要使用正则匹配数据

php代码:

<?php
$u = $_GET['u'];
$type = $_GET['t']?$_GET['t']:'mp3';
$con = 'http://s.plcloud.music.qq.com/fcgi-bin/fcg_yqq_song_detail_info.fcg?songmid='.$u;
preg_match('|var g_SongData = ({.*});|',file_get_contents($con),$data);
$obj = json_decode(format_ErrorJson(iconv('GBK', 'UTF-8', $data[1])));
$id = $obj->id;
//$mid = $obj->songmid;
$url = 'http://tsmusic24.tc.qq.com/'.$id.'.'.$type;
header('Location: '.$url);
function format_ErrorJson($data)
{
    $con = str_replace('\'','"',$data);//替换单引号为双引号
    $con = preg_replace('/(\w+):[ {]?((?<YinHao>"?).*?\k<YinHao>[,}]?)/is', '"$1": $2',$con );//若键名没有双引号则添加
    return $con;
}

说明:
上面代码只是用了MP3和M4A的第一种接口
代码保存为php文件,调用/xxx.php?u=音乐ID&t=格式
例如001yJypt4E8GW0歌曲的m4a地址
/xxx.php?u=001yJypt4E8GW0&t=m4a
阅读剩余部分 »

天天动听外链php源码

作者:matrix 发布时间:2014年3月30日星期日 分类:兼容并蓄 零零星星

天天动

接口一:http://ting.hotchanson.com/detail.do?neid=音乐ID&size=0

接口二:http://ting.hotchanson.com/website/ting?song_id=音乐ID&code=音乐ID的KEY&from=search

使用接口二较为费劲,需要得到key。

以接口一示例:

打开http://ting.hotchanson.com/detail.do?neid=574285&size=0可以看到

{"code":1,"msg":"OK","data":{"hotList":[],"num":79230,"singerId":4140,"albumName":"Versus","source":"http://lty.bla.enligner.com","count":79095,"singerName":"Usher","itemList":[{"fileType":"压缩品质","dType":1,"downUrl":"http://ws.cs.hotchanson.com/mp3_64_5/52/d4/52ca1c3dcb8e4895de7024b115e45ed4.mp3?k=347f92be0b97ffb3&t=1396579062","size":"1.70M","duration":"03:42"},{"fileType":"标准品质","dType":2,"downUrl":"http://jdlbqc.tgg.yymommy.com/m4a_96_5/52/d4/52ca1c3dcb8e4895de7024b115e45ed4.m4a?k=347f92be0b97ffb3&t=1396579062","size":"2.55M","duration":"03:42"},{"fileType":"标准品质","dType":3,"downUrl":"http://nie.dfe.yymommy.com/mp3_128_5/52/d4/52ca1c3dcb8e4895de7024b115e45ed4.mp3?k=347f92be0b97ffb3&t=1396579062","size":"3.39M","duration":"03:42"}],"publish":"","songName":"DJ Got Us Fallin' In Love","neid":574285}}

之后再从中匹配到需要的mp3链接跳转下载,这就做到外链了。

php代码: 150323修改


<?php if ($_GET['u']) { $id = (is_numeric($_GET['u'])) ? $_GET['u'] : die('Do not see the expected value');//如果没有数字型的GET参数则退出 $url = "http://ting.hotchanson.com/detail.do?neid=$id&size=0";//拼接数据地址 $con = file_get_contents($url);//获取音乐ID的数据 $obj = json_decode($con);//准备提取json数据 $d = ($obj->data->itemList) ? $obj->data->itemList : die('Not Found "itemList"');//如果没有mp3的数据则退出 foreach ($d as $a) {//开始foreach循环遍历每个MP3链接 if (strpos($a->downUrl, ".mp3") && ($a->fileType == '压缩品质' || '标准品质'))//如果有.mp3且为'压缩品质' || '标准品质'则302跳转,否则继续找 { header('Location: ' . $a->downUrl); break; } else { continue; } } }

说明:

上面代码保存为.php文件。

调用格式:http://XXXX/*.php?u=音乐ID

各行都有注释,不再细说。

再说接口二:

这接口二的玩意有些麻烦,不建议使用。

需要的话只是多一个步骤,得到key。

之前我也没注意这key是哪里来的,后来才晓得是js函数算出来的。

var u = {
song_id: t.song_id,
code: $.CRC32(t.song_id),
from: "search"
};

上面的第三行的CRC32()就是获取key的相关函数,里面的t.song_id是音乐ID
又从他页面上的其他js里找到这个代码,看来没错:

CRC32: function(f) {
    var d = new Array(256);
    var e, c;
    var b;
    for (e = 0; e < 256; e++) {
        b = e;
        for (c = 0; c < 8; c++) { if (b & 1) { b = ((b >> 1) & 2147483647) ^ 3988292384
        } else {
            b = ((b >> 1) & 2147483647)
        }
        }
        d[e] = b
    }
    if (typeof f != "string") {
        f = "" + f
    }
    b = 4294967295;
    for (e = 0; e < f.length; e++) { b = ((b >> 8) & 16777215) ^ d[(b & 255) ^ f.charCodeAt(e)]
    }
    b ^= 4294967295;
    return (b >> 3).toString(16)
},

这就是获取key的 CRC32函数。
然后再依葫芦画瓢翻译成php代码,Bingo!

function co($f) {
    $d = Array();
    $e = '';
    $c = '';
    $b = '';
    for ($e = 0; $e < 256; $e++) {
        $b = $e;
        for ($c = 0; $c < 8; $c++) {
            if ($b & 1) {
                $b = (($b >> 1) & 2147483647) ^ 3988292384;
            } else {
                $b = (($b >> 1) & 2147483647);
            }
        }
        $d[$e] = $b;
    }
    if (!is_string($f)) {
        $f = "" + $f;
    }
    $b = 4294967295;
    for ($e = 0; $e < strlen($f); $e++) {
        $b = (($b >> 8) & 16777215) ^ $d[($b & 255) ^ get_bianma(substr($f, $e, 1))];
    }
    $b ^= 4294967295;// $b = $b ^ 4294967295;
    $fuhao = (!is_numeric(substr($b >> 3, 0, 1))) ? substr($b >> 3, 0, 1) : '';
    return $fuhao.base_convert($b >> 3, 10, 16);//base_convert会去掉($b >> 3)的负号,这里不要用dechex()转换为16进制
}

function get_bianma($str)//等同于js的charCodeAt()
{
    $result = array();
    for ($i = 0, $l = mb_strlen($str, 'utf-8'); $i < $l; ++$i) {
        $result[] = uniord(mb_substr($str, $i, 1, 'utf-8'));
    }
    return join(",", $result);
}

function uniord($str, $from_encoding = false) {
    $from_encoding = $from_encoding ? $from_encoding : 'UTF-8';
    if (strlen($str) == 1)
        return ord($str);
    $str = mb_convert_encoding($str, 'UCS-4BE', $from_encoding);
    $tmp = unpack('N', $str);
    return $tmp[1];
}

说明:代码放到php文件的<?php 和?>之间
echo co('1757517');//显示出音乐id为1757517的KEY
之后再拼接接口二的地址,与接口一的代码同理获取MP3链接。

MP3外链测试:
阅读剩余部分 »

php获取文本内容并随机排列

作者:matrix 发布时间:2014年3月9日星期日 分类:零零星星

获取1.txt 2.txt 3.txt这三个文本文档里面每行的内容,并且打乱顺序输出。

$array=file('1.txt');  
$array2=file('2.txt');  
$array3=file('3.txt');  
for($i=2;$i<4;$i++){  
$ass = "array".$i;  
$ac = $$ass;  
$as=count($$ass);  
for($s=0;$s<$as;$s++){  
$cs=count($array);  
$array[$cs]=$ac[$s];  
}  
}  
//var_dump($array);  
shuffle($array);//随机排列数组  
//print_r($array);  
echo implode("</br>",$array);  

说明:
上面的代码放在php文件的<?php和?>标签之中。
txt和php文件放在同一目录。

再改外链转换工具

作者:matrix 发布时间:2014年2月4日星期二 分类:零零星星

感觉以前的界面按钮有些小,正好改成3.0.3的css前端框架试试~。

web app新界面

>>外链转换工具

资源 :

Bootstrap中文网: http://www.bootcss.com/  里面各种开源,各种介绍~

百度CDN公共库:http://developer.baidu.com/wiki/index.php?title=docs/cplat/libs

用的其中Bootstrap v3.0.3:http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css

UI变动: 阅读剩余部分 »

修改外链转换工具

作者:matrix 发布时间:2014年1月15日星期三 分类:零零星星

图片4734-修改外链转换工具

参考凉手抚温柔的代码修改此>>外链转换工具

变动:

添加ajax post数据提交,不支持js的浏览器是扛不动了。

度娘网盘遍历3层文件夹的文件信息。最多显示第二层300个,第三层200个文件,第一层就没试过。太多了的话那没法了。此功能出于本人某些情况下片考虑,无实际意义。:)

文件夹结构太复杂的,遍历起来那就真心慢。

度娘网盘的外链就只能下载,干其他没法的。

微云:解决BAE上没法下载多文件打包的问题。

微云解析源码>>微云网盘php解析源码_更新

ajax 代码参考至凉手抚温柔:http://www.ifoouu.com/note/73.html,在此感谢!
他的站已经熄火,这里给个他的外链工具源码(BAE2.0):
http://pan.baidu.com/s/1nt9J5bV

MP3:TEST 阅读剩余部分 »

curl获取189api access token

作者:matrix 发布时间:2014年1月13日星期一 分类:零零星星

之前获取令牌都是手动提交提交表单后复制的access token

<form action="https://oauth.api.189.cn/emp/oauth2/v2/access_token" method="post">
<p> 接口: action="https://oauth.api.189.cn/emp/oauth2/v2/access_token" method="post"   <br>
grant_type:
<input type="text" name="grant_type" value="client_credentials" size="40">授权模式,响应类型<br>
  App Id:<input type="text" name="app_id" value="41300000000002185" size="40">应用在天翼开放平台平台上的唯一标识,在应用注册时分配<br>
   App Secret:<input type="text" name="app_secret" value="3d2083dbf75ae30000000003d" size="40">天翼开放平台颁发给应用的密钥信息<br>
   state:<input type="text" name="state" value="www.hhtjim.com" size="40"><br>
   scope:<input type="text" name="scope" size="40"><br>
<br>
  <input type="submit" value="点击获取令牌">
  </p>
</form>

以前也试过用curl模拟提交,可是都失败。现在不用那么傻了,用下面php代码解决。

$ai='4500000000000000000000000001345';
$as='1ab91560000000000000d33b3e6bgh4';
$post=array('Host: '=>'oauth.api.189.cn');
$url="https://oauth.api.189.cn/emp/oauth2/v2/access_token?grant_type=client_credentials&app_id=$ai&app_secret=$as";
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$get_url = curl_exec($ch);
curl_close($ch);
$obj=json_decode($get_url);
echo $obj->access_token;

现在看来,原来如此。

代码说明:

1、2行代表你天翼云app的app_id和app_secret

模式:client_credentials

附:
类似的php代码: Php获取Token.php