[READ-ONLY] Mirror of https://github.com/FoxxMD/multi-scrobbler. Scrobble plays from multiple sources to multiple clients docs.multi-scrobbler.app
deezer docker jellyfin koito lastfm listenbrainz maloja mopidy mpris music music-assistant plex scrobble self-hosted spotify subsonic tautulli youtube-music
0

Configure Feed

Select the types of activity you want to include in your feed.

chore: fix code styling in musicbrainz transformer

FoxxMD (Jul 10, 2026, 3:15 PM UTC) 85d1a0e6 1ae45c60

+10 -19
+10 -19
src/backend/common/transforms/MusicbrainzTransformer.ts
··· 611 611 612 612 // if brainz meta contains track MBID then we should be able to get the exact release 613 613 let explicitList: IRecordingMatch[]; 614 - let filtered = false; 614 + let filtered: boolean; 615 615 [explicitList, filtered] = filterByExplicitTrackMbid(transformData.recordings, play); 616 616 if(filtered) { 617 617 this.logger.debug(`Found exact release using track MBID`); ··· 752 752 if(releaseStatusAllow.length === 0 && releaseStatusDeny.length === 0) { 753 753 return list; 754 754 } 755 - const releaseFiltered = list.map(x => { 756 - return { 755 + const releaseFiltered = list.map(x => ({ 757 756 ...x, 758 757 releases: x.releases === undefined ? [] : x.releases.filter(y => { 759 758 if(releaseStatusAllow.length > 0) { ··· 761 760 } 762 761 return !releaseStatusDeny.includes(y.status?.toLocaleLowerCase() as MBReleaseStatus) 763 762 }) 764 - } 765 - }); 763 + })); 766 764 return releaseFiltered.filter(x => ( 767 765 (list.find(y => y.id === x.id).releases ?? []).length === 0 768 766 && releaseAllowEmpty ··· 779 777 if(releaseGroupPrimaryTypeAllow.length === 0 && releaseGroupPrimaryTypeAllow.length === 0) { 780 778 return list; 781 779 } 782 - const releaseFiltered = list.map(x => { 783 - return { 780 + const releaseFiltered = list.map(x => ({ 784 781 ...x, 785 782 releases: x.releases === undefined ? [] : x.releases.filter(y => { 786 783 if(releaseGroupPrimaryTypeAllow.length > 0) { ··· 788 785 } 789 786 return !releaseGroupPrimaryTypeDeny.includes(y["release-group"]?.["primary-type"]?.toLocaleLowerCase() as MBReleaseGroupPrimaryType) 790 787 }) 791 - } 792 - }); 788 + })); 793 789 return releaseFiltered.filter(x => ( 794 790 (list.find(y => y.id === x.id).releases ?? []).length === 0 795 791 && releaseAllowEmpty ··· 806 802 if(releaseGroupSecondaryTypeAllow.length === 0 && releaseGroupSecondaryTypeDeny.length === 0) { 807 803 return list; 808 804 } 809 - const releaseFiltered = list.map(x => { 810 - return { 805 + const releaseFiltered = list.map(x => ({ 811 806 ...x, 812 807 releases: x.releases === undefined ? [] : x.releases.filter(y => { 813 808 if(releaseGroupSecondaryTypeAllow.length > 0) { ··· 815 810 } 816 811 return intersect(releaseGroupSecondaryTypeDeny, (y["release-group"]?.["secondary-types"] ?? []).map(x => x.toLocaleLowerCase()) as MBReleaseGroupSecondaryType[]).length === 0; 817 812 }) 818 - } 819 - }); 813 + })); 820 814 return releaseFiltered.filter(x => ( 821 815 (list.find(y => y.id === x.id).releases ?? []).length === 0 822 816 && releaseAllowEmpty ··· 833 827 if(releaseCountryAllow.length === 0 && releaseCountryDeny.length === 0) { 834 828 return list; 835 829 } 836 - const releaseFiltered = list.map(x => { 837 - return { 830 + const releaseFiltered = list.map(x => ({ 838 831 ...x, 839 832 releases: x.releases === undefined ? [] : x.releases.filter(y => { 840 833 if(releaseCountryAllow.length > 0) { ··· 842 835 } 843 836 return !releaseCountryDeny.includes(y.country?.toLocaleLowerCase()) 844 837 }) 845 - } 846 - }); 838 + })); 847 839 return releaseFiltered.filter(x => ( 848 840 (list.find(y => y.id === x.id).releases ?? []).length === 0 849 841 && releaseAllowEmpty ··· 862 854 break; 863 855 } 864 856 for (const rel of rec.releases) { 865 - // @ts-ignore 866 - if (rel.media.some(x => x.track.some(y => y.id === play.data.meta.brainz.track))) { 857 + if (rel.media.some(x => x.tracks.some(y => y.id === play.data.meta.brainz.track))) { 867 858 releaseMatchId = rel.id; 868 859 recMatch = rec; 869 860 break;