// ==UserScript== // @name bilibili视频下载 // @namespace https://github.com/injahow // @version 2.7.5 // @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/list/* // @match *://www.bilibili.com/festival/* // @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* // @require https://static.hdslb.com/js/jquery.min.js // @icon https://static.hdslb.com/images/favicon.ico // @compatible chrome // @compatible firefox // @grant none // @downloadURL none // ==/UserScript== /* globals $ waitForKeyElements */ // @[ You can find all source codes in GitHub repo ] !function() { "use strict"; function _typeof(o) { return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _toPropertyKey(t) { var i = function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } var user = new (function() { function User() { !function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }(this, User), this.is_login = !1, this.vip_status = 0, this.mid = "", this.uname = "", this.has_init = !1, this.lazyInit(); } return function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }(User, [ { key: "needReplace", value: function needReplace() { return !this.is_login || !this.vip_status && video.base().needVip(); } }, { key: "isVIP", value: function isVIP() { return 1 === this.vip_status; } }, { key: "lazyInit", value: function lazyInit(last_init) { this.has_init || (window.__BILI_USER_INFO__ ? (this.is_login = window.__BILI_USER_INFO__.isLogin, this.vip_status = window.__BILI_USER_INFO__.vipStatus, this.mid = window.__BILI_USER_INFO__.mid || "", this.uname = window.__BILI_USER_INFO__.uname || "") : window.__BiliUser__ && (this.is_login = window.__BiliUser__.isLogin, window.__BiliUser__.cache ? (this.vip_status = window.__BiliUser__.cache.data.vipStatus, this.mid = window.__BiliUser__.cache.data.mid || "", this.uname = window.__BiliUser__.cache.data.uname || "") : (this.vip_status = 0, this.mid = "", this.uname = "")), this.has_init = last_init); } } ]), User; }()); function cache_typeof(o) { return cache_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, cache_typeof(o); } function _slicedToArray(r, e) { return function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }(r) || function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (;!(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) ; } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }(r, e) || function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }(r, e) || function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function cache_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function cache_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, cache_toPropertyKey(o.key), o); } } function cache_createClass(e, r, t) { return r && cache_defineProperties(e.prototype, r), t && cache_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function cache_toPropertyKey(t) { var i = function cache_toPrimitive(t, r) { if ("object" != cache_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != cache_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }(t, "string"); return "symbol" == cache_typeof(i) ? i : i + ""; } var CacheFactory = function() { function CacheFactory() { cache_classCallCheck(this, CacheFactory); } return cache_createClass(CacheFactory, null, [ { key: "get", value: function get() { var name = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "default", cache = new Cache; return CacheFactory.map[name] instanceof Cache ? cache = CacheFactory.map[name] : CacheFactory.map[name] = cache, cache; } }, { key: "setValue", value: function setValue() { var value = arguments.length > 1 ? arguments[1] : void 0, _key$split2 = _slicedToArray((arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "").split(".", 2), 2), cacheName = _key$split2[0], cacheKey = _key$split2[1]; if (cacheName && cacheKey) { var cache = CacheFactory.get(cacheName); cache instanceof Cache && cache.set(cacheKey, value); } } }, { key: "getValue", value: function getValue() { var _key$split4 = _slicedToArray((arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "").split(".", 2), 2), cacheName = _key$split4[0], cacheKey = _key$split4[1]; if (!cacheName || !cacheKey) return null; var cache = CacheFactory.get(cacheName); return cache instanceof Cache ? cache.get(cacheKey) : void 0; } }, { key: "clear", value: function clear(name) { if (name) { var cache = CacheFactory.map[name]; cache && cache.clear(); } else CacheFactory.map = {}; } } ]), CacheFactory; }(); !function _defineProperty(e, r, t) { return (r = cache_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }(CacheFactory, "map", {}); var Cache = function() { function Cache() { cache_classCallCheck(this, Cache), this.data = {}; } return cache_createClass(Cache, [ { key: "get", value: function get() { var key = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; return this.data[key]; } }, { key: "set", value: function set() { var key = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", value = arguments.length > 1 ? arguments[1] : void 0; this.data[key] = value; } }, { key: "clear", value: function clear() { this.data = {}; } } ]), Cache; }(), cache = CacheFactory; var scroll_scroll = { show: function show_scroll() { $("div#bp_config").is(":hidden") && $("div#message_box").is(":hidden") && $("body").css("overflow", "auto"); }, hide: function hide_scroll() { $("body").css("overflow", "hidden"); } }, message = '
提示:
...


'; function messageBox(ctx, type) { "confirm" === type ? $('.message-box-btn button[name="cancel"]').show() : "alert" === type && $('.message-box-btn button[name="cancel"]').hide(), ctx.html ? $("#message_box_context").html('
'.concat(ctx.html, "
")) : $("#message_box_context").html('
╰( ̄▽ ̄)╮
'), scroll_scroll.hide(), $("#message_box").show(), $("#message_box").animate({ opacity: "1" }, 300); var option = { affirm: function affirm() { $("#message_box").hide(), $("#message_box").css("opacity", 0), scroll_scroll.show(), ctx.callback && ctx.callback.affirm && ctx.callback.affirm(); }, cancel: function cancel() { $("#message_box").hide(), $("#message_box").css("opacity", 0), scroll_scroll.show(), ctx.callback && ctx.callback.cancel && ctx.callback.cancel(); } }; return $('.message-box-btn button[name="affirm"]')[0].onclick = option.affirm, $('.message-box-btn button[name="cancel"]')[0].onclick = option.cancel, option; } var id = 0; function message_message(html, type) { console.info("[Message] ".concat(type, " : ").concat(html)), function messageEnQueue(message, id) { $(".message-bg").append(message), $("#message_".concat(id)).animate({ "margin-top": "+=70px", opacity: "1" }, 300); }('

').concat(type, ":

").concat(html, "

"), id), function messageDeQueue(id) { var time = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 3; setTimeout(function() { var e = "div#message_".concat(id); $(e).animate({ "margin-top": "-=70px", opacity: "0" }, 300, function() { $(e).remove(); }); }, 1e3 * time); }(id, 3); } var message_Message_success = function success(html) { return message_message(html, "success"); }, message_Message_warning = function warning(html) { return message_message(html, "warning"); }, message_Message_error = function error(html) { return message_message(html, "error"); }, message_Message_info = function info(html) { return message_message(html, "info"); }, message_Message_miaow = function miaow() { return message_message("(^・ω・^)~喵喵喵~", "info"); }, MessageBox_alert = function alert(html, affirm) { return messageBox({ html: html, callback: { affirm: affirm } }, "alert"); }, MessageBox_confirm = function confirm(html, affirm, cancel) { return messageBox({ html: html, callback: { affirm: affirm, cancel: cancel } }, "confirm"); }; function ajax(obj) { return new Promise(function(resolve, reject) { obj.success = function(res) { res && res.code && message_Message_warning("".concat(res.message || "CODE:".concat(res.code))), resolve(res); }, obj.error = function(err) { message_Message_error("网络异常"), reject(err); }, $.ajax(obj); }); } function _ajax(obj) { return new Promise(function(resolve, reject) { var _success = obj.success; obj.success = function(res) { resolve(_success ? _success(res) : res); }; var _error = obj.error; obj.error = function(res) { reject(_error ? _error(res) : res); }, $.ajax(obj); }); } function _toConsumableArray(r) { return function _arrayWithoutHoles(r) { if (Array.isArray(r)) return video_base_arrayLikeToArray(r); }(r) || function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }(r) || video_base_unsupportedIterableToArray(r) || function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = video_base_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function video_base_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return video_base_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? video_base_arrayLikeToArray(r, a) : void 0; } } function video_base_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _get() { return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function(e, t, r) { var p = function _superPropBase(t, o) { for (;!{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t)); ) ; return t; }(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } function _createSuper(t) { var r = _isNativeReflectConstruct(); return function() { var e, o = _getPrototypeOf(t); if (r) { var s = _getPrototypeOf(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return _possibleConstructorReturn(this, e); }; } function _possibleConstructorReturn(t, e) { if (e && ("object" == video_base_typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }(t); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } function video_base_typeof(o) { return video_base_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, video_base_typeof(o); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function(r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function(r) { video_base_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function video_base_defineProperty(e, r, t) { return (r = video_base_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function video_base_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function video_base_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, video_base_toPropertyKey(o.key), o); } } function video_base_createClass(e, r, t) { return r && video_base_defineProperties(e.prototype, r), t && video_base_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function video_base_toPropertyKey(t) { var i = function video_base_toPrimitive(t, r) { if ("object" != video_base_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != video_base_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }(t, "string"); return "symbol" == video_base_typeof(i) ? i : i + ""; } var clazzMap = {}, VideoBase = function() { function VideoBase(video_type, main_title, state) { video_base_classCallCheck(this, VideoBase), this.constructor.name in clazzMap || (clazzMap[this.constructor.name] = this.constructor), this.video_type = video_type || "video", this.main_title = main_title || "", this.state = state, this.page = state && parseInt(state.p) || 1; } return video_base_createClass(VideoBase, [ { key: "getVideo", value: function getVideo(p) { var _this = this, prop = { p: p, id: 0, title: "", filename: "", aid: 0, bvid: "", cid: 0, epid: 0, needVip: !1, vipNeedPay: !1, isLimited: !1 }, clazz = clazzMap[this.constructor.name]; return prop = _objectSpread(_objectSpread({}, prop), Object.fromEntries(Object.getOwnPropertyNames(VideoBase.prototype).filter(function(key) { return key in prop; }).map(function(key) { return [ key, clazz.prototype[key].call(_this, p) ]; }))); } }, { key: "type", value: function type() { return this.video_type; } }, { key: "getName", value: function getName() { return this.main_title || ""; } }, { key: "getFilename", value: function getFilename() { return this.getName().replace(/[\/\\:*?"<>|]+/g, ""); } }, { key: "p", value: function p(_p) { return (_p = parseInt(_p) || 0) > 0 && _p <= this.total() ? _p : this.page; } }, { key: "id", value: function id(p) { return this.p(p) - 1; } }, { key: "total", value: function total() { return 0; } }, { key: "title", value: function title(p) { return ""; } }, { key: "filename", value: function filename(p) { return ""; } }, { key: "aid", value: function aid(p) { return 0; } }, { key: "bvid", value: function bvid(p) { return ""; } }, { key: "cid", value: function cid(p) { return 0; } }, { key: "epid", value: function epid(p) { return ""; } }, { key: "needVip", value: function needVip(p) { return !1; } }, { key: "vipNeedPay", value: function vipNeedPay(p) { return !1; } }, { key: "isLimited", value: function isLimited(p) { return !1; } } ]), VideoBase; }(), Video = function(_VideoBase) { _inherits(Video, _VideoBase); var _super = _createSuper(Video); function Video(main_title, state) { var _state$sectionsInfo, _this2; video_base_classCallCheck(this, Video), (_this2 = _super.call(this, "video", main_title, state)).video_list = [], _this2.epList = []; var sections = state.sections || (null === (_state$sectionsInfo = state.sectionsInfo) || void 0 === _state$sectionsInfo ? void 0 : _state$sectionsInfo.sections) || []; if (!sections.length) return _possibleConstructorReturn(_this2); var _step, _iterator = _createForOfIteratorHelper(sections); try { for (_iterator.s(); !(_step = _iterator.n()).done; ) { var _step2, _iterator2 = _createForOfIteratorHelper(_step.value.episodes || []); try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { for (var video = _step2.value, i = 0, length = video.pages && video.pages.length || 0; i < length; ) { var _video = Object.assign({}, video); _video.title = video.title + (length > 1 ? " P".concat(i + 1, " ").concat(video.pages[i].part) : ""), _video.cid = video.pages[i].cid || 0, _this2.video_list.push(_video), i++; } _this2.epList.push(video); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return _this2; } return video_base_createClass(Video, [ { key: "total", value: function total() { return this.epList.length > 1 ? this.video_list.length : this.state.videoData.pages.length; } }, { key: "title", value: function title(p) { return this.epList.length > 1 && p ? this.video_list[this.id(p)].title : this.state.videoData.pages[this.id(p)].part; } }, { key: "filename", value: function filename(p) { if (this.epList.length > 1 && p) return this.title(p).replace(/[\/\\:*?"<>|]+/g, ""); var id = this.id(p), pages = this.state.videoData.pages; return (this.main_title + (pages && pages.length > 1 ? " P".concat(id + 1, " ").concat(pages[id].part || "") : "")).replace(/[\/\\:*?"<>|]+/g, ""); } }, { key: "getName", value: function getName() { return this.epList.length > 1 ? this.state.sectionsInfo.title : _get(_getPrototypeOf(Video.prototype), "getName", this).call(this); } }, { key: "aid", value: function aid(p) { return this.epList.length > 1 && p ? this.video_list[this.id(p)].aid : this.state.videoData.aid; } }, { key: "bvid", value: function bvid(p) { return this.epList.length > 1 && p ? this.video_list[this.id(p)].bvid : this.state.videoData.bvid; } }, { key: "cid", value: function cid(p) { return this.epList.length > 1 && p ? this.video_list[this.id(p)].cid : this.state.videoData.pages[this.id(p)].cid; } } ]), Video; }(VideoBase), VideoList = function(_VideoBase2) { _inherits(VideoList, _VideoBase2); var _super2 = _createSuper(VideoList); function VideoList(main_title, state) { var _this3; video_base_classCallCheck(this, VideoList), (_this3 = _super2.call(this, "video", main_title, state)).video = new Video(state.videoData.title, state); var _step3, video_list = [], _iterator3 = _createForOfIteratorHelper(state.resourceList || []); try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) for (var video = _step3.value, i = 0, length = video.pages && video.pages.length || 0; i < length; ) { var _video = Object.assign({}, video); _video.title = video.title + (length > 1 ? " P".concat(i + 1, " ").concat(video.pages[i].title) : ""), _video.cid = video.pages[i].cid || 0, video_list.push(_video), i++; } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } return _this3.video_list = video_list, _this3; } return video_base_createClass(VideoList, [ { key: "total", value: function total() { return this.video_list.length; } }, { key: "title", value: function title(p) { return p ? this.video_list[this.id(p)].title : this.video.title(); } }, { key: "filename", value: function filename(p) { if (!p) return this.video.filename(); var id = this.id(p); return (this.main_title + (this.total() > 1 ? " P".concat(id + 1, " ").concat(this.video_list[id].title) : "")).replace(/[\/\\:*?"<>|]+/g, ""); } }, { key: "aid", value: function aid(p) { return p ? this.video_list[this.id(p)].aid : this.video.aid(); } }, { key: "bvid", value: function bvid(p) { return p ? this.video_list[this.id(p)].bvid : this.video.bvid(); } }, { key: "cid", value: function cid(p) { return p ? this.video_list[this.id(p)].cid : this.video.cid(); } } ]), VideoList; }(VideoBase), VideoFestival = function(_VideoBase3) { _inherits(VideoFestival, _VideoBase3); var _super3 = _createSuper(VideoFestival); function VideoFestival(main_title, state) { var _this4; return video_base_classCallCheck(this, VideoFestival), (_this4 = _super3.call(this, "video", main_title, state)).video_info = state.videoInfo, _this4.video_list = state.sectionEpisodes || [], _this4; } return video_base_createClass(VideoFestival, [ { key: "total", value: function total() { return this.video_list.length; } }, { key: "title", value: function title(p) { return p ? this.video_list[this.id(p)].title : this.video_info.title; } }, { key: "filename", value: function filename(p) { var title; if (p) { var id = this.id(p); title = this.main_title + (this.total() > 1 ? " P".concat(id + 1, " ").concat(this.video_list[id].title) : ""); } else title = this.video_info.title; return title.replace(/[\/\\:*?"<>|]+/g, ""); } }, { key: "aid", value: function aid(p) { return p ? this.video_list[this.id(p)].id : this.video_info.aid; } }, { key: "bvid", value: function bvid(p) { return p ? this.video_list[this.id(p)].bvid : this.video_info.bvid; } }, { key: "cid", value: function cid(p) { return p ? this.video_list[this.id(p)].cid : this.video_info.cid; } } ]), VideoFestival; }(VideoBase), Bangumi = function(_VideoBase4) { _inherits(Bangumi, _VideoBase4); var _super4 = _createSuper(Bangumi); function Bangumi(main_title, state) { var _this5; return video_base_classCallCheck(this, Bangumi), (_this5 = _super4.call(this, "bangumi", main_title, state)).epInfo = state.epInfo, _this5.epList = state.epList, _this5.epId = state.epId, _this5.epMap = state.epMap, _this5.isEpMap = state.isEpMap, _this5; } return video_base_createClass(Bangumi, [ { key: "total", value: function total() { return this.epList.length; } }, { key: "getEpisode", value: function getEpisode(p) { return p ? this.epList[this.id(p)] : this.epMap[this.epId] || this.epInfo || {}; } }, { key: "getEpPadLen", value: function getEpPadLen() { for (var n = Object.keys(this.isEpMap).length, len = n < 10 ? 1 : 0; n >= 1; ) n /= 10, len++; return len; } }, { key: "title", value: function title(p) { var ep = this.getEpisode(p), title = ""; if (this.isEpMap[ep.id]) { var epNum = Object.keys(this.isEpMap).length > 1 ? "EP".concat(("" + this.p(p)).padStart(this.getEpPadLen(), "0")) : ""; title = "".concat(this.main_title, " ").concat(epNum, " ").concat(ep.long_title); } else if (ep.share_copy) { var index = ep.share_copy.indexOf("》"); index > 0 ? (title = ep.share_copy.substring(index + 1), title = "".concat(this.main_title, " ").concat(title)) : title = "".concat(this.main_title, " ").concat(ep.title, " ").concat(ep.long_title); } else title = "".concat(ep.title, " ").concat(ep.long_title); return title.replaceAll("undefined", "").replaceAll(" ", " ").trim(); } }, { key: "filename", value: function filename(p) { return this.title(p).replace(/[\/\\:*?"<>|]+/g, ""); } }, { key: "aid", value: function aid(p) { return this.getEpisode(p).aid; } }, { key: "bvid", value: function bvid(p) { return this.getEpisode(p).bvid; } }, { key: "cid", value: function cid(p) { return this.getEpisode(p).cid; } }, { key: "epid", value: function epid(p) { return this.getEpisode(p).id; } }, { key: "needVip", value: function needVip(p) { return "会员" === this.getEpisode(p).badge; } }, { key: "vipNeedPay", value: function vipNeedPay(p) { return "付费" === this.getEpisode(p).badge; } }, { key: "isLimited", value: function isLimited() { return !1; } } ], [ { key: "build", value: function build() { var bangumiCache = cache.get("Bangumi"); if (location.href == bangumiCache.get("href") && bangumiCache.get("build")) return bangumiCache.get("build"); bangumiCache.set("build", null); var main_title, sid, epid, epMap = {}, pathname = location.pathname.toLowerCase(); pathname.startsWith("/bangumi/play/ss") ? (sid = pathname.match(/ss(\d+)/), sid = parseInt(sid[1])) : pathname.startsWith("/bangumi/play/ep") && (epid = pathname.match(/ep(\d+)/), epid = parseInt(epid[1])); try { console.log("location sid:", sid, "epid:", epid); var page_data = JSON.parse($(".toolbar").attr("mr-show")); main_title = page_data.msg.title, sid = sid || page_data.msg.season_id, epid = epid || page_data.msg.ep_id, console.log("mr-show get sid:", sid, "epid:", epid); } catch (_unused) { console.warn("mr-show get err"); } if (sid != bangumiCache.get("sid") && (bangumiCache.set("sid", sid), bangumiCache.set("epid", ""), bangumiCache.set("hasData", !1)), sid && !epid && _ajax({ type: "GET", url: "https://api.bilibili.com/pgc/player/web/v2/playurl?support_multi_audio=true&qn=80&fnver=0&fnval=4048&fourk=1&gaia_source=&from_client=BROWSER&is_main_page=true&need_fragment=true&season_id=".concat(sid, "&isGaiaAvoided=false&voice_balance=1&drm_tech_type=2"), dataType: "json", xhrFields: { withCredentials: !0 } }).then(function(res) { res && !res.code && bangumiCache.set("epid", res.result.view_info.report.ep_id); }), bangumiCache.get("lock")) throw "bangumiCache request waiting !"; if (bangumiCache.set("lock", !0), epid = epid || "", _ajax({ type: "GET", url: "https://api.bilibili.com/pgc/view/web/ep/list?season_id=".concat(sid = sid || "", "&ep_id=").concat(epid), dataType: "json", cache: !0 }).then(function(res) { res && !res.code && (bangumiCache.set("hasData", !0), bangumiCache.set("episodes", res.result.episodes || []), bangumiCache.set("section", res.result.section || [])); }).finally(function() { bangumiCache.set("lock", !1); }), bangumiCache.set("href", location.href), !epid && !bangumiCache.get("epid")) throw "epid not found !"; if (!bangumiCache.get("hasData")) throw "bangumiCache no data !"; var _step4, episodes = bangumiCache.get("episodes") || [], isEpMap = {}, _iterator4 = _createForOfIteratorHelper(episodes = [].concat(_toConsumableArray(episodes.filter(function(a) { return 1 != a.badge_type; })), _toConsumableArray(episodes.filter(function(a) { return 1 == a.badge_type; })))); try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done; ) { var ep = _step4.value; [ 0, 2, 3 ].includes(ep.badge_type) && (isEpMap[ep.id] = !0); } } catch (err) { _iterator4.e(err); } finally { _iterator4.f(); } var _step5, _iterator5 = _createForOfIteratorHelper(bangumiCache.get("section") || []); try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done; ) { var item = _step5.value; if (item.episodes) { var _step6, _iterator6 = _createForOfIteratorHelper(item.episodes); try { for (_iterator6.s(); !(_step6 = _iterator6.n()).done; ) { var _ep = _step6.value; episodes.push(_ep); } } catch (err) { _iterator6.e(err); } finally { _iterator6.f(); } } } } catch (err) { _iterator5.e(err); } finally { _iterator5.f(); } epid = epid || bangumiCache.get("epid"); for (var _id = 0, i = 0; i < episodes.length; i++) epMap[episodes[i].id] = episodes[i], episodes[i].id == epid && (_id = i); var bangumi = new Bangumi(main_title, { p: _id + 1, epId: epid, epList: episodes, isEpMap: isEpMap, epMap: epMap, epInfo: epMap[epid] }); return bangumiCache.set("build", bangumi), bangumi; } } ]), Bangumi; }(VideoBase), Cheese = function(_VideoBase5) { _inherits(Cheese, _VideoBase5); var _super5 = _createSuper(Cheese); function Cheese(main_title, state) { var _this6; return video_base_classCallCheck(this, Cheese), (_this6 = _super5.call(this, "cheese", main_title, state)).episodes = state.episodes, _this6; } return video_base_createClass(Cheese, [ { key: "total", value: function total() { return this.episodes.length; } }, { key: "title", value: function title(p) { return this.episodes[this.id(p)].title; } }, { key: "filename", value: function filename(p) { return "".concat(this.main_title, " EP").concat(this.p(p), " ").concat(this.title(p)).replace(/[\/\\:*?"<>|]+/g, ""); } }, { key: "aid", value: function aid(p) { return this.episodes[this.id(p)].aid; } }, { key: "cid", value: function cid(p) { return this.episodes[this.id(p)].cid; } }, { key: "epid", value: function epid(p) { return this.episodes[this.id(p)].id; } } ], [ { key: "build", value: function build() { var epid, cheeseCache = cache.get("Cheese"), sid = (location.href.match(/\/cheese\/play\/ss(\d+)/i) || [ "", "" ])[1]; if (sid || (epid = (location.href.match(/\/cheese\/play\/ep(\d+)/i) || [ "", "" ])[1]), epid || (epid = parseInt($(".bpx-state-active").eq(0).attr("data-episodeid"))), sid && sid != cheeseCache.get("sid") && (cheeseCache.set("sid", sid), cheeseCache.set("episodes", null)), !cheeseCache.get("episodes")) { if (cheeseCache.get("lock")) throw "cheese request waiting !"; if (cheeseCache.set("lock", !0), !sid && !epid) return void console.log("get_season error"); _ajax({ url: "https://api.bilibili.com/pugv/view/web/season?season_id=".concat(sid || "", "&ep_id=").concat(epid || ""), xhrFields: { withCredentials: !0 }, dataType: "json" }).then(function(res) { res.code ? Message.warning("获取剧集信息失败") : cheeseCache.set("episodes", res.data.episodes); }).finally(function() { cheeseCache.set("lock", !1); }); } var episodes = cheeseCache.get("episodes"); if (!episodes) throw "cheese has not data !"; for (var _id = -1, i = 0; i < episodes.length; i++) { if (!epid) { epid = episodes[i].id, _id = 0; break; } if (episodes[i].id == epid) { _id = i; break; } } if (_id < 0) throw cheeseCache.set("episodes", null), "episodes need reload !"; return new Cheese(($("div.archive-title-box").text() || "unknown").replace(/[\/\\:*?"<>|]+/g, ""), { p: _id + 1, episodes: episodes }); } } ]), Cheese; }(VideoBase); function type() { var routerMap = { video: "/video/", list: "/list/", festival: "/festival/", bangumi: "/bangumi/play/", cheese: "/cheese/play/" }; for (var key in routerMap) if (location.pathname.startsWith(routerMap[key])) return key; return "?"; } var q_map = { "8K 超高清": 127, "4K 超高清": 120, "1080P 60帧": 116, "1080P 高码率": 112, "1080P 高清": 80, "720P 准高清": 64, "480P 清晰": 32, "360P 流畅": 16, "自动": 32 }; var video = { type: type, base: function base() { var _type = type(), vb = new VideoBase; if ("video" === _type) { var state = window.__INITIAL_STATE__, main_title = state.videoData && state.videoData.title; vb = new Video(main_title, state); } else if ("list" === _type) { var _state = window.__INITIAL_STATE__, _main_title = _state.mediaListInfo && _state.mediaListInfo.upper.name + "-" + _state.mediaListInfo.title; vb = new VideoList(_main_title, _state); } else if ("festival" === _type) { var _state2 = window.__INITIAL_STATE__, _main_title2 = _state2.title; vb = new VideoFestival(_main_title2, _state2); } else "bangumi" === _type ? vb = Bangumi.build() : "cheese" === _type && (vb = Cheese.build()); return vb; }, get_quality: function get_quality() { var _q = 0, _q_max = 0, _type = type(); if ("cheese" === _type) { var q = $("div.edu-player-quality-item.active span").text(), q_max = $($("div.edu-player-quality-item span").get(0)).text(); _q = q in q_map ? q_map[q] : 0, _q_max = q_max in q_map ? q_map[q_max] : 0; } else { var keys = Object.keys(videoQualityMap), _q2 = parseInt(("video" === _type ? $("li.bpx-player-ctrl-quality-menu-item.bpx-state-active") : $("li.squirtle-select-item.active")).attr("data-value")), _q_max2 = parseInt($(("video" === _type ? $("li.bpx-player-ctrl-quality-menu-item") : $("li.squirtle-select-item")).get(0)).attr("data-value")); _q = keys.indexOf("".concat(_q2)) > -1 ? _q2 : 0, _q_max = keys.indexOf("".concat(_q_max2)) > -1 ? _q_max2 : 0; } return _q || (_q = parseInt($("li.bpx-player-ctrl-quality-menu-item.bpx-state-active").attr("data-value") || _q)), _q_max || (_q_max = parseInt($("li.bpx-player-ctrl-quality-menu-item").attr("data-value") || _q_max)), !_q_max && (_q_max = 80) && console.error("video get quality max error"), !_q && (_q = _q_max < 80 ? _q_max : 80), user.isVIP() || (_q = _q > 80 ? 80 : _q), { q: _q, q_max: _q_max }; }, get_quality_support: function get_quality_support() { var list, quality_list = [], _type = type(); if ("cheese" === _type) (list = $("div.edu-player-quality-item span")).each(function() { var k = $(this).text(); q_map[k] && quality_list.push(q_map[k]); }); else { var keys = Object.keys(videoQualityMap); (list = [ "video", "list" ].includes(_type) ? $("li.bpx-player-ctrl-quality-menu-item") : $("li.squirtle-select-item"))[0] || (list = $("li.bpx-player-ctrl-quality-menu-item")), list && list.length && list.each(function() { var q = "".concat(parseInt($(this).attr("data-value"))); keys.indexOf(q) > -1 && quality_list.push(q); }); } return quality_list.length ? quality_list : [ "80", "64", "32", "16" ]; } }; function store_typeof(o) { return store_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, store_typeof(o); } function store_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, store_toPropertyKey(o.key), o); } } function store_toPropertyKey(t) { var i = function store_toPrimitive(t, r) { if ("object" != store_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != store_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }(t, "string"); return "symbol" == store_typeof(i) ? i : i + ""; } var Store = function() { function Store() { !function store_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }(this, Store), this.prefix = "bp_"; } return function store_createClass(e, r, t) { return r && store_defineProperties(e.prototype, r), t && store_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }(Store, [ { key: "get", value: function get() { var key = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; return localStorage.getItem(this.prefix + key) || ""; } }, { key: "set", value: function set() { var key = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", value = arguments.length > 1 ? arguments[1] : void 0; localStorage.setItem(this.prefix + key, value); } } ]), Store; }(), store = new Store; function api_typeof(o) { return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } function api_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = api_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function api_toConsumableArray(r) { return function api_arrayWithoutHoles(r) { if (Array.isArray(r)) return api_arrayLikeToArray(r); }(r) || function api_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }(r) || api_unsupportedIterableToArray(r) || function api_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function api_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return api_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? api_arrayLikeToArray(r, a) : void 0; } } function api_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _regeneratorRuntime() { var r = _regenerator(), e = r.m(_regeneratorRuntime), t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { throw: 1, return: 2, break: 3, continue: 3 }; function a(r) { var e, t; return function(n) { e || (e = { stop: function stop() { return t(n.a, 2); }, catch: function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, _regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (_regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && o.reverse()); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new _OverloadYield(r, e); }, AsyncIterator: _regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? _regeneratorAsyncGen : _regeneratorAsync)(a(r), e, t, o, u); }, keys: _regeneratorKeys, values: _regeneratorValues }; })(); } function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(api_typeof(e) + " is not iterable"); } function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (;r.length; ) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; } function _regeneratorAsync(n, e, r, t, o) { var a = _regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function(n) { return n.done ? n.value : a.next(); }); } function _regeneratorAsyncGen(r, e, t, o, n) { return new _regeneratorAsyncIterator(_regenerator().w(r, e, t, o), n || Promise); } function _regeneratorAsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o), u = c.value; return u instanceof _OverloadYield ? e.resolve(u.v).then(function(t) { n("next", t, i, f); }, function(t) { n("throw", t, i, f); }) : e.resolve(u).then(function(t) { c.value = t, i(c); }, function(t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (_regeneratorDefine2(_regeneratorAsyncIterator.prototype), _regeneratorDefine2(_regeneratorAsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function() { return this; })), _regeneratorDefine2(this, "_invoke", function(t, o, i) { function f() { return new e(function(e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); } function _regenerator() { var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function(r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function(o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y; ) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { return this; }), _regeneratorDefine2(u, "toString", function() { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function(e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } function _OverloadYield(e, d) { this.v = e, this.k = d; } function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } function get_url_base(page, quality, video_format, success, error, request_type) { var _success, _error; _success = "function" == typeof success ? function _success(e) { success(e); } : function _success(res) { return console.log(res); }, _error = "function" == typeof error ? function _error(e) { message_Message_error("请求失败"), error(e); } : function _error(err) { return console.error(err); }; var vb = video.base(), _ref = [ vb.aid(page), vb.bvid(page), vb.cid(page), vb.epid(page), quality || video.get_quality().q, vb.type() ], aid = _ref[0], bvid = _ref[1], cid = _ref[2], epid = _ref[3], q = _ref[4], type = _ref[5], format = video_format || config_config.format; "auto" === request_type && user.needReplace() && (request_type = "remote"); var base_api, url_replace_cdn = function url_replace_cdn(url) { if ("0" === config_config.host_key) return url; var url_tmp = url.split("/"), mapping = hostMap[config_config.host_key]; return "string" == typeof mapping && mapping.length ? mapping.at(0).match(/[a-z]/) && (url_tmp[2] = mapping) : "function" == typeof mapping && (url_tmp[2] = mapping()), url = url_tmp.join("/"); }, ajax_obj = { type: "GET", dataType: "json" }; if ("auto" === request_type || "local" === request_type) { var fnver, fnval; "cheese" === type ? (base_api = "https://api.bilibili.com/pugv/player/web/playurl", fnver = "mp4" === format ? 1 : 0, fnval = 80) : (base_api = "video" === type ? "https://api.bilibili.com/x/player/playurl" : "https://api.bilibili.com/pgc/player/web/playurl", fnver = 0, fnval = { dash: 4048, flv: 4049, mp4: 0 }[format] || 0), base_api += "?avid=".concat(aid, "&bvid=").concat(bvid, "&cid=").concat(cid, "&qn=").concat(q, "&fnver=").concat(fnver, "&fnval=").concat(fnval, "&fourk=1&ep_id=").concat(epid, "&type=").concat(format, "&otype=json"), base_api += "mp4" === format ? "&platform=html5&high_quality=1" : "", ajax_obj.xhrFields = { withCredentials: !0 }; } else { base_api = config_config.base_api, base_api += "?av=".concat(aid, "&bv=").concat(bvid, "&cid=").concat(cid, "&ep=").concat(epid, "&q=").concat(q, "&type=").concat(type, "&format=").concat(format, "&otype=json"), page && (base_api += "&s"); var _ref2 = [ store.get("auth_id"), store.get("auth_sec") ], auth_id = _ref2[0], auth_sec = _ref2[1]; auth_id && auth_sec && (base_api += "&auth_id=".concat(auth_id, "&auth_sec=").concat(auth_sec)); } var resultConvertor = function resultConvertor(data, _success) { var checkTask = function checkTask(key, backup_key) { return data[backup_key] ? _ajax({ type: "GET", url: data[key], cache: !1, timeout: 1e3, success: function success(res) { return key; }, error: function error(res) { return "timeout" == res.statusText ? key : backup_key; } }) : Promise.resolve(key); }; new Promise(function(resolve, reject) { var promiseList = [], valueList = []; data.url ? promiseList.push(checkTask("url", "backup_url")) : (promiseList.push(checkTask("video", "backup_video")), promiseList.push(checkTask("audio", "backup_audio"))); var timer = setTimeout(function() { resolve(valueList); }, 1500), index = 0; promiseList.forEach(function() { var _ref3 = function _asyncToGenerator(n) { return function() { var t = this, e = arguments; return new Promise(function(r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }(_regeneratorRuntime().mark(function _callee(promise) { var result; return _regeneratorRuntime().wrap(function _callee$(_context) { for (;;) switch (_context.prev = _context.next) { case 0: return _context.prev = 0, _context.next = 3, promise; case 3: result = _context.sent, _context.next = 9; break; case 6: _context.prev = 6, _context.t0 = _context.catch(0), result = _context.t0; case 9: console.log("use " + result), valueList[index++] = result, index == promiseList.length && (clearInterval(timer), resolve(valueList)); case 12: case "end": return _context.stop(); } }, _callee, null, [ [ 0, 6 ] ]); })); return function(_x) { return _ref3.apply(this, arguments); }; }()); }).then(function(resList) { if (console.log("use data key: ", resList), resList) { var _step, _iterator = api_createForOfIteratorHelper(resList = api_toConsumableArray(resList)); try { for (_iterator.s(); !(_step = _iterator.n()).done; ) { var key = _step.value; data[key] && ([ "url", "backup_url" ].includes(key) ? data.url = data[key] : [ "video", "backup_video" ].includes(key) ? data.video = data[key] : [ "audio", "backup_audio" ].includes(key) && (data.audio = data[key])); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } }).finally(function() { _success(data); }); }; ajax_obj.url = base_api, ajax(ajax_obj).then(function(res) { var data; if (res.code || (data = res.result || res.data), !data) return "auto" === request_type ? void get_url_base(page, quality, video_format, success, error, "remote") : (res.url && (res.url = url_replace_cdn(res.url)), res.video && (res.video = url_replace_cdn(res.video)), res.audio && (res.audio = url_replace_cdn(res.audio)), void resultConvertor(res, _success)); if (data.dash) { for (var result = { code: 0, quality: data.quality, accept_quality: data.accept_quality, video: "", audio: "" }, videos = data.dash.video, i = 0; i < videos.length; i++) { var _video = videos[i]; if (_video.id <= q) { result.video = url_replace_cdn(_video.base_url), result.audio = url_replace_cdn(data.dash.audio[0].base_url), result.backup_video = _video.backup_url && url_replace_cdn(_video.backup_url[0]), result.backup_audio = data.dash.audio[0].backup_url && url_replace_cdn(data.dash.audio[0].backup_url[0]); break; } } resultConvertor(result, _success); } else resultConvertor({ code: 0, quality: data.quality, accept_quality: data.accept_quality, url: url_replace_cdn(data.durl[0].url), backup_url: data.durl[0].backup_url && url_replace_cdn(data.durl[0].backup_url[0]) }, _success); }).catch(function(err) { return _error(err); }); } function _get_subtitle(p, callback) { var to_blob_url = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], vb = video.base(), _ref4 = [ vb.aid(p), vb.cid(p), vb.epid(p) ], cid = _ref4[1], epid = _ref4[2]; ajax({ url: "https://api.bilibili.com/x/player/wbi/v2?aid=".concat(_ref4[0], "&cid=").concat(cid, "&ep_id=").concat(epid), dataType: "json", xhrFields: { withCredentials: !0 } }).then(function(res) { !res.code && res.data.subtitle.subtitles[0] ? ajax({ url: "".concat(res.data.subtitle.subtitles[0].subtitle_url), dataType: "json" }).then(function(res) { var _step2, webvtt = "WEBVTT\n\n", _iterator2 = api_createForOfIteratorHelper(res.body || [ { from: 0, to: 0, content: "" } ]); try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { var data = _step2.value, a = new Date(1e3 * (parseInt(data.from) - 28800)).toTimeString().split(" ")[0] + "." + (data.from.toString().split(".")[1] || "000").padEnd(3, "0"), b = new Date(1e3 * (parseInt(data.to) - 28800)).toTimeString().split(" ")[0] + "." + (data.to.toString().split(".")[1] || "000").padEnd(3, "0"); webvtt += "".concat(a, " --\x3e ").concat(b, "\n").concat(data.content.trim(), "\n\n"); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } callback(to_blob_url ? URL.createObjectURL(new Blob([ webvtt ], { type: "text/vtt" })) : webvtt); }).catch(callback) : callback(); }).catch(callback); } var api = { get_url: function get_url(success, error) { var request_type = config_config.request_type, format = config_config.format; get_url_base(0, parseInt(config_config.video_quality), format, success, error, request_type); }, get_urls: function get_urls(page, quality, format, success, error) { get_url_base(page, quality, format, success, error, config_config.request_type); }, get_subtitle_url: function get_subtitle_url(p, callback) { _get_subtitle(p, callback, !0); }, get_subtitle_data: function get_subtitle_data(p, callback) { _get_subtitle(p, callback, !1); } }; function runtime_lib_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = function runtime_lib_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return runtime_lib_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? runtime_lib_arrayLikeToArray(r, a) : void 0; } }(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function runtime_lib_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function runtime_lib_typeof(o) { return runtime_lib_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, runtime_lib_typeof(o); } function runtime_lib_regeneratorRuntime() { var r = runtime_lib_regenerator(), e = r.m(runtime_lib_regeneratorRuntime), t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { throw: 1, return: 2, break: 3, continue: 3 }; function a(r) { var e, t; return function(n) { e || (e = { stop: function stop() { return t(n.a, 2); }, catch: function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, runtime_lib_regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (runtime_lib_regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && o.reverse()); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new runtime_lib_OverloadYield(r, e); }, AsyncIterator: runtime_lib_regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? runtime_lib_regeneratorAsyncGen : runtime_lib_regeneratorAsync)(a(r), e, t, o, u); }, keys: runtime_lib_regeneratorKeys, values: runtime_lib_regeneratorValues }; })(); } function runtime_lib_regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(runtime_lib_typeof(e) + " is not iterable"); } function runtime_lib_regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (;r.length; ) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; } function runtime_lib_regeneratorAsync(n, e, r, t, o) { var a = runtime_lib_regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function(n) { return n.done ? n.value : a.next(); }); } function runtime_lib_regeneratorAsyncGen(r, e, t, o, n) { return new runtime_lib_regeneratorAsyncIterator(runtime_lib_regenerator().w(r, e, t, o), n || Promise); } function runtime_lib_regeneratorAsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o), u = c.value; return u instanceof runtime_lib_OverloadYield ? e.resolve(u.v).then(function(t) { n("next", t, i, f); }, function(t) { n("throw", t, i, f); }) : e.resolve(u).then(function(t) { c.value = t, i(c); }, function(t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (runtime_lib_regeneratorDefine2(runtime_lib_regeneratorAsyncIterator.prototype), runtime_lib_regeneratorDefine2(runtime_lib_regeneratorAsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function() { return this; })), runtime_lib_regeneratorDefine2(this, "_invoke", function(t, o, i) { function f() { return new e(function(e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); } function runtime_lib_regenerator() { var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return runtime_lib_regeneratorDefine2(u, "_invoke", function(r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function(o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y; ) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (runtime_lib_regeneratorDefine2(t = {}, n, function() { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, runtime_lib_regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, runtime_lib_regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), runtime_lib_regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", runtime_lib_regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), runtime_lib_regeneratorDefine2(u), runtime_lib_regeneratorDefine2(u, o, "Generator"), runtime_lib_regeneratorDefine2(u, n, function() { return this; }), runtime_lib_regeneratorDefine2(u, "toString", function() { return "[object Generator]"; }), (runtime_lib_regenerator = function _regenerator() { return { w: i, m: f }; })(); } function runtime_lib_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } runtime_lib_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { runtime_lib_regeneratorDefine2(e, r, function(e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, runtime_lib_regeneratorDefine2(e, r, n, t); } function runtime_lib_OverloadYield(e, d) { this.v = e, this.k = d; } function runtime_lib_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } function runtime_lib_asyncToGenerator(n) { return function() { var t = this, e = arguments; return new Promise(function(r, o) { var a = n.apply(t, e); function _next(n) { runtime_lib_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { runtime_lib_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } function runtime_lib_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, runtime_lib_toPropertyKey(o.key), o); } } function runtime_lib_toPropertyKey(t) { var i = function runtime_lib_toPrimitive(t, r) { if ("object" != runtime_lib_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != runtime_lib_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }(t, "string"); return "symbol" == runtime_lib_typeof(i) ? i : i + ""; } var RuntimeLib = function() { function RuntimeLib(config) { !function runtime_lib_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }(this, RuntimeLib), this.config = config, this.moduleAsync, this.anyResolved = !1; } return function runtime_lib_createClass(e, r, t) { return r && runtime_lib_defineProperties(e.prototype, r), t && runtime_lib_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }(RuntimeLib, [ { key: "getModulePromise", value: function getModulePromise() { var _this = this, _this$config = this.config, urls = _this$config.urls, errs = (_this$config.getModule, []); return urls && urls.length ? new Promise(function(resolve, reject) { var i = 0; urls.forEach(function(url) { setTimeout(runtime_lib_asyncToGenerator(runtime_lib_regeneratorRuntime().mark(function _callee() { var code; return runtime_lib_regeneratorRuntime().wrap(function _callee$(_context) { for (;;) switch (_context.prev = _context.next) { case 0: if (_context.prev = 0, !_this.anyResolved) { _context.next = 3; break; } return _context.abrupt("return"); case 3: return console.log("[Runtime Library] Start download from ".concat(url)), _context.next = 6, _ajax({ url: url, type: "GET", dataType: "text", cache: !0 }); case 6: if (code = _context.sent, !_this.anyResolved) { _context.next = 9; break; } return _context.abrupt("return"); case 9: console.log("[Runtime Library] Downloaded from ".concat(url, " , length = ").concat(code.length)), _this.anyResolved = !0, resolve(code), _context.next = 20; break; case 14: if (_context.prev = 14, _context.t0 = _context.catch(0), !_this.anyResolved) { _context.next = 18; break; } return _context.abrupt("return"); case 18: errs.push({ url: url, err: _context.t0 }), 0 === --i && (console.error(errs), reject(errs)); case 20: case "end": return _context.stop(); } }, _callee, null, [ [ 0, 14 ] ]); })), 1e3 * i++); }); }) : Promise.reject(new Error("No urls provided")); } } ]), RuntimeLib; }(), filename_npm_mapping = { "jszip.min.js": "dist/jszip.min.js", "flv.min.js": "dist/flv.min.js", "DPlayer.min.js": "dist/DPlayer.min.js" }, cdn_support_mapping = { "@ffmpeg/ffmpeg": [ "unpkg", "jsdelivr" ] }, cdn_map = { cloudflare: function cloudflare(name, ver, filename) { return "https://cdnjs.cloudflare.com/ajax/libs/".concat(name, "/").concat(ver, "/").concat(filename); }, unpkg: function unpkg(name, ver, filename) { return filename = filename_npm_mapping[filename] || filename, "https://unpkg.com/".concat(name, "@").concat(ver, "/").concat(filename); }, jsdelivr: function jsdelivr(name, ver, filename) { return filename = filename_npm_mapping[filename] || filename, "https://cdn.jsdelivr.net/npm/".concat(name, "@").concat(ver, "/").concat(filename); }, staticfile: function staticfile(name, ver, filename) { return "https://cdn.staticfile.org/".concat(name, "/").concat(ver, "/").concat(filename); }, bootcdn: function bootcdn(name, ver, filename) { return "https://cdn.bootcdn.net/ajax/libs/".concat(name, "/").concat(ver, "/").concat(filename); } }, urls = function urls(_ref2) { var name = _ref2.name, ver = _ref2.ver, filename = _ref2.filename, cdn_keys = _ref2.cdn_keys, support = cdn_support_mapping[name]; return (cdn_keys = support ? cdn_keys ? cdn_keys.filter(function(key) { return key in cdn_map && support.includes(key); }) : support.filter(function(key) { return key in cdn_map; }) : cdn_keys ? cdn_keys.filter(function(key) { return key in cdn_map; }) : Object.keys(cdn_map)).map(function(k) { return cdn_map[k](name, ver, filename); }); }, runtime_div = document.createElement("div"); runtime_div.id = "bp_runtime_div", runtime_div.style.display = "none", document.getElementById(runtime_div.id) || document.body.appendChild(runtime_div); var JSZip, DPlayer, QRCode, md5, FFmpegWASM, count = 0, scripts = [], getModules = [], initIframe = function initIframe(name, ver, filename, getModule) { count++, new RuntimeLib({ urls: urls({ name: name, ver: ver, filename: filename }), getModule: getModule }).getModulePromise().then(function(script) { scripts.push(script), getModules.push(getModule); }).catch(function(err) { console.error("[Runtime Library] Failed to load ".concat(name, " from CDN"), err); }).finally(function() { 0 === --count && (!function iframeInvoke(scripts, getModules) { console.log("[Runtime Library] iframe invoke scripts, size =", scripts.length); var scriptTags = scripts.map(function(code) { return "