Skip to content

Commit

Permalink
Shazam - Improve RealMAX filtering to allow non HiRes results
Browse files Browse the repository at this point in the history
  • Loading branch information
Inrixia committed Oct 30, 2024
1 parent 85f9cb0 commit 6fc2d1e
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 12 deletions.
4 changes: 2 additions & 2 deletions plugins/Shazam/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ const handleDrop = async (event: DragEvent) => {
});
if (matches.length === 0) return trace.msg.warn(`No matches for ${file.name}`);
for (const shazamData of matches) {
const trackName = shazamData.track?.share?.subject ?? `${shazamData.track?.title ?? "unknown"} by ${shazamData.track?.artists?.[0] ?? "unknown"}"`;
const trackName = shazamData.track?.share?.text ?? `${shazamData.track?.title ?? "unknown"} by ${shazamData.track?.artists?.[0] ?? "unknown"}"`;
const prefix = `[File: ${file.name}, Match: "${trackName}]`;
const isrc = shazamData.track?.isrc;
trace.log(shazamData);
if (isrc === undefined) {
trace.msg.log(`${prefix} No isrc returned from Shazam cannot add to playlist.`);
continue;
Expand All @@ -60,7 +61,6 @@ const handleDrop = async (event: DragEvent) => {
trace.msg.log(`Adding ${prefix}...`);
return await addToPlaylist(playlistUUID, [trackToAdd.id!.toString()]);
}
trace.log(shazamData);
trace.msg.err(`${prefix} Not avalible in Tidal.`);
}
} catch (err) {
Expand Down
19 changes: 9 additions & 10 deletions plugins/_lib/MaxTrack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,23 @@ export class MaxTrack {

return (this._maxTrackMap[itemId] = (async () => {
for (const isrc of isrcs) {
for await (const trackItem of this.getMaxTrackFromISRC(isrc)) {
if (this.hasHiRes(trackItem)) return trackItem;
for await (const trackItem of this.getMaxTrackFromISRC(isrc, this.hasHiRes)) {
return trackItem;
}
}
return false;
})());
}
public static async *getMaxTrackFromISRC(isrc: string): AsyncGenerator<TrackItem> {
public static async *getMaxTrackFromISRC(isrc: string, filter?: (trackItem: Resource) => boolean): AsyncGenerator<TrackItem> {
for await (const { resource } of fetchIsrcIterable(isrc)) {
if (resource?.id !== undefined && this.hasHiRes(<TrackItem>resource)) {
if (resource.artifactType !== "track") continue;
const trackItem = await MediaItemCache.ensureTrack(resource?.id);
if (trackItem !== undefined) yield trackItem;
}
if (resource?.id === undefined) continue;
if (resource.artifactType !== "track") continue;
if (filter && !filter(resource)) continue;
const trackItem = await MediaItemCache.ensureTrack(resource?.id);
if (trackItem !== undefined) yield trackItem;
}
return false;
}
public static hasHiRes(trackItem: TrackItem): boolean {
public static hasHiRes(trackItem: Resource | TrackItem): boolean {
const tags = trackItem.mediaMetadata?.tags;
if (tags === undefined) return false;
return tags.findIndex((tag) => tag === "HIRES_LOSSLESS") !== -1;
Expand Down

0 comments on commit 6fc2d1e

Please sign in to comment.