作者:matrix
发布时间:2013-09-07
分类:兼容并蓄 零零星星
添加自动识别百度外链的文件名以及后缀 中抓取页面标题的方式有点落后,这次稍微修改,使用关于正则匹配的函数。
相关代码:
$fp = file_get_contents($quurlXX);//$quurlXX为百度网盘地址
preg_match_all ("/title\>.*\<\/title/",$fp,$titleList, PREG_PATTERN_ORDER);//使用preg_match_all正则匹配数据并保存到$titleList数组中
//echo $titleList[0][0] ;
$zhuaqian=strpos($titleList[0][0],"title>");
$zhuahou=strpos($titleList[0][0],"_免费高速下载|百度云 网盘-分享无限制");
$xinzhi=substr($titleList[0][0],6,$zhuahou-6); //取适当的两个位置中间的值也就是文件名
$zz = 'http://www.hhtjim.com/bdwl/'.$urlcode.'/'.$uk.'/'.$xinzhi;
echo $zz;
这次抓取的话相对于以前要好些了,除非度娘又把文件名后面的那一串串“_免费高速下载|百度云 网盘-分享无限制”给改了,要不我这又失效了。
bapi.php下载:
http://www.400gb.com/file/29243856
http://pan.baidu.com/share/link?shareid=1490940073&uk=3238236832
这次又调整 外链程序到v0.3。之前用的奶酪博客首发解析百度网盘 V3.1 直链下载 ,后来发现 破博客 的 百度网盘音乐外链源码 更简单实用。
更新提取百度网盘下载链接:
if(isset($_GET['baiu'])){
$baiduURL=explode("?baiu=",$_SERVER["REQUEST_URI"]);//取?baiu=后面的百度网盘链接地址
$bai_url = $baiduURL[1];
$bai_src = file_get_contents($bai_url);
preg_match('|MusicPlayer\("(.*)"|U', $bai_src, $bai_res);//匹配源码里面的下载地址并跳转
$bai_songurl = $bai_res[1];
preg_match('|dlink\\\":\\\"(.*)\\\"|U', $bai_src, $bai_res);
$bai_songurl = str_replace("\\\\", "", $bai_res[1]);
header("location:$bai_songurl");
}
说明:相关代码来自破博客的 百度网盘音乐外链源码 。
将上面代码保存到php文件中,执行示例:/*.php?baiu=百度网盘分享地址(支持新老版本)
作者:matrix
发布时间:2013-09-04
分类:Wordpress 兼容并蓄
网上有很多类似的代码,大多都来自知更鸟的HotNews。略有不同,这里还是记录一下。
一.模板函数中添加:
<?php //取文章内first_image
function catch_first_image() {
global $post,$posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i',$post->post_content,$matches);
$first_img = $matches [1] [0];
if(emptyempty($first_img)){
$random = mt_rand(1,10);
echo get_bloginfo ( 'stylesheet_directory');
echo '/images/random/'.$random.'.jpg';//若没有则输出/images/random/内图片
}
return $first_img;
}
?>
二.主题目录内新建includes文件夹,thumbnail.php丢入: 阅读剩余部分 »
作者:matrix
发布时间:2013-09-03
分类:Wordpress 兼容并蓄
图片时载入的渐显特效JQuery 中有提到lazyload,可以加速WordPress站点的页面载入速度。只是以前的有些偏移这里稍微更新一下。
官网:http://www.appelsiini.net/projects/jeditable
github:https://github.com/tuupola/jquery_jeditable
多图demo:http://www.appelsiini.net/projects/lazyload/enabled_gazillion.html
预加载图片和lazyload v1.8.5下载:
http://www.400gb.com/file/29074139
http://pan.baidu.com/share/link?shareid=2497435386&uk=3238236832
步骤:
1.header中加载JQ库 这里使用1.7.2版本的没问题。若已经加载JQ库不必重复加载。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
2.紧接着加载压缩包里的jquery.lazyload.min.js。依然还是主题的header中。(示例,放入主题目录内的/js/文件夹)
<script src="<?php bloginfo('stylesheet_directory');?>/js/jquery.lazyload.min.js" charset="utf-8"></script>
3.再添加js代码,还是紧接着放置。
<script type="text/javascript" charset="utf-8">
jQuery(document).ready(
function($){
$("img").lazyload({
effect : "fadeIn" //加载图片使用的效果(淡入)
});
});
</script>
说明:第4行的img为需要预加载的地方。这里是所有img标签。
4.还再主题的header.php中添加
<?PHP ob_start();?>
说明:使用ob_start()函数自动在缓冲区处理需要最终加载的图片标签格式
5.在主题footer.php适当位置处添加php代码.可以是</body>之前,也可以是最后一行。
<?php
//图片延缓加载相关处理,替换src为data-original,并添加占位符
$echo = ob_get_contents(); //获取缓冲区内容
ob_clean(); //清楚缓冲区内容,不输出到页面
$placeholder = "grey.gif"; //占位符图片
$preg = "/<img (.*)src(.*) \/>/i"; //匹配图片正则
$replaced = '<img \\1src="'.$placeholder.'" data-original\\2 />';
print preg_replace($preg, $replaced, $echo); //重新写入的缓冲区
ob_end_flush(); //将缓冲区输入到页面,并关闭缓存区
?>
说明:注意第6行中的grey.gif为:预加载的图片名称grey.gif,预加载的图片路径:WordPress程序根目录。当然这里也可以使用绝对路径。
压缩包内还有白色的white.gif和透明的transparent.gif都是预加载图片,可自定义跟换。
参考:http://dl.epinv.com/post/304.html
http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/
http://www.oschina.net/code/snippet_111193_3306
http://www.173it.cn/view-5577-1.html
作者:matrix
发布时间:2013-09-02
分类:零零星星
转换地址:http://link.hhtjim.com
(外链接口已经修改,请到link.hhtjim.com转换)
接口地址:https://www.hhtjim.com/xiami.php?u=虾米网音乐地址
虾米网音乐地址例如:http://www.xiami.com/song/1772146363?spm=a1z1s.6659513.0.0.eu3WwL
或者http://www.xiami.com/song/1772146363放到接口地址上都可以调用自动下载。
用过上次百度网盘外链应用再升级的模板后觉得js的就是漂亮,再借着 Liang's 源码,拿着.htaccess伪静态实现外链地址静态化的实践成果搞定起来的确没那么大的障碍了。
记录过程:
一.修改php源码,添加取得虾米网音乐地址的id值,也就是下面代码的 变量$mp3_id
<?php
/*取得song/后面的音乐ID:$MUsicID
正确链接例如:http://www.xiami.com/song/1772146363?spm=a1z1s.6659513.0.0.eu3WwL
若链接这样http://www.xiami.com/song/play?ids=/song/playlist/id/175153022/object_name/default/object_id/0
则需要 $aa = explode('/',$getturl);
$mp3_id = $aa[8]; //第8个数组
*/
isset($_GET['u']);
$quurl = $_GET['u'];
$getturl = $quurl;
$aa = explode('/',$getturl);
$mp3_id = $aa[4];
代码说明:取得网址的U参数(也就是那虾米的音乐网址)的值后再以“/”分割字符串,得到第4个数组。下面会需要网址跳转,尾巴上添加header("Location: $url");
笔记:
示例地址:http://www.xiami.com/song/1772146363?spm=a1z1s.6659513.0.0.eu3WwL 以“/”分割字符串
第一数组:http:/ (像是吧)
第二数组:www.xiami.com
第三:song
第四:1772146363?spm=a1z1s.6659513.0.0.eu3WwL
奇怪的是将带有?spm=a1z1s.6659513.0.0.eu3WwL 的音乐id值带入到获取音乐id的php中竟然正常返回外链地址。这里只带入音乐id也是正确的。
explode()函数参考:http://www.w3school.com.cn/php/func_string_explode.asp
二.想的是由我这www.hhtjim.com的链接跳转到虾米的直链,这就需要添加伪静态规则。
RewriteRule ^xiami/([0-9]+)\.mp3?$ /xiami.php?u=http://www.xiami.com/song/$1 [L]
说明:
http:// w w w . hhtjim.com/xiami.php?u=http://www.xiami.com/song/1770832884
===>跳转到
http://w w w . hhtjim.com/xiami/1770832884.mp3
三.之后再修改 虾米音乐外链 | HHTJim.Com Web App 就可行啦! 哈哈。
这个模板的功能是用js写的。部分js代码:
<script type="text/javascript">
function getNewLink() {
var inputUrl = document.getElementById("inputUrl");
var file_value = "";
var file_type = document.getElementsByName("file_type");
var hostname = "http://" + "www.hhtjim.com" + "/xiami/";//window.location.hostname为本地url.可替换掉www.hhtjim.com
for (var i = 0; i < file_type.length; i++) {
if (file_type[i].checked) {
file_value = file_type[i].value;
break;
}
};
var file_other = document.getElementById("file_other");
file_other_text = document.getElementById("file_other_text");
var outputUrl = document.getElementById("outputUrl");
var abc = inputUrl.value.substring(inputUrl.value.indexOf('g/') + 2);
// var abc = inputUrl.value.substring(inputUrl.value.indexOf('g/') + 2 ,inputUrl.value.indexOf('?spm') );
// var abc = inputUrl.value.substring(inputUrl.value.indexOf('id/') + 3 ,inputUrl.value.indexOf('/ob') );
// indexOf():http://www.w3school.com.cn/js/jsref_indexOf.asp
//replace():替换用 http://www.w3school.com.cn/js/jsref_replace.asp
//substring():http://www.w3school.com.cn/js/jsref_substring.asp
// test():http://www.w3school.com.cn/js/jsref_test_regexp.asp
//var reg = /^\d+\/xiami\/+\d+$/;//注意\后面的/
var reg = /^([0-9]+)+$/;
if (!reg.test(abc)) {
alert("链接错误,请核对尺码后入座!!!再点击获取~");
inputUrl.focus();
return false;
}
if (file_value == 'other') {
outputUrl.value = hostname + abc + "." + "mp3";
} else {
outputUrl.value = hostname + abc + "." + "mp3";
}
}
</script>
又要用到js,再笔记下。
var abc:申明变量abc
indexOf()确定某个字符首次出现的位置,函数参考:http://www.w3school.com.cn/js/jsref_indexOf.asp
replace()替换作用,参考: http://www.w3school.com.cn/js/jsref_replace.asp
substring()根据indexOf()确定某个字符首次出现的位置来提取字符串,参考:http://www.w3school.com.cn/js/jsref_substring.asp
test()比较字符串,参考:http://www.w3school.com.cn/js/jsref_test_regexp.asp
还有就是正则表达式,这里用的/^([0-9]+)+$/来表示全数字的音乐id。
目前虾米音乐外链 | HHTJim.Com Web App支持3种虾米的url来转换,都是歌曲单文件,其实最终只是获得那个id,都可以自己的手动改的。
1.例如:http://www.xiami.com/song/1819190
2.例如:http://www.xiami.com/song/1819190?spm=a1z1s.6659513.0.0.BMIFmS
3.例如:http://www.xiami.com/song/play?ids=/song/playlist/id/1819190/object_name/default/object_id/0
其余的额也没什么可记。
Liang 在http://www.ifoouu.com/note/47.html贴出的源码正是太漂亮了,给出音乐id就可以得到外链地址。再次 感谢!
10-3添加更精简的php获取方法:
<?php
function curl_get($url,$post=false,$carry_ua=true){
$ch=curl_init($url);
if($carry_ua){
curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent:Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16'));
}
if ($post) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$get_url = curl_exec($ch);
curl_close($ch);
return $get_url;
}
//echo curl_get($st_url);
$st_url='http://www.xiami.com/song/1772222342';
$st_con=curl_get($st_url);
//$st_rex="/src='(.*?)'>Your browser/";
$st_rex="/\"url\":\"(.*?)\",\"/";
preg_match($st_rex, $st_con,$st_matchs);
$st_rurl=$st_matchs[1];
$st_head='m'.rand(0,9);
$st_rurl=str_replace('mg', $st_head, $st_rurl);
$real_file_url = $st_rurl;
$real_file_url = str_replace('\\','',$real_file_url);//将\删除
echo $real_file_url;
?>
说明:其中16行的URL地址为虾米网的音乐链接
代码来自LIANG的http://www.ifoouu.com/note/68.html中提取。
curl的确好啊
14-3-16 添加官方虾米接口:
例:http://www.xiami.com/app/iphone/song/id/1772222342
打开后可以看到:
{"song_id":"1772222342","default_resource_id":"10855342","length":"250","category":null,"listen_file":"\/aliyunos\/874\/117874\/1680443259\/1772222342_10855342_l.mp3","album_id":"1680443259","name":"\u4f60\u7684\u6211\u7684","artist_name":"\u6881\u535a","artist_id":"117874","title_url":"nidewode","recommends":"331","singers":"\u6881\u535a","title":"\u4f60\u7684\u6211\u7684","album_logo":"http:\/\/img.xiami.net\/images\/album\/img74\/117874\/16804432591380527751_2.png","location":"http:\/\/m5.file.xiami.com\/874\/117874\/1680443259\/1772222342_10855342_l.mp3?auth_key=d94ae2db825f166c3c76c901ae79343c-1395014400-0-null","low_size":"10023705","file_size":null,"low_hash":"d272d5c12629274af5ed42d71d51fb55","whole_hash":"d272d5c12629274af5ed42d71d51fb55","content_hash":"d272d5c12629274af5ed42d71d51fb55","content_size":"10023705","lock_lrc":"2","lyric":"http:\/\/img.xiami.net\/lyric\/42\/1772222342_13804511043990.lrc","year_play":"0","grade":"-1","album_url":"http:\/\/www.xiami.com\/app\/iphone\/albuminfo?id=1680443259&uid=","artist_url":"http:\/\/www.xiami.com\/app\/iphone\/artistinfo?id=117874&uid=","isad":"0"}
里面的location即mp3下载地址。
14-07-19 添加虾米歌曲链接地址破解算法
php代码:
$id = '1772222342';//虾米音乐ID
$DataUrl = 'http://www.xiami.com/widget/xml-single/uid/0/sid/'.$id;//xml数据
$xml_array=simplexml_load_file($DataUrl); //将XML中的数据,读取到数组对象中
foreach($xml_array as $tmp){
$location = $tmp->location;
}
echo de_Location($location);
/*
虾米下载地址解码函数@de_Location
github项目:https://github.com/Flowerowl/xiami/blob/master/xiami.php
*/
function de_Location($location){
$loc_2 = (int)substr($location, 0, 1);
$loc_3 = substr($location, 1);
$loc_4 = floor(strlen($loc_3) / $loc_2);
$loc_5 = strlen($loc_3) % $loc_2;
$loc_6 = array();
$loc_7 = 0;
$loc_8 = '';
$loc_9 = '';
$loc_10 = '';
while ($loc_7 < $loc_5){
$loc_6[$loc_7] = substr($loc_3, ($loc_4+1)*$loc_7, $loc_4+1);
$loc_7++;
}
$loc_7 = $loc_5;
while($loc_7 < $loc_2){
$loc_6[$loc_7] = substr($loc_3, $loc_4 * ($loc_7 - $loc_5) + ($loc_4 + 1) * $loc_5, $loc_4);
$loc_7++;
}
$loc_7 = 0;
while ($loc_7 < strlen($loc_6[0])){
$loc_10 = 0;
while ($loc_10 < count($loc_6)){
$loc_8 .= isset($loc_6[$loc_10][$loc_7]) ? $loc_6[$loc_10][$loc_7] : null;
$loc_10++;
}
$loc_7++;
}
$loc_9 = str_replace('^', 0, urldecode($loc_8));
return $loc_9;
}
github:https://github.com/Flowerowl/xiami
参考:http://www.myhack58.com/Article/html/3/92/2013/38705.htm
MP3 TEST :
http: / / link.hhtjim.com/xiami/1772355885.mp3
作者:matrix
发布时间:2013-09-01
分类:Wordpress 兼容并蓄
修改TC_NGRO主题时发现提交评论没有Ctrl+Enter快捷回复,而现在的主题一般都有此功能 很实用。
在comments.php中找到类似代码
<p><textarea rows="5" cols="50" name="comment" class="textarea" id="comment"></textarea></p>
<p><input type="submit" value="<?php _e('提交评论/Ctrl+Enter'); ?>" id="submit" class="submit" /><?php comment_id_fields(); ?> </p>
要确保<textarea中的name、id的值与下面的js代码中的第2行处的值(此处为comment)对应一致。
<input中的 type、id的值下面的js代码中的第12行处的值(此处为submit)对应一致。
在</form>下行处添加js代码:
<script type="text/javascript">
document.getElementById("comment").onkeydown = function (moz_ev)
{
var ev = null;
if (window.event){
ev = window.event;
}else{
ev = moz_ev;
}
if (ev != null && ev.ctrlKey && ev.keyCode == 13)
{
document.getElementById("submit").click();
}
}
</script>