presence.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. const presence = new Presence({
  2. clientId: "640969147911503910",
  3. }),
  4. strings = presence.getStrings({
  5. play: "general.playing",
  6. pause: "general.paused",
  7. }),
  8. browsingTimestamp = Math.floor(Date.now() / 1000);
  9. let user: HTMLElement;
  10. presence.on("UpdateData", async () => {
  11. const presenceData: PresenceData = {
  12. largeImageKey:
  13. "https://cdn.rcd.gg/PreMiD/websites/G/GameStar/assets/logo.png",
  14. };
  15. if (document.location.hostname === "www.gamestar.de") {
  16. if (document.location.pathname === "/") {
  17. presenceData.startTimestamp = browsingTimestamp;
  18. presenceData.details = "Betrachtet die Startseite";
  19. } else if (document.location.pathname.includes("/artikel/")) {
  20. presenceData.startTimestamp = browsingTimestamp;
  21. user = document.querySelector(
  22. "#content > div:nth-child(3) > div > div > div.col-xs-12.div-article-title > div:nth-child(6) > div:nth-child(1) > h1"
  23. );
  24. presenceData.details = "Liest Artikel:";
  25. presenceData.state = user.textContent;
  26. presenceData.smallImageKey = Assets.Reading;
  27. } else if (document.location.pathname.includes("/videos/")) {
  28. const video: HTMLVideoElement = document.querySelector(
  29. "#playerID > div.jw-wrapper.jw-reset > div.jw-media.jw-reset > video"
  30. ),
  31. title = document.querySelector(
  32. "#content > div:nth-child(3) > div > div > div > div:nth-child(3) > div > h1"
  33. ).textContent;
  34. if (!isNaN(video.duration)) {
  35. presenceData.smallImageKey = video.paused ? Assets.Pause : Assets.Play;
  36. presenceData.smallImageText = video.paused
  37. ? (await strings).pause
  38. : (await strings).play;
  39. [presenceData.startTimestamp, presenceData.endTimestamp] =
  40. presence.getTimestamps(
  41. Math.floor(video.currentTime),
  42. Math.floor(video.duration)
  43. );
  44. [presenceData.details] = title.split("-");
  45. presenceData.state = title.replace(`${title.split("-")[0]}- `, "");
  46. if (video.paused) {
  47. delete presenceData.startTimestamp;
  48. delete presenceData.endTimestamp;
  49. }
  50. } else if (isNaN(video.duration)) {
  51. presenceData.startTimestamp = browsingTimestamp;
  52. presenceData.details = "Betrachtet:";
  53. presenceData.state = title;
  54. }
  55. }
  56. }
  57. if (!presenceData.details) {
  58. presenceData.startTimestamp = browsingTimestamp;
  59. presenceData.details = "Betrachtet Seite:";
  60. presenceData.state = document.querySelector("head > title").textContent;
  61. presence.setActivity(presenceData);
  62. } else presence.setActivity(presenceData);
  63. });