-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathbilibili.js
137 lines (122 loc) · 4.38 KB
/
bilibili.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
var website_name = 'Bilibili';
var website_name_zh_CN = '哔哩哔哩';
var website_description = '\
<p>Welcome to Bilibili!<p>\
<p>View the latest animes:</p>\
<p>\
<a href="plugin:bangumi-latest">New</a> \
<a href="plugin:bangumi-sun">Sun</a> \
<a href="plugin:bangumi-mon">Mon</a> \
<a href="plugin:bangumi-tue">Tue</a> \
<a href="plugin:bangumi-wed">Wed</a> \
<a href="plugin:bangumi-thu">Thu</a> \
<a href="plugin:bangumi-fri">Fri</a> \
<a href="plugin:bangumi-sat">Sat</a> \
</p>'
var website_description_zh_CN = '\
<p>哔哩哔哩 ~ 干杯!<p>\
<p>浏览最新番剧:</p>\
<p>\
<a href="plugin:bangumi-latest">最新</a> \
<a href="plugin:bangumi-sun">周日</a> \
<a href="plugin:bangumi-mon">周一</a> \
<a href="plugin:bangumi-tue">周二</a> \
<a href="plugin:bangumi-wed">周三</a> \
<a href="plugin:bangumi-thu">周四</a> \
<a href="plugin:bangumi-fri">周五</a> \
<a href="plugin:bangumi-sat">周六</a> \
</p>'
// Search
function search(key, page) {
// Show bangumi list
if (key.startsWith('plugin:')) {
explore(key);
return;
}
var url = 'http://app.bilibili.com/x/v2/search/type?pn=1&ps=20&type=1&build=10110100&keyword=' + key;
moonplayer.get_content(url, function(content) {
var items = JSON.parse(content).data.items;
var pr;
try {
if (items[0].cover.startsWith('//'))
pr = 'http:';
else
pr = '';
}
catch (e) {
pr = '';
}
var result = [];
for (var i in items)
result.push({title: items[i].title, url: convert_to_album_url(items[i].uri)});
moonplayer.show_result(result);
});
}
function convert_to_album_url(url) {
var season;
if (url.startsWith('bilibili://bangumi/season/'))
season = url.replace('bilibili://bangumi/season/', '');
else if (url.startsWith('/bangumi/i/'))
season = url.replace('/bangumi/i/', '');
else if (url.includes('/anime/'))
season = url.split('/anime/')[1];
else
return url;
season = season.replace(/\/$/, '');
return 'https://www.bilibili.com/bangumi/play/ss' + season;
}
// Bangumi list
var bangumi_list = null;
var latest_bangumis = [];
function explore(command) {
var day;
switch (command) {
case 'plugin:bangumi-latest': day = -1; break;
case 'plugin:bangumi-sun': day = 0; break;
case 'plugin:bangumi-mon': day = 1; break;
case 'plugin:bangumi-tue': day = 2; break;
case 'plugin:bangumi-wed': day = 3; break;
case 'plugin:bangumi-thu': day = 4; break;
case 'plugin:bangumi-fri': day = 5; break;
case 'plugin:bangumi-sat': day = 6; break;
default: moonplayer.warning('Unknown command.'); return;
}
if (bangumi_list !== null) {
// Show list
if (day === -1) {
moonplayer.show_result(latest_bangumis);
} else {
moonplayer.show_result(bangumi_list[day]);
}
} else {
// Init bangumi list
url = 'https://api.bilibili.com/pgc/web/timeline/v2?season_type=1';
moonplayer.get_content(url, function(content) {
var data = JSON.parse(content).result;
var weekdays = data.timeline;
var latest = data.latest;
bangumi_list = [[], [], [], [], [], [], []];
for (var i in weekdays) {
var episodes = weekdays[i].episodes;
for (var j in episodes) {
bangumi_list[i].push({
title: episodes[j].title,
url: 'https://www.bilibili.com/bangumi/play/ss' + episodes[j].season_id
});
}
}
for (var i in latest) {
latest_bangumis.push({
title: latest[i].title,
url: 'https://www.bilibili.com/bangumi/play/ss' + latest[i].season_id
});
}
// Show list
if (day === -1) {
moonplayer.show_result(latest_bangumis);
} else {
moonplayer.show_result(bangumi_list[day]);
}
});
}
}