-
Notifications
You must be signed in to change notification settings - Fork 10
/
vip.js
134 lines (119 loc) · 3.18 KB
/
vip.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
$( document ).ready(function() {
const api_file_url = "https://raw.githubusercontent.com/iodefog/VipVideo/master/VipVideo/Helper/vlist.json";
const default_player_list = {
"list": [
{
"name": "1223-1",
"url": "http://v.d9y.net/vip/?url="
},
{
"name": "1223-2",
"url": "http://mimijiexi.top/?url="
},
{
"name": "1223-3",
"url": "http://55jx.top/?url="
},
{
"name": "1223-4",
"url": "http://playx.top/?url="
},
{
"name": "1223-5",
"url": "http://nitian9.com/?url="
},
{
"name": "1223-6",
"url": "http://19g.top/?url="
},
{
"name": "1223-7",
"url": "http://52088.online/?url="
},
{
"name": "5月-21",
"url": "http://jiexi.071811.cc/jx2.php?url="
},
{
"name": "9月-2",
"url": "http://jqaaa.com/jx.php?url="
},
{
"name": "5月-4",
"url": "http://beaacc.com/api.php?url="
}]
};
filterApis(default_player_list["list"]).then(createApiElements);
// fetchFromUrl(api_file_url).then(filterApis).then(createApiElements);
$("#use_default").click(function () {
filterApis(default_player_list["list"]).then(createApiElements);
});
$("#update").click(function () {
chrome.storage.sync.set({"vip-player-list": "undefined"}, function(){
fetchFromUrl(api_file_url).then(filterApis).then(createApiElements);
});
});
});
const fetchFromUrl = url => {
return new Promise((resolve, reject) => {
chrome.storage.sync.get({"vip-player-list": "undefined"}, function (ch_storage) {
apis = ch_storage["vip-player-list"]
// exists in db => do nothing
if (apis !== "undefined")
{
console.log('fetch from local db');
resolve(apis);
}
// not exist => fetch it
else
{
// createAutoClosingAlert('更新失败,请检查网络后再尝试')
// createAutoClosingAlert('更新成功,请点击确定');
console.log('fetch from remote site');
fetch(url).then((response) => {
// createAutoClosingAlert('更新成功,请点击确定');
$('#status').text("更新成功");
return response.json();
}).catch((response) => $('#status').text("更新失败,可能需要翻墙")).then(listjson => resolve(listjson['list']));
}
});
});
};
const save = apis => {
return new Promise((resolve) => {
chrome.storage.sync.set({"vip-player-list" : apis}, function () {
resolve(apis);
})
})
};
const createApiElements = apis => {
return new Promise(resolve => {
let ul = document.getElementsByTagName("ul")[0];
// remove childs
while (ul.firstChild) {
ul.removeChild(ul.firstChild);
}
for (let i in apis) {
let li = document.createElement("li");
ul.appendChild(li);
li.innerHTML = apis[i].name;
li.setAttribute("data-url", apis[i].url);
li.onclick = function() {
chrome.tabs.query({
active: true,
currentWindow: true
}, (tabs) => {
window.open(this.dataset.url + tabs[0].url);
});
};
}
save(apis).then(apis => resolve(apis));
});
};
const filterApis = out => {
return new Promise(resolve => {
let apis = out.filter(e => (typeof e['url'] === 'string') && !!e['url']);
apis = apis.slice(0, 10);
resolve(apis);
});
};