最近打算做播放器,研究了下解析lrc歌词的算法,百度基本没有现成的,所以自己各种搜索各种折腾然后写了个~~~特分享给大家

我们看到的lrc歌词一般都是这样的:

[ti:听妈妈的话]
[ar:周杰伦]
[al:]
[by:] 
04:20.3103:36.6502:13.3501:30.4300:31.01[00:00.00]  
[00:03.00]听妈妈的话 - 周杰伦  
[00:06.00]词:周杰伦 曲:周杰伦  
[00:10.33]小朋友 你是否有很多问号  
[00:12.70]为什麼 别人在那看漫画  
[00:15.25]我却在学画画 对着钢琴说话  
[00:17.84]别人在玩游戏 我却靠在墙壁背我的ABC  
[00:21.00]我说我要一台大大的飞机  
[00:23.59]但却得到一台旧旧录音机  
[00:26.31]为什麼要听妈妈的话  
[00:28.24]长大后你就会开始懂了这段话  
03:16.67长大后我开始明白  
03:18.65为什么我跑得比别人快  
03:20.49飞得比别人高  
03:21.45将来大家看的都是我画的漫画  
03:24.00大家唱的都是我写的歌  
03:26.91妈妈的辛苦不让你看见  
03:29.46温暖的食谱在她心里面  
03:32.07有空就多多握握她的手  
03:34.65把手牵着一起梦游  
03:37.0402:14.35听妈妈的话 别让她受伤  
03:47.5102:24.62想快快长大 才能保护她  
02:34.99美丽的白发 幸福中发芽  
04:08.20[01:22.71]天使的魔法 温暖中慈祥  
[01:32.43]在你的未来 音乐是你的王牌  
[01:34.95]拿王牌谈个恋爱 唉!我不想把你教坏  
[01:37.98]还是听妈妈的话吧 晚点再恋爱吧  
[01:40.83]我知道你未来的路 当妈比我更清楚  
[01:43.76]你会开始学其他同学在书包写东写西  
[01:46.28]但我建议你最好写妈妈我会用功读书  
[01:48.79]用功读书 怎么会从我嘴巴说出  
[01:51.46]不想你输 所以要叫你用功读书  
[01:53.48]妈妈织给你的毛衣 你要好好的收着  
[01:55.99]因为母亲节到时我要告诉她我还留着  
[01:58.57]对了 我会遇到周润发  
[02:00.45]所以你可以跟同学炫耀赌神未来是你爸爸  
[02:03.63]我找不到童年写的情书  
[02:05.55]你写完不要送人  
[02:06.91]因为过两天你会在操场上捡到  
[02:09.18]你会开始喜欢上流行歌  
[02:11.35]因为张学友开始准备唱吻别  
[03:58.07]美丽的白发 幸福总发芽 

可以看到,歌词是由时间标签和歌词本身构成的,至于那些歌曲信息这些我就忽略了

大概思路是:

  1. 按行把歌词拆成数组
  2. 遍历这个数组,将每一行的歌词和时间标签一道转换为数组

遍历数组的每一次循环要干的事情:

  1. 用正则匹配出这行的时间标签和对应的歌词
  2. 以时间标签为单位,将标签转换为以秒为单位的时间再与该行对应的歌词一同push入数组
  3. 由于多时间标签的存在顺序会打乱,所以我们最后还要将保存歌词和时间的数组按时间从小到大排序

js代码如下:

阅读全文 »

其实原理很简单,把原来的数*100然后取整再除以100就是保留两位小数了~备忘一下

var _t = Math.round((min * 60 + sec)*100)/100;

最近正在研究百度音乐的API,上网搜了下,不外乎就是直接抓网页或者是已经用烂的的widget的API:

http://box.zhangmen.baidu.com/x?op=12&count=1&title=大约在冬季$$齐秦$$$$ 

这东东输出的是一堆xml,而且结果也就那么四五条,觉得不实用,所以我打算研究下别的

用fiddler2抓了下网页版的百度音乐盒。。尼玛一堆的gif,css,js什么的,找不到什么有价值的url

后来我下了百度音乐电脑版的客户端,搜索一下音乐。。结果发现搜索界面也特么是html。。。不爽ing

想了许久,我看着桌上的手机,灵机一动~~诶,抓百度音乐的手机版会不会更方便些呢,手机为了省流量的话发出去的请求应该会少很多,也比较好找

说干就干,于是我下了百度音乐的安卓客户端,然后连接WiFi,把电脑的ip设成代理服务器,于是fiddler2上便出现了手机发出的http请求

果然,收获还是大大滴~~~

其实就是一个网址:

http://tingapi.ting.baidu.com/v1/restserver/ting

它全部都是用get请求实现的,后面加不同参数可以实现不同的功能,下面把我抓到的一一介绍(仅供学习交流,请勿用于商业用途):

阅读全文 »

php菜鸟状态下山寨的插件。。。。不喜勿喷⊙▽⊙

前几天逛博客的时候看着Wordpress可以插个挺漂亮的h5播放器进文章。。感觉十分不爽,Typecho似乎并没有这种功能,在网上找了好久都没发现Typecho的html5播放器插件,只找到了Flash的。。

Flash对手机平板这些东西支持不好,所以我寻思着看看能不能弄个用Html5的audio标签来放音乐的插件出来

作为一只专业的菜鸟,能力有限,只会一些简单的php代码,所以我决定拿Flash播放器的插件把它改成Html5的,至于界面,不想那么麻烦,直接上浏览器自带的controls

这东西是基于羽中的AudioPlayer改造而成的,所以使用方法和他的一样,如果启用了他的AudioPlayer插件的话可能会有冲突,注意一下

<s>演示~~</s>实在是太简陋了所以不演示了

欢迎使用我新开发的功能更完善的插件 APlayer Plugin For Typecho

阅读全文 »

签到助手的介绍页面建好之后,我把网页都放在了www.izgq.net的sign目录下,但是这样的网址 http://www.izgq.net/sign 看起来好难看,所以我便打算看看能不能把域名绑到子目录上。。

翻了一遍服务器的控制面板都没发现子目录绑定这种东西。。百度了n久,终于找到利用.htaccess文件把域名绑定子目录的方法,这里是把qiandao.izgq.net绑定到sign目录下,其他情况的把域名和目录名换掉就好了

.htaccess文件是Apache服务器的配置文件,它可以针对每个目录改变配置,也就是说在一个文件夹里面放了.htaccess的话,它和它的所有子目录都会按这个文件里面的内容来配置,其他的不会影响,可能有些主机不支持.htaccess,不过我这个支持哈哈哈哈

那怎么把域名绑到子目录呢。

首先,先把要绑定的域名绑到空间上,这里就不多说了

新建一个文本文件,粘贴下方代码

RewriteEngine on
RewriteCond %{HTTP_HOST} ^qiandao.izgq.net$
RewriteCond %{REQUEST_URI} !^/sign/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /sign/$1
RewriteCond %{HTTP_HOST} ^qiandao.izgq.net$
RewriteRule ^(/)?$ sign/index.php [L]

保存之后,上传到服务器的根目录,然后重命名为.htaccess就ok了