Skip to content

Commit 72275fd

Browse files
author
LiuLang
committed
project inited.
0 parents  commit 72275fd

31 files changed

+14835
-0
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
chinaz
2+
flvcd
3+
openCourse163
4+
sina
5+
6+
## others
7+
zhihu
8+
quora

LICENSE

Lines changed: 674 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
关于
2+
====
3+
一些常用的油㺅脚本, 主要用于下载音乐, 视频等.
4+
5+
这些脚本只解析出下载链接, 最终还是需要DownThemAll等下载工具. 视频的话也可以
6+
直接播放的, 比如我常用vlc来播放youku的视频, 效果还可以, 至少不会像adobe
7+
flash player那样把cpu拖到100%, 然后风扇使劲地转. vlc的播放效果很好.
8+
9+
10+
安装
11+
====
12+
1. 安装firefox.
13+
2. 安装greasemonkey扩展.
14+
3. 选择你需要的脚本, 比如youtube/, 找到里面的.user.js文件, 下载, 双击,
15+
应该就可以在firefox中打开, 它还会弹出一个提示框, 问你是否允许安装这个脚本,
16+
点允许就可以安装到greasemonkey脚本库了.
17+
4. 访问视频网站, 就可以在页面的右/左下角看到解析好的链接了. 如果需要批量下载
18+
这些视频的话, 我推荐使用DownThemAll这个firefox的扩展, 很方便.
19+
20+
21+
baidu_music
22+
===========
23+
用于下载music.baidu.com里的歌词, 一次能下载一页, 一页有50首, 可以用
24+
DownThemAll 来批量下载, 但问题是, 百度会限制下载量, 一个IP一天只能下载几百
25+
首的样子, 然后就会出错了.
26+
27+
这个脚本有一段时间不用了, 不晓得是否还有效.
28+
29+
30+
youku
31+
=====
32+
解析youku.com的, 这个常用, 我看dota视频时就用它.
33+
34+
它会同时生成一个m3u格式的播放列表, 用vlc打开这个播放列表就可以看啦, 很方便.
35+
36+
之前有朋友要求把它移植到opera, chromium里, 我改了一下, 另存为了
37+
youku-needjs.user.js, 但我没测试过.
38+
39+
40+
youtube
41+
=======
42+
这个也常用, 只能说, youtube太强了, 一般的视频提供了flv, mp4, 3gp, webm等多
43+
种格式, 还有从320p, 480p, 720p, 1080p等不同的分辨率, 相当牛X. 并且不管视频
44+
大小, 都只有一个文件, 不像国内的youku, iqiyi, pptv, cntv之流, 还要把视频切
45+
成n个小片段.
46+
47+
48+
LeTV
49+
====
50+
乐视的, 还行, 暑假用了好多次.
51+
52+
53+
PPS
54+
===
55+
pps的话, 好像还可以播放一些收费的视频, 因为它不像youku那样在服务端进行验证.
56+
这个一段时间没用了.
57+
58+
59+
iqiyi
60+
=====
61+
只想说, iqiyi整天没事儿变个什么劲啊. 它的解析方式这几个月变了好几次, 现在
62+
这个脚本已经不能工作, 我也不想再更新了.
63+
64+
kankan
65+
======
66+
迅雷看看已经可以使用了, 里面的动漫还挺多的, 清晰度很好, 视频也没有被切割成
67+
一段段的, 不需要合并了.
68+
69+
cntv
70+
====
71+
它也是分段的视频, 方式和优酷一样, 也可以得到一个播放列表,点开就能看了, 主要
72+
用它看一些纪录片, 还有[原来如此]这个节目, 暑假给看了一遍.
73+
74+
funshion
75+
========
76+
风行网的还可以吧, 但是视频下到一半有时候就没了速度, 暑假用它下了全套的[星球
77+
大战].
78+
79+
pptv
80+
====
81+
pptv的已经更新.
82+
83+
sohu
84+
====
85+
更新了, 为了看<生活大爆炸>. 支持三种清晰度.
86+
87+
netease
88+
=======
89+
这个能工作, 也可以用来下载公开课等.
90+
91+
92+
tudou
93+
=====
94+
也可以用了, 有些视频会直接重定向到youku.com, 使用youku的视频解析算法.
95+
96+
97+
其它
98+
===
99+
tudou, sina都没有多少有意思的视频, 也没有再更新过, 不能用了.

baidu_music/baidu_music.user.js

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
// ==UserScript==
2+
// @name BaiduMusicParser
3+
// @version 1.4
4+
// @description Parsing download link for music.baidu.com.
5+
// @license GPLv3
6+
// @author LiuLang
7+
8+
// @include http://music.baidu.com/*
9+
// @run-at document-end
10+
// @grant GM_xmlhttpRequest
11+
// ==/UserScript==
12+
13+
14+
/**
15+
* 1.4 2013.6.26
16+
* Update class name of <a>
17+
* Update song url.
18+
* 1.3 2013.3.23
19+
* No need to enable js on this page.
20+
* 1.2 2013.3.4
21+
* Baidu updated the music link.
22+
* Fix the reg exp check bug.
23+
* Update download link color.
24+
* 1.1 2013.2.27
25+
* Add local music source support.
26+
* 1.0 2013.2.27
27+
* Project inited.
28+
*/
29+
30+
var uw = unsafeWindow,
31+
log = uw.console.log,
32+
error = uw.console.error;
33+
34+
var bd_music = {
35+
36+
/**
37+
* addStyle()
38+
* 在<head>中加入一个新的<style>
39+
* v1.1
40+
* 2013.1.15
41+
* Replace innerText with innerHTML to cross-platform.
42+
* v1.0
43+
* 2012.2.16
44+
*/
45+
addStyle: function(str) {
46+
var style = uw.document.createElement('style');
47+
if (uw.document.head) {
48+
uw.document.head.appendChild(style);
49+
style.innerHTML = str;
50+
}
51+
},
52+
53+
/**
54+
* program starter.
55+
*/
56+
run: function() {
57+
this.addStyle('.downloadable {color: green !important;}' +
58+
'.undownloadable {color: #585858 !important;}');
59+
60+
// Create a information panel, to show the parsing process.
61+
var songs = uw.document.querySelectorAll('ul li span.song-title');
62+
var i = 0;
63+
var song = '';
64+
65+
log('songs:', songs);
66+
for (i = 0; i < songs.length; i += 1) {
67+
song = songs[i].querySelector('a');
68+
log('song:::', song);
69+
this.getLink(song);
70+
}
71+
},
72+
73+
74+
/**
75+
* Get the donwload link of the given url.
76+
* @param song element
77+
* - the <a> element of a song.
78+
*/
79+
getLink: function(song) {
80+
if (song.className === 'grayblack') {
81+
var urlSuf = '/download',
82+
id = song.href.split('#')[0],
83+
url = id + urlSuf;
84+
85+
song.classList.add('undownloadable');
86+
return false;
87+
GM_xmlhttpRequest({
88+
method: 'GET',
89+
url: url,
90+
onload: function(response) {
91+
var txt = response.responseText,
92+
mp3Reg = /"type":"song"\}'\s+href="([^"]+)"\s+class="/,
93+
match = mp3Reg.exec(txt);
94+
95+
//if (match && match.length === 2) {
96+
// song.href = match[1];
97+
// song.classList.add('downloadable');
98+
//} else {
99+
// song.classList.add('undownloadable');
100+
//}
101+
}
102+
});
103+
} else if (song.className === '') {
104+
var urlSuf = '/download';
105+
var url = song.href + urlSuf;
106+
log('url:', url);
107+
108+
GM_xmlhttpRequest({
109+
method: 'GET',
110+
url: url,
111+
onload: function(response) {
112+
var txt = response.responseText,
113+
mp3Reg = /href="([^"]+)"\s+id="128"/,
114+
match = mp3Reg.exec(txt);
115+
log('response:', response);
116+
log('match:', match);
117+
if (match != null && match.length === 2) {
118+
song.href = match[1];
119+
log('mp3 link:', match[1]);
120+
song.classList.add('downloadable');
121+
} else {
122+
song.classList.add('undownloadable');
123+
}
124+
}
125+
});
126+
} else {
127+
error('I do not know how to parse: ', song);
128+
}
129+
},
130+
131+
};
132+
133+
bd_music.run();

0 commit comments

Comments
 (0)