90 lines
2.2 KiB
TypeScript
90 lines
2.2 KiB
TypeScript
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);
|