presence.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const presence = new Presence({
  2. clientId: "630533580119998496",
  3. }),
  4. strings = presence.getStrings({
  5. play: "general.playing",
  6. pause: "general.paused",
  7. });
  8. presence.on("UpdateData", async () => {
  9. const presenceData: PresenceData = {
  10. largeImageKey:
  11. "https://cdn.rcd.gg/PreMiD/websites/C/Comedy%20Central/assets/logo.png",
  12. };
  13. if (document.location.pathname.startsWith("/episodes")) {
  14. const player: HTMLVideoElement = document.querySelector(
  15. ".edge-player-content-element"
  16. );
  17. let epNumber: string | Element | HTMLElement =
  18. document.querySelector(".meta span");
  19. epNumber &&= `${(epNumber as HTMLElement).textContent
  20. .replace("Season ", "S")
  21. .replace(" Ep ", ":E")} `;
  22. epNumber ??= "";
  23. [presenceData.startTimestamp, presenceData.endTimestamp] =
  24. presence.getTimestamps(
  25. Math.floor(player.currentTime),
  26. Math.floor(player.duration)
  27. );
  28. presenceData.details = document.querySelector(".header h3 a").textContent;
  29. presenceData.state =
  30. epNumber + document.querySelector(".sub-header h1").textContent;
  31. presenceData.smallImageKey = player.paused ? Assets.Pause : Assets.Play;
  32. presenceData.smallImageText = player.paused
  33. ? (await strings).pause
  34. : (await strings).play;
  35. if (player.paused) {
  36. delete presenceData.startTimestamp;
  37. delete presenceData.endTimestamp;
  38. }
  39. presence.setActivity(presenceData);
  40. } else {
  41. presenceData.details = "Browsing...";
  42. presenceData.startTimestamp = Date.now();
  43. presence.setActivity(presenceData);
  44. }
  45. });