125 lines
3.9 KiB
JavaScript
125 lines
3.9 KiB
JavaScript
function get_episode() {
|
|
const active = document.querySelector('li.b-simple_episode__item.active');
|
|
|
|
if (active) {
|
|
const textContent = active.textContent.trim();
|
|
const episodeNumberString = textContent.replace("Серия ", "");
|
|
const episodeNumber = parseInt(episodeNumberString, 10);
|
|
|
|
if (!isNaN(episodeNumber)) {
|
|
return episodeNumber;
|
|
} else {
|
|
return 0;
|
|
}
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
function get_season() {
|
|
const active = document.querySelector('li.b-simple_season__item.active');
|
|
|
|
if (active) {
|
|
const textContent = active.textContent.trim();
|
|
const episodeNumberString = textContent.replace("Сезон ", "");
|
|
const episodeNumber = parseInt(episodeNumberString, 10);
|
|
|
|
if (!isNaN(episodeNumber)) {
|
|
return episodeNumber;
|
|
} else {
|
|
return 0;
|
|
}
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
function timeToMilliseconds(timeString) {
|
|
const [hours, minutes, seconds] = timeString.split(':').map(Number);
|
|
return (hours * 3600 + minutes * 60 + seconds) * 1000;
|
|
}
|
|
|
|
function get_timestamps() {
|
|
const timeElements = document.querySelectorAll('pjsdiv[style*="pointer-events: none;"] noindex');
|
|
const times = [];
|
|
|
|
timeElements.forEach(element => {
|
|
times.push(element.textContent);
|
|
});
|
|
|
|
const currentTime = times[0];
|
|
const totalTime = times[1].replace("/ ", "");
|
|
|
|
|
|
if (currentTime == NaN || totalTime == NaN) {
|
|
console.warn("timestamps not found");
|
|
return [0, 0];
|
|
}
|
|
|
|
if (!get_timestamps.previousTimes) {
|
|
get_timestamps.previousTimes = [];
|
|
}
|
|
|
|
get_timestamps.previousTimes.push(currentTime);
|
|
|
|
if (get_timestamps.previousTimes.length > 3) {
|
|
get_timestamps.previousTimes.shift();
|
|
}
|
|
|
|
if (get_timestamps.previousTimes.length === 3 &&
|
|
get_timestamps.previousTimes.every(val => val === currentTime)) {
|
|
console.warn("currentTime repeated too many times");
|
|
return [1, 1];
|
|
}
|
|
|
|
return [timeToMilliseconds(currentTime), timeToMilliseconds(totalTime)];
|
|
}
|
|
|
|
function get_name() {
|
|
let element = document.querySelector('.b-post__title h1[itemprop="name"]');
|
|
try {
|
|
return element.textContent;
|
|
} catch (error) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function get_image_url() {
|
|
const element = document.querySelector('.b-post__infotable_left .b-sidecover a img');
|
|
return element.src;
|
|
}
|
|
|
|
if (window.location.href.includes("flymaterez.net")) {
|
|
setInterval(async () => {
|
|
try {
|
|
chrome.storage.local.get(['pluginEnabled'], function(result) {
|
|
if (result.pluginEnabled === true && get_name() !== null) {
|
|
chrome.runtime.sendMessage({
|
|
type: "send_rpc_request",
|
|
title: document.title,
|
|
url: window.location.href,
|
|
episode: get_episode(),
|
|
season: get_season(),
|
|
timestamps: get_timestamps(),
|
|
name: get_name(),
|
|
image_url: get_image_url(),
|
|
});
|
|
} else if (result.pluginEnabled === true && get_name() === null) {
|
|
chrome.runtime.sendMessage({
|
|
type: "send_rpc_request",
|
|
title: document.title,
|
|
url: window.location.href,
|
|
episode: 0,
|
|
season: 0,
|
|
timestamps: [2, 2],
|
|
name: "name",
|
|
image_url: "image_url",
|
|
});
|
|
}
|
|
});
|
|
} catch (error) {
|
|
// console.log(error);
|
|
;
|
|
}
|
|
}, 1000);
|
|
}
|