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": {
|
"manifest": {
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"tabs", "storage"
|
"tabs", "storage", "scripting"
|
||||||
],
|
],
|
||||||
"host_permissions": [
|
"host_permissions": [
|
||||||
"https://*/*"
|
"https://*/*"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue