diff --git a/src/components/now-playing.vue b/src/components/now-playing.vue index 8e0db68..c28da9b 100644 --- a/src/components/now-playing.vue +++ b/src/components/now-playing.vue @@ -1,9 +1,7 @@ diff --git a/src/utils/change-title.ts b/src/utils/ChangeTitle.ts similarity index 100% rename from src/utils/change-title.ts rename to src/utils/ChangeTitle.ts diff --git a/src/utils/Song.ts b/src/utils/Song.ts new file mode 100644 index 0000000..c4dee8e --- /dev/null +++ b/src/utils/Song.ts @@ -0,0 +1,52 @@ +import axios from 'axios' +const api_domain = import.meta.env.VITE_BACKEND_DOMAIN + +export class Song { + LFM_API: string + LFM_USERNAME: string + + is_now_playing: boolean = false + song: string = 'track_name' + song_mbid: string = 'track_song_mbid' + artist: string = 'track_artist' + album: string = 'track_album' + album_mbid: string = 'track_album_mbid' + cover_url: string = 'cover_url' + + constructor(lfm_api: string, lfm_username: string) { + this.LFM_API = lfm_api + this.LFM_USERNAME = lfm_username + } + + update_cover_url() { + const base_url = api_domain.replace(/\/$/, '') + + // спасибо любимому копилоту (модель гемини 3.1 про превью) за это великое решение + const safe_artist = encodeURIComponent(this.artist || 'unknown') + const safe_album = encodeURIComponent(this.album || 'unknown') + const safe_mbid = this.album_mbid || '0' + + this.cover_url = `${base_url}/cover/${safe_artist}/${safe_album}/${safe_mbid}` + } + + async update_song_data() { + try { + const track_data = await ( + await axios.get( + `https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=${this.LFM_USERNAME}&api_key=${this.LFM_API}&format=json&limit=1`, + ) + ).data.recenttracks.track + + console.log(track_data) + + this.is_now_playing = track_data.length > 1 + this.song = track_data[0].name + this.song_mbid = track_data[0].mbid + this.artist = track_data[0].artist['#text'] + this.album = track_data[0].album['#text'] + this.album_mbid = track_data[0].album.mbid + } catch (error) { + console.error('Error fetching data:', error) + } + } +}