wordpress导航菜单链接处添加nofollow

作者:matrix 发布时间:2015年5月29日 分类:Wordpress 兼容并蓄

WordPress后台选项  外观-〉菜单处可以给导航栏自定义URL,但是个别链接需要添加rel="nofollow"的时候会发现没有办法。其实WordPress是有这个选项的,只是隐藏了。

点击顶部的“显示选项”展开, 链接关系网(XFN)处打勾就可以了。

如果是4.2的版本会无法点击“显示选项” ,可以审查元素手动修改DOM来临时解决问题: 阅读剩余部分 »

获取豆瓣音乐下载地址

作者:matrix 发布时间:2015年5月20日 分类:兼容并蓄

豆瓣音乐的mp3链接没法外链播放,只有下载用。
例如http://music.douban.com/programme/1312655?sid=2135789#play
打开地址会播放袁惟仁的木吉他。
右键点击“4.木吉他- 袁惟仁”审查元素

如图:

审查元素 可以看到

<div class="song-item" data-index="3" data-title="木吉他" data-performer="袁惟仁" data-songid="2135789" data-plength="241" data-ssid="1b59">

 
其中2135789和1b59是下一步需要的
打开http://music.douban.com/j/songlist/get_song_url?sid=2135789&ssid=1b59
看到{"r":"http:\/\/mr3.douban.com\/201505162003\/579f892209df60970f186024b25c9dee\/view\/song\/small\/p2135789.mp4"}
其中r对应的键值就是这首歌的链接地址(请去掉反斜杠)。
其实也可以简单点,直接审查元素打开后点击NetWork,只要该页面有歌曲播放就会显示出歌曲的地址。
PS:只需要音乐ID就能拼接出音乐地址
http:/ /mr5.douban.com/{任意12位\d,即日期:20150515}/{任意32位\w}/view/song/small/{音乐ID}.mp3

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 发布时间:2015年5月17日 分类:兼容并蓄

我之前不会编写函数,都是用的别人做的。后来慢慢学会就逐步添加想要的功能,但是问题出现了。
我修改的函数(用于curl抓取页面)的相关设置太多,导致函数的形参多的冒泡,使用起来很麻烦

function curl_get($url, $re=0,$ua=0,$ip=1,$post=0,$followLocation=0......){}//像这样
curl_get($url, 0,0,0,$post,0,1,0......)//每次调用的时候很蛋疼

最近难以忍受调用这种形式的函数,遂修改下

function curl_get($url, $array=array('re'=>0,'ua'=>0,'ip'=>1,'post'=>0,followLocation=>0,......)){}

刚开始没发现使用上有问题,但是后来真闯到鬼了,明明默认的形参是ip=1,但是打死都没反应
curl_get($url, $array=array('post'=>0))后来知道是怎么回事:调用函数时的array('post'=>0)参数覆盖了形参$array=array('re'=>0,'ua'=>0,'ip'=>1...),等于是这样的话除了设置的post数组,其他的数组都没有设置(包括形参)。。。好吧,看下面解决办法

解决方案1

function curl_get($url, $array=array())
{
$defaultOptions = array(
're'=>0,
'ua'=>0,
'ip'=>1,
'post'=>0,
'followLocation'=>0,
//......
);
$array = array_merge($defaultOptions, $array);
//do......
}

解决方案2

function curl_get($url,$str='') {
$str_deaful='re=0&ua=0&ip=1&post=0&followLocation=0...';
parse_str($str_deaful,$arr);
parse_str($str,$arr2);
$array = array_merge($arr,$arr2);
//do......
}

参考:http://segmentfault.com/q/1010000000192291