From e37e7eb9633a6f9b9128245647736dcb5c71354e Mon Sep 17 00:00:00 2001 From: hjdhnx Date: Fri, 2 Dec 2022 14:36:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=93=94=E5=93=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/version.txt | 2 +- ...24\345\223\251\345\275\261\350\247\206.js" | 21 ++++++-- ...24\345\223\251\344\272\214\347\272\247.js" | 50 +++++++++++++++++++ ...24\345\223\251\345\205\215\345\227\205.js" | 37 ++++++++++++++ ...24\345\223\251\346\220\234\347\264\242.js" | 34 +++++++++++++ readme.md | 1 + 6 files changed, 141 insertions(+), 4 deletions(-) create mode 100644 "py/\345\223\224\345\223\251\344\272\214\347\272\247.js" create mode 100644 "py/\345\223\224\345\223\251\345\205\215\345\227\205.js" create mode 100644 "py/\345\223\224\345\223\251\346\220\234\347\264\242.js" diff --git a/js/version.txt b/js/version.txt index 8d1c886..bbbc67a 100644 --- a/js/version.txt +++ b/js/version.txt @@ -1 +1 @@ -3.9.28beta1 \ No newline at end of file +3.9.28beta2 \ No newline at end of file diff --git "a/js/\345\223\224\345\223\251\345\275\261\350\247\206.js" "b/js/\345\223\224\345\223\251\345\275\261\350\247\206.js" index ed74ae6..2d3a639 100644 --- "a/js/\345\223\224\345\223\251\345\275\261\350\247\206.js" +++ "b/js/\345\223\224\345\223\251\345\275\261\350\247\206.js" @@ -5,7 +5,7 @@ var rule = { detailUrl:'/pgc/view/web/season?season_id=fyid', filter_url:'fl={{fl}}', vmid获取教程:'登录后访问https://api.bilibili.com/x/web-interface/nav,搜索mid就是,cookie需要 bili_jct,DedeUserID,SESSDATA参数', - searchUrl:'/index.php?m=vod-search#wd=**&search=;post', + searchUrl:'/x/web-interface/search/type?keyword=**&search_type=', searchable:1, filterable:1, quickSearch:0, @@ -26,6 +26,21 @@ var rule = { 推荐:'js:let d=[];function get_result(url){let videos=[];let html=request(url);let jo=JSON.parse(html);if(jo["code"]===0){let vodList=jo.result?jo.result.list:jo.data.list;vodList.forEach(function(vod){let aid=(vod["season_id"]+"").trim();let title=vod["title"].trim();let img=vod["cover"].trim();let remark=vod.new_ep?vod["new_ep"]["index_show"]:vod["index_show"];videos.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})})}return videos}function get_rank(tid,pg){return get_result("https://api.bilibili.com/pgc/web/rank/list?season_type="+tid+"&pagesize=20&page="+pg+"&day=3")}function get_rank2(tid,pg){return get_result("https://api.bilibili.com/pgc/season/rank/web/list?season_type="+tid+"&pagesize=20&page="+pg+"&day=3")}function home_video(){let videos=get_rank(1).slice(0,5);[4,2,5,3,7].forEach(function(i){videos=videos.concat(get_rank2(i).slice(0,5))});return videos}VODS=home_video();', 一级:'', 一级:'js:let d=[];let vmid=input.split("vmid=")[1].split("&")[0];function get_result(url){let videos=[];let html=request(url);let jo=JSON.parse(html);if(jo["code"]===0){let vodList=jo.result?jo.result.list:jo.data.list;vodList.forEach(function(vod){let aid=(vod["season_id"]+"").trim();let title=vod["title"].trim();let img=vod["cover"].trim();let remark=vod.new_ep?vod["new_ep"]["index_show"]:vod["index_show"];videos.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})})}return videos}function get_rank(tid,pg){return get_result("https://api.bilibili.com/pgc/web/rank/list?season_type="+tid+"&pagesize=20&page="+pg+"&day=3")}function get_rank2(tid,pg){return get_result("https://api.bilibili.com/pgc/season/rank/web/list?season_type="+tid+"&pagesize=20&page="+pg+"&day=3")}function get_zhui(pg,mode){let url="https://api.bilibili.com/x/space/bangumi/follow/list?type="+mode+"&follow_status=0&pn="+pg+"&ps=10&vmid="+vmid;return get_result(url)}function get_all(tid,pg,order,season_status){let url="https://api.bilibili.com/pgc/season/index/result?order="+order+"&pagesize=20&type=1&season_type="+tid+"&page="+pg+"&season_status="+season_status;return get_result(url)}function get_timeline(tid,pg){let videos=[];let url="https://api.bilibili.com/pgc/web/timeline/v2?season_type="+tid+"&day_before=2&day_after=4";let html=request(url);let jo=JSON.parse(html);if(jo["code"]===0){let videos1=[];let vodList=jo.result.latest;vodList.forEach(function(vod){let aid=(vod["season_id"]+"").trim();let title=vod["title"].trim();let img=vod["cover"].trim();let remark=vod["pub_index"]+" "+vod["follows"].replace("系列","");videos1.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})});let videos2=[];for(let i=0;i<7;i++){let vodList=jo["result"]["timeline"][i]["episodes"];vodList.forEach(function(vod){if(vod["published"]+""==="0"){let aid=(vod["season_id"]+"").trim();let title=vod["title"].trim();let img=vod["cover"].trim();let date=vod["pub_ts"];let remark=date+" "+vod["pub_index"];videos2.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})}})}videos=videos2.concat(videos1)}return videos}function cate_filter(d,cookie){if(MY_CATE==="1"){return get_rank(MY_CATE,MY_PAGE)}else if(["2","3","4","5","7"].includes(MY_CATE)){return get_rank2(MY_CATE,MY_PAGE)}else if(MY_CATE==="全部"){let tid=MY_FL.tid||"1";let order=MY_FL.order||"2";let season_status=MY_FL.season_status||"-1";return get_all(tid,MY_PAGE,order,season_status)}else if(MY_CATE==="追番"){return get_zhui(MY_PAGE,1)}else if(MY_CATE==="追剧"){return get_zhui(MY_PAGE,2)}else if(MY_CATE==="时间表"){let tid=MY_FL.tid||"1";return get_timeline(tid,MY_PAGE)}else{return[]}}VODS=cate_filter();', - 二级:{is_json:true,title:".result.title;.result.share_sub_title","img":".result.cover","desc":".result.new_ep.desc;.result.publish.pub_time;.result.subtitle","content":".result.evaluate","tabs":"js:pdfa=jsp.pdfa;TABS=['B站']","lists":".episodes"}, - 搜索:'ul.tbox_m li;*;*;*;*', + 二级:{ + is_json:true, + title:".result.title;.result.share_sub_title", + img:".result.cover", + desc:".result.new_ep.desc;.result.publish.pub_time;.result.subtitle", + content:".result.evaluate", + tabs:"js:pdfa=jsp.pdfa;TABS=['B站']", + lists:".result.episodes", + list_text:'title', + list_url:'cid', + }, + 二级:'', + 二级:'js:function zh(num){let p="";if(Number(num)>1e8){p=(num/1e8).toFixed(2)+"亿"}else if(Number(num)>1e4){p=(num/1e4).toFixed(2)+"万"}else{p=num}return p}let html=request(input);let jo=JSON.parse(html).result;let id=jo["season_id"];let title=jo["title"];let pic=jo["cover"];let areas=jo["areas"][0]["name"];let typeName=jo["share_sub_title"];let date=jo["publish"]["pub_time"].substr(0,4);let dec=jo["evaluate"];let remark=jo["new_ep"]["desc"];let stat=jo["stat"];let status="弹幕: "+zh(stat["danmakus"])+" 点赞: "+zh(stat["likes"])+" 投币: "+zh(stat["coins"])+" 追番追剧: "+zh(stat["favorites"]);let score=jo.hasOwnProperty("rating")?"评分: "+jo["rating"]["score"]+" "+jo["subtitle"]:"暂无评分"+" "+jo["subtitle"];let vod={vod_id:id,vod_name:title,vod_pic:pic,type_name:typeName,vod_year:date,vod_area:areas,vod_remarks:remark,vod_actor:status,vod_director:score,vod_content:dec};let ja=jo["episodes"];let playurls=[];ja.forEach(function(tmpJo){let eid=tmpJo["id"];let cid=tmpJo["cid"];let part=tmpJo["title"].replace("#","-")+" "+tmpJo["long_title"];playurls.push(part+"$"+eid+"_"+cid)});let playUrl=playurls.join("#");vod["vod_play_from"]="B站";vod["vod_play_url"]=playUrl;VOD=vod;', + 搜索:'', + 搜索:'js:let url1=input+"media_bangumi";let url2=input+"media_ft";let html=request(url1);let msg=JSON.parse(html).message;if(msg!=="0"){VODS=[{vod_name:KEY+"➢"+msg,vod_id:"no_data",vod_remarks:"别点,缺少bili_cookie",vod_pic:"https://ghproxy.com/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}]}else{let jo1=JSON.parse(html).data;html=request(url2);let jo2=JSON.parse(html).data;let videos=[];let vodList=[];if(jo1["numResults"]===0){vodList=jo2["result"]}else if(jo2["numResults"]===0){vodList=jo1["result"]}else{vodList=jo1["result"].concat(jo2["result"])}vodList.forEach(function(vod){let aid=(vod["season_id"]+"").trim();let title=KEY+"➢"+vod["title"].trim().replace(\'\',"").replace("","");let img=vod["cover"].trim();let remark=vod["index_show"];videos.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})});VODS=videos}', + lazy:'', + lazy:'js:let ids=input.split("_");let result={};let url="https://api.bilibili.com/pgc/player/web/playurl?qn=116&ep_id="+ids[0]+"&cid="+ids[1];let html=request(url);let jRoot=JSON.parse(html);if(jRoot["message"]!=="success"){print("需要大会员权限才能观看");input=""}else{let jo=jRoot["result"];let ja=jo["durl"];let maxSize=-1;let position=-1;ja.forEach(function(tmpJo,i){if(maxSize0){if(position===-1){position=0}url=ja[position]["url"]}result["parse"]=0;result["playUrl"]="";result["url"]=url;result["header"]={Referer:"https://www.bilibili.com","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"};result["contentType"]="video/x-flv";input=result}', } \ No newline at end of file diff --git "a/py/\345\223\224\345\223\251\344\272\214\347\272\247.js" "b/py/\345\223\224\345\223\251\344\272\214\347\272\247.js" new file mode 100644 index 0000000..34026dc --- /dev/null +++ "b/py/\345\223\224\345\223\251\344\272\214\347\272\247.js" @@ -0,0 +1,50 @@ +js: +// 将超过10000的数字换成成以万和亿为单位 +function zh(num){ + let p=''; + if(Number(num)>100000000){ + p = (num/100000000).toFixed(2)+'亿'; + }else if(Number(num)>10000){ + p = (num/10000).toFixed(2)+'万'; + }else{ + p = num; + } + return p +} +let html = request(input); +let jo = JSON.parse(html).result; +let id = jo['season_id']; +let title = jo['title']; +let pic = jo['cover']; +let areas = jo['areas'][0]['name']; +let typeName = jo['share_sub_title']; +let date = jo['publish']['pub_time'].substr(0,4); +let dec = jo['evaluate']; +let remark = jo['new_ep']['desc']; +let stat = jo['stat']; +let status = "弹幕: " + zh(stat['danmakus']) + " 点赞: " + zh(stat['likes']) + " 投币: " + zh(stat['coins']) + " 追番追剧: " + zh(stat['favorites']); +let score = jo.hasOwnProperty('rating')?"评分: " + jo['rating']['score'] + ' ' + jo['subtitle']:"暂无评分" + ' ' + jo['subtitle']; +let vod = { +"vod_id": id, +"vod_name": title, +"vod_pic": pic, +"type_name": typeName, +"vod_year": date, +"vod_area": areas, +"vod_remarks": remark, +"vod_actor": status, +"vod_director": score, +"vod_content": dec +} +let ja = jo['episodes']; +let playurls = []; +ja.forEach(function (tmpJo){ + let eid = tmpJo['id']; + let cid = tmpJo['cid']; + let part = tmpJo['title'].replace("#", "-")+' '+tmpJo['long_title']; + playurls.push(part+'$'+eid+'_'+cid); +}); +let playUrl = playurls.join('#'); +vod['vod_play_from'] = 'B站' +vod['vod_play_url'] = playUrl +VOD = vod; \ No newline at end of file diff --git "a/py/\345\223\224\345\223\251\345\205\215\345\227\205.js" "b/py/\345\223\224\345\223\251\345\205\215\345\227\205.js" new file mode 100644 index 0000000..fe7ff63 --- /dev/null +++ "b/py/\345\223\224\345\223\251\345\205\215\345\227\205.js" @@ -0,0 +1,37 @@ +js: +let ids = input.split('_'); +let result = {}; +let url = 'https://api.bilibili.com/pgc/player/web/playurl?qn=116&ep_id='+ids[0]+'&cid='+ids[1]; +let html = request(url); +let jRoot = JSON.parse(html); +if(jRoot['message'] !== 'success'){ + print("需要大会员权限才能观看"); + input = ''; +}else{ + let jo = jRoot['result']; + let ja = jo['durl']; + let maxSize = -1; + let position = -1; + ja.forEach(function (tmpJo,i){ + if(maxSize < Number(tmpJo['size'])){ + maxSize = Number(tmpJo['size']) + position = i; + } + }); + let url = ''; + if(ja.length > 0){ + if(position === -1){ + position = 0; + } + url = ja[position]['url']; + } + result["parse"] = 0; + result["playUrl"] = ''; + result["url"] = url; + result["header"] = { + "Referer": "https://www.bilibili.com", + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" + }; + result["contentType"] = 'video/x-flv'; + input = result; +} \ No newline at end of file diff --git "a/py/\345\223\224\345\223\251\346\220\234\347\264\242.js" "b/py/\345\223\224\345\223\251\346\220\234\347\264\242.js" new file mode 100644 index 0000000..b8961d7 --- /dev/null +++ "b/py/\345\223\224\345\223\251\346\220\234\347\264\242.js" @@ -0,0 +1,34 @@ +js: +let url1 = input+'media_bangumi'; +let url2 = input+'media_ft'; +let html = request(url1); +let msg = JSON.parse(html).message; +if(msg!=='0'){ + VODS = [{vod_name:KEY + '➢'+msg,vod_id:'no_data',vod_remarks:'别点,缺少bili_cookie',vod_pic:'https://ghproxy.com/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg'}]; +}else { + let jo1 = JSON.parse(html).data; + html = request(url2); + let jo2 = JSON.parse(html).data; + let videos = []; + let vodList = []; + if (jo1['numResults'] === 0) { + vodList = jo2['result']; + } else if (jo2['numResults'] === 0) { + vodList = jo1['result']; + } else { + vodList = jo1['result'].concat(jo2['result']); + } + vodList.forEach(function (vod) { + let aid = (vod['season_id'] + '').trim(); + let title = KEY + '➢' + vod['title'].trim().replace("", "").replace("", ""); + let img = vod['cover'].trim(); + let remark = vod['index_show']; + videos.push({ + "vod_id": aid, + "vod_name": title, + "vod_pic": img, + "vod_remarks": remark + }); + }); + VODS = videos; +} \ No newline at end of file diff --git a/readme.md b/readme.md index 652803a..225062a 100644 --- a/readme.md +++ b/readme.md @@ -55,6 +55,7 @@ {"1":1,"2":1,"3":1,"4":1,"5":1,"7":1,"时间表":1} ``` - [X] 增加分类api无数据时显示一条提示数据防止软件无限请求 +- [X] 完善哔哩影视(drpy),共有两个环境变量 vmid,bili_cookie 需要自行设置,否则无法正常播放和搜索 ###### 2022/11/30 - [X] 修复哔哩zb,jrkan zb无法播放问题 ###### 2022/11/29 -- GitLab