Inject bilibili bangumi detail page to get progress

获取追番进度逻辑
This commit is contained in:
奇趣保罗 2024-04-18 01:44:48 +08:00
parent f78abe53c8
commit 11f1ed2875
2 changed files with 90 additions and 1 deletions

89
contents/injectBili.ts Normal file
View File

@ -0,0 +1,89 @@
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);

View File

@ -27,7 +27,7 @@
},
"manifest": {
"permissions": [
"tabs", "storage"
"tabs", "storage", "scripting"
],
"host_permissions": [
"https://*/*"