Skip to content

Commit 921fa66

Browse files
committed
Use pseudo-release's track titles for its recordings
1 parent 52cf741 commit 921fa66

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

beetsplug/musicbrainz.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -863,11 +863,34 @@ def album_for_id(
863863

864864
# should be None unless we're dealing with a pseudo release
865865
if actual_res is not None:
866-
actual_release = self.album_info(actual_res["release"])
866+
actual_release = self._get_actual_release(res, actual_res)
867867
return _merge_pseudo_and_actual_album(release, actual_release)
868868
else:
869869
return release
870870

871+
def _get_actual_release(
872+
self,
873+
res: JSONDict,
874+
actual_res: JSONDict,
875+
) -> beets.autotag.hooks.AlbumInfo:
876+
medium_list = res["release"]["medium-list"]
877+
for medium in medium_list:
878+
for track in medium.get("track-list", []):
879+
if "recording" not in track:
880+
continue
881+
882+
recording_overrides = {
883+
k: v
884+
for k, v in track.items()
885+
if (k != "id" and k != "recording")
886+
}
887+
track["recording"].update(recording_overrides)
888+
889+
actual_res = actual_res["release"]
890+
actual_res["medium-list"] = medium_list
891+
actual_release = self.album_info(actual_res)
892+
return actual_release
893+
871894
def track_for_id(
872895
self, track_id: str
873896
) -> beets.autotag.hooks.TrackInfo | None:

0 commit comments

Comments
 (0)