From cb2ac7c469986de2b46c30c5ba91f313107c728e Mon Sep 17 00:00:00 2001 From: AmokDev Date: Fri, 21 Mar 2025 08:24:02 +0300 Subject: [PATCH] page parser --- content.js | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 content.js diff --git a/content.js b/content.js new file mode 100644 index 0000000..7bf16f0 --- /dev/null +++ b/content.js @@ -0,0 +1,95 @@ +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]; + } + + return [timeToMilliseconds(currentTime), timeToMilliseconds(totalTime)]; +} + +function get_name() { + let element = document.querySelector('.b-post__title h1[itemprop="name"]'); + return element.textContent; +} + +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) { + 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(), + }); + } + console.log(result.pluginEnabled); + }); + + } catch (error) { + console.warn(error); + } + }, 1000); +}