presence.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. const presence = new Presence({
  2. clientId: "812413011502825504",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. presence.on("UpdateData", async () => {
  6. const presenceData: PresenceData = {
  7. largeImageKey:
  8. "https://cdn.rcd.gg/PreMiD/websites/K/Kijk/assets/logo.png",
  9. startTimestamp: browsingTimestamp,
  10. },
  11. search = document.querySelector<HTMLInputElement>(
  12. '[data-testid="searchInput"]'
  13. ),
  14. { href, pathname } = window.location,
  15. [privacy, buttons, covers] = await Promise.all([
  16. presence.getSetting<boolean>("privacy"),
  17. presence.getSetting<boolean>("buttons"),
  18. presence.getSetting<boolean>("covers"),
  19. ]),
  20. check = document.querySelector(
  21. '[class="NavItemstyle__ItemStyle-sc-1v7l1xb-1 hEDlux"]'
  22. ),
  23. title =
  24. document.querySelector('[data-testid="videoMetaDataTitle"]')
  25. ?.textContent ??
  26. document.querySelector<HTMLMetaElement>('[name="og:title"]')?.content,
  27. video = document.querySelector("video");
  28. if (privacy) presenceData.details = "Browsing...";
  29. else if (search?.value) {
  30. presenceData.details = "Zoekt naar";
  31. presenceData.state = search.value;
  32. presenceData.smallImageKey = Assets.Search;
  33. } else {
  34. switch (pathname.split("/")[1]) {
  35. case "": {
  36. presenceData.details = "Bekijkt de home pagina";
  37. break;
  38. }
  39. case "films": {
  40. if (check?.textContent === "Films") {
  41. presenceData.details = "Bekijkt alle films";
  42. presenceData.buttons = [
  43. {
  44. label: "Bekijk Alle Films",
  45. url: href,
  46. },
  47. ];
  48. } else {
  49. delete presenceData.startTimestamp;
  50. presenceData.buttons = [
  51. {
  52. label: "Bekijk Film",
  53. url: href,
  54. },
  55. ];
  56. if (!video) {
  57. presenceData.largeImageKey = document
  58. .querySelector('[data-testid="imageMediaComponent"]')
  59. ?.getAttribute("src");
  60. presenceData.details = "Bekijkt";
  61. presenceData.state = title;
  62. } else {
  63. presenceData.largeImageKey =
  64. document.querySelector<HTMLMetaElement>(
  65. '[name="og:image"]'
  66. ).content;
  67. if (!video.paused) {
  68. [presenceData.startTimestamp, presenceData.endTimestamp] =
  69. presence.getTimestampsfromMedia(video);
  70. presenceData.smallImageKey = Assets.Play;
  71. } else presenceData.smallImageKey = Assets.Pause;
  72. if (
  73. !document
  74. .querySelector('[class="jw-text jw-reset-text jw-text-alt"]')
  75. ?.textContent.includes("Adv.")
  76. )
  77. presenceData.details = title;
  78. else presenceData.details = "Advertenties";
  79. }
  80. }
  81. break;
  82. }
  83. case "programmas": {
  84. if (
  85. check?.textContent === "Programma's" ||
  86. check?.textContent === "Gemist"
  87. ) {
  88. if (check?.textContent.includes("Gemist"))
  89. presenceData.details = "Bekijkt alle gemiste programma's";
  90. else presenceData.details = `Bekijkt alle ${check?.textContent}`;
  91. presenceData.buttons = [
  92. {
  93. label: "Bekijk Programma's",
  94. url: href,
  95. },
  96. ];
  97. } else {
  98. delete presenceData.startTimestamp;
  99. presenceData.buttons = [
  100. {
  101. label: "Bekijk Programma",
  102. url: href,
  103. },
  104. ];
  105. if (!video) {
  106. presenceData.largeImageKey = document
  107. .querySelector('[data-testid="imageMediaComponent"]')
  108. ?.getAttribute("src");
  109. presenceData.details = "Bekijkt";
  110. presenceData.state = title;
  111. } else {
  112. presenceData.largeImageKey =
  113. document.querySelector<HTMLMetaElement>(
  114. '[name="og:image"]'
  115. ).content;
  116. if (!video.paused) {
  117. [presenceData.startTimestamp, presenceData.endTimestamp] =
  118. presence.getTimestampsfromMedia(video);
  119. presenceData.smallImageKey = Assets.Play;
  120. } else presenceData.smallImageKey = Assets.Pause;
  121. if (
  122. !document
  123. .querySelector('[class="jw-text jw-reset-text jw-text-alt"]')
  124. ?.textContent.includes("Adv.")
  125. )
  126. presenceData.details = title;
  127. else presenceData.details = "Advertenties";
  128. }
  129. }
  130. break;
  131. }
  132. case "fragmenten": {
  133. presenceData.details = "Bekijkt alle fragmenten";
  134. presenceData.buttons = [
  135. {
  136. label: "Bekijk Alle Fragmenten",
  137. url: href,
  138. },
  139. ];
  140. break;
  141. }
  142. default: {
  143. presenceData.details = `Bekijkt ${pathname.split("/")[1]}`;
  144. break;
  145. }
  146. }
  147. }
  148. if (!covers) {
  149. presenceData.largeImageKey =
  150. "https://cdn.rcd.gg/PreMiD/websites/K/Kijk/assets/logo.png";
  151. }
  152. if (!buttons) delete presenceData.buttons;
  153. if (presenceData.details) presence.setActivity(presenceData);
  154. else presence.setActivity();
  155. });