presence.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { Assets } from 'premid'
  2. const presence = new Presence({
  3. clientId: '715536733227450379',
  4. })
  5. const strings = presence.getStrings({
  6. play: 'general.playing',
  7. pause: 'general.paused',
  8. browsing: 'general.browsing',
  9. })
  10. let video = {
  11. current: 0,
  12. duration: 0,
  13. paused: true,
  14. }
  15. presence.on(
  16. 'iFrameData',
  17. (data: unknown) => {
  18. video = data as typeof video
  19. },
  20. )
  21. presence.on('UpdateData', async () => {
  22. const presenceData: PresenceData = {
  23. largeImageKey: 'https://cdn.rcd.gg/PreMiD/websites/A/Animelizm/assets/logo.png',
  24. }
  25. if (Number.isNaN(video.duration) || video.duration <= 0) {
  26. presenceData.details = 'Browsing...'
  27. return presence.setActivity(presenceData)
  28. }
  29. const Info = document.querySelector('.ez-detail-title')?.textContent ?? ''
  30. let episode
  31. if (Info.includes('ตอนที่')) {
  32. const info = Info.split('ตอนที่')
  33. episode = info.pop()
  34. if (episode?.includes('ซับไทย'))
  35. episode = episode.replace('ซับไทย', '').trim()
  36. else if (episode?.includes('พากย์ไทย'))
  37. episode = episode.replace('พากย์ไทย', '').trim()
  38. episode = `ตอนที่ ${episode}`
  39. presenceData.state = episode;
  40. [presenceData.details] = info
  41. }
  42. else {
  43. presenceData.details = Info
  44. }
  45. presenceData.smallImageKey = video.paused ? Assets.Pause : Assets.Play
  46. presenceData.smallImageText = video.paused
  47. ? (await strings).pause
  48. : (await strings).play
  49. if (!video.paused) {
  50. [presenceData.startTimestamp, presenceData.endTimestamp] = presence.getTimestamps(
  51. Math.floor(video.current),
  52. Math.floor(video.duration),
  53. )
  54. }
  55. else {
  56. delete presenceData.startTimestamp
  57. delete presenceData.endTimestamp
  58. }
  59. presence.setActivity(presenceData)
  60. })