A decentralized music tracking and discovery platform built on AT Protocol 🎵

fix: update artist parsing logic to handle semicolon-separated values

+8 -7
+4 -1
apps/api/src/nowplaying/nowplaying.service.ts
··· 615 615 let { data: mbTrack } = await ctx.musicbrainz.post<MusicbrainzTrack>( 616 616 "/hydrate", 617 617 { 618 - artist: track.artist.split(",").map((a) => ({ name: a.trim() })), 618 + artist: track.artist 619 + .replaceAll(";", ",") 620 + .split(",") 621 + .map((a) => ({ name: a.trim() })), 619 622 name: track.title, 620 623 album: track.album, 621 624 }
+4 -6
apps/api/src/tealfm/index.ts
··· 14 14 collection: "fm.teal.alpha.feed.play", 15 15 limit, 16 16 }); 17 - console.log("Recent plays:"); 18 - console.log(chalk.cyan(JSON.stringify(res.data.records, null, 2))); 19 17 return res.data.records; 20 18 } 21 19 22 20 async function publishPlayingNow( 23 21 agent: Agent, 24 22 track: MusicbrainzTrack, 25 - duration: number, 23 + duration: number 26 24 ) { 27 25 try { 28 26 // wait 60 seconds to ensure the track is actually being played ··· 36 34 // diff in seconds less than 60 37 35 Math.abs( 38 36 new Date(record.playedTime).getTime() - 39 - new Date(track.timestamp).getTime(), 37 + new Date(track.timestamp).getTime() 40 38 ) < 60000 41 39 ); 42 40 }); 43 41 if (alreadyPlayed) { 44 42 console.log( 45 43 `Track ${chalk.cyan(track.name)} by ${chalk.cyan( 46 - track.artist.map((a) => a.name).join(", "), 47 - )} already played recently. Skipping...`, 44 + track.artist.map((a) => a.name).join(", ") 45 + )} already played recently. Skipping...` 48 46 ); 49 47 return; 50 48 }