Skip to content

Commit

Permalink
feat(StreamingCommunity): add new presence (PreMiD#8623)
Browse files Browse the repository at this point in the history
  • Loading branch information
Hikki0710 authored Jul 29, 2024
1 parent 5aa3f2b commit 886837a
Show file tree
Hide file tree
Showing 3 changed files with 134 additions and 0 deletions.
12 changes: 12 additions & 0 deletions websites/S/StreamingCommunity/iframe.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
const iframe = new iFrame();

iframe.on("UpdateData", async () => {
const video = document.querySelector<HTMLVideoElement>("video");
if (video) {
iframe.send({
current: video.currentTime,
duration: video.duration,
paused: video.paused,
});
}
});
39 changes: 39 additions & 0 deletions websites/S/StreamingCommunity/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"$schema": "https://schemas.premid.app/metadata/1.10",
"author": {
"id": "533014724569333770",
"name": "hikki"
},
"service": "StreamingCommunity",
"description": {
"en": "StreamingCommunity is a website to watch tv series and movies in italian for free",
"it": "StreamingCommunity è un sito web per guardare serie tv e film in italiano gratuitamente"
},
"url": "streamingcommunity.photos",
"version": "1.0.0",
"logo": "https://i.imgur.com/KbJrDH1.png",
"thumbnail": "https://i.imgur.com/TTYdQJw.png",
"color": "#171c1f",
"category": "videos",
"tags": [
"streamingcommunity",
"video",
"media",
"streaming",
"streaming-service"
],
"iframe": true,
"iFrameRegExp": ".*",
"settings": [
{
"id": "lang",
"multiLanguage": true
},
{
"id": "cover",
"title": "Show Cover",
"icon": "fad fa-images",
"value": true
}
]
}
83 changes: 83 additions & 0 deletions websites/S/StreamingCommunity/presence.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
const presence = new Presence({
clientId: "1143161714293080104",
});

const enum Assets {
Logo = "https://i.imgur.com/KbJrDH1.png",
}

async function getStrings() {
return presence.getStrings(
{
paused: "general.paused",
play: "general.playing",
search: "general.searchFor",
viewCategory: "general.viewCategory",
viewHome: "general.viewHome",
viewShow: "general.viewShow",
},
await presence.getSetting<string>("lang").catch(() => "en")
);
}

let strings: Awaited<ReturnType<typeof getStrings>>,
oldLang: string = null,
current: number,
duration: number,
paused: boolean;

presence.on(
"iFrameData",
(data: { current: number; duration: number; paused: boolean }) => {
({ current, duration, paused } = data);
}
);

presence.on("UpdateData", async () => {
const presenceData: PresenceData = {
largeImageKey: Assets.Logo,
},
[newLang, cover] = await Promise.all([
presence.getSetting<string>("lang").catch(() => "en"),
presence.getSetting<boolean>("cover"),
]),
{ pathname } = document.location;

if (oldLang !== newLang || !strings) {
oldLang = newLang;
strings = await getStrings();
}
if (pathname === "/") presenceData.details = strings.viewHome;
else if (pathname.startsWith("/search")) {
presenceData.smallImageKey = Assets.Search;
presenceData.details = `${strings.search} ${
document.querySelector<HTMLInputElement>(".search-input > input")?.value
}`;
} else if (pathname.startsWith("/titles")) {
presenceData.smallImageKey = Assets.Viewing;
presenceData.smallImageText = strings.viewShow;
presenceData.details = `${strings.viewShow} ${pathname
.replace(/\/titles\/\d+/g, "")
.replaceAll("-", " ")}`;
presenceData.largeImageKey = cover
? document.querySelector<HTMLSourceElement>(
".background-image-loader > source"
)?.srcset ?? Assets.Logo
: Assets.Logo;
} else if (pathname.startsWith("/watch")) {
delete presenceData.startTimestamp;
presenceData.smallImageKey = paused ? Assets.Pause : Assets.Play;
presenceData.smallImageText = paused ? strings.paused : strings.play;
presenceData.details = `${strings.play} ${document
.querySelector("title")
?.textContent?.replace("- StreamingCommunity", "")
?.replace("Watch", "")}`;
if (!isNaN(duration) && !paused)
[, presenceData.endTimestamp] = presence.getTimestamps(current, duration);
} else if (pathname.startsWith("/serie-tv"))
presenceData.details = `${strings.viewCategory} tv series`;
else if (pathname.startsWith("/film"))
presenceData.details = `${strings.viewCategory} movie`;

presence.setActivity(presenceData);
});

0 comments on commit 886837a

Please sign in to comment.