From 987a14cc178d1e240b7f3bad198b141e4def77d4 Mon Sep 17 00:00:00 2001 From: Kacper Mura <20924469+VocalZero@users.noreply.github.com> Date: Mon, 22 Dec 2025 19:50:24 +0100 Subject: [PATCH 1/2] feat(atomicradio): changed from querySelector to local storage --- websites/A/atomicradio/metadata.json | 2 +- websites/A/atomicradio/presence.ts | 32 +++++++++++++++++----------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/websites/A/atomicradio/metadata.json b/websites/A/atomicradio/metadata.json index 8e7c10490982..16a2a1b4fc77 100644 --- a/websites/A/atomicradio/metadata.json +++ b/websites/A/atomicradio/metadata.json @@ -11,7 +11,7 @@ }, "url": "atomic.radio", "regExp": "^https?[:][/][/]([a-z0-9-]+[.])*atomic[.]radio[/]", - "version": "1.2.0", + "version": "2.0.0", "logo": "https://cdn.rcd.gg/PreMiD/websites/A/atomicradio/assets/logo.png", "thumbnail": "https://cdn.rcd.gg/PreMiD/websites/A/atomicradio/assets/thumbnail.jpg", "color": "#a9f923", diff --git a/websites/A/atomicradio/presence.ts b/websites/A/atomicradio/presence.ts index 7ee06360da57..83ac9ad827a2 100644 --- a/websites/A/atomicradio/presence.ts +++ b/websites/A/atomicradio/presence.ts @@ -1,4 +1,4 @@ -import { Assets } from 'premid' +import { Assets, ActivityType } from 'premid' const presence = new Presence({ clientId: '904084297831571518', @@ -10,31 +10,37 @@ presence.on('UpdateData', () => { largeImageKey: 'https://cdn.rcd.gg/PreMiD/websites/A/atomicradio/assets/logo.png', smallImageKey: Assets.Search, startTimestamp: browsingTimestamp, + type: ActivityType.Listening, } const player = document.querySelector('div.player') - if (player) { - presenceData.largeImageKey = player.querySelector('#artwork')?.textContent + const currentSpaceItem = localStorage.getItem("currentSpace") + if (player && currentSpaceItem) { + const currentSpace = JSON.parse(currentSpaceItem) + presenceData.largeImageKey = currentSpace.current_track.artwork presenceData.smallImageKey = player.querySelector('[id*="-button"]')?.id === 'play-button' ? Assets.Play : Assets.Pause - presenceData.details = player.querySelector('div.track-title')?.textContent - presenceData.state = player.querySelector('div.track-artist')?.textContent - presenceData.endTimestamp = new Date( - player.querySelector('#endingAt')?.textContent ?? '', - ).getTime() - presenceData.smallImageText = player.querySelector('div.track-space')?.textContent + presenceData.details = currentSpace.current_track.title + presenceData.state = currentSpace.current_track.artist; + presenceData.startTimestamp = Math.floor(new Date(currentSpace.current_track.startingAt).getTime() / 1000); + presenceData.endTimestamp = Math.floor(new Date(currentSpace.current_track.endingAt).getTime() / 1000); + presenceData.smallImageText = currentSpace.name presenceData.buttons = [ { label: 'Listen', - url: `https://atomic.radio/${player.querySelector('#spaceId')?.textContent ?? ''}`, + url: `https://atomic.radio/${currentSpace.id}`, }, ] } - else { - presenceData.details = 'Browsing...' - } + else if (document.location.pathname === "/") + presenceData.details = "Browsing spaces..."; + else { + presenceData.details = `Browsing ${document.location.pathname + .split("/") + .at(-1)}...` + } if (presenceData.details) presence.setActivity(presenceData) From 9b3effb67fcafe6d59d7d34b8c9a108a822f69be Mon Sep 17 00:00:00 2001 From: Kacper Mura <20924469+VocalZero@users.noreply.github.com> Date: Mon, 22 Dec 2025 20:26:37 +0100 Subject: [PATCH 2/2] fix(atomicradio): fixed lint errors --- websites/A/atomicradio/presence.ts | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/websites/A/atomicradio/presence.ts b/websites/A/atomicradio/presence.ts index 83ac9ad827a2..94dd0184e974 100644 --- a/websites/A/atomicradio/presence.ts +++ b/websites/A/atomicradio/presence.ts @@ -1,4 +1,4 @@ -import { Assets, ActivityType } from 'premid' +import { ActivityType, Assets } from 'premid' const presence = new Presence({ clientId: '904084297831571518', @@ -14,7 +14,7 @@ presence.on('UpdateData', () => { } const player = document.querySelector('div.player') - const currentSpaceItem = localStorage.getItem("currentSpace") + const currentSpaceItem = localStorage.getItem('currentSpace') if (player && currentSpaceItem) { const currentSpace = JSON.parse(currentSpaceItem) presenceData.largeImageKey = currentSpace.current_track.artwork @@ -23,9 +23,9 @@ presence.on('UpdateData', () => { ? Assets.Play : Assets.Pause presenceData.details = currentSpace.current_track.title - presenceData.state = currentSpace.current_track.artist; - presenceData.startTimestamp = Math.floor(new Date(currentSpace.current_track.startingAt).getTime() / 1000); - presenceData.endTimestamp = Math.floor(new Date(currentSpace.current_track.endingAt).getTime() / 1000); + presenceData.state = currentSpace.current_track.artist + presenceData.startTimestamp = Math.floor(new Date(currentSpace.current_track.startingAt).getTime() / 1000) + presenceData.endTimestamp = Math.floor(new Date(currentSpace.current_track.endingAt).getTime() / 1000) presenceData.smallImageText = currentSpace.name presenceData.buttons = [ { @@ -34,14 +34,12 @@ presence.on('UpdateData', () => { }, ] } - else if (document.location.pathname === "/") - presenceData.details = "Browsing spaces..."; - else { - presenceData.details = `Browsing ${document.location.pathname - .split("/") - .at(-1)}...` - } - + else if (document.location.pathname === '/') { + presenceData.details = 'Browsing spaces...' + } + else { + presenceData.details = `Browsing ${document.location.pathname.split('/').at(-1)}...` + } if (presenceData.details) presence.setActivity(presenceData) else presence.setActivity()