Skip to content

Commit

Permalink
feat(WeTV): add cover image setting and refactor activity logic (#9085)
Browse files Browse the repository at this point in the history
  • Loading branch information
Slowlife01 authored Jan 5, 2025
1 parent 2973204 commit 95386ee
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 58 deletions.
12 changes: 10 additions & 2 deletions websites/W/WeTV/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$schema": "https://schemas.premid.app/metadata/1.12",
"apiVersion": 1,
"author": {
"name": "Slowlife",
"name": "slowlife.",
"id": "374905512661221377"
},
"service": "WeTV",
Expand All @@ -16,7 +16,7 @@
"id": "WeTV adalah produsen dan penyedia layanan video global berkualitas tinggi."
},
"url": "wetv.vip",
"version": "1.0.19",
"version": "2.0.0",
"logo": "https://cdn.rcd.gg/PreMiD/websites/W/WeTV/assets/logo.png",
"thumbnail": "https://cdn.rcd.gg/PreMiD/websites/W/WeTV/assets/thumbnail.png",
"color": "#ffffff",
Expand All @@ -25,5 +25,13 @@
"kdrama",
"anime",
"cdrama"
],
"settings": [
{
"id": "showCover",
"title": "Show Cover",
"icon": "fas fa-images",
"value": true
}
]
}
108 changes: 52 additions & 56 deletions websites/W/WeTV/presence.ts
Original file line number Diff line number Diff line change
@@ -1,79 +1,75 @@
class WeTV extends Presence {
constructor(options: PresenceOptions) {
super(options);
}

getTitle() {
return JSON.parse(
document.querySelector('[type="application/ld+json"]').textContent
)["@graph"][0].name;
}

getMovieTitle() {
return document.querySelector(".play-relevant__link").getAttribute("title");
}

getEpisodeTitle() {
const Element = document.querySelector(
".play-relevant__item.play-relevant__item--selected"
);

if (Element) return Element.children[2].textContent;
}

getEpisodeNumber() {
return document
.querySelector(".play-video__item.play-video__item--selected")
?.textContent.match(/[1-9][0-9]?[0-9]?/)[0];
}

isMovie() {
return this.getTitle() === this.getMovieTitle();
}

isClip() {
return this.getTitle() !== this.getEpisodeTitle();
}
const enum WeTvAssets {
Play = "https://i.imgur.com/aq7mtxW.png",
Pause = "https://i.imgur.com/bYqx0sQ.png",
Search = "https://i.imgur.com/G4iFoBS.png",
}

const presence = new WeTV({
let parsedData: {
props?: {
pageProps: {
data: string;
};
};
coverInfo?: {
posterVt: string;
};
};

const presence = new Presence({
clientId: "840271335183351902",
});

presence.on("UpdateData", async () => {
const presenceData: PresenceData = {
details: "Browsing...",
largeImageKey: "https://cdn.rcd.gg/PreMiD/websites/W/WeTV/assets/logo.png",
smallImageKey: Assets.Search,
type: ActivityType.Watching,
smallImageKey: WeTvAssets.Search,
};

if (document.location.pathname.includes("/play/")) {
const video = document.querySelector("video");
const video = document.querySelector("video"),
nextdata = document.querySelector("#__NEXT_DATA__");

if (nextdata && !parsedData) {
parsedData = JSON.parse(nextdata.textContent);
parsedData = JSON.parse(parsedData.props.pageProps.data);
}

if (video) {
presenceData.details = presence.getTitle();
const episodeNumber = document.querySelector(
"li.play-video__item.play-video__item--selected"
),
episodeTitle = document.querySelector(
"li.play-relevant__item.play-relevant__item--selected"
);

presenceData.details = document.querySelector(
"div.play-sidebar__title"
).textContent;

presenceData.state = episodeNumber
? `Episode ${parseInt(episodeNumber.textContent)}`
: episodeTitle
? episodeTitle.textContent
: "Unknown";

if (parsedData && presence.getSetting<boolean>("showCover"))
presenceData.largeImageKey = parsedData.coverInfo.posterVt;

[presenceData.startTimestamp, presenceData.endTimestamp] =
presence.getTimestampsfromMedia(video);

presenceData.smallImageKey = video.paused ? Assets.Pause : Assets.Play;
presenceData.smallImageKey = video.paused
? WeTvAssets.Pause
: WeTvAssets.Play;
presenceData.smallImageText = video.paused ? "Paused" : "Playing";

if (video.paused) delete presenceData.endTimestamp;

if (presence.isMovie()) {
presenceData.state = "Movie";

if (presence.isClip()) presenceData.state = "Clip";
} else if (presence.getEpisodeNumber())
presenceData.state = `Episode ${presence.getEpisodeNumber()}`;
else presenceData.state = presence.getEpisodeTitle();
} else {
presenceData.details = "Viewing:";
presenceData.state = presence.getTitle();
if (video.paused) {
delete presenceData.startTimestamp;
delete presenceData.endTimestamp;
}
}
} else if (document.location.pathname.endsWith("/search")) {
presenceData.details = "Searching for:";
presenceData.state = document.querySelector("input").value;
}

presence.setActivity(presenceData);
Expand Down

0 comments on commit 95386ee

Please sign in to comment.