// ==UserScript== // @name bilibili视频下载 // @namespace https://github.com/injahow // @version 2.0.1 // @description 支持Web、RPC、Blob、Aria等下载方式;支持flv、dash、mp4视频格式;支持下载港区番剧;支持会员下载;支持换源播放,自动切换为高清视频源 // @author injahow // @copyright 2021, injahow (https://github.com/injahow) // @license MIT // @source https://github.com/injahow/user.js // @supportURL https://github.com/injahow/user.js/issues // @match *://www.bilibili.com/video/av* // @match *://www.bilibili.com/video/BV* // @match *://www.bilibili.com/medialist/play/* // @match *://www.bilibili.com/bangumi/play/ep* // @match *://www.bilibili.com/bangumi/play/ss* // @match *://www.bilibili.com/cheese/play/ep* // @match *://www.bilibili.com/cheese/play/ss* // @match https://www.mcbbs.net/template/mcbbs/image/special_photo_bg.png* // @require https://static.hdslb.com/js/jquery.min.js // @require https://cdn.jsdelivr.net/npm/flv.js@1.6.2/dist/flv.min.js // @require https://cdn.jsdelivr.net/npm/dplayer@1.26.0/dist/DPlayer.min.js // @icon https://static.hdslb.com/images/favicon.ico // @compatible chrome // @compatible firefox // @grant none // @downloadURL none // ==/UserScript== /* eslint-disable */ /* spell-checker: disable */ // @[ You can find all source codes in GitHub repo ] !function(){"use strict";function e(e,t){for(var i=0;i|]+/g,"")},filename:function(e){var i=e||t.p||1;return((t.videoData&&t.videoData.title||"unknown")+" P".concat(i," (").concat(t.videoData.pages[i-1].part||i,")")).replace(/[\/\\:*?"<>|]+/g,"")},aid:function(e){return t.videoData.aid},p:function(){return t.p||1},cid:function(e){var i=e||t.p||1;return t.videoData.pages[i-1].cid},epid:function(e){return""},need_vip:function(){return!1},vip_need_pay:function(){return!1},is_limited:function(){return!1}}}if("medialist"===e){var n=$("div.player-auxiliary-playlist-item"),o=$("div.player-auxiliary-playlist-item.player-auxiliary-playlist-item-active").index(),a=$(".player-auxiliary-playlist-top .player-auxiliary-filter-title").html();return{type:"video",total:function(){return n.length},title:function(e){var t=e?e-1:o,i=n.eq(t).find(".player-auxiliary-playlist-item-title").attr("title")||"unknown";return i.replace(/[\/\\:*?"<>|]+/g,"")},filename:function(e){var t=e?e-1:o,i=n.eq(t).find(".player-auxiliary-playlist-item-title").attr("title")||"unknown";return"".concat(a," P").concat(t+1," (").concat(i,")").replace(/[\/\\:*?"<>|]+/g,"")},aid:function(e){var t=e?e-1:o;return n.eq(t).attr("data-aid")},p:function(){return o+1},cid:function(e){var t=e?e-1:o;return n.eq(t).attr("data-cid")},epid:function(e){return""},need_vip:function(){return!1},vip_need_pay:function(){return!1},is_limited:function(){return!1}}}if("bangumi"===e){var r=window.__INITIAL_STATE__;return{type:"bangumi",total:function(){return r.epList.length},title:function(e){var t=e?r.epList[e-1]:r.epInfo;return("".concat(t.titleFormat," ").concat(t.longTitle)||"unknown").replace(/[\/\\:*?"<>|]+/g,"")},filename:function(e){if(e){var t=r.epList[e-1];return("".concat(r.mediaInfo.season_title,":").concat(t.titleFormat," ").concat(t.longTitle)||"unknown").replace(/[\/\\:*?"<>|]+/g,"")}return(r.h1Title||"unknown").replace(/[\/\\:*?"<>|]+/g,"")},aid:function(e){return e?r.epList[e-1].aid:r.epInfo.aid},p:function(){return r.epInfo.i||1},cid:function(e){return e?r.epList[e-1].cid:r.epInfo.cid},epid:function(e){return e?r.epList[e-1].id:r.epInfo.id},need_vip:function(){return"会员"===r.epInfo.badge},vip_need_pay:function(){return r.epPayMent.vipNeedPay},is_limited:function(){return r.userState.areaLimit}}}if("cheese"===e){var l=(location.href.match(/\/cheese\/play\/ep(\d+)/i)||["",""])[1];window.bp_episodes||(window.bp_episodes=[],N.get_season(l));var c=window.bp_episodes,s=$("li.on.list-box-li").index();return{type:"cheese",total:function(){return c.length},title:function(e){return(c[e?e-1:s].title||"unknown").replace(/[\/\\:*?"<>|]+/g,"")},filename:function(e){var t=e?e-1:s;return"".concat($("div.season-info h1").html()," P").concat(t+1," (").concat(c[t].title||"unknown",")").replace(/[\/\\:*?"<>|]+/g,"")},aid:function(e){return c[e?e-1:s].aid},p:function(){return s+1},cid:function(e){return c[e?e-1:s].cid},epid:function(e){return c[e?e-1:s].id},need_vip:function(){return!1},vip_need_pay:function(){return!1},is_limited:function(){return!1}}}return{type:"?",total:function(){return 0},title:function(e){return""},filename:function(e){return""},aid:function(e){return""},p:function(){return 1},cid:function(e){return""},epid:function(e){return""},need_vip:function(){return!1},vip_need_pay:function(){return!1},is_limited:function(){return!1}}},get_quality:function(){var e=0,t=0;return $("li.bui-select-item")[0]&&(t=parseInt($("li.bui-select-item")[0].dataset.value))?e=parseInt($("li.bui-select-item.bui-select-item-active").attr("data-value"))||(t>80?80:t):$("li.squirtle-select-item")[0]&&(t=parseInt($("li.squirtle-select-item")[0].dataset.value))?e=parseInt($("li.squirtle-select-item.active").attr("data-value"))||(t>80?80:t):$("div.edu-player-quality-item")[0]?(e=n[$("div.edu-player-quality-item.active span").text()||"自动"]||80,t=n[$("div.edu-player-quality-item span").text()||"自动"]||80):e=t=80,{q:e,q_max:t}},get_quality_support:function(){var e,t=[];return"cheese"===i()?((e=$("div.edu-player-quality-item span")).each((function(){if("自动"===$(this).text())return!1;t.push(n[$(this).text()])})),t.length?t:["80","64","32","16"]):($("ul.squirtle-select-list")[0]?e=$("li.squirtle-select-item"):$("ul.bui-select-list")[0]&&(e=$("li.bui-select-item")),e&&e.length?(e.each((function(){var e="".concat($(this).attr("data-value"));if("0"===e)return!1;t.push(e)})),t):["80","64","32","16"])}};var a={show:function(){$("div#bp_config").is(":hidden")&&$("div#message_box").is(":hidden")&&$("body").css("overflow","auto")},hide:function(){$("body").css("overflow","hidden")}};function r(e,t){"confirm"===t?$('div.message_box_btn button[name="cancel"]').show():"alert"===t&&$('div.message_box_btn button[name="cancel"]').hide(),e.html?$("div#message_box_context").html('
'.concat(e.html,"
")):$("div#message_box_context").html('
╰( ̄▽ ̄)╮
'),a.hide(),$("#message_box").show(),$("div#message_box").animate({opacity:"1"},300),$('div.message_box_btn button[name="affirm"]')[0].onclick=function(){$("div#message_box").hide(),$("div#message_box").css("opacity",0),a.show(),e.callback&&e.callback.affirm&&e.callback.affirm()},$('div.message_box_btn button[name="cancel"]')[0].onclick=function(){$("div#message_box").hide(),$("div#message_box").css("opacity",0),a.show(),e.callback&&e.callback.cancel&&e.callback.cancel()}}var l=0;function c(e,t){(function(e,t){$("div.message-bg").append(e),$("div#message-".concat(t)).animate({"margin-top":"+=70px",opacity:"1"},300)})('

').concat(t,":

").concat(e,"

"),l),function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3;setTimeout((function(){var t="div#message-".concat(e);$(t).animate({"margin-top":"-=70px",opacity:"0"},300,(function(){$(t).remove()}))}),1e3*t)}(l,3)}var s=function(e){return c(e,"success")},d=function(e){return c(e,"warning")},u=function(e){return c(e,"danger")},p=function(e){return c(e,"info")},f=function(e){return c("(^・ω・^)~喵喵喵~","info")},b=function(e,t){return r({html:e,callback:{affirm:t}},"alert")},_=function(e,t,i){return r({html:e,callback:{affirm:t,cancel:i}},"confirm")};function v(e){return new Promise((function(t,i){e.success=function(e){e.code&&d("请求失败,".concat(e.message||"CODE:".concat(e.code))),t(e)},e.error=function(e){u("网络异常"),i(e)},$.ajax(e)}))}function h(e,t){t?v({url:"https://api.bilibili.com/x/v1/dm/list.so?oid=".concat(t),dataType:"text"}).then((function(t){var i=$(t.replace(/[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f]/g,""));if(i)if(i.find("d")[0]){var n=i.find("d").map((function(e,t){var i=$(t),n=i.attr("p").split(","),o=0;return"4"===n[1]?o=2:"5"===n[1]&&(o=1),[{author:"",time:parseFloat(n[0]),type:o,color:parseInt(n[3]),id:"",text:i.text()}]})).get();e.success(n),setTimeout((function(){w()}),100)}else e.error("未发现弹幕");else e.error("弹幕获取失败")})).catch((function(t){e.error("弹幕请求异常")})):e.error("cid未知,无法获取弹幕")}function m(){return $("bwp-video")[0]?"bwp-video":$('video[class!="dplayer-video dplayer-video-current"]')[0]?'video[class!="dplayer-video dplayer-video-current"]':void 0}function y(){var e=$(m())[0];e&&(e.pause(),e.currentTime=0)}function g(){if(window.bp_dplayer){var e=$(m())[0];e&&e.removeEventListener("play",y,!1),window.bp_dplayer.destroy(),window.bp_dplayer=null,$("#bp_dplayer").remove(),window.bp_dplayer_2&&(window.bp_dplayer_2.destroy(),window.bp_dplayer_2=null,$("#bp_dplayer_2").remove()),$($("#bilibiliPlayer")[0]?"#bilibiliPlayer":$("#bilibili-player")[0]?"#bilibili-player":"cheese"===o.type()?$('div.bpx-player[data-injector="nano"]')[0]?'div.bpx-player[data-injector="nano"]':"#pay-mask":void 0).show()}}function w(){var e=""+'");$("#dplayer_danmaku_style")[0]&&$("#dplayer_danmaku_style").remove(),$("body").append(e)}var k={bili_video_tag:m,recover_player:g,replace_player:function(e,t){g();var i,n=$(m())[0];y(),n&&n.addEventListener("play",y,!1),$("#bilibiliPlayer")[0]?(i="#bilibiliPlayer",$(i).before('
'),$(i).hide()):$("#bilibili-player")[0]?(i="#bilibili-player",$(i).before('
'),$(i).hide()):"cheese"===o.type()&&($('div.bpx-player[data-injector="nano"]')[0]?($("#pay-mask").hide(),$("#bofqi").show(),i='div.bpx-player[data-injector="nano"]',$(i).before('
'),$(i).hide()):(i="#pay-mask",$(i).html('
'))),$("#player_mask_module").hide(),N.get_subtitle_url(0,(function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(window.bp_dplayer=new DPlayer({container:$("#bp_dplayer")[0],mutex:!1,volume:1,autoplay:!0,video:{url:e,type:"auto"},subtitle:{url:i,type:"webvtt",fontSize:"35px",bottom:"5%",color:"#fff"},danmaku:!0,apiBackend:{read:function(e){h(e,o.base().cid())},send:function(e){e.error("此脚本无法将弹幕同步到云端")}},contextmenu:[{text:"脚本信息",link:"https://github.com/injahow/user.js"},{text:"脚本作者",link:"https://injahow.com"}]}),"dash"===C.format&&t&&"#"!==t){$("body").append(''),window.bp_dplayer_2=new DPlayer({container:$("#bp_dplayer_2")[0],mutex:!1,volume:1,autoplay:!0,video:{url:t,type:"auto"}});var n=[window.bp_dplayer,window.bp_dplayer_2],a=n[0],r=n[1];a.on("play",(function(){!a.paused&&r.play()})),a.on("playing",(function(){!a.paused&&r.play()})),a.on("timeupdate",(function(){Math.abs(a.video.currentTime-r.video.currentTime)>1&&(r.pause(),r.seek(a.video.currentTime)),!a.paused&&r.play()})),a.on("seeking",(function(){r.pause(),r.seek(a.video.currentTime)})),a.on("waiting",(function(){r.pause(),r.seek(a.video.currentTime)})),a.on("pause",(function(){r.pause(),r.seek(a.video.currentTime)})),a.on("suspend",(function(){r.speed(a.video.playbackRate)})),a.on("volumechange",(function(){r.volume(a.video.volume),r.video.muted=a.video.muted}))}}))},danmaku:{config:w}};function x(e,t){for(var i=0;i=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,r=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return r=e.done,e},e:function(e){l=!0,a=e},f:function(){try{r||null==i.return||i.return()}finally{if(l)throw a}}}}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i")+"已经下载:".concat(Math.floor(i/1048576),"MB(").concat(i,"Byte)
")+"当前进度:".concat(n,"%
下载中请勿操作浏览器!"),(function(){R=!1,b("注意:刷新或离开页面会导致下载取消!
再次点击下载按钮可查看下载进度。")})),t===i&&(b("下载完成,请等待浏览器保存!"),q=!1)}({total:i,loaded:t,percent:Math.floor(100*t/i)})}},i.send(),q=!0,p("准备开始下载")}function A(e){return e.match(".flv")?".flv":e.match(".m4s")?"_video.mp4":(e.match(".mp4"),".mp4")}var O={url_format:A,download:function(e,t,i){var n=t.replace(/[\/\\:*?"<>|]+/g,"")+A(e);"blob"===i?L(e,n):"rpc"===i&&function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"post";if(j)f();else{j=!0;var n={domain:C.rpc_domain,port:C.rpc_port,token:C.rpc_token,dir:C.rpc_dir},o={id:window.btoa("BParse_".concat(Date.now(),"_").concat(Math.random())),jsonrpc:"2.0",method:"aria2.addUri",params:["token:".concat(n.token),[e],{dir:n.dir,out:t,header:["User-Agent: ".concat(window.navigator.userAgent),"Referer: ".concat(window.location.href)]}]};if(p("发送RPC下载请求"),"post"===i)v({url:"".concat(n.domain,":").concat(n.port,"/jsonrpc"),type:"POST",dataType:"json",data:JSON.stringify(o)}).then((function(e){e.result?s("RPC请求成功"):d("请检查RPC参数")})).catch((function(e){u("请检查RPC服务配置")})).finally((function(e){return j=!1}));else if("ariang"===i){var a=window.bp_aria2_window,r=100;a&&!a.closed||(P(),r=3e3),setTimeout((function(){var i=window.bp_aria2_window,n="header=User-Agent:".concat(window.navigator.userAgent,"&header=Referer:").concat(window.location.href),o="#!/new/task?url=".concat(window.btoa(e),"&out=").concat(encodeURIComponent(t),"&").concat(n);i&&!i.closed?(i.location.href=C.ariang_host+o,s("RPC请求发送成功")):d("AriaNG页面未打开"),j=!1}),r)}}}(e,n,I())},download_all:function(){var e=o.base(),t=[o.get_quality().q,e.total()],i=t[0],n=t[1];$("body").on("click",'input[name="dl_video"]',(function(){$(this).is(":checked")?$(this).parent().css("color","rgba(0,0,0,1)"):$(this).parent().css("color","rgba(0,0,0,0.5)")}));for(var a="",r=0;r
\n \n P').concat(r+1," ").concat(e.title(r+1),"\n
");var l=!1;$("body").on("click","button#checkbox_btn",(function(){l?(l=!1,$('input[name="dl_video"]').prop("checked",l),$('input[name="dl_video"]').parent().css("color","rgba(0,0,0,0.5)")):(l=!0,$('input[name="dl_video"]').prop("checked",l),$('input[name="dl_video"]').parent().css("color","rgb(0,0,0)"))}));var c,f={120:"4K 超清",116:"1080P 60帧",112:"1080P 高码率",80:"1080P 高清",74:"720P 60帧",64:"720P 高清",48:"720P 高清(MP4)",32:"480P 清晰",16:"360P 流畅"},h="",m=S(o.get_quality_support());try{for(m.s();!(c=m.n()).done;){var y=c.value;h+='")}}catch(e){m.e(e)}finally{m.f()}var g=""+'
\n \n \n   仅video类型支持mp4\n
\n
\n \n \n
\n
\n \n \n   \n \n \n
\n \n 为避免请求被拦截,设置了延时且不支持下载无法播放的视频;请勿频繁下载过多视频,可能触发风控导致不可再下载!\n
\n
\n ').concat(a,"\n
\n
").concat("medialist"===o.type()?"不支持多页视频,若需要请到视频原播放页面下载":"",'
\n
\n \n
');function w(e,t,i){if(e.length)if(t今日剩余请求次数".concat(a.times):"")),b("".concat(o,":获取成功!"));var r=[a.url,A(a.url),I()],l=r[0],c=r[1],u=r[2];"post"===u?(i.push({url:l,filename:n.filename+c}),i.length>3&&(k(i),i.length=0)):"ariang"===u&&function(e){var t=window.bp_aria2_window,i=100;t&&!t.closed||(P(),i=3e3);setTimeout((function(){var t=window.bp_aria2_window,i="header=User-Agent:".concat(window.navigator.userAgent,"&header=Referer:").concat(window.location.href);if(t&&!t.closed){var n="#!/new/task?url=".concat(window.btoa(e.url),"&out=").concat(encodeURIComponent(e.filename),"&").concat(i);t.location.href=C.ariang_host+n,s("RPC请求成功")}else d("请检查RPC参数")}),i)}({url:l,filename:n.filename+c})}setTimeout((function(){w(e,++t,i)}),3e3)}),(function(){w(e,++t,i)}))}),3e3)}else b("视频地址请求完成!"),"post"===I()&&i.length>0&&(k(i),i.length=0)}function k(e){var t,i={domain:C.rpc_domain,port:C.rpc_port,token:C.rpc_token,dir:C.rpc_dir},n=[],o=S(e);try{for(o.s();!(t=o.n()).done;){var a=t.value;n.push({id:window.btoa("BParse_".concat(Date.now(),"_").concat(Math.random())),jsonrpc:"2.0",method:"aria2.addUri",params:["token:".concat(i.token),[a.url],{dir:i.dir,out:a.filename,header:["User-Agent: ".concat(window.navigator.userAgent),"Referer: ".concat(window.location.href)]}]})}}catch(e){o.e(e)}finally{o.f()}p("发送RPC下载请求"),v({url:"".concat(i.domain,":").concat(i.port,"/jsonrpc"),type:"POST",dataType:"json",data:JSON.stringify(n)}).then((function(e){e.length===n.length?s("RPC请求成功"):d("请检查RPC参数")})).catch((function(e){u("请检查RPC服务配置")}))}_(g,(function(){for(var t=$("#dl_quality").val()||i,o=$("#dl_subtitle").val(),a=$("#dl_danmaku").val(),r=[],l=0;l120?80:i)},download_danmaku_ass:function(e,t){v({url:"https://api.bilibili.com/x/v1/dm/list.so?oid=".concat(e),dataType:"text"}).then((function(e){var i=$(e.replace(/[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f]/g,""));if(i&&i.find("d")[0]){var n=i.find("d").map((function(e,t){var i=$(t),n=i.attr("p").split(","),o=0;return"4"===n[1]?o=2:"5"===n[1]&&(o=1),[{time:parseFloat(n[0]),type:o,color:parseInt(n[3]),text:i.text()}]})).get();n.sort((function(e,t){return e.time-t.time}));var o,a=function(e,t,i){var n,o,a,r,l=e.text,c=e.time,s=[0===e.type?(o=50*(1+Math.floor(15*Math.random())),a=1920+50*e.text.length/2,r=0-50*e.text.length/2,"\\move(".concat(a,",").concat(o,",").concat(r,",").concat(o,")")):function(e,t){return"\\pos(".concat(t,",").concat(e,")")}(50*(1+i%15),960),(n=e.color,16777215===n?"":function(e){return"\\c&H".concat(((255&e)<<16|(e>>8&255)<<8|e>>16&255).toString(16),"&")}(e.color))],d=function(e){var t=function(e,t){return Math.floor(e/t)},i=function(e){return e<10?"0"+e:""+e},n=Math.floor(e),o=t(n,3600),a=t(n,60)%60,r=n%60,l=Math.floor(100*(e-n));return"".concat(o,":").concat(i(a),":").concat(i(r),".").concat(l)},u=[0,d(c),d(c+(0===e.type?8:4)),"Medium","","0","0","0","","{"+s.join("")+"}"+function(e){return e.replace(/\{/g,"{").replace(/\}/g,"}").replace(/\r|\n/g,"")}(l)];return"Dialogue: "+u.join(",")},r=["[Script Info]","; Script generated by bilibili-parse","; https://github.com/injahow/bilibili-parse","Title: ".concat(t),"ScriptType: v4.00+","PlayResX: ".concat(1920),"PlayResY: ".concat(1080),"Timer: 10.0000","WrapStyle: 2","ScaledBorderAndShadow: no","","[V4+ Styles]","Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding","Style: Small,微软雅黑,36,&H66FFFFFF,&H66FFFFFF,&H66000000,&H66000000,0,0,0,0,100,100,0,0,1,1.2,0,5,0,0,0,0","Style: Medium,微软雅黑,52,&H66FFFFFF,&H66FFFFFF,&H66000000,&H66000000,0,0,0,0,100,100,0,0,1,1.2,0,5,0,0,0,0","Style: Large,微软雅黑,64,&H66FFFFFF,&H66FFFFFF,&H66000000,&H66000000,0,0,0,0,100,100,0,0,1,1.2,0,5,0,0,0,0","Style: Larger,微软雅黑,72,&H66FFFFFF,&H66FFFFFF,&H66000000,&H66000000,0,0,0,0,100,100,0,0,1,1.2,0,5,0,0,0,0","Style: ExtraLarge,微软雅黑,90,&H66FFFFFF,&H66FFFFFF,&H66000000,&H66000000,0,0,0,0,100,100,0,0,1,1.2,0,5,0,0,0,0","","[Events]","Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text"],l=0,c=S(n);try{for(c.s();!(o=c.n()).done;){var s=o.value;0===s.type?0:l++,r.push(a(s,0,l))}}catch(e){c.e(e)}finally{c.f()}var u=URL.createObjectURL(new Blob([r.join("\n")],{type:"text/ass"})),p=document.createElement("a");p.style.display="none",p.href=u,p.download=t+".ass",document.body.appendChild(p),p.click(),p.remove(),URL.revokeObjectURL(u)}else d("未发现弹幕")})).catch((function(e){d("未发现字幕")}))},download_subtitle_vtt:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0,i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(e){var i=document.createElement("a");i.setAttribute("target","_blank"),i.setAttribute("href",e),i.setAttribute("download",t+".vtt"),document.body.appendChild(i),i.click(),i.remove(),URL.revokeObjectURL(e)}else d("未发现字幕")};N.get_subtitle_url(e,i)},open_ariang:P},z='
bilibili视频下载 参数设置 [重置配置] <通知&帮助>
    
注意:普通使用请勿修改;默认使用混合请求
    
注意:仅video支持MP4;建议特殊地区或网络受限时切换(自行选择合适线路)
    
提示:url和web方式不会设置文件名

: | |
注意:RPC默认使用Motrix(需要安装并运行)下载,其他软件请修改参数
     s      px
说明:使用请求到的视频地址在DPlayer进行播放;弹幕速度为弹幕滑过DPlayer的时间

说明:请求地址成功后将自动点击下载视频按钮
账号授权 取消授权 手动授权 这是什么?

',C={base_api:"https://api.injahow.cn/bparse/",request_type:"auto",format:"flv",host_key:"0",replace_force:"0",auth:"0",download_type:"web",rpc_domain:"http://localhost",rpc_port:"16800",rpc_token:"",rpc_dir:"D:/",ariang_host:"http://ariang.injahow.com/",auto_download:"0",danmaku_speed:"15",danmaku_fontsize:"22"},E={ks3:"upos-sz-mirrorks3.bilivideo.com",ks3b:"upos-sz-mirrorks3b.bilivideo.com",ks3c:"upos-sz-mirrorks3c.bilivideo.com",ks32:"upos-sz-mirrorks32.bilivideo.com",kodo:"upos-sz-mirrorkodo.bilivideo.com",kodob:"upos-sz-mirrorkodob.bilivideo.com",cos:"upos-sz-mirrorcos.bilivideo.com",cosb:"upos-sz-mirrorcosb.bilivideo.com",bos:"upos-sz-mirrorbos.bilivideo.com",wcs:"upos-sz-mirrorwcs.bilivideo.com",wcsb:"upos-sz-mirrorwcsb.bilivideo.com",hw:"upos-sz-mirrorhw.bilivideo.com",hwb:"upos-sz-mirrorhwb.bilivideo.com",upbda2:"upos-sz-upcdnbda2.bilivideo.com",upws:"upos-sz-upcdnws.bilivideo.com",uptx:"upos-sz-upcdntx.bilivideo.com",uphw:"upos-sz-upcdnhw.bilivideo.com",js:"upos-tf-all-js.bilivideo.com",hk:"cn-hk-eq-bcache-01.bilivideo.com",akamai:"upos-hz-mirrorakam.akamaized.net"};function U(){var e=Object.assign({},C),i=t.get("config_str")||localStorage.getItem("my_config_str");if(i){var n=JSON.parse(i);for(var o in n)Object.hasOwnProperty.call(C,o)&&(C[o]=n[o])}else t.set("config_str",JSON.stringify(C)),localStorage.setItem("my_config_str",JSON.stringify(C));window.bp_save_config=function(){for(var e in C)C[e]=$("#".concat(e)).val();var i=JSON.parse(t.get("config_str")||localStorage.getItem("my_config_str"));t.set("config_str",JSON.stringify(C)),localStorage.setItem("my_config_str",JSON.stringify(C)),$("#bp_config").hide(),$("#bp_config").css("opacity",0),a.show();for(var n=0,o=["base_api","format","auth"];n使用期间不用关闭控制台页面!",(function(){O.open_ariang({domain:C.rpc_domain,port:C.rpc_port,token:C.rpc_token})})));for(var l=0,c=["danmaku_speed","danmaku_fontsize"];l关闭',i=0,n=e;i').concat(E[o],"")}return t}()),$("body").append(z),C)$("#".concat(l)).val(C[l])}function M(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(!e)return;if("string"==typeof e)return B(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);"Object"===i&&e.constructor&&(i=e.constructor.name);if("Map"===i||"Set"===i)return Array.from(e);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return B(e,t)}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,r=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return r=e.done,e},e:function(e){l=!0,a=e},f:function(){try{r||null==i.return||i.return()}finally{if(l)throw a}}}}function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0,n=C.request_type,o=C.format;D(0,e,o,t,i,n)},get_urls:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,a=C.request_type;D(e,t,i,n,o,a)},get_subtitle_url:function(e,t){var i=o.base(),n=[i.aid(e),i.cid(e),i.epid(e)],a=n[1],r=n[2];v({url:"https://api.bilibili.com/x/player/v2?aid=".concat(n[0],"&cid=").concat(a,"&ep_id=").concat(r),dataType:"json"}).then((function(e){!e.code&&e.data.subtitle.subtitles[0]?v({url:"".concat(e.data.subtitle.subtitles[0].subtitle_url),dataType:"json"}).then((function(e){var i,n="WEBVTT\n\n",o=M(e.body||[{from:0,to:0,content:""}]);try{for(o.s();!(i=o.n()).done;){var a=i.value,r=new Date(1e3*(parseInt(a.from)-28800)).toTimeString().split(" ")[0]+"."+(a.from.toString().split(".")[1]||"000").padEnd(3,"0"),l=new Date(1e3*(parseInt(a.to)-28800)).toTimeString().split(" ")[0]+"."+(a.to.toString().split(".")[1]||"000").padEnd(3,"0");n+="".concat(r," --\x3e ").concat(l,"\n").concat(a.content.trim(),"\n\n")}}catch(e){o.e(e)}finally{o.f()}t(URL.createObjectURL(new Blob([n],{type:"text/vtt"})))})).catch(t):t()})).catch(t)},get_season:function(e){v({url:"https://api.bilibili.com/pugv/view/web/season?ep_id=".concat(e),xhrFields:{withCredentials:!0},dataType:"json"}).then((function(e){e.code?d("获取剧集信息失败"):window.bp_episodes=e.data.episodes||null}))}};function H(e,t){for(var i=0;i864e5)&&v({url:"https://api.bilibili.com/x/space/myinfo?access_key=".concat(a),type:"GET",dataType:"json"}).then((function(i){if(!i.code)return t.set("auth_time",Date.now()),v({url:"".concat(C.base_api,"/auth/v2/?act=check&auth_id=").concat(n,"&auth_sec=").concat(o,"&access_key=").concat(a),type:"GET",dataType:"json"});b("授权已过期,准备重新授权",e.reLogin)})).then((function(t){t.code&&b("授权检查失败,准备重新授权",e.reLogin)})),t.set("pre_base_api",C.base_api))}},{key:"_login",value:function(e){var t=this;this.auth_clicked?f():(this.auth_clicked=!0,v({url:"https://passport.bilibili.com/login/app/third?appkey=27eb53fc9058f8c3&api=https%3A%2F%2Fwww.mcbbs.net%2Ftemplate%2Fmcbbs%2Fimage%2Fspecial_photo_bg.png&sign=04224646d1fea004e79606d3b038c84a",xhrFields:{withCredentials:!0},type:"GET",dataType:"json"}).then(e).finally((function(e){return t.auth_clicked=!1})))}},{key:"login",value:function(){this._login((function(e){e.data.has_login?$("body").append("")):_("必须登录B站才能正常授权,是否登陆?",(function(){location.href="https://passport.bilibili.com/login"}))}))}},{key:"loginManual",value:function(){this._login((function(e){if(e.data.has_login){var i=""+"请点击授权地址\n 打开一个新窗口,正常情况新窗口应该显示一个图片,请将该窗口地址栏的URL链接复制到当前文本框中
\n
然后点击确定即可");b(i,(function(){var e=$("#auth_url").val(),i=t.get("auth_id")||"",n=t.get("auth_sec")||"";v({url:e.replace("https://www.mcbbs.net/template/mcbbs/image/special_photo_bg.png?","".concat(C.base_api,"/auth/v2/?act=login&auth_id=").concat(i,"&auth_sec=").concat(n,"&")),type:"GET",dataType:"json"}).then((function(i){i.code?d("授权失败"):(s("授权成功"),i.auth_id&&i.auth_sec&&(t.set("auth_id",i.auth_id),t.set("auth_sec",i.auth_sec)),t.set("access_key",new URL(e).searchParams.get("access_key")),t.set("auth_time",Date.now()),$("#auth").val("1"),C.auth="1")}))}))}else _("必须登录B站才能正常授权,是否登陆?",(function(){location.href="https://passport.bilibili.com/login"}))}))}},{key:"logout",value:function(){var e=this;if(t.get("auth_id"))if(this.auth_clicked)f();else{var i=[t.get("auth_id"),t.get("auth_sec")],n=i[0],o=i[1];v({url:"".concat(C.base_api,"/auth/v2/?act=logout&auth_id=").concat(n,"&auth_sec=").concat(o),type:"GET",dataType:"json"}).then((function(e){e.code?d("取消失败"):(s("取消成功"),t.set("auth_id",""),t.set("auth_sec",""),t.set("auth_time","0"),t.set("access_key",""),$("#auth").val("0"),C.auth="0")})).finally((function(t){return e.auth_clicked=!1}))}else b("没有发现授权记录")}},{key:"initAuth",value:function(){var e=this;window.bp_show_login=function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"1",n=function(){"1"===i?e.login():e.loginManual()};t.get("auth_id")?_("发现授权记录,是否重新授权?",(function(){n()})):n()},window.bp_show_logout=function(){e.logout()},window.bp_show_login_help=function(){_("进行授权之后将能在远程请求时享有用户账号原有的权益,例如能够请求用户已经付费或承包的番剧,是否需要授权?",(function(){e.login()}))},window.addEventListener("message",(function(i){if("string"==typeof i.data&&"bilibili-parse-login-credentials"===i.data.split(":")[0]){$("iframe#auth_iframe").remove();var n=i.data.split(": ")[1],o=[t.get("auth_id"),t.get("auth_sec")],a=o[0],r=o[1];v({url:n.replace("https://www.mcbbs.net/template/mcbbs/image/special_photo_bg.png?","".concat(C.base_api,"/auth/v2/?act=login&auth_id=").concat(a,"&auth_sec=").concat(r,"&")),type:"GET",dataType:"json"}).then((function(e){e.code?d("授权失败"):(s("授权成功"),e.auth_id&&e.auth_sec&&(t.set("auth_id",e.auth_id),t.set("auth_sec",e.auth_sec)),t.set("access_key",new URL(n).searchParams.get("access_key")),t.set("auth_time",Date.now()),$("#auth").val("1"),C.auth="1")})).finally((function(t){return e.auth_clicked=!1}))}}))}}],n&&J(i.prototype,n),o&&J(i,o),Object.defineProperty(i,"prototype",{writable:!1}),e}(),W=new V;function X(e,t){for(var i=0;i
提示:
...


'),W.initAuth()}var i,n,r;return i=e,n=[{key:"run",value:function(){var e,i;$("body").append(''),$("body").append(''),setTimeout((function(){var e;$("#arc_toolbar_report")[0]?(e='
脚本设置 请求地址 批量下载
  • 下载弹幕
  • 下载字幕
',$("#arc_toolbar_report").after(e)):$("#toolbar_module")[0]?(e='
更多
  • 下载弹幕
  • 下载字幕
',$("#toolbar_module").after(e)):$("div.video-toolbar")[0]&&(e='
脚本设置 请求地址 批量下载
  • 下载弹幕
  • 下载字幕
',$("div.video-toolbar").after(e)),G.lazyInit(),W.checkLoginStatus(),F.refresh()}),3e3),$("body").on("click","#setting_btn",(function(){for(var e in G.lazyInit(!0),C)$("#".concat(e)).val(C[e]);$("#bp_config").show(),$("#bp_config").animate({opacity:"1"},300),a.hide()})),$("body").on("click","#download_danmaku",(function(){var e=o.base();O.download_danmaku_ass(e.cid(),e.filename())})),$("body").on("click","#download_subtitle",(function(){O.download_subtitle_vtt(0,o.base().filename())})),$("body").on("click","#video_download_all",(function(){G.lazyInit(!0),t.get("auth_id")&&t.get("auth_sec")?"rpc"===C.download_type?O.download_all():_("仅支持使用RPC接口批量下载,请确保RPC环境正常,是否继续?",(function(){O.download_all()})):_("批量下载仅支持授权用户使用RPC接口下载,是否进行授权?",(function(){window.bp_show_login()}))})),$("body").on("click","#video_download",(function(){var e=C.download_type;if("web"===e)$("#video_url")[0].click();else if("a"===e){var t=[$("#video_url").attr("href"),$("#video_url_2").attr("href")],i=t[1],n="建议使用IDM、FDM等软件安装其浏览器插件后,鼠标右键点击链接下载~

"+'>视频地址<

')+("dash"===C.format?'>音频地址<'):"");b(n)}else if("aria"===e){var a,r,l=[$("#video_url").attr("href"),$("#video_url_2").attr("href")],c=l[0],u=l[1],p=o.base().filename();a=p+O.url_format(c),r=p+"_audio.mp4";var f='--header "User-Agent: '.concat(window.navigator.userAgent,'" --header "Referer: ').concat(window.location.href,'"'),_='aria2c "'.concat(c,'" --out "').concat(a,'" ').concat(f),v='aria2c "'.concat(u,'" --out "').concat(r,'" ').concat(f),h="点击文本框即可复制下载命令!

"+'视频:


')+("dash"===C.format?'音频:


')+'全部:
"):"");!window.bp_clip_btn&&(window.bp_clip_btn=function(e){$("#".concat(e)).select(),document.execCommand("copy")?s("复制成功"):d("复制失败")}),b(h)}else{var m=$("#video_url").attr("href"),y=o.base().filename();O.download(m,y,e)}})),$("body").on("click","#video_download_2",(function(){var e=C.download_type;if("web"===e)$("#video_url_2")[0].click();else if("a"===e)$("#video_download").click();else if("aria"===e)$("#video_download").click();else{var t=$("#video_url_2").attr("href"),i=o.base().filename();O.download(t,i,e)}})),$("body").on("click","#bilibili_parse",(function(){G.lazyInit(!0);var n=o.base(),a=[n.type,n.aid(),n.p(),n.cid(),n.epid()],r=a[0],l=a[1],c=a[2],d=a[3],u=a[4],b=o.get_quality().q;e="".concat(C.base_api,"?av=").concat(l,"&p=").concat(c,"&cid=").concat(d,"&ep=").concat(u,"&q=").concat(b,"&type=").concat(r,"&format=").concat(C.format,"&otype=json&_host=").concat(C.host_key,"&_req=").concat(C.request_type);var _=[t.get("auth_id"),t.get("auth_sec")],v=_[0],h=_[1];if("1"===C.auth&&v&&h&&(e+="&auth_id=".concat(v,"&auth_sec=").concat(h)),e!==i||"local"===C.request_type)$("#video_url").attr("href","#"),$("#video_url_2").attr("href","#"),i=e,p("开始请求"),N.get_url(0,(function(e){if(e&&!e.code){s("请求成功"),e.times&&p("剩余请求次数:".concat(e.times));var t="dash"===C.format?e.video.replace("http://","https://"):e.url.replace("http://","https://"),i="dash"===C.format?e.audio.replace("http://","https://"):"#";$("#video_url").attr("href",t),$("#video_download").show(),"dash"===C.format&&($("#video_url_2").attr("href",i),$("#video_download_2").show()),(G.needReplace()||n.is_limited()||"1"===C.replace_force)&&k.replace_player(t,i),"1"===C.auto_download&&$("#video_download").click()}}));else{f();var m=$("#video_url").attr("href"),y=$("#video_url_2").attr("href");m&&"#"!==m&&($("#video_download").show(),"dash"===C.format&&$("#video_download_2").show(),(G.needReplace()||n.is_limited()||"1"===C.replace_force)&&!$("#bp_dplayer")[0]&&k.replace_player(m,y),"1"===C.auto_download&&$("#video_download").click())}})),$("body").on("click","a.router-link-active",(function(){this!==$('li[class="on"]').find("a")[0]&&F.refresh()})),$("body").on("click","li.ep-item",(function(){F.refresh()})),$("body").on("click","button.bilibili-player-iconfont-next",(function(){F.refresh()}));var n=k.bili_video_tag();$(n)[0]&&($(n)[0].onended=function(){F.refresh()}),$("body").on("click","li.bui-select-item",(function(){F.refresh()})),setInterval((function(){(F.q!==o.get_quality().q||"cheese"===o.type()&&F.epid!==o.base().epid())&&F.refresh()}),1e3),$("body").on("click",".rec-list",(function(){F.refresh()})),$("body").on("click",".bilibili-player-ending-panel-box-videos",(function(){F.refresh()})),setInterval((function(){var e=o.base();F.aid===e.aid()&&F.cid===e.cid()||F.refresh()}),3e3)}}],n&&X(i.prototype,n),r&&X(i,r),Object.defineProperty(i,"prototype",{writable:!1}),e}(),K=Y;window.bp_fun_locked||(window.bp_fun_locked=!0,null==location.href.match(/^https:\/\/www\.mcbbs\.net\/template\/mcbbs\/image\/special_photo_bg\.png/)?$(".error-text")[0]||(console.log("\n".concat(" %c bilibili-parse-download.user.js v","2.0.1"," ").concat("44e61a3"," %c https://github.com/injahow/user.js ","\n","\n"),"color: #fadfa3; background: #030307; padding:5px 0;","background: #fadfa3; padding:5px 0;"),(new K).run()):location.href.match("access_key")&&window!==window.parent&&(window.stop(),window.parent.postMessage("bilibili-parse-login-credentials: "+location.href,"*")))}();