mirror of https://github.com/gaotianliuyun/gao
parent
e5a826b337
commit
426da0eb51
@ -1,226 +0,0 @@ |
||||
import './dayjs.min.js' |
||||
import './uri.min.js'; |
||||
import './crypto-js.js' |
||||
import _ from './underscore-esm-min.js' |
||||
|
||||
let key = 'kunyu77'; |
||||
let url = 'http://api.kunyu77.com'; |
||||
let agent = 'Dalvik/2.1.0 (Linux; U; Android 6.0; ZTE BA520 Build/MRA58K)'; |
||||
let deviceId = ''; |
||||
let timeOffset = 0; |
||||
|
||||
var charStr = 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789'; |
||||
|
||||
function randIndex(min, max, i) { |
||||
let index = Math.floor(Math.random() * (max - min + 1) + min), |
||||
numStart = charStr.length - 10; |
||||
if (i == 0 && index >= numStart) { |
||||
index = randIndex(min, max, i); |
||||
} |
||||
return index; |
||||
} |
||||
|
||||
function randomStr(len) { |
||||
let min = 0, max = charStr.length - 1, _str = ''; |
||||
len = len || 15; |
||||
for (var i = 0, index; i < len; i++) { |
||||
index = randIndex(min, max, i); |
||||
_str += charStr[index]; |
||||
} |
||||
return _str; |
||||
} |
||||
|
||||
function request(reqUrl) { |
||||
let sj = dayjs().unix() - timeOffset; |
||||
let uri = new Uri(reqUrl); |
||||
uri.addQueryParam() |
||||
uri.addQueryParam('pcode', '010110004') |
||||
uri.addQueryParam('version', '2.0.4') |
||||
uri.addQueryParam('devid', deviceId) |
||||
uri.addQueryParam('package', 'com.sevenVideo.app.android') |
||||
uri.addQueryParam('sys', 'android') |
||||
uri.addQueryParam('sysver', '6.0') |
||||
uri.addQueryParam('brand', 'ZTE') |
||||
uri.addQueryParam('model', 'ZTE_BA520') |
||||
uri.addQueryParam('sj', sj); |
||||
let keys = []; |
||||
for (var i = 0; i < uri.queryPairs.length; i++) { |
||||
keys.push(uri.queryPairs[i][0]); |
||||
} |
||||
keys = _.sortBy(keys, function (name) { return name }) |
||||
let tkSrc = uri.path(); |
||||
for (let k of keys) { |
||||
tkSrc += uri.getQueryParamValue(k); |
||||
} |
||||
tkSrc += sj; |
||||
tkSrc += 'XSpeUFjJ'; |
||||
console.log(tkSrc); |
||||
let tk = CryptoJS.MD5(tkSrc).toString().toLowerCase(); |
||||
console.log(tk); |
||||
let header = { |
||||
'user-agent': agent, |
||||
't': sj, |
||||
'TK': tk, |
||||
}; |
||||
let res = req(uri.toString(), { |
||||
headers: header |
||||
}); |
||||
|
||||
let serverTime = res.headers.Date; |
||||
let content = res.content; |
||||
let serverTimeS = dayjs(serverTime).unix(); |
||||
timeOffset = dayjs().unix() - serverTimeS; |
||||
// console.log(content);
|
||||
return content; |
||||
} |
||||
|
||||
function init(ext) { |
||||
var device = local.get(key, 'device'); |
||||
if (device.length == 0) { |
||||
device = randomStr(32).toLowerCase(); |
||||
local.set(key, 'device', device); |
||||
} |
||||
deviceId = device; |
||||
console.log(dayjs().unix()); |
||||
} |
||||
|
||||
function home(filter) { |
||||
let data = JSON.parse(request(url + '/api.php/provide/filter')).data; |
||||
let classes = []; |
||||
for (const key in data) { |
||||
classes.push({ |
||||
'type_id': key, |
||||
'type_name': data[key][0].cat |
||||
}); |
||||
} |
||||
console.log(classes); |
||||
return JSON.stringify({ |
||||
'class': classes |
||||
}); |
||||
} |
||||
|
||||
function homeVod(params) { |
||||
let data = JSON.parse(request(url + '/api.php/provide/homeBlock?type_id=0')).data; |
||||
let blocks = data.blocks; |
||||
let videos = []; |
||||
for (const block of blocks) { |
||||
let name = block.block_name; |
||||
if (name.indexOf('热播') >= 0) |
||||
continue; |
||||
let contents = block.contents; |
||||
for (const content of contents) { |
||||
videos.push({ |
||||
'vod_id': content.id, |
||||
'vod_name': content.title, |
||||
'vod_pic': content.videoCover, |
||||
'vod_remarks': content.msg, |
||||
}) |
||||
} |
||||
} |
||||
return JSON.stringify({ |
||||
'list': videos |
||||
}); |
||||
} |
||||
|
||||
function category(tid, pg, filter, extend) { |
||||
let data = JSON.parse(request(url + '/api.php/provide/searchFilter?type_id=' + tid + '&pagenum=' + pg + '&pagesize=24')).data; |
||||
let videos = [] |
||||
for (const vod of data.result) { |
||||
videos.push({ |
||||
'vod_id': vod.id, |
||||
'vod_name': vod.title, |
||||
'vod_pic': vod.videoCover, |
||||
'vod_remarks': vod.msg, |
||||
}); |
||||
} |
||||
return JSON.stringify({ |
||||
'page': parseInt(data.page), |
||||
'pagecount': data.pagesize, |
||||
'limit': 24, |
||||
'total': data.total, |
||||
'list': videos, |
||||
}); |
||||
} |
||||
|
||||
function detail(id) { |
||||
let data = JSON.parse(request(url + '/api.php/provide/videoDetail?ids=' + id)).data; |
||||
let vod = { |
||||
'vod_id': data.id, |
||||
'vod_name': data.videoName, |
||||
'vod_pic': data.videoCover, |
||||
'type_name': data.subCategory, |
||||
'vod_year': data.year, |
||||
'vod_area': data.area, |
||||
'vod_remarks': data.msg, |
||||
'vod_actor': data.actor, |
||||
'vod_director': data.director, |
||||
'vod_content': data.brief.trim(), |
||||
} |
||||
let episodes = JSON.parse(request(url + '/api.php/provide/videoPlaylist?ids=' + id)).data.episodes; |
||||
let playlist = {}; |
||||
for (const episode of episodes) { |
||||
let playurls = episode.playurls; |
||||
for (const playurl of playurls) { |
||||
let from = playurl.playfrom; |
||||
if (!playlist.hasOwnProperty(from)) { |
||||
playlist[from] = [] |
||||
} |
||||
playlist[from].push(playurl.title.trim() + '$' + playurl.playurl); |
||||
} |
||||
} |
||||
vod.vod_play_from = _.keys(playlist).join('$$$'); |
||||
let urls = _.values(playlist) |
||||
let vod_play_url = [] |
||||
for (const urlist of urls) { |
||||
vod_play_url.push(urlist.join('#')) |
||||
} |
||||
vod.vod_play_url = vod_play_url.join('$$$') |
||||
return JSON.stringify({ |
||||
'list': [vod] |
||||
}); |
||||
} |
||||
|
||||
function play(flag, id, flags) { |
||||
let data = JSON.parse(request(url + '/api.php/provide/parserUrl?url=' + id)).data; |
||||
let playHeader = data.playHeader; |
||||
let jxUrl = data.url; |
||||
let jxData = JSON.parse(request(jxUrl)); |
||||
if (flags.indexOf(flag) >= 0) { |
||||
return JSON.stringify({ |
||||
'parse': 1, |
||||
'jx': 1, |
||||
'url': id |
||||
}); |
||||
} else { |
||||
return JSON.stringify({ |
||||
'parse': 0, |
||||
'url': id |
||||
}); |
||||
} |
||||
} |
||||
|
||||
function search(wd, quick) { |
||||
let data = JSON.parse(request(url + '/api.php/provide/searchVideo?searchName=' + wd)).data; |
||||
let videos = []; |
||||
for (const vod of data) { |
||||
videos.push({ |
||||
'vod_id': vod.id, |
||||
'vod_name': vod.videoName, |
||||
'vod_pic': vod.videoCover, |
||||
'vod_remarks': vod.msg, |
||||
}) |
||||
} |
||||
return JSON.stringify({ |
||||
'list': videos |
||||
}); |
||||
} |
||||
|
||||
__JS_SPIDER__ = { |
||||
init: init, |
||||
home: home, |
||||
homeVod: homeVod, |
||||
category: category, |
||||
detail: detail, |
||||
play: play, |
||||
search: search |
||||
} |
||||
Loading…
Reference in new issue