diff --git a/alitest.js b/alitest.js new file mode 100644 index 00000000..f3413b55 --- /dev/null +++ b/alitest.js @@ -0,0 +1,2493 @@ +// ==UserScript== +// @name 阿里云盘助手 +// @namespace http://tampermonkey.net/ +// @version 2.0.5 +// @author 罗根大人 +// @description 支持生成文件下载链接、修改文件后缀,支持第三方播放器Artplayer(突破视频2分钟限制,长按倍速,选集,历史播放) +// @license MIT +// @icon https://img.alicdn.com/imgextra/i1/O1CN01JDQCi21Dc8EfbRwvF_!!6000000000236-73-tps-64-64.ico +// @match https://www.aliyundrive.com/* +// @require https://cdn.bootcdn.net/ajax/libs/vue/3.2.47/vue.global.min.js +// @require data:application/javascript,window.Vue%3DVue%3B +// @require https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.min.js +// @require https://cdn.bootcdn.net/ajax/libs/axios/1.3.4/axios.min.js +// @require https://cdn.bootcdn.net/ajax/libs/hls.js/1.3.3/hls.min.js +// @require https://cdn.bootcdn.net/ajax/libs/artplayer/4.6.2/artplayer.min.js +// @require https://cdn.bootcdn.net/ajax/libs/element-plus/2.2.32/index.full.min.js +// @resource element-plus/dist/index.css https://cdn.bootcdn.net/ajax/libs/element-plus/2.2.32/index.min.css +// @grant GM_getResourceText +// @grant unsafeWindow +// ==/UserScript== + +(t=>{const e=document.createElement("style");e.dataset.source="vite-plugin-monkey",e.innerText=t,document.head.appendChild(e)})(".breadcrumb-item--tV9dn[data-v-c202f97e]{font-size:12px}.player[data-v-12e915cd]{display:flex;height:100%;align-items:center;justify-content:center;flex-direction:column}.notice[data-v-5d43769b]{color:#6592f9;font-size:10pt}.notice1[data-v-5d43769b]{margin:2px 0 0;color:#e6a23c;font-size:8pt}"); + +var __defProp = Object.defineProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; +(function(elementPlus, $2, axios2, vue, Hls2, Artplayer2) { + "use strict"; + var monkeyWindow = window; + var unsafeWindow = /* @__PURE__ */ (() => { + return monkeyWindow.unsafeWindow; + })(); + let hideShow = function() { + let t = $2(".aDrive-notice"); + t.length && "function" == typeof t.remove ? t.remove() : "function" == typeof t.removeNode && t.removeNode(true); + }; + let showError$1 = function(msg, timeout) { + let jq = $2; + hideShow(); + var element = jq(".aDrive div"); + var elementhtml = '
' + msg + '
'; + if (element.length) { + element.append(elementhtml); + } else { + jq(document.body).append('
' + elementhtml + "
"); + } + var hide = hideShow; + setTimeout(function() { + hide(); + }, timeout || 3e3); + }; + let showSuccess = function(msg, timeout) { + let jq = $2; + hideShow(); + let element = jq(".aDrive div"); + let elementhtml = '
' + msg + '
'; + if (element.length) { + element.append(elementhtml); + } else { + jq(document.body).append('
' + elementhtml + "
"); + } + var hide = hideShow; + setTimeout(function() { + hide(); + }, timeout || 3e3); + }; + let showDiv = function(title2, app) { + function format(s, c) { + return s.replace(/{(\w+)}/g, function(m, p) { + return c[p]; + }); + } + let html2 = '
"; + $2("body").append(html2); + app.mount( + (() => { + const app2 = document.createElement("div"); + $2(".ant-modal-body").append(app2); + return app2; + })() + ); + $2(".ant-modal-Link .icon-wrapper--3dbbo").one("click", function() { + $2(".ant-modal-Link").remove(); + app.unmount(); + }); + $2(".ant-modal-Link .ant-modal-wrap").on("click", function(event) { + if ($2(event.target).closest(".ant-modal-content").length === 0) { + $2(".ant-modal-Link").remove(); + app.unmount(); + } + }); + }; + class Store { + constructor() { + this.prefix = "LGZS_"; + } + getAliyun(key = "") { + let item = localStorage.getItem(key); + if (!item) { + return ""; + } + try { + return JSON.parse(item); + } catch (e) { + return item; + } + } + getItem(key = "") { + return this.getAliyun(this.prefix + key); + } + setItem(key = "", value) { + localStorage.setItem(this.prefix + key, value instanceof Object ? JSON.stringify(value) : value); + } + removeItem(key) { + if (key == null || key == "") { + return; + } + localStorage.removeItem(this.prefix + key); + } + } + const store = new Store(); + const getDownloadUrl = (data) => axios2.post("/v2/file/get_download_url", data); + const search = (data) => axios2.post("/adrive/v3/file/search", data); + const videoUpdate = (data) => axios2.post("/adrive/v2/video/update", data); + const homeWidgets = () => axios2.post("/apps/v1/users/home/widgets", { "context": { "recentUsed": { "limit": 20 }, "recentSaved": { "limit": 1 } } }); + const shareVideoInfo = (fileId, share_id, shareToken) => axios2({ + method: "post", + url: "/v2/file/get_share_link_video_preview_play_info", + data: { + category: "live_transcoding", + file_id: fileId, + get_preview_url: true, + share_id, + template_id: "", + get_subtitle_info: true + }, + headers: { + "content-type": "application/json;charset=UTF-8", + "x-share-token": shareToken + } + }); + const videoPreviewPlayInfo = (data) => axios2.post("/v2/file/get_video_preview_play_info", data); + const shareLinkDownloadUrl = (data, shareToken) => axios2({ + method: "post", + url: "/v2/file/get_share_link_download_url", + data: { + ...data + }, + headers: { + "content-type": "application/json;charset=UTF-8", + "x-share-token": shareToken + } + }); + const createSessionUrl = (data, signature, deviceId) => axios2({ + method: "post", + url: "/users/v1/users/device/create_session", + data: { + ...data + }, + headers: { + "content-type": "application/json;charset=UTF-8", + "x-canary": "client=web,app=adrive,version=v3.17.0", + "_token": false, + "x-signature": signature, + "x-device-id": deviceId + } + }); + function copy(obj) { + var newobj = obj.constructor === Array ? [] : {}; + if (typeof obj !== "object") { + return; + } + for (var i in obj) { + newobj[i] = typeof obj[i] === "object" ? copy(obj[i]) : obj[i]; + } + return newobj; + } + class User { + constructor() { + this.is_login = false; + this.vip_status = 0; + this.mid = ""; + this.uname = ""; + this.has_init = false; + this.page = { + id: "", + order: "", + order_by: "", + // 当前路径文件夹名称 + folderName: "", + items: [] + }; + this.video = { + id: "", + // 时长 + duration: "", + // 播放的时长 + play_cursor: "", + // 视频名称 + name: "", + thumbnail: "", + // 0 首页自己的视频 1分享的视频 + type: -1, + //当前视频所在的文件夹名称 + folderName: "", + //跳转地址 + href: "" + }; + } + getVideoPage() { + return this.video; + } + //保存当前播放器设置 + saveVideoPlayerSet(art) { + let playerSet = { + // 全屏 + fullscreen: art.fullscreen, + //网页全屏 + fullscreenWeb: art.fullscreenWeb, + // 播放速度 + playbackRate: art.playbackRate, + // 清晰度 + qualityHtml: art.qualityHtml + }; + store.setItem("playerSet", playerSet); + } + // 获取播放器设置页面 + getVideoPlayerSet() { + let playerSet = store.getItem("playerSet"); + if (playerSet == "") { + playerSet = {}; + } + return playerSet; + } + // 保存视频信息 + saveVideoInfo(id, name, progress, folderName, href, share2, play_cursor) { + let videoInfo = { + "category": "video", + "name": name, + "progress": progress, + "id": id, + "folderName": folderName, + "href": href, + "share": share2, + "play_cursor": play_cursor + }; + let list = store.getItem("historyVideo"); + if (list == "") { + list = []; + } + let newList = [videoInfo]; + list.forEach(function(item, index) { + if (item.id !== id && newList.length <= 5) { + newList.push(item); + } + }); + store.setItem("historyVideo", newList); + } + clearAll() { + store.removeItem("LG_session"); + store.removeItem("x-device-id"); + store.removeItem("x-signature"); + user.clearVideoHistory(); + } + clearVideoHistory() { + store.removeItem("historyVideo"); + } + //获取视频历史列表 + getVideoLookList() { + let historyVideo = store.getItem("historyVideo"); + if (historyVideo == "") { + historyVideo = []; + } + return historyVideo; + } + getDeviceId() { + return store.getItem("x-device-id"); + } + getSignature() { + return store.getItem("x-signature"); + } + getPage() { + var page = this.page; + if (!page.items) { + page.items = []; + } + return page; + } + getAria2Set() { + let aria2Set = store.getItem("Aria2Set"); + if (aria2Set == "") { + aria2Set = { + link: "http://localhost:6800/jsonrpc", + path: "D:/aliyundriveDownloads", + token: "", + dirCreate: false + }; + } + return aria2Set; + } + getVideoSet() { + let videoSet = store.getItem("VideoSet"); + if (videoSet == "") { + videoSet = { + quality: null + }; + } + return videoSet; + } + setVideoSet(videoSet) { + store.setItem("VideoSet", videoSet); + } + setAria2Set(aria2Set) { + store.setItem("Aria2Set", aria2Set); + } + refSession() { + let now = new Date().getTime(); + let time = store.getItem("LG_session") || 0; + let token = user.getToken(); + if (token == null) { + showError$1("获取当前凭证失败,请刷新或重新登录"); + return; + } else if (!user.isExpires(token)) { + showError$1("Token已失效,请刷新或重新登录"); + return; + } + let d = user.getDeviceId(); + let s = user.getSignature(); + if (now - time > 18e4 && token.user_id || d == "" || s == "") { + store.setItem("LG_session", now); + store.setItem("LG_session_Ref", "true"); + } else { + console.log("未到刷新时间或者时机"); + return; + } + user.session(token, function(a, b) { + store.removeItem("LG_session_Ref"); + }); + } + session(token, callback) { + if (token == null) { + showError$1("刷新Session失败,token为空,请刷新或重新登录"); + return {}; + } + return new Promise((resolve, reject) => { + let deviceId = token.user_id.split("").reverse().join("").substring(0, 20); + let userId = token.user_id; + unsafeWindow.luoGenSession(function(p, signature, nd) { + deviceId = nd; + console.log("你好,罗根!"); + createSessionUrl({ + "deviceName": "Edge浏览器", + "modelName": "Windows网页版", + "pubKey": p + }, signature, deviceId).then((res) => { + store.setItem("x-device-id", deviceId); + store.setItem("x-signature", signature); + resolve({ + deviceId, + signature + }); + callback && callback(p, signature); + }).catch((e) => { + reject(e); + callback && callback(); + }); + }, window.atob("NWRkZTRlMWJkZjllNDk2NmIzODdiYTU4ZjRiM2ZkYzM="), deviceId, userId); + }); + } + /** + * 是否在首页 + */ + home() { + return location.href.indexOf("com/drive") > 0; + } + // 没过期返回true 过期 false + isExpires(item) { + if (item == null || !item.expire_time) { + return false; + } + let time = Date.parse(item.expire_time) - Date.now(); + return time > 0; + } + getShareToken() { + return store.getAliyun("shareToken"); + } + getToken() { + let token = localStorage.getItem(`token`); + if (token != null) { + return JSON.parse(token); + } + return token; + } + // 获取当前页面上所有的文件 + getAllFileList() { + let fileList2 = this.getPage().items; + if (fileList2.length === 0) { + console.error("获取文件列表失败"); + return []; + } + return copy(fileList2); + } + // 获取已选择的文件 + selectedFileList() { + let jq = $2; + let selectedFileList = [], fileList2 = this.getAllFileList(); + if (fileList2.length === 0) { + console.error("获取文件列表失败"); + return []; + } + let node = ""; + if (jq(".tbody--3Y4Fn .tr--5N-1q.tr--3Ypim").length) { + node = jq(".tbody--3Y4Fn .tr--5N-1q.tr--3Ypim"); + } else if (jq(".outer-wrapper--25yYA").length) { + node = jq(".outer-wrapper--25yYA"); + } + node.each(function(index) { + var $this = jq(node[index]); + if ($this.attr("data-is-selected") === "true") { + let data_index = $this.closest("[data-index]").attr("data-index"); + data_index && selectedFileList.push(fileList2[data_index]); + } + }); + return copy(selectedFileList); + } + } + const user = new User(); + function handler$2(res) { + let data = res.data; + let response = res.response; + let page = user.getPage(); + let items = []; + if (page.id === data.parent_file_id && page.order === data.order_direction && page.order_by === data.order_by) { + items = response.items; + } else { + page.id = data.parent_file_id; + page.order = data.order_direction; + page.order_by = data.order_by; + page.items = response.items; + } + let folderName = $2(".breadcrumb-item-link--M-p4b:last").text(); + page.folderName = folderName; + if (items.length > 0) { + if (!page.items) { + page.items = []; + } + page.items = page.items.concat(response.items); + } + console.log(`已加载${page.items.length}个文件`); + showSuccess(`已加载${page.items.length}个文件`); + } + const fileList = () => { + http.onResponse(function(res, url) { + let config = res.config; + try { + config.data = JSON.parse(config.data); + } catch (error) { + config.data = {}; + } + let response = { + response: res.response, + data: config.data + }; + if (url.indexOf("/file/list") > 0 || url.indexOf("/file/search") > 0) { + handler$2(response); + } + }); + }; + function title(html2) { + let name = html2.split(" ")[1]; + let css = "display:flex;flex-direction:row;align-items:center;"; + let htmlDiv = `
+ +

${name}

+
`; + return htmlDiv; + } + function artplayPluginQuality(option) { + return (art) => { + let def = option[option.length - 1]; + let loc = user.getVideoPlayerSet().quality; + var storageQuality; + if (loc) { + let quality2 = option.find((item) => item.html === loc); + if (quality2) { + quality2["default"] = true; + storageQuality = quality2.html; + } + } + if (!storageQuality) { + storageQuality = def.html; + def["default"] = true; + } + let index = option.findIndex(function(item, index2) { + return item.html === storageQuality; + }); + var quality = { + name: "quality", + position: "right", + html: title(storageQuality) || "Quality", + selector: option, + index: 2, + onSelect: function(item) { + art.switchQuality(item.url, item.html); + console.log(item.html); + console.log(item.url); + art.qualityHtml = item.html; + return title(item.html); + } + }; + art.quality_ = quality; + art.controls.add(quality); + if (storageQuality) { + const quality2 = option[index]; + if (quality2) { + art.url = quality2.url; + art.qualityHtml = quality2.html; + } else { + art.url = option[0].url; + art.qualityHtml = option[0].html; + } + } else { + art.url = option[0].url; + art.qualityHtml = option[0].html; + } + }; + } + var cur = ` + +`; + function html(item, def) { + let htmlDiv = `
+

+ ${def ? cur : ""} +

+ ${item.name} +
+ `; + return htmlDiv; + } + function selector(call) { + let items = user.getPage().items; + if (items.length == 0 || $2("#videoHistory").length > 0) { + return (art) => { + }; + } + let fileList2 = items; + let id = user.getVideoPage().id; + var videoList = fileList2.filter(function(item, index) { + return item.category === "video"; + }), fileIndex = videoList.findIndex(function(item, index) { + return item.file_id === id; + }); + if (!(fileIndex > -1 && videoList.length > 1)) + return () => { + }; + console.log("视频数量为::" + videoList.length); + return (art) => { + let option = []; + videoList.forEach((it, index) => { + option.push({ + default: index == fileIndex, + index, + file: it, + html: html(it, index == fileIndex) + }); + }); + let svg = ''; + if (fileIndex + 1 < videoList.length) { + art.controls.add({ + name: "next_selector", + position: "left", + html: `` + svg + "", + tooltip: videoList[fileIndex + 1].name, + style: { + marginRight: "10px" + }, + click: function() { + let item = videoList[fileIndex + 1]; + call && call(item); + } + }); + } + art.controls.add({ + name: "selector", + position: "right", + html: "选集", + index: 1, + selector: option, + onSelect: function(item) { + item = item.file; + call && call(item); + return "选集 "; + } + }); + }; + } + function subtitle(click) { + return (art) => { + art.controls.add({ + name: "subtitle", + position: "right", + html: '字幕', + index: 2, + style: { + marginLeft: "10px" + }, + click + }); + }; + } + var doubleSpeed = function(art) { + art.notice.show = "倍速播放 x3"; + art.playbackRate = 3; + }; + function hotkey() { + return (art) => { + var rightCount = 0; + var playbackRate = null; + var rightInterval = null; + var logKey = false; + document.onkeyup = function(event) { + if (event.code === "ArrowRight") { + if (rightCount === 1) { + art.currentTime = art.currentTime + 5; + } + logKey = false; + if (rightInterval) { + window.clearInterval(rightInterval); + } + rightInterval = null; + rightCount = 0; + if (playbackRate) { + art.playbackRate = playbackRate; + playbackRate = null; + } + } + }; + document.onkeydown = function(event) { + if (event.code === "ArrowRight") { + rightCount += 1; + if (!playbackRate) { + playbackRate = art.playbackRate; + } + if (!rightInterval) { + rightInterval = setInterval(function() { + if (rightCount > 100) { + rightCount = 2; + } + if (rightCount > 1 && !logKey) { + doubleSpeed(art); + logKey = true; + } + }, 100); + } + } else if (event.code === "ArrowLeft") { + art.currentTime = art.currentTime - 5; + } else if (event.code === "ArrowUp") { + art.volume = art.volume + 0.01; + } else if (event.code === "ArrowDown") { + art.volume = art.volume - 0.01; + } else if (event.code === "Space") { + art.toggle(); + } else if (event.code === "Enter") { + art.fullscreen = !art.fullscreen; + } + }; + }; + } + function saveCloud(art) { + let token = user.getToken(); + if (token == null) { + return; + } + let v = user.getVideoPage(); + videoUpdate({ + drive_id: token.default_drive_id, + duration: art.duration, + file_id: v.id, + play_cursor: art.currentTime + }).then((res) => { + }); + } + function saveExit() { + return (art) => { + art.on("ready", () => { + let v = user.getVideoPage(); + if (v.play_cursor) { + art.seek = v.play_cursor; + } else { + let list = user.getVideoLookList(); + let index = list.findIndex((item) => { + return item.id == v.id; + }); + if (index != -1) { + art.seek = list[index].play_cursor; + } + } + let plset = user.getVideoPlayerSet(); + if (plset.fullscreen) { + art.fullscreen = true; + } + if (plset.fullscreenWeb) { + art.fullscreenWeb = true; + } + if (plset.playbackRate) { + art.playbackRate = plset.playbackRate; + } + }); + art.on("destroy", () => { + let v = user.getVideoPage(); + if (v.type == 0) { + saveCloud(art); + } + user.saveVideoPlayerSet(art); + let currentTime = art.currentTime; + let progress = parseInt(currentTime / art.duration * 100); + art.hls.destroy(); + let items = user.getPage().items; + let index = items.findIndex((it) => { + return it.file_id == v.id; + }); + if (index != -1) { + if (!items[index].user_meta) { + items[index].user_meta = "{}"; + } + let meta = JSON.parse(items[index].user_meta); + meta.play_cursor = currentTime; + items[index].user_meta = JSON.stringify(meta); + } + let folderName; + let href = v.href; + if (v.type == 1) { + folderName = "来自分享"; + } else { + folderName = v.folderName; + } + user.saveVideoInfo(v.id, v.name, progress, folderName, href, v.type == 1, currentTime); + }); + }; + } + const SubTitle_vue_vue_type_style_index_0_scoped_c202f97e_lang = ""; + const _export_sfc = (sfc, props) => { + const target = sfc.__vccOpts || sfc; + for (const [key, val] of props) { + target[key] = val; + } + return target; + }; + const _withScopeId$1 = (n) => (vue.pushScopeId("data-v-c202f97e"), n = n(), vue.popScopeId(), n); + const _hoisted_1$3 = { class: "bread-container--npII5" }; + const _hoisted_2$3 = { + class: "breadcrumb-wrap--2iqqe", + "data-align": "left" + }; + const _hoisted_3$3 = { + class: "breadcrumb--2FqFQ", + "data-calc": "true" + }; + const _hoisted_4$3 = ["data-label", "onClick", "data-key"]; + const _hoisted_5$3 = { + class: "breadcrumb-item-link--M-p4b", + "data-spm-anchor-id": "0.0.0.i5.54a06c75zaT9h6" + }; + const _hoisted_6$3 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("div", { class: "breadcrumb-item-separator--r1w8a" }, "›", -1)); + const _hoisted_7$3 = { + key: 0, + class: "list--13IBL" + }; + const _hoisted_8$3 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("div", { class: "placeholder---npkN" }, [ + /* @__PURE__ */ vue.createElementVNode("img", { + src: "https://img.alicdn.com/imgextra/i2/O1CN018yXBXY1caApf7qUew_!!6000000003616-2-tps-224-224.png", + alt: "empty folder" + }), + /* @__PURE__ */ vue.createElementVNode("span", null, "文件夹为空") + ], -1)); + const _hoisted_9$3 = [ + _hoisted_8$3 + ]; + const _hoisted_10$3 = ["onClick"]; + const _hoisted_11$3 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("img", { + alt: "folder", + class: "file-icon--3CoKG fileicon--vNn4M", + draggable: "false", + src: "https://img.alicdn.com/imgextra/i1/O1CN01rGJZac1Zn37NL70IT_!!6000000003238-2-tps-230-180.png" + }, null, -1)); + const _hoisted_12$3 = ["title", "onClick"]; + const _hoisted_13$3 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ vue.createElementVNode("img", { + alt: "others", + class: "file-icon--3CoKG fileicon--vNn4M", + draggable: "false", + src: "https://img.alicdn.com/imgextra/i2/O1CN01ROG7du1aV18hZukHC_!!6000000003334-2-tps-140-140.png" + }, null, -1)); + const _sfc_main$4 = { + __name: "SubTitle", + emits: ["selectSubTitle"], + setup(__props, { expose, emit }) { + const data = vue.ref([]); + const path = vue.ref([]); + vue.onMounted(() => { + getFileList("root", "全部文件"); + }); + function selectFile(fileInfo) { + elementPlus.ElMessageBox.confirm( + `确认加载《${fileInfo.name}》字幕文件吗?`, + "字幕选择", + { + confirmButtonText: "确认", + cancelButtonText: "取消" + } + ).then(() => { + emit("selectSubTitle", fileInfo); + }); + } + function getFileList(parent_file_id, name) { + if (path.value.length != 0) { + let last = path.value[path.value.length - 1]; + if (last.id == parent_file_id) { + return; + } + let index = path.value.findIndex((item, index2) => { + return item.id === parent_file_id; + }); + if (index != -1) { + path.value = path.value.splice(0, index); + } + } + path.value.push({ + id: parent_file_id, + name + }); + search({ + "drive_id": "723102202", + "query": `parent_file_id = "${parent_file_id}" and (type = "folder" or file_extension in ["srt", "ass", "vtt"])`, + "order_by": "type ASC,updated_at DESC", + "limit": 20, + "image_thumbnail_process": "image/resize,w_256/format,jpeg", + "image_url_process": "image/resize,w_1920/format,jpeg/interlace,1", + "video_thumbnail_process": "video/snapshot,t_1000,f_jpg,ar_auto,w_256" + }).then((res) => { + data.value.length = 0; + data.value = res.data.items; + }).catch((e) => { + console.log(e); + if (e && e + "" == "AxiosError: Request failed with status code 429") { + showError$1("您操作的太快了! 请稍候点击下方按钮,刷新尝试"); + } else { + showError$1(e + ""); + } + }); + } + expose({ + getFileList + }); + return (_ctx, _cache) => { + return vue.openBlock(), vue.createElementBlock("div", null, [ + vue.createElementVNode("div", _hoisted_1$3, [ + vue.createElementVNode("div", _hoisted_2$3, [ + vue.createElementVNode("div", _hoisted_3$3, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(path.value, (item, index) => { + return vue.openBlock(), vue.createElementBlock("div", { + key: index, + class: "breadcrumb-item--tV9dn", + "data-label": item.name, + onClick: vue.withModifiers(($event) => getFileList(item.id, item.name), ["stop"]), + "data-key": item.id, + "data-hide": "false", + "data-more": "false" + }, [ + vue.createElementVNode("div", _hoisted_5$3, vue.toDisplayString(item.name), 1), + _hoisted_6$3 + ], 8, _hoisted_4$3); + }), 128)) + ]) + ]) + ]), + data.value.length == 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$3, _hoisted_9$3)) : vue.createCommentVNode("", true), + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(data.value, (item, index) => { + return vue.openBlock(), vue.createElementBlock("div", { key: index }, [ + item.type == "folder" ? (vue.openBlock(), vue.createElementBlock("div", { + key: 0, + class: "item--18Z6t", + onClick: vue.withModifiers(($event) => getFileList(item.file_id, item.name), ["stop"]) + }, [ + _hoisted_11$3, + vue.createElementVNode("span", null, vue.toDisplayString(item.name), 1) + ], 8, _hoisted_10$3)) : vue.createCommentVNode("", true), + item.type == "file" ? (vue.openBlock(), vue.createElementBlock("div", { + key: 1, + class: "item--18Z6t", + title: item.name, + onClick: vue.withModifiers(($event) => selectFile(item), ["stop"]) + }, [ + _hoisted_13$3, + vue.createElementVNode("span", null, vue.toDisplayString(item.name), 1) + ], 8, _hoisted_12$3)) : vue.createCommentVNode("", true) + ]); + }), 128)) + ]); + }; + } + }; + const SubTitle = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-c202f97e"]]); + const VideoPage_vue_vue_type_style_index_0_scoped_12e915cd_lang = ""; + const _sfc_main$3 = { + __name: "VideoPage", + setup(__props) { + const artRef = vue.ref(); + const subtitleRef = vue.ref(); + const table = vue.ref(false); + const retry = vue.reactive({ + error: false, + text: "", + title: "", + loading: false + }); + const transcoding = { + UHD: "4K 超清", + QHD: "2K 超清", + FHD: "1080 全高清", + HD: "720 高清", + SD: "540 标清", + LD: "360 流畅" + }; + var options = {}; + let instance; + vue.onMounted(() => { + getVideoInfo(artp); + }); + function getOption(video) { + let play_info = video.video_preview_play_info; + let task_list = play_info.live_transcoding_task_list; + var option = []; + task_list.forEach(function(item, index) { + let name = transcoding[item.template_id]; + if (!name) { + return; + } + if (item.url != "") { + option.push({ + html: name, + url: item.url || item.preview_url + }); + } + }); + return option; + } + function artp(video) { + var option = getOption(video); + instance = new Artplayer2({ + container: artRef.value, + settings: [ + { + html: "画中画", + icon: '', + switch: false, + tooltip: "Close", + onSwitch: function(item, $dom, event) { + console.info(item, $dom, event); + const nextState = !item.switch; + instance.pip = nextState; + item.tooltip = nextState ? "Open" : "Close"; + return nextState; + } + } + ], + plugins: [ + // 清晰度 + artplayPluginQuality(option), + // 上下集 + selector(function(item) { + instance.destroy(false); + let vInfo = user.getVideoPage(); + vInfo.id = item.file_id; + if (!item.user_meta) { + item.user_meta = "{}"; + } + let meta = JSON.parse(item.user_meta); + vInfo.duration = meta.duration; + vInfo.play_cursor = meta.play_cursor; + vInfo.name = item.name; + vInfo.thumbnail = item.thumbnail; + getVideoInfo(artp); + }), + //快捷键 + hotkey(), + // 字幕插件 + subtitle(openSubTitle), + // 偏好设置 + saveExit() + ], + ...options + }); + instance.on("error", function(e) { + console.log(e); + }); + instance.on("ready", () => { + console.log(instance.qualityHtml); + instance.play(); + }); + instance.on("destroy", () => { + console.info("destroy"); + }); + } + function getExt(url) { + if (url.includes("?")) { + return getExt(url.split("?")[0]); + } + if (url.includes("#")) { + return getExt(url.split("#")[0]); + } + return url.trim().toLowerCase().split(".").pop(); + } + function selectSubTitle(fileInfo) { + console.log(fileInfo.download_url); + table.value = false; + instance.subtitle.switch(fileInfo.download_url, { + type: getExt(fileInfo.name) + }); + instance.play(); + } + function openSubTitle() { + instance.pause(); + table.value = true; + } + function retryClick() { + retry.loading = true; + getVideoInfo(artp); + } + var hlsErrorHandler = function(event, data, art) { + if (art.hls.error == -1) { + console.log("在处理了"); + return; + } + var errorType = data.type; + var errorDetails = data.details; + var errorFatal = data.fatal; + console.log(errorType); + console.log(errorDetails); + console.log(errorFatal); + if (art.hls.error) { + art.hls.error += 1; + } else { + art.hls.error = 1; + } + if (data.details == "fragLoadError" && (errorFatal || art.hls.error >= 4)) { + art.hls.error = -1; + retry403(art); + } else if (errorType == "networkError" && errorFatal) { + elementPlus.ElNotification({ + title: "网络错误", + message: "请检查网络配置后,刷新页面", + type: "error" + }); + } + }; + function m3u8Hls(video, url, art) { + art.hls = new Hls2(); + art.hls.loadSource(url); + art.hls.attachMedia(video); + video.addEventListener("loadstart", function(e) { + console.log("提示视频的元数据已加载" + video.src); + if (art.hlsCurrentTime403) { + video.currentTime = art.hlsCurrentTime403; + } + }); + art.hls.on(Hls2.Events.ERROR, function(e, d) { + hlsErrorHandler(e, d, art); + }); + } + function retry403(art) { + getVideoInfo(function(data) { + let option = getOption(data); + let index = option.findIndex(function(item2, index2) { + return item2.html === art.qualityHtml; + }); + if (index == -1) { + index = option.length - 1; + } + let item = option[index]; + item["default"] = true; + art.quality_.selector = option; + art.hlsCurrentTime403 = art.currentTime; + art.hls.destroy(); + art.hls.error = 0; + art.hls = new Hls2(); + art.hls.loadSource(item.url); + art.hls.attachMedia(art.video); + art.hls.on(Hls2.Events.ERROR, function(e, d) { + hlsErrorHandler(e, d, art); + }); + }); + } + function getVideoInfo(call) { + let token = user.getToken(); + if (token == null) { + elementPlus.ElMessageBox.alert("当前登录凭证获取为空,请刷新或重新登录", { + confirmButtonText: "获取凭证失败", + callback: (action) => { + location.href = location.href; + } + }); + return; + } + let videoInfo = user.getVideoPage(); + let req; + if (videoInfo.type == 0) { + req = videoPreviewPlayInfo({ + category: "live_transcoding", + drive_id: token.default_drive_id, + file_id: videoInfo.id, + template_id: "FHD|HD|SD|LD", + url_expire_sec: 14400, + get_subtitle_info: true + }); + } else if (videoInfo.type == 1) { + let shareToken = user.getShareToken(); + if (!user.isExpires(shareToken)) { + elementPlus.ElMessageBox.alert("很抱歉,当前页面太久没活动了,请点击刷新后再来观看吧", "分享凭证失效", { + confirmButtonText: "刷新", + callback: (action) => { + location.href = location.href; + } + }); + } + req = shareVideoInfo(videoInfo.id, shareToken.share_id, shareToken.share_token); + } + req.then((res) => { + retry.error = false; + options = { + id: videoInfo.id, + poster: videoInfo.thumbnail, + title: videoInfo.name, + type: "m3u8", + customType: { + m3u8: m3u8Hls + }, + subtitleOffset: true, + flip: true, + setting: true, + playbackRate: true, + aspectRatio: true, + fullscreen: true, + fullscreenWeb: true, + miniProgressBar: true, + autoplay: true, + screenshot: true, + hotkey: false, + airplay: true, + volume: 1, + contextmenu: [] + }; + if (videoInfo.type == 0) { + $2(".text--2KGvI").text(videoInfo.name); + } else if (videoInfo.type == 1) { + $2(".header-file-name--CN_fq").text(videoInfo.name); + } + call && call(res.data); + }).catch((e) => { + if (instance) { + instance.pause(); + instance.destroy(false); + } + console.log(e); + if (e && e + "" == "AxiosError: Request failed with status code 429") { + retry.text = "请稍候点击下方按钮,刷新尝试"; + retry.title = "您操作的太快了"; + } else { + retry.title = "接口问题"; + retry.text = e + ""; + } + retry.error = true; + }).finally(() => { + retry.loading = false; + }); + } + vue.onUnmounted(() => { + if (instance) { + instance.destroy(false); + } + console.log("视频页面销毁"); + }); + return (_ctx, _cache) => { + return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [ + vue.createVNode(vue.unref(elementPlus.ElDrawer), { + modelValue: table.value, + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => table.value = $event), + title: "请选择字幕文件", + direction: "rtl", + size: "25%" + }, { + default: vue.withCtx(() => [ + vue.createVNode(SubTitle, { + onSelectSubTitle: selectSubTitle, + ref_key: "subtitleRef", + ref: subtitleRef + }, null, 512) + ]), + _: 1 + }, 8, ["modelValue"]), + vue.withDirectives(vue.createElementVNode("div", { + class: "player", + ref_key: "artRef", + ref: artRef + }, null, 512), [ + [vue.vShow, !retry.error] + ]), + vue.withDirectives(vue.createVNode(vue.unref(elementPlus.ElResult), { + title: retry.title, + "sub-title": retry.text + }, { + extra: vue.withCtx(() => [ + vue.createVNode(vue.unref(elementPlus.ElButton), { + type: "primary", + loading: retry.loading, + onClick: vue.withModifiers(retryClick, ["stop"]) + }, { + default: vue.withCtx(() => [ + vue.createTextVNode("刷新") + ]), + _: 1 + }, 8, ["loading", "onClick"]) + ]), + _: 1 + }, 8, ["title", "sub-title"]), [ + [vue.vShow, retry.error] + ]) + ], 64); + }; + } + }; + const VideoPage = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-12e915cd"]]); + var interval; + function initVideoPlayer(videoFile) { + let node = $2(".video-previewer--1vo5c"); + if (node.length <= 0) { + if (interval == null) { + interval = setInterval(function() { + initVideoPlayer(videoFile); + }, 200); + } + return; + } else { + clearInterval(interval); + interval = null; + } + let vInfo = user.getVideoPage(); + vInfo.id = videoFile.file_id; + if (videoFile.user_meta) { + try { + let meta = JSON.parse(videoFile.user_meta); + if (meta.duration) { + vInfo.duration = meta.duration; + } + if (meta.play_cursor) { + vInfo.play_cursor = meta.play_cursor; + } + } catch (error) { + console.error(error); + } + } + vInfo.name = videoFile.name; + vInfo.thumbnail = videoFile.thumbnail; + vInfo.folderName = user.getPage().folderName; + vInfo.type = 0; + vInfo.href = location.href; + var app = vue.createApp(VideoPage); + app.mount( + (() => { + console.log("我创建了1"); + const app2 = $2(`
`)[0]; + node.replaceWith(app2); + return app2; + })() + ); + $2(".header-left--3QcN-").on("click", function() { + app.unmount(); + }); + } + function homeVideo(videoFile) { + if (interval != null) { + clearInterval(interval); + } + initVideoPlayer(videoFile); + } + function shareVideo$1(videoFile) { + let node = $2(".video-previewer--1ESTK"); + if (node.length <= 0) { + if (interval == null) { + interval = setInterval(function() { + shareVideo$1(videoFile); + }, 200); + } + return; + } else { + clearInterval(interval); + interval = null; + } + let it = user.getPage().items; + let index = it.findIndex((item) => { + return item.file_id == videoFile.file_id; + }); + console.log(index); + if (index == -1) { + elementPlus.ElMessageBox.alert("手速太快啦,请回到文件列表中,随便点击排序,看到已加载多少文件时,在进来吧", "操作页面过快", { + confirmButtonText: "去排序", + callback: (action) => { + location.href = location.href; + } + }); + return; + } + let v = it[index]; + v.user_meta = "{}"; + let vInfo = user.getVideoPage(); + let list = user.getVideoLookList(); + index = list.findIndex((item) => { + return item.id == videoFile.file_id; + }); + if (index != -1) { + vInfo.play_cursor = list[index].play_cursor; + } + vInfo.id = v.file_id; + vInfo.name = v.name; + vInfo.thumbnail = v.thumbnail; + vInfo.type = 1; + vInfo.folderName = "来自分享"; + vInfo.href = location.href; + var app = vue.createApp(VideoPage); + app.mount( + (() => { + const app2 = $2(`
`)[0]; + node.replaceWith(app2); + return app2; + })() + ); + $2(".header-icon--bJn--").on("click", function() { + app.unmount(); + }); + } + function handler$1(res) { + let response = res.response; + if (response.category && response.category === "video") { + homeVideo(response); + } + } + const fileGet = () => { + http.onResponse(function(res, url) { + let config = res.config; + try { + config.data = JSON.parse(config.data); + } catch (error) { + config.data = {}; + } + let response = { + response: res.response, + data: config.data + }; + if (url.endsWith("/file/get")) { + handler$1(response); + } + }); + }; + function handler(res) { + let response = res.response; + let shareToken = user.getShareToken(); + if (!user.isExpires(shareToken) || shareToken.share_id != response.share_id) { + showError("当前页面已过期,请刷新重试"); + return; + } + shareVideo$1(response); + } + const shareVideo = () => { + http.onResponse(function(res, url) { + let config = res.config; + try { + config.data = JSON.parse(config.data); + } catch (error) { + config.data = {}; + } + let response = { + response: res.response, + data: config.data + }; + if (url.indexOf("get_video_preview_play_info_by_share") > 0) { + handler(response); + } + }); + }; + const fileUpdate = () => { + http.onRequest(function(req) { + if (req.url.endsWith("v3/file/update")) { + let reqbody = JSON.parse(req.data[0]); + let name = reqbody.name; + let i = name.lastIndexOf("."); + if (i === -1) { + return; + } + let newName = name.substring(0, i); + if (newName.lastIndexOf(".") !== -1) { + reqbody.name = newName; + req.data[0] = JSON.stringify(reqbody); + } + } + }); + }; + const xhrHandler = () => { + fileList(); + fileGet(); + shareVideo(); + fileUpdate(); + }; + class XMLHttp { + constructor() { + __publicField(this, "request", function(param) { + }); + __publicField(this, "response", function(param) { + }); + __publicField(this, "onRequest", function(cal) { + this.requestListen.push(cal); + }); + __publicField(this, "onResponse", function(cal) { + this.responseListen.push(cal); + }); + this.responseListen = []; + this.requestListen = []; + } + } + function initXMLHttpRequest(http2) { + let open = XMLHttpRequest.prototype.open; + XMLHttpRequest.prototype.open = function(...args) { + let send = this.send; + let _this = this; + let post_data = []; + this.send = function(...data) { + post_data = data; + let dataBody = { + url: args[1], + method: args[0], + headers: {}, + data + }; + if (_this._header_) { + dataBody.headers = _this._header_; + } + http2.request(dataBody); + return send.apply(_this, data); + }; + this.addEventListener("readystatechange", function() { + if (this.readyState === 4) { + let config = { + url: args[1], + status: this.status, + method: args[0], + data: post_data + }; + let res = this.response; + if (_this._header_ && _this._header_["fileId"]) { + return; + } + if (typeof res == "string") { + try { + res = JSON.parse(this.response); + } catch (e) { + console.log("解析出问题了, ", e); + return; + } + } + http2.response({ config, response: res }); + } + }, false); + return open.apply(this, args); + }; + } + const http = new XMLHttp(); + function listen() { + xhrHandler(); + http.request = function(req) { + if (this.requestListen.length > 0) { + this.requestListen.forEach((i) => { + i(req); + }); + } + }; + http.response = function(res) { + if (this.responseListen.length > 0) { + let config = res.config; + this.responseListen.forEach((i) => { + i(res, config.url); + }); + } + }; + initXMLHttpRequest(http); + } + function loadScript(src) { + if (!window.instances) { + window.instances = {}; + } + if (!window.instances[src]) { + window.instances[src] = new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.src = src; + script.type = "text/javascript"; + script.onload = resolve; + script.onerror = reject; + document.head.appendChild(script); + }); + } + return window.instances[src]; + } + /*! Element Plus Icons Vue v2.0.10 */ + var export_helper_default = (sfc, props) => { + let target = sfc.__vccOpts || sfc; + for (let [key, val] of props) + target[key] = val; + return target; + }; + var refresh_vue_vue_type_script_lang_default = { + name: "Refresh" + }; + var _hoisted_1217 = { + viewBox: "0 0 1024 1024", + xmlns: "http://www.w3.org/2000/svg" + }, _hoisted_2217 = /* @__PURE__ */ vue.createElementVNode("path", { + fill: "currentColor", + d: "M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z" + }, null, -1), _hoisted_3216 = [ + _hoisted_2217 + ]; + function _sfc_render217(_ctx, _cache, $props, $setup, $data, $options) { + return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1217, _hoisted_3216); + } + var refresh_default = /* @__PURE__ */ export_helper_default(refresh_vue_vue_type_script_lang_default, [["render", _sfc_render217], ["__file", "refresh.vue"]]); + const cssLoader = (e) => { + const t = GM_getResourceText(e), o = document.createElement("style"); + return o.innerText = t, document.head.append(o), t; + }; + cssLoader("element-plus/dist/index.css"); + const _hoisted_1$2 = { + key: 0, + class: "ant-modal-root", + id: "aria2-set-box" + }; + const _hoisted_2$2 = /* @__PURE__ */ vue.createElementVNode("div", { class: "ant-modal-mask" }, null, -1); + const _hoisted_3$2 = { + tabindex: "-1", + class: "ant-modal-wrap", + role: "dialog" + }; + const _hoisted_4$2 = { + role: "document", + class: "ant-modal modal-wrapper--2yJKO", + style: { "width": "340px", "transform-origin": "-14px 195px" } + }; + const _hoisted_5$2 = { class: "ant-modal-content" }; + const _hoisted_6$2 = /* @__PURE__ */ vue.createElementVNode("div", { class: "ant-modal-header" }, [ + /* @__PURE__ */ vue.createElementVNode("div", { class: "ant-modal-title" }, " Aria2设置 ") + ], -1); + const _hoisted_7$2 = { class: "ant-modal-body" }; + const _hoisted_8$2 = /* @__PURE__ */ vue.createElementVNode("span", { + "data-role": "icon", + "data-render-as": "svg", + "data-icon-type": "PDSClose", + class: "close-icon--33bP0 icon--d-ejA" + }, [ + /* @__PURE__ */ vue.createElementVNode("svg", { viewBox: "0 0 1024 1024" }, [ + /* @__PURE__ */ vue.createElementVNode("use", { "xlink:href": "#PDSClose" }) + ]) + ], -1); + const _hoisted_9$2 = [ + _hoisted_8$2 + ]; + const _hoisted_10$2 = /* @__PURE__ */ vue.createElementVNode("div", null, " 推送链接: ", -1); + const _hoisted_11$2 = { class: "content-wrapper--1_WJv" }; + const _hoisted_12$2 = /* @__PURE__ */ vue.createElementVNode("div", null, " 推送路径: ", -1); + const _hoisted_13$2 = { class: "content-wrapper--1_WJv" }; + const _hoisted_14$2 = /* @__PURE__ */ vue.createElementVNode("div", null, " RPC密钥: ", -1); + const _hoisted_15$2 = { class: "content-wrapper--1_WJv" }; + const _hoisted_16$2 = /* @__PURE__ */ vue.createElementVNode("div", null, " 其他: ", -1); + const _hoisted_17$2 = { class: "content-wrapper--1_WJv" }; + const _hoisted_18$1 = { class: "ant-input ant-input-borderless input--3oFR6" }; + const _hoisted_19$1 = { class: "ant-modal-footer" }; + const _hoisted_20$1 = { class: "footer--3Q0je" }; + const _hoisted_21$1 = ["onClick"]; + const _sfc_main$2 = { + __name: "Aria2Set", + setup(__props, { expose }) { + const data = vue.reactive({ + isShowAria2Set: false, + pushBtonText: "Aria2 推送", + aria2Model: user.getAria2Set() + }); + function saveAria2() { + user.setAria2Set(data.aria2Model); + data.isShowAria2Set = false; + showSuccess("Aria2配置保存成功"); + } + function aria2Push(fileList2, call) { + if (data.pushBtonText == "正在推送") { + return; + } + let folderName = ""; + if (data.aria2Model.dirCreate) { + let dir = $2(".breadcrumb--2FqFQ[data-calc=true] > .breadcrumb-item--tV9dn > .breadcrumb-item-link--M-p4b"); + folderName = "/阿里云盘"; + for (let i = 0; i < dir.length; i++) { + folderName += "/" + dir[i].innerText; + } + } + let sendDownLoad = []; + fileList2.forEach(function(item, index) { + sendDownLoad.push({ + id: "", + jsonrpc: "2.0", + method: "aria2.addUri", + params: [ + "token:" + data.aria2Model.token, + [item.url], + { + out: item.name, + dir: data.aria2Model.path + folderName, + referer: "https://www.aliyundrive.com/", + "user-agent": navigator.userAgent + } + ] + }); + }); + let text = data.pushBtonText; + data.pushBtonText = "正在推送"; + $2.ajax({ + type: "POST", + url: data.aria2Model.link, + data: JSON.stringify(sendDownLoad), + crossDomain: true, + processData: false, + contentType: "application/json", + success: function(result) { + showSuccess("Aria2推送成功"); + data.pushBtonText = text; + call(true); + }, + error: function(error) { + showError$1("Aria2 推送失败,请检查配置,或刷新后重试"); + data.pushBtonText = text; + call(flase); + } + }); + } + function show() { + data.isShowAria2Set = true; + } + function hide() { + data.isShowAria2Set = false; + } + expose({ + aria2Push, + show, + hide + }); + return (_ctx, _cache) => { + return data.isShowAria2Set ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [ + _hoisted_2$2, + vue.createElementVNode("div", _hoisted_3$2, [ + vue.createElementVNode("div", _hoisted_4$2, [ + vue.createElementVNode("div", _hoisted_5$2, [ + _hoisted_6$2, + vue.createElementVNode("div", _hoisted_7$2, [ + vue.createElementVNode("div", { + class: "icon-wrapper--3dbbo", + id: "aria2-set-icon", + onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => data.isShowAria2Set = false, ["stop"])) + }, _hoisted_9$2), + _hoisted_10$2, + vue.createElementVNode("div", _hoisted_11$2, [ + vue.withDirectives(vue.createElementVNode("input", { + id: "aria2-link", + class: "ant-input ant-input-borderless input--3oFR6", + "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => data.aria2Model.link = $event), + type: "text" + }, null, 512), [ + [vue.vModelText, data.aria2Model.link] + ]) + ]), + _hoisted_12$2, + vue.createElementVNode("div", _hoisted_13$2, [ + vue.withDirectives(vue.createElementVNode("input", { + id: "aria2-path", + class: "ant-input ant-input-borderless input--3oFR6", + "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => data.aria2Model.path = $event), + type: "text" + }, null, 512), [ + [vue.vModelText, data.aria2Model.path] + ]) + ]), + _hoisted_14$2, + vue.createElementVNode("div", _hoisted_15$2, [ + vue.withDirectives(vue.createElementVNode("input", { + id: "aria2-token", + class: "ant-input ant-input-borderless input--3oFR6", + "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => data.aria2Model.token = $event), + type: "text" + }, null, 512), [ + [vue.vModelText, data.aria2Model.token] + ]) + ]), + _hoisted_16$2, + vue.createElementVNode("div", _hoisted_17$2, [ + vue.createElementVNode("div", _hoisted_18$1, [ + vue.createTextVNode(" 不创建对应目录: "), + vue.createVNode(vue.unref(elementPlus.ElSwitch), { + modelValue: data.aria2Model.dirCreate, + "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => data.aria2Model.dirCreate = $event) + }, null, 8, ["modelValue"]) + ]) + ]) + ]), + vue.createElementVNode("div", _hoisted_19$1, [ + vue.createElementVNode("div", _hoisted_20$1, [ + vue.createElementVNode("button", { + id: "aria2-set-save", + class: "button--2Aa4u primary--3AJe5 small---B8mi", + onClick: vue.withModifiers(saveAria2, ["stop"]) + }, " 确定 ", 8, _hoisted_21$1) + ]) + ]) + ]) + ]) + ]) + ])) : vue.createCommentVNode("", true); + }; + } + }; + const DwoloadPage_vue_vue_type_style_index_0_scoped_5d43769b_lang = ""; + const _withScopeId = (n) => (vue.pushScopeId("data-v-5d43769b"), n = n(), vue.popScopeId(), n); + const _hoisted_1$1 = { key: 0 }; + const _hoisted_2$1 = { key: 1 }; + const _hoisted_3$1 = { key: 0 }; + const _hoisted_4$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", { class: "notice1" }, "1. 因阿里云盘接口限制,短期大量请求会出现接口请求频繁,可以先选择需要下载的文件,在点击显示链接按钮。 ", -1)); + const _hoisted_5$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", { class: "notice1" }, "2. 接口请求频繁,也可尝试点击下载,不过文件名需要重新命名 ", -1)); + const _hoisted_6$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", { class: "notice1" }, "3. 在点击刷新按钮时,不要连续点击,可等几秒在点一次尝试获取 ", -1)); + const _hoisted_7$1 = [ + _hoisted_4$1, + _hoisted_5$1, + _hoisted_6$1 + ]; + const _hoisted_8$1 = { class: "notice" }; + const _hoisted_9$1 = { + class: "item-list", + style: { "padding": "20px", "height": "410px", "overflow-y": "auto" } + }; + const _hoisted_10$1 = { key: 0 }; + const _hoisted_11$1 = { key: 1 }; + const _hoisted_12$1 = { style: { "margin": "10px 0px", "overflow": "hidden", "white-space": "nowrap", "text-overflow": "ellipsis" } }; + const _hoisted_13$1 = { class: "footer--1r-ur" }; + const _hoisted_14$1 = { class: "buttons--nBPeo" }; + const _hoisted_15$1 = ["onClick"]; + const _hoisted_16$1 = ["onClick"]; + const _hoisted_17$1 = ["onClick"]; + const _sfc_main$1 = { + __name: "DwoloadPage", + setup(__props) { + let list = user.selectedFileList(); + if (list.length == 0) { + list = user.getAllFileList(); + } + const fileList2 = vue.reactive(list); + const aria2SetRef = vue.ref(); + const data = vue.reactive({ + pushBtonText: "Aria2 推送" + }); + const home2 = vue.ref(user.home()); + const laterLoad = vue.ref(getCount() != 0 && list == 0); + function getCount() { + let text = $2(".left-wrapper--zzDY4").text(); + if (!text) { + return 0; + } + var reg = /\d+/g; + var num = text.match(reg); + if (num.length == 0) { + return 0; + } + return num[0]; + } + function group(array, subGroupLength) { + var index = 0; + var newArray = []; + while (index < array.length) { + newArray.push(array.slice(index, index += subGroupLength)); + } + return newArray; + } + var shareToken; + const shareTokenV = vue.reactive(user.getShareToken()); + vue.onMounted(async () => { + if (!user.home()) { + shareToken = user.getShareToken(); + if (!user.isExpires(shareToken)) { + showError$1("当前页面已过期,请刷新重试"); + return; + } + } + var groupedCountries = group(fileList2, 1); + for (const index in groupedCountries) { + await loadingUrl(groupedCountries[index]); + } + function loadingUrl(array) { + return new Promise((resolve, reject) => { + let length = array.length; + let initLength = 0; + array.forEach((item) => { + if (item.type == "file") { + getFileUrl(item, function() { + initLength += 1; + if (initLength == length) { + resolve(); + } + }); + } else { + initLength += 1; + if (initLength == length) { + resolve(); + } + } + }); + }); + } + }); + function showSet() { + aria2SetRef.value.show(); + } + function IDMPush() { + var content = "", referer = "https://www.aliyundrive.com/", userAgent = navigator.userAgent; + fileList2.forEach(function(item, index) { + if (item.url != "" && item.url != null) { + content += ["<", item.url, "referer: " + referer, "User-Agent: " + userAgent, ">"].join("\r\n") + "\r\n"; + } + }); + var a = document.createElement("a"); + var blob = new Blob([content]); + var url = window.URL.createObjectURL(blob); + a.href = url; + a.download = "IDM导出文件_阿里云盘.ef2"; + a.click(); + window.URL.revokeObjectURL(url); + } + function aria2Push() { + if (data.pushBtonText == "正在推送") { + return; + } + var text = data.pushBtonText; + data.pushBtonText = "正在推送"; + aria2SetRef.value.aria2Push(fileList2, (res) => { + data.pushBtonText = text; + }); + } + function getFileUrl(item, call) { + item.loading = true; + item.text = "正在获取下载地址中"; + let showDnload; + if (item.share_id) { + showDnload = shareLinkDownloadUrl({ + file_id: item.file_id, + share_id: item.share_id + }, shareToken.share_token).then((response) => { + item.error = false; + item.text = response.data.download_url; + item.url = response.data.download_url; + }); + } else { + showDnload = getDownloadUrl({ + expire_sec: 14400, + drive_id: item.drive_id, + file_id: item.file_id + }).then((response) => { + item.error = false; + item.text = response.data.url; + item.url = response.data.url; + }); + } + showDnload.catch((e) => { + if (e && e + "" == "AxiosError: Request failed with status code 429") { + item.error = true; + item.text = "接口请求频繁,请稍后点击文件旁边的刷新按钮,重新获取 (也可点击我尝试跳转下载)"; + } else { + item.text = "刷新失败,错误异常:" + e; + } + }).finally(() => { + item.loading = false; + call && call(); + }); + } + vue.onUnmounted(() => { + console.log("文件下载窗口关闭"); + }); + return (_ctx, _cache) => { + return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [ + vue.createVNode(_sfc_main$2, { + ref_key: "aria2SetRef", + ref: aria2SetRef + }, null, 512), + laterLoad.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [ + vue.createVNode(vue.unref(elementPlus.ElResult), { + icon: "error", + title: "获取文件失败", + "sub-title": "请回到文件列表中,随便点击排序,看到已加载多少文件时,在回到这里吧" + }) + ])) : vue.createCommentVNode("", true), + !laterLoad.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$1, [ + fileList2.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$1, _hoisted_7$1)) : vue.createCommentVNode("", true), + vue.createElementVNode("p", _hoisted_8$1, " 共加载了" + vue.toDisplayString(fileList2.length) + "个文件", 1), + vue.createElementVNode("div", _hoisted_9$1, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(fileList2, (item, index) => { + return vue.openBlock(), vue.createElementBlock("div", { key: index }, [ + item.type == "folder" ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_10$1, vue.toDisplayString(index + 1) + ". " + vue.toDisplayString(item.name), 1)) : vue.createCommentVNode("", true), + item.type == "file" ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_11$1, [ + vue.createTextVNode(vue.toDisplayString(index + 1) + ". " + vue.toDisplayString(item.name) + " ", 1), + vue.createVNode(vue.unref(elementPlus.ElButton), { + type: "primary", + icon: vue.unref(refresh_default), + loading: item.loading, + circle: "", + size: "small", + onClick: vue.withModifiers(($event) => getFileUrl(item), ["stop"]) + }, null, 8, ["icon", "loading", "onClick"]) + ])) : vue.createCommentVNode("", true), + vue.createElementVNode("p", _hoisted_12$1, [ + item.type == "folder" ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElLink), { + key: 0, + type: "primary", + href: home2.value ? "/drive/folder/" + item.file_id : "/s/" + shareTokenV.share_id + "/folder/" + item.file_id + }, { + default: vue.withCtx(() => [ + vue.createTextVNode("点击进入文件夹") + ]), + _: 2 + }, 1032, ["href"])) : vue.createCommentVNode("", true), + item.type == "file" && !item.error ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElLink), { + key: 1, + type: "primary", + href: item.url, + target: "_blank" + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString(item.text), 1) + ]), + _: 2 + }, 1032, ["href"])) : vue.createCommentVNode("", true), + item.type == "file" && item.error ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElLink), { + key: 2, + type: "danger", + href: item.url, + target: "_blank" + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString(item.text), 1) + ]), + _: 2 + }, 1032, ["href"])) : vue.createCommentVNode("", true) + ]) + ]); + }), 128)) + ]), + vue.createElementVNode("div", null, [ + vue.createElementVNode("div", _hoisted_13$1, [ + vue.createElementVNode("div", _hoisted_14$1, [ + vue.createElementVNode("button", { + class: "button--2Aa4u primary--3AJe5 small---B8mi appreciation", + onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => vue.unref(monkeyWindow).open("https://greasyfork.org/zh-CN/scripts/458626", "_blank"), ["stop"])) + }, "👍 点个赞"), + vue.createElementVNode("button", { + class: "button--2Aa4u primary--3AJe5 small---B8mi aria2-download", + onClick: vue.withModifiers(IDMPush, ["stop"]) + }, "IDM 导出文件", 8, _hoisted_15$1), + vue.createElementVNode("button", { + class: "button--2Aa4u primary--3AJe5 small---B8mi aria2-download", + onClick: vue.withModifiers(aria2Push, ["stop"]) + }, vue.toDisplayString(data.pushBtonText), 9, _hoisted_16$1), + vue.createElementVNode("button", { + class: "button--2Aa4u primary--3AJe5 aria2-set", + onClick: vue.withModifiers(showSet, ["stop"]), + style: { "margin-left": "0", "width": "auto", "border": "0 solid transparent" } + }, "⚙️", 8, _hoisted_17$1) + ]) + ]) + ]) + ])) : vue.createCommentVNode("", true) + ], 64); + }; + } + }; + const DwoloadPage = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-5d43769b"]]); + const _hoisted_1 = { style: { "padding-bottom": "10px" } }; + const _hoisted_2 = { style: { "height": "410px", "overflow-y": "auto" } }; + const _hoisted_3 = { + key: 0, + align: "center", + width: "100%", + color: "#1890ff", + size: "1/" + }; + const _hoisted_4 = { style: { "padding-bottom": "13px" } }; + const _hoisted_5 = ["onClick"]; + const _hoisted_6 = /* @__PURE__ */ vue.createElementVNode("a", null, "清空本地历史", -1); + const _hoisted_7 = [ + _hoisted_6 + ]; + const _hoisted_8 = { + "data-index": "0", + class: "tr-wrapper--3qYK2", + style: { "height": "52px", "width": "100%" } + }; + const _hoisted_9 = /* @__PURE__ */ vue.createElementVNode("div", { + class: "padding-element-horizontal--39l8Q", + style: { "width": "32px" } + }, null, -1); + const _hoisted_10 = { + class: "drop-wrapper--1I5zO", + "data-drop-target": "false" + }; + const _hoisted_11 = { + "data-is-dragging": "false", + class: "drag-wrapper--2Z_J-", + draggable: "true" + }; + const _hoisted_12 = { + class: "tr--5N-1q tr--3Ypim", + "data-is-selected": "false", + "data-clickable": "true", + "data-has-checkbox": "true", + style: { "cursor": "pointer" } + }; + const _hoisted_13 = ["onClick"]; + const _hoisted_14 = /* @__PURE__ */ vue.createElementVNode("span", { + "data-role": "icon", + "data-render-as": "svg", + "data-icon-type": "PDSMore", + class: "ant-dropdown-trigger icon--d-ejA" + }, [ + /* @__PURE__ */ vue.createElementVNode("svg", { + t: "1676180557921", + class: "icon", + viewBox: "0 0 1024 1024", + version: "1.1", + xmlns: "http://www.w3.org/2000/svg", + "p-id": "3478", + width: "16", + height: "16" + }, [ + /* @__PURE__ */ vue.createElementVNode("path", { + d: "M374.6 636.5c4.4 0 8.5-1.2 12.1-3.3l171.7-100c8-3.6 13.6-11.9 13.6-21.5 0-8.8-4.8-16.6-11.9-20.7l-167.8-97.8c-4.3-5-10.7-8.1-17.7-8.1-13.1 0-23.6 10.7-23.6 23.8v1.3l-0.3 0.2 0.4 199.8c-0.1 0.8-0.1 1.6-0.1 2.5 0 13.2 10.6 23.8 23.6 23.8z", + fill: "#4D4D4D", + "p-id": "3479" + }), + /* @__PURE__ */ vue.createElementVNode("path", { + d: "M64.7 586.3a32.2 32.1 0 1 0 64.4 0 32.2 32.1 0 1 0-64.4 0Z", + fill: "#4D4D4D", + "p-id": "3480" + }), + /* @__PURE__ */ vue.createElementVNode("path", { + d: "M960 398.3c0.1-1.6 0.2-3.2 0.2-4.8 0-35-28.5-63.3-63.6-63.3-11.7 0-22.7 3.2-32.2 8.7l-0.5-0.3-31.5 18.2v-64.7c-0.1-73.1-59.9-133-133.1-133H197.4c-73.1 0-133 59.8-133 133v165.8h0.2c0 17.7 14.4 32.1 32.2 32.1s32.2-14.4 32.2-32.1h0.2V287c0-35.2 28.8-64 64-64h510.2c35.2 0 64 28.8 64 64v448.9c0 35.2-28.8 64-64 64H193.3c-35.2 0-64-28.8-64-64v-21.4c0-17.7-14.4-32.1-32.2-32.1-17.8 0-32.2 14.4-32.2 32.1h-0.4v15.3c0 73.2 59.9 133 133 133h501.9c73.2 0 133-59.8 133-133v-64.1l33.1 19.1 0.1-0.1c9.2 5.1 19.8 8 31 8 35.1 0 63.6-28.4 63.6-63.3 0-1.6-0.1-3.2-0.2-4.8V398.3z m-63.6 205.1c-0.3 7.8-6.9 14.1-15 14.1-2.7 0-5.3-0.7-7.5-2l-41.5-23.7V430.1l40.9-23.2c2.3-1.5 5.1-2.3 8.1-2.3 8.3 0 15 6.6 15 14.6v184.2z", + fill: "#4D4D4D", + "p-id": "3481" + }) + ]) + ], -1); + const _hoisted_15 = [ + _hoisted_14 + ]; + const _hoisted_16 = ["onClick"]; + const _hoisted_17 = /* @__PURE__ */ vue.createElementVNode("div", { + class: "cover--2UinW file-cover--37ssA", + "data-size": "XXS", + "data-thumbnail": "normal" + }, [ + /* @__PURE__ */ vue.createElementVNode("div", { class: "is-loaded--31jGX thumbnail-wrapper--3fR8n" }, [ + /* @__PURE__ */ vue.createElementVNode("div", { class: "thumbnail--2LF21 fill-mode-cover--OFezO size-xxs--2rm_b" }, [ + /* @__PURE__ */ vue.createElementVNode("img", { + alt: "video", + class: "fileicon--2Klqk fileicon--vNn4M", + draggable: "false", + src: "https://img.alicdn.com/imgextra/i2/O1CN01H7FCkb1P6mPJxDEFa_!!6000000001792-2-tps-80-80.png" + }) + ]) + ]) + ], -1); + const _hoisted_18 = ["title"]; + const _hoisted_19 = ["onClick"]; + const _hoisted_20 = { class: "text-secondary--38-Of" }; + const _hoisted_21 = { + class: "td--GiK_C td--3QAAr", + "data-col-key": "size", + style: { "width": "160px", "flex": "0 0 auto" } + }; + const _hoisted_22 = { class: "text-secondary--38-Of" }; + const _hoisted_23 = ["href"]; + const _hoisted_24 = /* @__PURE__ */ vue.createElementVNode("div", { + class: "padding-element-horizontal--39l8Q", + style: { "width": "32px" } + }, null, -1); + const _sfc_main = { + __name: "VideoHistoryPage", + setup(__props) { + let locList = vue.ref(user.getVideoLookList()); + let clodList = vue.ref([]); + let listData = vue.ref([ + { + key: "本地历史", + list: locList + }, + { + key: "云端历史", + list: clodList + } + ]); + vue.onMounted(() => { + videoHistoryList(listFuction); + }); + function listFuction(data) { + if (data.length != 0) { + clodList.value = data; + } + } + function clearHistory() { + user.clearVideoHistory(); + } + function playInfo(videoItem) { + if (videoItem.share) { + location.href = videoItem.href; + return; + } + let vInfo = user.getVideoPage(); + vInfo.id = videoItem.id; + vInfo.play_cursor = videoItem.play_cursor; + vInfo.name = videoItem.name; + vInfo.thumbnail = ""; + vInfo.folderName = videoItem.folderName; + vInfo.type = 0; + vInfo.href = videoItem.href; + let html2 = ``; + $2("#root").append(html2); + var app = vue.createApp(VideoPage); + app.mount( + (() => { + const app2 = $2(`
`)[0]; + $2(".previewer--3q5IV").replaceWith(app2); + $2(".ant-modal-Link .icon-wrapper--3dbbo").click(); + return app2; + })() + ); + $2("#header-close").one("click", function() { + app.unmount(); + $2("#videoHistory").remove(); + }); + } + let videoHistoryList = function(callback) { + homeWidgets().then((res) => { + if (res.data && res.data.recentUsed) { + let videoList = res.data.recentUsed.items.filter(function(item, index) { + return item.category === "video"; + }); + videoList = videoList.map((item) => { + let href = "https://www.aliyundrive.com/drive/"; + if (item.compilationId) { + let i = item.compilationId.indexOf("_"); + let compilationId = item.compilationId.substring(i + 1, item.compilationId.length); + href = "https://www.aliyundrive.com/drive/folder/" + compilationId; + } + return { + "category": "video", + "name": item.name, + "progress": item.progressPercentage, + "id": item.fileId, + "folderName": item.fromSourceDescription, + "href": href, + "share": false, + "play_cursor": item.playCursor + }; + }); + callback && callback(videoList); + return; + } + callback && callback([]); + }).catch((err) => { + callback && callback([]); + }); + }; + vue.onUnmounted(() => { + console.log("历史页面销毁"); + }); + return (_ctx, _cache) => { + return vue.openBlock(), vue.createElementBlock("div", null, [ + vue.createElementVNode("p", _hoisted_1, " 最近观看了" + vue.toDisplayString(vue.unref(locList).length + vue.unref(clodList).length) + "个视频", 1), + vue.createElementVNode("div", _hoisted_2, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(listData), (data, i1) => { + return vue.openBlock(), vue.createElementBlock("div", { key: i1 }, [ + data.key == "云端历史" ? (vue.openBlock(), vue.createElementBlock("hr", _hoisted_3)) : vue.createCommentVNode("", true), + vue.createElementVNode("h1", _hoisted_4, vue.toDisplayString(data.key), 1), + data.key == "本地历史" ? (vue.openBlock(), vue.createElementBlock("p", { + key: 1, + class: "text-secondary--38-Of clearHistory", + style: { "padding-bottom": "13px" }, + onClick: vue.withModifiers(clearHistory, ["stop"]) + }, _hoisted_7, 8, _hoisted_5)) : vue.createCommentVNode("", true), + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(data.list, (item, index) => { + return vue.openBlock(), vue.createElementBlock("div", { + style: { "height": "52px", "width": "100%" }, + key: index + }, [ + vue.createElementVNode("div", _hoisted_8, [ + _hoisted_9, + vue.createElementVNode("div", _hoisted_10, [ + vue.createElementVNode("div", _hoisted_11, [ + vue.createElementVNode("div", _hoisted_12, [ + vue.createElementVNode("div", { + onClick: ($event) => playInfo(item), + class: "checkbox--3xYhn checkbox-container--TNndw", + role: "checkbox", + "aria-checked": "false", + "data-checked": "false", + "data-partial": "false", + "data-disabled": "false", + "data-no-padding": "false" + }, _hoisted_15, 8, _hoisted_13), + vue.createElementVNode("div", { + class: "td--GiK_C td--3QAAr history_video", + compilationid: "", + "data-col-key": "name", + style: { "flex": "1 1 0%", "min-width": "160px" }, + onClick: ($event) => playInfo(item) + }, [ + _hoisted_17, + vue.createElementVNode("p", { + class: "text-primary--3DHOJ", + title: item.name + }, vue.toDisplayString(item.name), 9, _hoisted_18) + ], 8, _hoisted_16), + vue.createElementVNode("div", { + compilationid: "", + class: "history_video td--GiK_C td--3QAAr", + "data-col-key": "updated_at", + style: { "width": "200px", "flex": "0 0 auto" }, + onClick: ($event) => playInfo(item) + }, [ + vue.createElementVNode("p", _hoisted_20, "已观看" + vue.toDisplayString(item.progress) + "%", 1) + ], 8, _hoisted_19), + vue.createElementVNode("div", _hoisted_21, [ + vue.createElementVNode("p", _hoisted_22, [ + vue.createElementVNode("a", { + href: item.href + }, vue.toDisplayString(item.folderName), 9, _hoisted_23) + ]) + ]) + ]) + ]) + ]), + _hoisted_24 + ]) + ]); + }), 128)) + ]); + }), 128)) + ]) + ]); + }; + } + }; + let showDownloadHomePage = function() { + let app = vue.createApp(DwoloadPage); + showDiv("文件下载", app); + }; + function initMenuButton(menuName) { + if ($2(".button-download-aliyun").length !== 0) { + $2(".button-download-aliyun").remove(); + $2(".history-video").remove(); + } + var css = "#root header:eq(0)"; + if (menuName === "密码箱") { + css = ".actions--2qvID:eq(0)"; + } + if ($2(css).length > 0) { + var html2 = ""; + html2 += '
最近在看
'; + html2 += '
显示链接
'; + $2(css).append(html2); + $2(".button-download-aliyun").on("click", showDownloadHomePage); + $2(".history-video").on("click", () => { + let app = vue.createApp(_sfc_main); + showDiv(`
+ + + 最近再看
`, app); + }); + } else { + setTimeout(function() { + initMenuButton(menuName); + }, 1e3); + } + } + const home = (menuName) => { + initMenuButton(menuName); + }; + let shareId = function() { + var url = location.href; + var match = url.match(/aliyundrive\.com\/s\/([a-zA-Z\d]+)/); + return match ? match[1] : null; + }; + let showDownloadSharePage = function() { + let shareToken = user.getShareToken(); + if (!user.isExpires(shareToken)) { + showError$1("当前页面已过期,请刷新重试"); + return; + } else if (shareId() != shareToken.share_id) { + location.reload(); + return; + } + let app = vue.createApp(DwoloadPage); + showDiv("文件下载", app); + }; + function initShareButton() { + if ($2(".button-download-aliyun").length !== 0) { + $2(".button-download-aliyun").remove(); + } + if ($2("#root [class^=banner] [class^=right]").length !== 0 && $2(".button--fep7l").length == 0) { + var html2 = ""; + html2 += '
'; + $2("#root [class^=banner] [class^=right]").prepend(html2); + $2(".button-download-aliyun").on("click", showDownloadSharePage); + } else { + setTimeout(initShareButton, 1e3); + } + } + const share = () => { + initShareButton(); + }; + var globalMenuName; + function showHomeUi(menuName) { + globalMenuName = menuName; + console.log(globalMenuName); + if (menuName === "文件" || menuName === "收藏夹" || menuName === "密码箱") { + setTimeout(function() { + home(menuName); + }, 200); + } + } + function initHomeUi() { + let menu = $2(".nav-menu--1wQUw"); + if (menu.length !== 0) { + $2(".nav-menu-item--2oDIG").on("click", function(e) { + showHomeUi(e.currentTarget.textContent); + }); + setInterval(function() { + let node = $2(".is-active--BX1xN:eq(0)"); + if (node.length > 0) { + if (node.text() !== globalMenuName) { + showHomeUi(node.text()); + } + } + }, 700); + setTimeout(function() { + let node = $2(".is-active--BX1xN:eq(0)"); + if (node.length > 0) { + showHomeUi(node.text()); + } + }, 300); + } else { + setTimeout(initHomeUi, 500); + } + } + const ui = () => { + if (user.home()) { + initHomeUi(); + } else { + share(); + } + }; + var sessionLoadding = false; + var listenArray = new Array(); + let interceptRequest = function() { + axios2.interceptors.request.use(async function(config) { + let token = user.getToken(); + if (token == null) { + showError$1("当前登录凭证获取为空,请刷新或重新登录"); + throw "token 为空了"; + } else if (!user.isExpires(token)) { + showError$1("Token已失效,请刷新或重新登录"); + throw "Token已失效,请刷新或重新登录"; + } + let isToken = config.headers._token; + config.headers["authorization"] = "".concat(token.token_type || "", " ").concat(token.access_token || ""); + config.headers["fileId"] = token.user_id; + if (isToken != null && isToken == false) { + delete config.headers._token; + return config; + } + let session_ref = store.getItem("LG_session_Ref"); + if (session_ref != "" && session_ref == "true") { + await new Promise((resolve, reject) => { + function check() { + if (store.getItem("LG_session_Ref") == "") { + resolve(); + } else { + setTimeout(check, 200); + } + } + check(); + }); + } + if (sessionLoadding) { + await new Promise((resolve, reject) => { + listenArray.push(function() { + resolve(); + }); + }); + } + let d = user.getDeviceId(); + let s = user.getSignature(); + if (d == "" || s == "") { + sessionLoadding = true; + let rest = await user.session(token, function() { + }); + if (rest.deviceId) { + d = rest.deviceId; + } + if (rest.signature) { + s = rest.signature; + } + } + sessionLoadding = false; + if (listenArray.length > 0) { + listenArray.forEach((i) => { + i && i(); + }); + listenArray = new Array(); + } + config.headers["x-device-id"] = d; + config.headers["x-signature"] = s; + return config; + }, function(error) { + console.log("出现异常", error); + return Promise.reject(error); + }); + }; + const apiConfig = () => { + axios2.defaults.baseURL = "https://api.aliyundrive.com"; + interceptRequest(); + }; + function start() { + let token = user.getToken(); + if (token == null) { + elementPlus.ElMessage("阿里云助手:末登录,请登陆后使用"); + user.clearAll(); + return; + } + apiConfig(); + console.log(`${"\n"} %c ali.video.user.js v${"2.0.5"} 罗根大人 %c https://greasyfork.org/zh-CN/scripts/458626 ${"\n"}${"\n"}`, "color: #fadfa3; background: #030307; padding:5px 0;", "background: #fadfa3; padding:5px 0;"); + listen(); + async function init() { + elementPlus.ElMessage("脚本加载中"); + await loadScript("https://gitee.com/lord-logan/aliEccJs/releases/download/v0.3/main.js").then((val) => { + run(); + }); + } + init(); + function run(val) { + setInterval(user.refSession, 3e5); + user.refSession(); + ui(); + elementPlus.ElMessage({ + message: "阿里云助手加载成功", + type: "success" + }); + } + } + start(); +})(ElementPlus, $, axios, Vue, Hls, Artplayer); \ No newline at end of file