diff --git a/kunyu77.js b/kunyu77.js deleted file mode 100644 index 1c3b1fb5..00000000 --- a/kunyu77.js +++ /dev/null @@ -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 -} \ No newline at end of file