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); }