import type { PlasmoCSConfig } from "plasmo"; export const config: PlasmoCSConfig = { run_at: "document_start", matches: ["https://www.bilibili.com/bangumi/media/*"], world: "MAIN", }; console.log("尝试获取当前追番进度"); // 所有剧集(是个数组) // { // "aid": 280423481, // "badge": "", // "badge_info": { // "bg_color": "#FB7299", // "bg_color_night": "#BB5B76", // "text": "" // }, // "badge_type": 0, // "cid": 1323548379, // "cover": "http://i0.hdslb.com/bfs/archive/5356e34bfc9d1b39ad551a506960cec82c37c80f.png", // "from": "bangumi", // "id": 781703, // "is_premiere": 0, // "long_title": "任务26 跟踪父亲和母亲", // "share_url": "https://www.bilibili.com/bangumi/play/ep781703", // "status": 2, // "title": "26", // "vid": "" // } let sections; // 进度对象 // { // "last_ep_id": 810668, // "last_ep_index": "35", // "last_time": 245 // } let progress; // 进度(对应 section 接口里面所有剧集数组的索引) let progressIndex; const open = XMLHttpRequest.prototype.open; const send = XMLHttpRequest.prototype.send; Object.defineProperty(XMLHttpRequest.prototype, "open", { value: function (...params) { this._paul_url = params[1]; return open.apply(this, params); }, writable: true }) Object.defineProperty(XMLHttpRequest.prototype, "send", { value: function (...params) { if ( this._paul_url.includes("season/section") || this._paul_url.includes("season/user/status") ) { this.addEventListener("load", function () { if (this._paul_url.includes("season/section")) { sections = JSON.parse(this.response).result.main_section.episodes; } else if (this._paul_url.includes("season/user/status")) { progress = JSON.parse(this.response).result.progress; } }) } return send.apply(this, params); }, writable: true, }); const checkDataIsHandled = window.setInterval(() => { if (sections && progress) { progressIndex = sections.findIndex( (item) => item.id === progress.last_ep_id ); console.log("播放进度获取完成", progressIndex); window.clearInterval(checkDataIsHandled); } }, 1000);