presence.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const enum WeTvAssets {
  2. Play = "https://cdn.rcd.gg/PreMiD/websites/W/WeTV/assets/0.png",
  3. Pause = "https://cdn.rcd.gg/PreMiD/websites/W/WeTV/assets/1.png",
  4. Search = "https://cdn.rcd.gg/PreMiD/websites/W/WeTV/assets/2.png",
  5. }
  6. let parsedData: {
  7. props?: {
  8. pageProps: {
  9. data: string;
  10. };
  11. };
  12. coverInfo?: {
  13. posterVt: string;
  14. };
  15. };
  16. const presence = new Presence({
  17. clientId: "840271335183351902",
  18. });
  19. presence.on("UpdateData", async () => {
  20. const presenceData: PresenceData = {
  21. details: "Browsing...",
  22. largeImageKey: "https://cdn.rcd.gg/PreMiD/websites/W/WeTV/assets/logo.png",
  23. type: ActivityType.Watching,
  24. smallImageKey: WeTvAssets.Search,
  25. };
  26. if (document.location.pathname.includes("/play/")) {
  27. const video = document.querySelector("video"),
  28. nextdata = document.querySelector("#__NEXT_DATA__");
  29. if (nextdata && !parsedData) {
  30. parsedData = JSON.parse(nextdata.textContent);
  31. parsedData = JSON.parse(parsedData.props.pageProps.data);
  32. }
  33. if (video) {
  34. const episodeNumber = document.querySelector(
  35. "li.play-video__item.play-video__item--selected"
  36. ),
  37. episodeTitle = document.querySelector(
  38. "li.play-relevant__item.play-relevant__item--selected"
  39. );
  40. presenceData.details = document.querySelector(
  41. "div.play-sidebar__title"
  42. ).textContent;
  43. presenceData.state = episodeNumber
  44. ? `Episode ${parseInt(episodeNumber.textContent)}`
  45. : episodeTitle
  46. ? episodeTitle.textContent
  47. : "Unknown";
  48. if (parsedData && presence.getSetting<boolean>("showCover"))
  49. presenceData.largeImageKey = parsedData.coverInfo.posterVt;
  50. [presenceData.startTimestamp, presenceData.endTimestamp] =
  51. presence.getTimestampsfromMedia(video);
  52. presenceData.smallImageKey = video.paused
  53. ? WeTvAssets.Pause
  54. : WeTvAssets.Play;
  55. presenceData.smallImageText = video.paused ? "Paused" : "Playing";
  56. if (video.paused) {
  57. delete presenceData.startTimestamp;
  58. delete presenceData.endTimestamp;
  59. }
  60. }
  61. }
  62. presence.setActivity(presenceData);
  63. });