Inject bilibili bangumi detail page to get progress
获取追番进度逻辑
This commit is contained in:
parent
f78abe53c8
commit
11f1ed2875
|
|
@ -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);
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
},
|
||||
"manifest": {
|
||||
"permissions": [
|
||||
"tabs", "storage"
|
||||
"tabs", "storage", "scripting"
|
||||
],
|
||||
"host_permissions": [
|
||||
"https://*/*"
|
||||
|
|
|
|||
Loading…
Reference in New Issue