efront 3.34.0 → 3.34.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/kugou/icons/qqjt.ico +0 -0
- package/apps/kugou/icons/yyyy.ico +0 -0
- package/apps/kugou/index.html +1 -0
- package/apps/kugou/search/search.js +27 -9
- package/coms/basic/parseURL.js +2 -2
- package/coms/basic/parseURL_test.js +1 -0
- package/coms/basic/seek.js +42 -4
- package/coms/kugou/api.js +17 -3
- package/coms/kugou/krc.js +75 -33
- package/coms/kugou/musicList.js +5 -1
- package/coms/kugou/player.html +3 -3
- package/coms/kugou/player.js +36 -2
- package/coms/kugou/qqjc.js +172 -0
- package/coms/kugou/song.js +3 -4
- package/coms/kugou/song.less +6 -0
- package/coms/kugou/yyyc.js +535 -0
- package/coms/third-party/crypto.js +6166 -0
- package/coms/third-party//344/273/243/347/240/201/346/235/245/346/272/220.txt +1 -0
- package/coms/zimoli/data.js +7 -4
- package/package.json +1 -1
- package/public/efront.js +1 -1
|
Binary file
|
|
Binary file
|
package/apps/kugou/index.html
CHANGED
|
@@ -40,12 +40,12 @@ function main(params, from) {
|
|
|
40
40
|
if (!resultMap[id]) resultMap[id] = Object.assign([], { singer: singerName, song: songName });
|
|
41
41
|
resultMap[id].push(info);
|
|
42
42
|
},
|
|
43
|
-
async requestSearch(type, id, params, mp, timeout) {
|
|
44
|
-
var res = await data.
|
|
43
|
+
async requestSearch(type, id, params, mp, timeout, parse) {
|
|
44
|
+
var res = await data.lazyInstance(id, params, timeout, parse);
|
|
45
45
|
if (mp !== this.resultMap) return;
|
|
46
46
|
res.forEach(a => a.type = type);
|
|
47
47
|
res.forEach(this.addResult, this);
|
|
48
|
-
this.result = Object.keys(this.resultMap).map(k => this.resultMap[k]);
|
|
48
|
+
this.result = Object.keys(this.resultMap).map(k => this.resultMap[k]).sort((a, b) => b.length - a.length);
|
|
49
49
|
for (var r of this.result) r.sort((a, b) => a.priced - b.priced);
|
|
50
50
|
return res;
|
|
51
51
|
},
|
|
@@ -56,15 +56,33 @@ function main(params, from) {
|
|
|
56
56
|
this.searched = keyword;
|
|
57
57
|
this.resultMap = Object.create(null);
|
|
58
58
|
this.result = [];
|
|
59
|
-
|
|
60
|
-
var
|
|
61
|
-
state({ keyword });
|
|
62
|
-
s1.then(function (s1) {
|
|
59
|
+
if (!keyword) return;
|
|
60
|
+
var s1 = this.requestSearch("kugo", 'search', { keyword }, this.resultMap, timeout, function (s1) {
|
|
63
61
|
s1.forEach(a => {
|
|
64
62
|
a.priced = a.privilege === 10 && (a.price_sq > 0);
|
|
65
63
|
});
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
return s1;
|
|
65
|
+
});
|
|
66
|
+
var s2 = this.requestSearch("kuwo", "search-kuwo", { key: keyword }, this.resultMap, timeout);
|
|
67
|
+
var s3 = this.requestSearch("yyyy", "search-yyyy", yyyc.encode({ hlposttag: "</span>", hlposttag: `<span class="s-fc7">`, limit: 30, offset: 0, s: keyword, total: true, type: 1 }), this.resultMap, timeout, function (s3) {
|
|
68
|
+
s3.forEach(a => {
|
|
69
|
+
a.priced = a.fee === 1;
|
|
70
|
+
a.singername = a.ar.map(a => {
|
|
71
|
+
if (a.name === "." || isEmpty(a.name)) return a.alia.join("、");
|
|
72
|
+
return a.name;
|
|
73
|
+
}).join("、");
|
|
74
|
+
});
|
|
75
|
+
return s3;
|
|
76
|
+
});
|
|
77
|
+
var p4 = {
|
|
78
|
+
word: keyword,
|
|
79
|
+
type: 1,
|
|
80
|
+
// pageSize: 20,
|
|
81
|
+
};
|
|
82
|
+
qqjc(p4);
|
|
83
|
+
var s4 = this.requestSearch("qqjt", "search-qqjt", p4, this.resultMap, timeout);
|
|
84
|
+
state({ keyword });
|
|
85
|
+
await Promise.all([s1, s2, s3, s4]);
|
|
68
86
|
|
|
69
87
|
},
|
|
70
88
|
confirm() {
|
package/coms/basic/parseURL.js
CHANGED
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
// │ href │
|
|
18
18
|
// └────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
19
19
|
|
|
20
|
-
// -------/// ---------------1---------------------------------///////////////////2-----3--------//////// ------4----2/////5---------------------------------------------------6
|
|
21
|
-
var reg = /^([^\:\/\\\?#\[]+\:(?![^\:\/\\\?\#]*@|[\/\\][^\/\\]))?(?:\/\/|\\\\)?(?:(([^\:\/\\\?#]+)?(?:\:([^\/\\\?#]+))?)@)?(([^\/\\@\?\#\.]*?[^\/\\@\:\?\#\.\d][^\/\\@\:\?\#\.]*?|[^\/\\@\:\?\#\.]+(?:\:[
|
|
20
|
+
// -------/// ---------------1---------------------------------///////////////////2-----3--------//////// ------4----2/////5---------------------------------------------------6------------------------------------------------------------------------------------//////////////-7--5///8-------9----------//10--11---10/8/--12----////
|
|
21
|
+
var reg = /^([^\:\/\\\?#\[]+\:(?![^\:\/\\\?\#]*@|[\/\\][^\/\\]))?(?:\/\/|\\\\)?(?:(([^\:\/\\\?#]+)?(?:\:([^\/\\\?#]+))?)@)?(([^\/\\@\?\#\.]*?[^\/\\@\:\?\#\.\d][^\/\\@\:\?\#\.]*?|[^\/\\@\:\?\#\.]+(?:\:[^\@\/\\\?#\.]*[^\d\@\:\/\\\?#\.]+|(?:\.[^\/\\@\:\?\#\.]+)+))?(?:(?:\:|^)(\d+))?)(((?:\/|\\|^)[^\?#]*)?(\?([^#]*))?)(#[\s\S]*)?$/;
|
|
22
22
|
var hrefDescriptor = {
|
|
23
23
|
get() {
|
|
24
24
|
var href = '';
|
|
@@ -50,6 +50,7 @@ test("./cluster-opt.html", "pathname", "./cluster-opt.html")
|
|
|
50
50
|
test(":cluster-opt.html", "pathname", ":cluster-opt.html")
|
|
51
51
|
test("d:/cluster-opt.html", "pathname", "d:/cluster-opt.html")
|
|
52
52
|
test("d:\\cluster-opt.html", "pathname", "d:\\cluster-opt.html")
|
|
53
|
+
test("d:\\work\\cluster-opt.html", "pathname", "d:\\work\\cluster-opt.html")
|
|
53
54
|
test("ftp:\\\\cluster-opt.html", "host", "cluster-opt.html")
|
|
54
55
|
test("\\\\cluster-opt.html", "host", "cluster-opt.html")
|
|
55
56
|
test("https://a:b@測試?abc#foo", "host", "測試")
|
package/coms/basic/seek.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
class join {
|
|
2
|
+
constructor(t) {
|
|
3
|
+
this.text = t;
|
|
4
|
+
}
|
|
5
|
+
}
|
|
1
6
|
var seek = function (object, seeker) {
|
|
2
7
|
if (seeker === null || seeker === undefined || isEmpty(object)) return;
|
|
3
8
|
if (seeker instanceof Function) {
|
|
@@ -6,15 +11,48 @@ var seek = function (object, seeker) {
|
|
|
6
11
|
if (typeof seeker === "string") {
|
|
7
12
|
if (/^(['"`])[\s\S]*$/i.test(seeker)) return seeker.replace(/^(['"`])([\s\S*])\1?$/, "$2");
|
|
8
13
|
if (seeker === '' || seeker === ".") return object;
|
|
9
|
-
|
|
14
|
+
var s = [];
|
|
15
|
+
s.unshift(seeker.replace(/[\.]([^\.\[]*)|\[([^\]]*)\]|\<([^\>]*)\>/g, (a, b, c, d) => {
|
|
16
|
+
if (b) s.push(b);
|
|
17
|
+
else if (d) {
|
|
18
|
+
s.push(new join(c));
|
|
19
|
+
}
|
|
20
|
+
else if (c) {
|
|
21
|
+
s.push(c || '0');
|
|
22
|
+
}
|
|
23
|
+
return '';
|
|
24
|
+
}));
|
|
25
|
+
seeker = s;
|
|
10
26
|
}
|
|
11
27
|
if (seeker instanceof Array) {
|
|
12
28
|
if (!seeker.length) return;
|
|
13
|
-
for (var cx = 0, dx = seeker.length; cx < dx; cx++) {
|
|
29
|
+
loop: for (var cx = 0, dx = seeker.length; cx < dx; cx++) {
|
|
14
30
|
var key = seeker[cx];
|
|
15
31
|
if (typeof key === "string") {
|
|
16
|
-
|
|
17
|
-
|
|
32
|
+
if (/[\^]/.test(key)) {
|
|
33
|
+
key = key.split(/[\^]/);
|
|
34
|
+
for (var k of key) {
|
|
35
|
+
if (k in object) {
|
|
36
|
+
object = object[k];
|
|
37
|
+
continue loop;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
object = undefined;
|
|
41
|
+
} else {
|
|
42
|
+
object = object[key];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (key instanceof join) {
|
|
46
|
+
if (object instanceof Array) {
|
|
47
|
+
var restk = seeker.slice(cx + 1, dx);
|
|
48
|
+
object = object.map(a => seek(a, restk)).join(key.text);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
object = '';
|
|
52
|
+
}
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
18
56
|
object = seek(object, key);
|
|
19
57
|
}
|
|
20
58
|
if (object === undefined || object === null) return;
|
package/coms/kugou/api.js
CHANGED
|
@@ -32,7 +32,21 @@
|
|
|
32
32
|
"play-url;mid=rid": "get:data music/playUrl?type=music",
|
|
33
33
|
},
|
|
34
34
|
|
|
35
|
-
"http://
|
|
36
|
-
"kuwo-lrc;rid": "get:data
|
|
35
|
+
"http://m.kuwo.cn/newh5/": {
|
|
36
|
+
"kuwo-lrc;musicId=rid": "get:data.lrclist singles/songinfoandlrc",
|
|
37
|
+
},
|
|
38
|
+
"https://music.163.com/weapi/": {
|
|
39
|
+
"search-yyyy": "form:result.songs cloudsearch/get/web#songname=name&avatar=al.picUrl",
|
|
40
|
+
"yyyy-url": "form:data[0] song/enhance/player/url/v1#encode=type",
|
|
41
|
+
"yyyy-lrc": "form:lrc.lyric song/lyric",
|
|
42
|
+
"yyyy-info": "form:lrc.lyric v3/song/detail",
|
|
43
|
+
},
|
|
44
|
+
"http://lyrics.kugou.com/": {
|
|
45
|
+
"search-krc;keyword=songName&duration=time&hash": "get:candidates[0] search?ver=1&man=yes&client=pc",
|
|
46
|
+
"download-krc;accesskey&id": "get:content download?ver=1&client=pc&fmt=krc&charset=utf8"
|
|
47
|
+
},
|
|
48
|
+
"https://music.91q.com/": {// 千千静听/百度音乐
|
|
49
|
+
"search-qqjt;word": "get:data.typeTrack v1/search#songname=title&singername=artist<、>.name&avatar=pic&priced=isVip",
|
|
50
|
+
"qqjt-url?TSID": "get:data v1/song/tracklink#url=path"
|
|
37
51
|
}
|
|
38
|
-
})
|
|
52
|
+
})
|
package/coms/kugou/krc.js
CHANGED
|
@@ -2,34 +2,87 @@ var secret = [64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 1
|
|
|
2
2
|
var isTrident = /Trident/i.test(navigator.userAgent);
|
|
3
3
|
function krc(list = div()) {
|
|
4
4
|
care(list, function (info) {
|
|
5
|
-
console.log(info)
|
|
6
5
|
if (info.type !== "kugo") {
|
|
7
6
|
remove(list.children);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
cross("get", `http://lyrics.kugou.com/search?ver=1&man=yes&client=pc&keyword=${info.songName}&duration=${info.time}&hash=${info.hash}`).done(function (response) {
|
|
11
|
-
if (!response.response) return;
|
|
12
|
-
var liric = JSON.parse(response.response);
|
|
13
|
-
var info = liric.candidates[0];
|
|
14
|
-
if (!info) return;
|
|
15
|
-
var url = `http://lyrics.kugou.com/download?ver=1&client=pc&id=${info.id}&accesskey=${info.accesskey}&fmt=krc&charset=utf8`;
|
|
16
|
-
info && cross("get", url).done(function (response) {
|
|
17
|
-
if (!response.response) return;
|
|
18
|
-
var krc = JSON.parse(response.responseText || response.response);
|
|
19
|
-
var content = fromBase64(krc.content);
|
|
20
|
-
content = content.slice(4).map((a, i) => a ^ secret[i % 16]);
|
|
21
|
-
var bufff = thirdParty$inflate(content.slice(2));
|
|
22
|
-
var krc = decodeUTF8(bufff);
|
|
23
|
-
remove(list.children);
|
|
24
|
-
var children = createKRC(krc);
|
|
7
|
+
if (info.lrc) {
|
|
8
|
+
var children = createLRC(info.lrc);
|
|
25
9
|
appendChild(list, children);
|
|
26
10
|
list.process = children.process;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
11
|
+
}
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
var content = info.krc.slice(4).map((a, i) => a ^ secret[i % 16]);
|
|
15
|
+
var bufff = thirdParty$inflate(content.slice(2));
|
|
16
|
+
var krc = decodeUTF8(bufff);
|
|
17
|
+
remove(list.children);
|
|
18
|
+
var children = createKRC(krc);
|
|
19
|
+
appendChild(list, children);
|
|
20
|
+
list.process = children.process;
|
|
30
21
|
})
|
|
31
22
|
return list;
|
|
32
23
|
}
|
|
24
|
+
function createLRC(lrc) {
|
|
25
|
+
var saved_rows = [];
|
|
26
|
+
for (var row of lrc.split(/[\r\n]+/)) {
|
|
27
|
+
var data = /^\s*\[(.*?)\](.*?)$/.exec(row);
|
|
28
|
+
if (!data) {
|
|
29
|
+
if (!isProduction) console.info("%c未解析%c", "color:#c28", "color:#333", row, data);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
var [, time, words] = data;
|
|
33
|
+
var startTime = 0;
|
|
34
|
+
var times = time.split(":");
|
|
35
|
+
while (times.length) {
|
|
36
|
+
startTime = startTime * 60 + +times.shift();
|
|
37
|
+
}
|
|
38
|
+
saveToOrderedArray(saved_rows, {
|
|
39
|
+
value: startTime,
|
|
40
|
+
startTime,
|
|
41
|
+
text: words
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
var krcList = saved_rows.map(a => {
|
|
45
|
+
var r = document.createElement('div');
|
|
46
|
+
text(r, a.text);
|
|
47
|
+
return r;
|
|
48
|
+
});
|
|
49
|
+
var savedIndex = 0;
|
|
50
|
+
krcList.process = function (offset, length) {
|
|
51
|
+
var index = getIndexFromOrderedArray(saved_rows, offset);
|
|
52
|
+
var current_row = saved_rows[index];
|
|
53
|
+
if (current_row) {
|
|
54
|
+
var ele = krcList[index];
|
|
55
|
+
var firstChild = krcList[0];
|
|
56
|
+
if (index > 0) {
|
|
57
|
+
if (index !== savedIndex) {
|
|
58
|
+
savedIndex = index;
|
|
59
|
+
setClass(krcList, index);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (ele && firstChild && firstChild.isMounted) {
|
|
63
|
+
var marginTop = (firstChild.parentNode.offsetHeight - ele.offsetHeight >> 1) - ele.offsetTop + firstChild.offsetTop;
|
|
64
|
+
css(firstChild, `margin-top:${marginTop | 0}px;`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
return krcList;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function setClass(krcList, index) {
|
|
72
|
+
var ele = krcList[index];
|
|
73
|
+
krcList.slice(0, index).map(function (a, cx, arr) {
|
|
74
|
+
removeClass(a, "active after after-active before-active");
|
|
75
|
+
addClass(a, "before");
|
|
76
|
+
});
|
|
77
|
+
removeClass(ele, "after before after-active before-active");
|
|
78
|
+
addClass(krcList[index - 1], 'before-active');
|
|
79
|
+
addClass(ele, "active");
|
|
80
|
+
krcList.slice(index + 1).map(function (a) {
|
|
81
|
+
removeClass(a, "before active after-active before-active");
|
|
82
|
+
addClass(a, "after");
|
|
83
|
+
});
|
|
84
|
+
if (index + 2 < krcList.length) addClass(krcList[index + 1], 'after-active');
|
|
85
|
+
}
|
|
33
86
|
function createKRC(krc) {
|
|
34
87
|
var saved_rows = [];
|
|
35
88
|
krc.split(/[\r\n]+/).map(function (row) {
|
|
@@ -77,18 +130,7 @@ function createKRC(krc) {
|
|
|
77
130
|
var marginTop = (firstChild.parentNode.offsetHeight - ele.offsetHeight >> 1) - ele.offsetTop + firstChild.offsetTop;
|
|
78
131
|
if (index > 0) {
|
|
79
132
|
if (markerLabel.parentNode !== ele) {
|
|
80
|
-
krcList
|
|
81
|
-
removeClass(a, "active after after-active before-active");
|
|
82
|
-
addClass(a, "before");
|
|
83
|
-
});
|
|
84
|
-
removeClass(ele, "after before after-active before-active");
|
|
85
|
-
addClass(krcList[index - 1], 'before-active');
|
|
86
|
-
addClass(ele, "active");
|
|
87
|
-
krcList.slice(index + 1).map(function (a) {
|
|
88
|
-
removeClass(a, "before active after-active before-active");
|
|
89
|
-
addClass(a, "after");
|
|
90
|
-
});
|
|
91
|
-
if (index + 2 < krcList.length) addClass(krcList[index + 1], 'after-active');
|
|
133
|
+
setClass(krcList, index);
|
|
92
134
|
ele.insertBefore(markerLabel, ele.firstChild);
|
|
93
135
|
}
|
|
94
136
|
var word_ele = ele.children[current_row_index + 1];
|
package/coms/kugou/musicList.js
CHANGED
|
@@ -5,7 +5,11 @@ musicList.forEach(function (music) {
|
|
|
5
5
|
});
|
|
6
6
|
|
|
7
7
|
var isSameSong = function (m1, m2) {
|
|
8
|
-
return m1 === m2 ||
|
|
8
|
+
return m1 === m2 ||
|
|
9
|
+
m1.hash && m1.hash === m2.hash || // 酷狗
|
|
10
|
+
m1.id && m1.id === m2.id || // 网易云 千千静听
|
|
11
|
+
m1.rid && m1.rid === m2.rid || // 酷我
|
|
12
|
+
m1.mid && m1.mid === m2.mid; // 酷我
|
|
9
13
|
};
|
|
10
14
|
|
|
11
15
|
function addMethod(name, func) {
|
package/coms/kugou/player.html
CHANGED
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
<span ng-bind="totalTime"></span>
|
|
12
12
|
</div>
|
|
13
13
|
<div class="song">
|
|
14
|
-
<span class="name" ng-bind=
|
|
15
|
-
<span class="spliter" ng-if="
|
|
16
|
-
<span class="singer" ng-bind=
|
|
14
|
+
<span class="name" ng-bind=songName></span>
|
|
15
|
+
<span class="spliter" ng-if="songName&&singerName"> - </span>
|
|
16
|
+
<span class="singer" ng-bind=singerName></span>
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
19
19
|
<btn class="prev" ng-click=play(index-1)></btn>
|
package/coms/kugou/player.js
CHANGED
|
@@ -4,10 +4,35 @@ var playModes = kugou$playModes;
|
|
|
4
4
|
var playModeData = data.getInstance("play-mode");
|
|
5
5
|
var playList = kugou$playList();
|
|
6
6
|
var patchMusicInfo = async function (info) {
|
|
7
|
-
var res = null;
|
|
7
|
+
var res = null, krc;
|
|
8
8
|
switch (info.type) {
|
|
9
|
+
case "qqjt":
|
|
10
|
+
info.lrc = (await cross("get", info.lyric)).response;
|
|
11
|
+
console.log(info)
|
|
12
|
+
res = await data.from("qqjt-url", qqjc({
|
|
13
|
+
TSID: info.id
|
|
14
|
+
}))
|
|
15
|
+
break;
|
|
16
|
+
case "yyyy":
|
|
17
|
+
res = await data.from("yyyy-url", yyyc.encode({
|
|
18
|
+
ids: JSON.stringify([info.id]),
|
|
19
|
+
csrf_token: '',
|
|
20
|
+
level: "standard",
|
|
21
|
+
encodeType: "aac"
|
|
22
|
+
}));
|
|
23
|
+
info.lrc = await data.from('yyyy-lrc', yyyc.encode({
|
|
24
|
+
id: info.id,
|
|
25
|
+
lv: 0,
|
|
26
|
+
// tv: 0,
|
|
27
|
+
}));
|
|
28
|
+
info.singerName = info.singername;
|
|
29
|
+
info.songName = info.songname;
|
|
30
|
+
break;
|
|
9
31
|
case "kuwo":
|
|
10
32
|
res = await data.from("play-url", info);
|
|
33
|
+
info.lrc = await data.from("kuwo-lrc", info, function (lrc) {
|
|
34
|
+
return lrc.map(l => `[${l.time}]${l.lineLyric}`).join('\r\n');
|
|
35
|
+
});
|
|
11
36
|
info.avatar = info.pic;
|
|
12
37
|
info.singerName = info.singername;
|
|
13
38
|
info.songName = info.songname;
|
|
@@ -15,6 +40,9 @@ var patchMusicInfo = async function (info) {
|
|
|
15
40
|
case "kugo":
|
|
16
41
|
default:
|
|
17
42
|
res = await data.from("song-info", info);
|
|
43
|
+
krc = await data.from("search-krc", res);
|
|
44
|
+
krc = await data.from("download-krc", krc);
|
|
45
|
+
info.krc = fromBase64(krc);
|
|
18
46
|
if (res.fail_process === 12) res.priced = true;
|
|
19
47
|
if (res.imgUrl) {
|
|
20
48
|
res.avatar = res.imgUrl.replace(/\{size\}/ig, 200);
|
|
@@ -109,6 +137,12 @@ var $scope = {
|
|
|
109
137
|
canvas: kugou$dance,
|
|
110
138
|
activeList: playList,
|
|
111
139
|
index: 0,
|
|
140
|
+
get songName() {
|
|
141
|
+
return this.info.singername || this.info.singerName;
|
|
142
|
+
},
|
|
143
|
+
get singerName() {
|
|
144
|
+
return this.info.songname || this.info.songName;
|
|
145
|
+
},
|
|
112
146
|
update() {
|
|
113
147
|
if (touching) return;
|
|
114
148
|
let _audio = $scope.audio;
|
|
@@ -293,7 +327,7 @@ var $scope = {
|
|
|
293
327
|
};
|
|
294
328
|
delete playState.error;
|
|
295
329
|
if (ns.wake) ns.enable();
|
|
296
|
-
_audio.src = hasContext ? cross.getCrossUrl(response.url) : response.url;
|
|
330
|
+
_audio.src = hasContext && music.type === "kugo" ? cross.getCrossUrl(response.url) : response.url;
|
|
297
331
|
_audio.play();
|
|
298
332
|
data.setInstance('musicList', distlist, true);
|
|
299
333
|
render.refresh();
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
var md5 = function () {
|
|
2
|
+
var ERROR = "input is invalid type"
|
|
3
|
+
var HEX_CHARS = "0123456789abcdef".split("");
|
|
4
|
+
var EXTRA = [128, 32768, 8388608, -2147483648],
|
|
5
|
+
SHIFT = [0, 8, 16, 24],
|
|
6
|
+
OUTPUT_TYPES = ["hex", "array", "digest", "buffer", "arrayBuffer", "base64"],
|
|
7
|
+
BASE64_ENCODE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),
|
|
8
|
+
blocks = [], buffer8;
|
|
9
|
+
var createOutputMethod = function (e) {
|
|
10
|
+
return function (t) {
|
|
11
|
+
return new Md5(!0).update(t)[e]()
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function Md5(e) {
|
|
15
|
+
if (e)
|
|
16
|
+
blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0,
|
|
17
|
+
this.blocks = blocks,
|
|
18
|
+
this.buffer8 = buffer8;
|
|
19
|
+
else
|
|
20
|
+
this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
|
|
21
|
+
this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0,
|
|
22
|
+
this.finalized = this.hashed = !1,
|
|
23
|
+
this.first = !0
|
|
24
|
+
}
|
|
25
|
+
Md5.prototype.update = function (e) {
|
|
26
|
+
if (!this.finalized) {
|
|
27
|
+
var t, n = typeof e;
|
|
28
|
+
if ("string" != n) {
|
|
29
|
+
if ("object" != n)
|
|
30
|
+
throw ERROR;
|
|
31
|
+
if (null === e)
|
|
32
|
+
throw ERROR;
|
|
33
|
+
else if (!Array.isArray(e))
|
|
34
|
+
throw ERROR;
|
|
35
|
+
t = !0
|
|
36
|
+
}
|
|
37
|
+
for (var r, i, s = 0, o = e.length, a = this.blocks, l = this.buffer8; s < o;) {
|
|
38
|
+
if (this.hashed && (this.hashed = !1,
|
|
39
|
+
a[0] = a[16],
|
|
40
|
+
a[16] = a[1] = a[2] = a[3] = a[4] = a[5] = a[6] = a[7] = a[8] = a[9] = a[10] = a[11] = a[12] = a[13] = a[14] = a[15] = 0),
|
|
41
|
+
t)
|
|
42
|
+
for (i = this.start; s < o && i < 64; ++s)
|
|
43
|
+
a[i >> 2] |= e[s] << SHIFT[3 & i++];
|
|
44
|
+
else
|
|
45
|
+
for (i = this.start; s < o && i < 64; ++s)
|
|
46
|
+
(r = e.charCodeAt(s)) < 128 ? a[i >> 2] |= r << SHIFT[3 & i++] : (r < 2048 ? a[i >> 2] |= (192 | r >> 6) << SHIFT[3 & i++] : (r < 55296 || 57344 <= r ? a[i >> 2] |= (224 | r >> 12) << SHIFT[3 & i++] : (r = 65536 + ((1023 & r) << 10 | 1023 & e.charCodeAt(++s)),
|
|
47
|
+
a[i >> 2] |= (240 | r >> 18) << SHIFT[3 & i++],
|
|
48
|
+
a[i >> 2] |= (128 | r >> 12 & 63) << SHIFT[3 & i++]),
|
|
49
|
+
a[i >> 2] |= (128 | r >> 6 & 63) << SHIFT[3 & i++]),
|
|
50
|
+
a[i >> 2] |= (128 | 63 & r) << SHIFT[3 & i++]);
|
|
51
|
+
this.lastByteIndex = i,
|
|
52
|
+
this.bytes += i - this.start,
|
|
53
|
+
64 <= i ? (this.start = i - 64,
|
|
54
|
+
this.hash(),
|
|
55
|
+
this.hashed = !0) : this.start = i
|
|
56
|
+
}
|
|
57
|
+
return 4294967295 < this.bytes && (this.hBytes += this.bytes / 4294967296 << 0,
|
|
58
|
+
this.bytes = this.bytes % 4294967296),
|
|
59
|
+
this
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
Md5.prototype.finalize = function () {
|
|
64
|
+
if (!this.finalized) {
|
|
65
|
+
this.finalized = !0;
|
|
66
|
+
var e = this.blocks
|
|
67
|
+
, t = this.lastByteIndex;
|
|
68
|
+
e[t >> 2] |= EXTRA[3 & t],
|
|
69
|
+
56 <= t && (this.hashed || this.hash(),
|
|
70
|
+
e[0] = e[16],
|
|
71
|
+
e[16] = e[1] = e[2] = e[3] = e[4] = e[5] = e[6] = e[7] = e[8] = e[9] = e[10] = e[11] = e[12] = e[13] = e[14] = e[15] = 0),
|
|
72
|
+
e[14] = this.bytes << 3,
|
|
73
|
+
e[15] = this.hBytes << 3 | this.bytes >>> 29,
|
|
74
|
+
this.hash()
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
Md5.prototype.hash = function () {
|
|
79
|
+
var e, t, n, r, i, s, o = this.blocks;
|
|
80
|
+
t = this.first ? ((t = ((e = ((e = o[0] - 680876937) << 7 | e >>> 25) - 271733879 << 0) ^ (n = ((n = (-271733879 ^ (r = ((r = (-1732584194 ^ 2004318071 & e) + o[1] - 117830708) << 12 | r >>> 20) + e << 0) & (-271733879 ^ e)) + o[2] - 1126478375) << 17 | n >>> 15) + r << 0) & (r ^ e)) + o[3] - 1316259209) << 22 | t >>> 10) + n << 0 : (e = this.h0,
|
|
81
|
+
t = this.h1,
|
|
82
|
+
n = this.h2,
|
|
83
|
+
((t += ((e = ((e += ((r = this.h3) ^ t & (n ^ r)) + o[0] - 680876936) << 7 | e >>> 25) + t << 0) ^ (n = ((n += (t ^ (r = ((r += (n ^ e & (t ^ n)) + o[1] - 389564586) << 12 | r >>> 20) + e << 0) & (e ^ t)) + o[2] + 606105819) << 17 | n >>> 15) + r << 0) & (r ^ e)) + o[3] - 1044525330) << 22 | t >>> 10) + n << 0),
|
|
84
|
+
t = ((t += ((e = ((e += (r ^ t & (n ^ r)) + o[4] - 176418897) << 7 | e >>> 25) + t << 0) ^ (n = ((n += (t ^ (r = ((r += (n ^ e & (t ^ n)) + o[5] + 1200080426) << 12 | r >>> 20) + e << 0) & (e ^ t)) + o[6] - 1473231341) << 17 | n >>> 15) + r << 0) & (r ^ e)) + o[7] - 45705983) << 22 | t >>> 10) + n << 0,
|
|
85
|
+
t = ((t += ((e = ((e += (r ^ t & (n ^ r)) + o[8] + 1770035416) << 7 | e >>> 25) + t << 0) ^ (n = ((n += (t ^ (r = ((r += (n ^ e & (t ^ n)) + o[9] - 1958414417) << 12 | r >>> 20) + e << 0) & (e ^ t)) + o[10] - 42063) << 17 | n >>> 15) + r << 0) & (r ^ e)) + o[11] - 1990404162) << 22 | t >>> 10) + n << 0,
|
|
86
|
+
t = ((t += ((e = ((e += (r ^ t & (n ^ r)) + o[12] + 1804603682) << 7 | e >>> 25) + t << 0) ^ (n = ((n += (t ^ (r = ((r += (n ^ e & (t ^ n)) + o[13] - 40341101) << 12 | r >>> 20) + e << 0) & (e ^ t)) + o[14] - 1502002290) << 17 | n >>> 15) + r << 0) & (r ^ e)) + o[15] + 1236535329) << 22 | t >>> 10) + n << 0,
|
|
87
|
+
t = ((t += ((r = ((r += (t ^ n & ((e = ((e += (n ^ r & (t ^ n)) + o[1] - 165796510) << 5 | e >>> 27) + t << 0) ^ t)) + o[6] - 1069501632) << 9 | r >>> 23) + e << 0) ^ e & ((n = ((n += (e ^ t & (r ^ e)) + o[11] + 643717713) << 14 | n >>> 18) + r << 0) ^ r)) + o[0] - 373897302) << 20 | t >>> 12) + n << 0,
|
|
88
|
+
t = ((t += ((r = ((r += (t ^ n & ((e = ((e += (n ^ r & (t ^ n)) + o[5] - 701558691) << 5 | e >>> 27) + t << 0) ^ t)) + o[10] + 38016083) << 9 | r >>> 23) + e << 0) ^ e & ((n = ((n += (e ^ t & (r ^ e)) + o[15] - 660478335) << 14 | n >>> 18) + r << 0) ^ r)) + o[4] - 405537848) << 20 | t >>> 12) + n << 0,
|
|
89
|
+
t = ((t += ((r = ((r += (t ^ n & ((e = ((e += (n ^ r & (t ^ n)) + o[9] + 568446438) << 5 | e >>> 27) + t << 0) ^ t)) + o[14] - 1019803690) << 9 | r >>> 23) + e << 0) ^ e & ((n = ((n += (e ^ t & (r ^ e)) + o[3] - 187363961) << 14 | n >>> 18) + r << 0) ^ r)) + o[8] + 1163531501) << 20 | t >>> 12) + n << 0,
|
|
90
|
+
t = ((t += ((r = ((r += (t ^ n & ((e = ((e += (n ^ r & (t ^ n)) + o[13] - 1444681467) << 5 | e >>> 27) + t << 0) ^ t)) + o[2] - 51403784) << 9 | r >>> 23) + e << 0) ^ e & ((n = ((n += (e ^ t & (r ^ e)) + o[7] + 1735328473) << 14 | n >>> 18) + r << 0) ^ r)) + o[12] - 1926607734) << 20 | t >>> 12) + n << 0,
|
|
91
|
+
t = ((t += ((s = (r = ((r += ((i = t ^ n) ^ (e = ((e += (i ^ r) + o[5] - 378558) << 4 | e >>> 28) + t << 0)) + o[8] - 2022574463) << 11 | r >>> 21) + e << 0) ^ e) ^ (n = ((n += (s ^ t) + o[11] + 1839030562) << 16 | n >>> 16) + r << 0)) + o[14] - 35309556) << 23 | t >>> 9) + n << 0,
|
|
92
|
+
t = ((t += ((s = (r = ((r += ((i = t ^ n) ^ (e = ((e += (i ^ r) + o[1] - 1530992060) << 4 | e >>> 28) + t << 0)) + o[4] + 1272893353) << 11 | r >>> 21) + e << 0) ^ e) ^ (n = ((n += (s ^ t) + o[7] - 155497632) << 16 | n >>> 16) + r << 0)) + o[10] - 1094730640) << 23 | t >>> 9) + n << 0,
|
|
93
|
+
t = ((t += ((s = (r = ((r += ((i = t ^ n) ^ (e = ((e += (i ^ r) + o[13] + 681279174) << 4 | e >>> 28) + t << 0)) + o[0] - 358537222) << 11 | r >>> 21) + e << 0) ^ e) ^ (n = ((n += (s ^ t) + o[3] - 722521979) << 16 | n >>> 16) + r << 0)) + o[6] + 76029189) << 23 | t >>> 9) + n << 0,
|
|
94
|
+
t = ((t += ((s = (r = ((r += ((i = t ^ n) ^ (e = ((e += (i ^ r) + o[9] - 640364487) << 4 | e >>> 28) + t << 0)) + o[12] - 421815835) << 11 | r >>> 21) + e << 0) ^ e) ^ (n = ((n += (s ^ t) + o[15] + 530742520) << 16 | n >>> 16) + r << 0)) + o[2] - 995338651) << 23 | t >>> 9) + n << 0,
|
|
95
|
+
t = ((t += ((r = ((r += (t ^ ((e = ((e += (n ^ (t | ~r)) + o[0] - 198630844) << 6 | e >>> 26) + t << 0) | ~n)) + o[7] + 1126891415) << 10 | r >>> 22) + e << 0) ^ ((n = ((n += (e ^ (r | ~t)) + o[14] - 1416354905) << 15 | n >>> 17) + r << 0) | ~e)) + o[5] - 57434055) << 21 | t >>> 11) + n << 0,
|
|
96
|
+
t = ((t += ((r = ((r += (t ^ ((e = ((e += (n ^ (t | ~r)) + o[12] + 1700485571) << 6 | e >>> 26) + t << 0) | ~n)) + o[3] - 1894986606) << 10 | r >>> 22) + e << 0) ^ ((n = ((n += (e ^ (r | ~t)) + o[10] - 1051523) << 15 | n >>> 17) + r << 0) | ~e)) + o[1] - 2054922799) << 21 | t >>> 11) + n << 0,
|
|
97
|
+
t = ((t += ((r = ((r += (t ^ ((e = ((e += (n ^ (t | ~r)) + o[8] + 1873313359) << 6 | e >>> 26) + t << 0) | ~n)) + o[15] - 30611744) << 10 | r >>> 22) + e << 0) ^ ((n = ((n += (e ^ (r | ~t)) + o[6] - 1560198380) << 15 | n >>> 17) + r << 0) | ~e)) + o[13] + 1309151649) << 21 | t >>> 11) + n << 0,
|
|
98
|
+
t = ((t += ((r = ((r += (t ^ ((e = ((e += (n ^ (t | ~r)) + o[4] - 145523070) << 6 | e >>> 26) + t << 0) | ~n)) + o[11] - 1120210379) << 10 | r >>> 22) + e << 0) ^ ((n = ((n += (e ^ (r | ~t)) + o[2] + 718787259) << 15 | n >>> 17) + r << 0) | ~e)) + o[9] - 343485551) << 21 | t >>> 11) + n << 0,
|
|
99
|
+
this.first ? (this.h0 = e + 1732584193 << 0,
|
|
100
|
+
this.h1 = t - 271733879 << 0,
|
|
101
|
+
this.h2 = n - 1732584194 << 0,
|
|
102
|
+
this.h3 = r + 271733878 << 0,
|
|
103
|
+
this.first = !1) : (this.h0 = this.h0 + e << 0,
|
|
104
|
+
this.h1 = this.h1 + t << 0,
|
|
105
|
+
this.h2 = this.h2 + n << 0,
|
|
106
|
+
this.h3 = this.h3 + r << 0)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
Md5.prototype.hex = function () {
|
|
110
|
+
this.finalize();
|
|
111
|
+
var e = this.h0
|
|
112
|
+
, t = this.h1
|
|
113
|
+
, n = this.h2
|
|
114
|
+
, r = this.h3;
|
|
115
|
+
return HEX_CHARS[e >> 4 & 15] + HEX_CHARS[15 & e] + HEX_CHARS[e >> 12 & 15] + HEX_CHARS[e >> 8 & 15] + HEX_CHARS[e >> 20 & 15] + HEX_CHARS[e >> 16 & 15] + HEX_CHARS[e >> 28 & 15] + HEX_CHARS[e >> 24 & 15] + HEX_CHARS[t >> 4 & 15] + HEX_CHARS[15 & t] + HEX_CHARS[t >> 12 & 15] + HEX_CHARS[t >> 8 & 15] + HEX_CHARS[t >> 20 & 15] + HEX_CHARS[t >> 16 & 15] + HEX_CHARS[t >> 28 & 15] + HEX_CHARS[t >> 24 & 15] + HEX_CHARS[n >> 4 & 15] + HEX_CHARS[15 & n] + HEX_CHARS[n >> 12 & 15] + HEX_CHARS[n >> 8 & 15] + HEX_CHARS[n >> 20 & 15] + HEX_CHARS[n >> 16 & 15] + HEX_CHARS[n >> 28 & 15] + HEX_CHARS[n >> 24 & 15] + HEX_CHARS[r >> 4 & 15] + HEX_CHARS[15 & r] + HEX_CHARS[r >> 12 & 15] + HEX_CHARS[r >> 8 & 15] + HEX_CHARS[r >> 20 & 15] + HEX_CHARS[r >> 16 & 15] + HEX_CHARS[r >> 28 & 15] + HEX_CHARS[r >> 24 & 15]
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
Md5.prototype.toString = Md5.prototype.hex,
|
|
119
|
+
Md5.prototype.digest = function () {
|
|
120
|
+
this.finalize();
|
|
121
|
+
var e = this.h0
|
|
122
|
+
, t = this.h1
|
|
123
|
+
, n = this.h2
|
|
124
|
+
, r = this.h3;
|
|
125
|
+
return [255 & e, e >> 8 & 255, e >> 16 & 255, e >> 24 & 255, 255 & t, t >> 8 & 255, t >> 16 & 255, t >> 24 & 255, 255 & n, n >> 8 & 255, n >> 16 & 255, n >> 24 & 255, 255 & r, r >> 8 & 255, r >> 16 & 255, r >> 24 & 255]
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
Md5.prototype.array = Md5.prototype.digest
|
|
129
|
+
Md5.prototype.arrayBuffer = function () {
|
|
130
|
+
this.finalize();
|
|
131
|
+
var e = new ArrayBuffer(16)
|
|
132
|
+
, t = new Uint32Array(e);
|
|
133
|
+
return t[0] = this.h0,
|
|
134
|
+
t[1] = this.h1,
|
|
135
|
+
t[2] = this.h2,
|
|
136
|
+
t[3] = this.h3,
|
|
137
|
+
e
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
Md5.prototype.buffer = Md5.prototype.arrayBuffer
|
|
141
|
+
Md5.prototype.base64 = function () {
|
|
142
|
+
for (var e, t, n, r = "", i = this.array(), s = 0; s < 15;)
|
|
143
|
+
e = i[s++],
|
|
144
|
+
t = i[s++],
|
|
145
|
+
n = i[s++],
|
|
146
|
+
r += BASE64_ENCODE_CHAR[e >>> 2] + BASE64_ENCODE_CHAR[63 & (e << 4 | t >>> 4)] + BASE64_ENCODE_CHAR[63 & (t << 2 | n >>> 6)] + BASE64_ENCODE_CHAR[63 & n];
|
|
147
|
+
return e = i[s],
|
|
148
|
+
r + (BASE64_ENCODE_CHAR[e >>> 2] + BASE64_ENCODE_CHAR[e << 4 & 63] + "==")
|
|
149
|
+
};
|
|
150
|
+
return createOutputMethod("hex");
|
|
151
|
+
}();
|
|
152
|
+
var secret = "0b50b02fd0d73a9c4c8c3a781c30845f";
|
|
153
|
+
function createSign(e) {
|
|
154
|
+
if ("[object Object]" !== Object.prototype.toString.call(e))
|
|
155
|
+
throw new Error("The parameter of query must be a Object.");
|
|
156
|
+
var t = Math.floor(Date.now() / 1e3);
|
|
157
|
+
extend(e, {
|
|
158
|
+
timestamp: t,
|
|
159
|
+
appid: 16073360
|
|
160
|
+
});
|
|
161
|
+
var n = Object.keys(e);
|
|
162
|
+
n.sort();
|
|
163
|
+
for (var r = "", i = 0; i < n.length; i++) {
|
|
164
|
+
var s = n[i];
|
|
165
|
+
r += (0 == i ? "" : "&") + s + "=" + e[s]
|
|
166
|
+
}
|
|
167
|
+
return extend(e, {
|
|
168
|
+
sign: md5(r += secret),
|
|
169
|
+
timestamp: t,
|
|
170
|
+
})
|
|
171
|
+
}
|
|
172
|
+
return createSign;
|
package/coms/kugou/song.js
CHANGED
|
@@ -34,14 +34,13 @@ function main(elem) {
|
|
|
34
34
|
songName = songName.replace(/^[\s\S]*?\s*\-\s*/, '');
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
$scope.song = {
|
|
38
|
-
|
|
39
|
-
imgurl: item.imgurl,
|
|
37
|
+
$scope.song = extendIfNeeded(Object.create(item), {
|
|
38
|
+
imgurl: item.imgurl || item.avatar,
|
|
40
39
|
singer: singerName,
|
|
41
40
|
items: item instanceof Array ? item : null,
|
|
42
41
|
songMarked: mark(songName, elem.mark),
|
|
43
42
|
singerMarked: mark(singerName, elem.mark)
|
|
44
|
-
};
|
|
43
|
+
});
|
|
45
44
|
if ($scope.song.items) {
|
|
46
45
|
attr(elem, 'group', true);
|
|
47
46
|
}
|
package/coms/kugou/song.less
CHANGED