presence.ts 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. const presence = new Presence({
  2. clientId: "787715073007026187",
  3. }),
  4. strings = presence.getStrings({
  5. play: "general.playing",
  6. pause: "general.paused",
  7. });
  8. let lastPlaybackState: boolean,
  9. lastPath: string,
  10. browsingTimestamp = Math.floor(Date.now() / 1000);
  11. presence.on("UpdateData", async () => {
  12. const playback =
  13. !!document.querySelector("#title") ||
  14. (document.querySelectorAll("video").length &&
  15. document.querySelectorAll("video")[0].className !== "previewVideo"),
  16. curPath = document.location.pathname,
  17. presenceData: PresenceData = {
  18. largeImageKey:
  19. "https://cdn.rcd.gg/PreMiD/websites/Y/Yoake/assets/logo.png",
  20. };
  21. if (lastPath !== curPath || lastPlaybackState !== playback) {
  22. lastPath = curPath;
  23. lastPlaybackState = playback;
  24. browsingTimestamp = Math.floor(Date.now() / 1000);
  25. }
  26. if (!playback) {
  27. if (curPath.startsWith("/entity.php")) {
  28. presenceData.details = document.querySelector("#entityTitle").textContent;
  29. presenceData.state = "Đang chọn tập...";
  30. } else if (curPath.startsWith("/profile.php"))
  31. presenceData.details = "Đang xem profile...";
  32. else if (curPath.startsWith("/search.php"))
  33. presenceData.details = "Đang tìm kiếm...";
  34. else if (curPath.startsWith("/login.php"))
  35. presenceData.details = "Đang đăng nhập...";
  36. else if (curPath.startsWith("/register.php"))
  37. presenceData.details = "Đang đăng ký...";
  38. else if (curPath.startsWith("/genres.php")) {
  39. presenceData.state = `Thể loại: ${
  40. document.querySelector(".genreh2").textContent
  41. }`;
  42. presenceData.details = "Đang chọn phim...";
  43. } else if (curPath.startsWith("/history.php"))
  44. presenceData.details = "Đang xem lịch sử...";
  45. else if (curPath.startsWith("/saved.php"))
  46. presenceData.details = "Đang xem danh sách theo dõi...";
  47. else if (curPath.startsWith("/reset-password"))
  48. presenceData.details = "Đang đặt lại mật khẩu...";
  49. else presenceData.details = "Đang xem trang chủ...";
  50. presenceData.startTimestamp = browsingTimestamp;
  51. if (
  52. !curPath.startsWith("/entity.php") &&
  53. !curPath.startsWith("/genres.php")
  54. )
  55. delete presenceData.state;
  56. delete presenceData.smallImageKey;
  57. presence.setActivity(presenceData, true);
  58. return;
  59. }
  60. const [video] = document.querySelectorAll("video");
  61. if (video && !isNaN(video.duration)) {
  62. const [titleArrOne, titleArrTwo] = (
  63. document.querySelector("#title")
  64. ? document.querySelector("#title").textContent
  65. : "Không thấy tên phim!... - Tập ?"
  66. ).split(" - ");
  67. presenceData.smallImageKey = video.paused ? Assets.Pause : Assets.Play;
  68. presenceData.smallImageText = video.paused
  69. ? (await strings).pause
  70. : (await strings).play;
  71. [presenceData.startTimestamp, presenceData.endTimestamp] =
  72. presence.getTimestamps(
  73. Math.floor(video.currentTime),
  74. Math.floor(video.duration)
  75. );
  76. presenceData.details = `Đang xem: ${titleArrOne}`;
  77. presenceData.state = titleArrTwo;
  78. if (video.paused) {
  79. delete presenceData.startTimestamp;
  80. delete presenceData.endTimestamp;
  81. }
  82. presence.setActivity(presenceData, true);
  83. }
  84. });