presence.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. const presence = new Presence({
  2. clientId: "882003722270572574",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. let npTitle: string, npArtist: string, npOnAir: string, npListeners: number;
  6. function fetchStats(): void {
  7. fetch("https://staff.weareharmony.net/api/nowplaying")
  8. .then(result => result.json())
  9. .then(result => {
  10. npTitle = result.song.title;
  11. npArtist = result.song.artist;
  12. npOnAir = result.onAir.name;
  13. npListeners = result.listeners;
  14. });
  15. }
  16. fetchStats();
  17. setInterval(fetchStats, 10000);
  18. presence.on("UpdateData", async () => {
  19. const presenceData: PresenceData = {
  20. largeImageKey:
  21. "https://cdn.rcd.gg/PreMiD/websites/H/Harmony/assets/logo.png",
  22. smallImageKey: Assets.Live,
  23. };
  24. if (document.location.hash.startsWith("#/")) {
  25. presenceData.startTimestamp = browsingTimestamp;
  26. presenceData.smallImageText = `Listeners: ${npListeners} | Live DJ: ${npOnAir}`;
  27. if (document.location.hash === "#/Home") {
  28. presenceData.details = `🎶 ➜ ${npTitle}`;
  29. presenceData.state = `🎤 ➜ ${npArtist}`;
  30. } else if (document.location.hash.startsWith("#/User")) {
  31. presenceData.details = `📰 ➜ Viewing user: ${
  32. document.querySelector(
  33. "body > div.page-container > div > div.p-container > p"
  34. ).textContent
  35. }`;
  36. presenceData.state = `💿 ➜ ${npOnAir}`;
  37. } else if (document.location.hash.startsWith("#/Song")) {
  38. presenceData.details = `📰 ➜ Viewing song: ${
  39. document.querySelector(".sp-title").textContent
  40. }`;
  41. presenceData.state = `🎤 ➜ ${
  42. document.querySelector(".sp-artist").textContent
  43. }`;
  44. } else if (document.location.hash.startsWith("#/Library")) {
  45. presenceData.details = `📰 ➜ Viewing page: ${
  46. (document.querySelector(".mlib") || document.querySelector(".olib"))
  47. .textContent
  48. }`;
  49. presenceData.state = `💿 ➜ ${npOnAir}`;
  50. } else if (document.location.hash.startsWith("#/Special.Blank")) {
  51. presenceData.details = `📰 ➜ ${
  52. document.querySelector("#navbar > ul.dropdown.ubox > div > h1")
  53. .textContent
  54. } got FUNKY TOWNED!`;
  55. presenceData.state = `💿 ➜ ${npOnAir}`;
  56. } else {
  57. presenceData.details = `📰 ➜ Viewing page: ${
  58. document.location.hash.slice(2).split("?")[0]
  59. }`;
  60. presenceData.state = `💿 ➜ ${npOnAir}`;
  61. }
  62. }
  63. presence.setActivity(presenceData);
  64. });