presence.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { Assets } from 'premid'
  2. const presence = new Presence({
  3. clientId: '1188371319776100463',
  4. })
  5. presence.on('UpdateData', async () => {
  6. const presenceData: PresenceData = {
  7. largeImageKey: 'https://cdn.rcd.gg/PreMiD/websites/P/Poke/assets/logo.png',
  8. }
  9. let clear = false
  10. switch (document.location.pathname.replace('/feed', '').split('/')[1]) {
  11. case '':
  12. case 'app':
  13. presenceData.details = 'Browsing trending videos'
  14. break
  15. case 'my-acc':
  16. presenceData.details = 'Browsing subscriptions'
  17. break
  18. case 'license':
  19. case 'privacy':
  20. presenceData.details = 'Managing preferences'
  21. break
  22. case 'watch': {
  23. presenceData.smallImageKey = document.querySelector('video')
  24. && !document.querySelector('video')?.paused
  25. ? Assets.Play
  26. : Assets.Pause
  27. const videoTitleElement = document.querySelector('.video-title.t')
  28. presenceData.details = videoTitleElement
  29. ? videoTitleElement.textContent?.trim()
  30. : 'No Title Available'
  31. const channelNameElement = document.querySelector(
  32. '.video-info-pill-channelname',
  33. )
  34. presenceData.state = channelNameElement
  35. ? channelNameElement.textContent?.trim()
  36. : 'No Channel Name Available'
  37. const videoPlayer = document.querySelector('video')
  38. if (videoPlayer && !videoPlayer.paused) {
  39. [presenceData.startTimestamp, presenceData.endTimestamp] = presence.getTimestampsfromMedia(document.querySelector('video')!)
  40. }
  41. break
  42. }
  43. case 'channel': {
  44. const nameElement = document.querySelector('.name p')
  45. presenceData.details = 'Viewing channel'
  46. presenceData.state = nameElement
  47. ? nameElement.textContent?.trim()
  48. : 'No Name Available'
  49. break
  50. }
  51. default:
  52. clear = true
  53. break
  54. }
  55. if (clear)
  56. presence.setActivity()
  57. else presence.setActivity(presenceData)
  58. })