From 73e2f866c5ae444133fc4a54b8e7cda890947cf3 Mon Sep 17 00:00:00 2001 From: Dark_Ville <42322979+DarkVillager@users.noreply.github.com> Date: Tue, 16 Apr 2024 09:12:51 +0200 Subject: [PATCH] fix(WCOStream): fix presence & remove broken code (#8277) * fix(WCOStream): fix presence & remove broken code * fix(WCOStream): fix presence --- websites/W/Wcostream/iframe.ts | 21 ++++---- websites/W/Wcostream/metadata.json | 9 ++-- websites/W/Wcostream/presence.ts | 84 +++++++++++++----------------- 3 files changed, 51 insertions(+), 63 deletions(-) diff --git a/websites/W/Wcostream/iframe.ts b/websites/W/Wcostream/iframe.ts index afe3a347a190..7ed7718b45ea 100644 --- a/websites/W/Wcostream/iframe.ts +++ b/websites/W/Wcostream/iframe.ts @@ -1,16 +1,19 @@ const iframe = new iFrame(); iframe.on("UpdateData", async () => { - if (document.querySelector("#video-js_html5_api")) { + const video = document.querySelector("video"); + if (video) { iframe.send({ - paused: document - .querySelector( - "#video-js > div.vjs-control-bar > button" - ) - .title.includes("Play"), - timeLeft: document.querySelector( - "span.vjs-remaining-time-display" - ).textContent, + paused: video?.paused, + timeLeft: + document.querySelectorAll('[role="timer"]')?.[1]?.textContent ?? + document.querySelector(".vjs-remaining-time-display")?.textContent, + }); + } else { + iframe.send({ + titleV: + document.querySelector(".video-title")?.textContent ?? + document.querySelector('[property="og:title"]')?.textContent, }); } }); diff --git a/websites/W/Wcostream/metadata.json b/websites/W/Wcostream/metadata.json index 8a7be6c9fa35..66c6577c2a34 100644 --- a/websites/W/Wcostream/metadata.json +++ b/websites/W/Wcostream/metadata.json @@ -8,12 +8,9 @@ "description": { "en": "Watch anime online, You can watch anime movies online and english dubbed. Our site to watch animes. Best online animes series here." }, - "url": [ - "www.wcostream.com", - "www.wcostream.net", - "www.wcostream.org" - ], - "version": "1.1.9", + "url": "www.wcostream.com", + "regExp": "(www[.])?wcostream[.].{2,5}", + "version": "1.1.10", "logo": "https://cdn.rcd.gg/PreMiD/websites/W/Wcostream/assets/logo.png", "thumbnail": "https://cdn.rcd.gg/PreMiD/websites/W/Wcostream/assets/thumbnail.png", "color": "#FFCE39", diff --git a/websites/W/Wcostream/presence.ts b/websites/W/Wcostream/presence.ts index d2452f5b12b7..e6ef88135c45 100644 --- a/websites/W/Wcostream/presence.ts +++ b/websites/W/Wcostream/presence.ts @@ -4,18 +4,25 @@ const presence = new Presence({ browsingTimestamp = Math.floor(Date.now() / 1000); let video = { - timeLeft: "", - paused: true, -}; + paused: true, + timeLeft: "", + }, + title = ""; -presence.on("iFrameData", (data: { timeLeft: string; paused: boolean }) => { - video = data; -}); +const enum Assets { + Logo = "https://cdn.rcd.gg/PreMiD/websites/W/Wcostream/assets/logo.png", +} +presence.on( + "iFrameData", + (data: { paused: boolean; timeLeft: string; titleV: string }) => { + if (data.paused || data.timeLeft) video = data; + else title = data.titleV; + } +); presence.on("UpdateData", async () => { const presenceData: PresenceData = { - largeImageKey: - "https://cdn.rcd.gg/PreMiD/websites/W/Wcostream/assets/logo.png", + largeImageKey: Assets.Logo, details: "Browsing...", startTimestamp: browsingTimestamp, }, @@ -26,21 +33,20 @@ presence.on("UpdateData", async () => { presence.getSetting("buttons"), ]); if (video.timeLeft !== "") { + if (!title) { + title = + document.querySelector('[itemprop="partOfSeries"]')?.textContent ?? + document.querySelector(".video-title")?.textContent ?? + document.querySelector(".entry-title")?.textContent; + } presenceData.details = "Watching:"; - presenceData.state = document.querySelector( - "#content div.iltext > strong > span" - ).textContent; - if ( - document.querySelector( - "#star-watch-on > div.wcobtn > a" - ) - ) { + presenceData.state = title?.split("Episode")?.[0]; + + if (document.querySelector('[class*="s-post-image"]')) { // This is where they store their thumbnails/posters - presenceData.largeImageKey = `https://cdn.animationexplore.com/catimg/${ - document - .querySelector("#star-watch-on > div.wcobtn > a") - .href.split("/", 5)[4] - }.jpg`; + presenceData.largeImageKey = + document.querySelector('[class*="s-post-image"]') + ?.src ?? Assets.Logo; } delete presenceData.startTimestamp; const timeLeft = presence.timestampFromFormat(video.timeLeft); @@ -56,34 +62,16 @@ presence.on("UpdateData", async () => { else if (pathname.startsWith("/search")) { presenceData.details = "Searching..."; presenceData.smallImageKey = Assets.Search; - } else if (pathname.startsWith("/anime")) { - presenceData.details = "Viewing a Series:"; - presenceData.state = document.querySelector( - "tbody > tr > td > h2" - ).textContent; - presenceData.largeImageKey = document.querySelector( - "#cat-img-desc > div:nth-child(1) > img" - ).src; - presenceData.smallImageKey = Assets.Reading; - presenceData.buttons = [{ label: "View Series", url: document.URL }]; - } else if ( - document.querySelector( - "table > tbody > tr > td > h2 > a" - ) - ) { - presenceData.details = "Browsing a Category:"; - presenceData.state = document.querySelector( - "table > tbody > tr > td > h2 > a" - ).textContent; - presenceData.smallImageKey = Assets.Search; - presenceData.smallImageText = "Searching"; - } - if (!cover) { - presenceData.largeImageKey = - "https://cdn.rcd.gg/PreMiD/websites/W/Wcostream/assets/0.png"; } - if (!buttons) delete presenceData.buttons; - if (!timestamps) { + + if (!cover && presenceData.largeImageKey !== Assets.Logo) + presenceData.largeImageKey = Assets.Logo; + + if (!buttons && presenceData.buttons) delete presenceData.buttons; + if ( + !timestamps && + (presenceData.endTimestamp || presenceData.startTimestamp) + ) { delete presenceData.startTimestamp; delete presenceData.endTimestamp; }