presence.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. const presence: Presence = new Presence({
  2. clientId: "632618001824219167",
  3. }),
  4. strings = presence.getStrings({
  5. play: "general.playing",
  6. pause: "general.paused",
  7. }),
  8. startTimestamp = Math.floor(Date.now() / 1000);
  9. function capitalise(splitStr: string[]): string {
  10. for (let i = 0; i < splitStr.length; i++) {
  11. splitStr[i] =
  12. splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);
  13. splitStr[i] = splitStr[i]
  14. .replace("Sasong", "Season")
  15. .replace("Avsnitt", "Episode");
  16. }
  17. return splitStr.join(" ");
  18. }
  19. presence.on("UpdateData", async () => {
  20. let presenceData: PresenceData = {
  21. largeImageKey:
  22. "https://cdn.rcd.gg/PreMiD/websites/V/Viaplay/assets/logo.png",
  23. startTimestamp,
  24. };
  25. const url = window.location.href;
  26. if (url.includes("/player/")) {
  27. const [video] = document.querySelectorAll("video"),
  28. timestamps = presence.getTimestamps(
  29. Math.floor(video.currentTime),
  30. Math.floor(video.duration)
  31. ),
  32. tokens = url.split("/");
  33. presenceData = {
  34. details: capitalise(tokens[6].split("-")),
  35. largeImageKey:
  36. "https://cdn.rcd.gg/PreMiD/websites/V/Viaplay/assets/logo.png",
  37. smallImageKey: video.paused ? Assets.Pause : Assets.Play,
  38. smallImageText: video.paused
  39. ? (await strings).pause
  40. : (await strings).play,
  41. startTimestamp: timestamps[0],
  42. endTimestamp: timestamps[1],
  43. };
  44. if (tokens.length > 8) {
  45. presenceData.state = `${capitalise(tokens[7].split("-"))} ${capitalise(
  46. tokens[8].split("-")
  47. )}`;
  48. }
  49. if (video.paused) {
  50. delete presenceData.startTimestamp;
  51. delete presenceData.endTimestamp;
  52. }
  53. } else if (url.includes("#search")) {
  54. presenceData.details = "Searching...";
  55. presenceData.smallImageKey = Assets.Search;
  56. } else presenceData.details = "Browsing";
  57. presence.setActivity(presenceData, true);
  58. });