瀏覽代碼

Add mb lookups to TSV imports

Colin Powell 2 年之前
父節點
當前提交
fae59849f8
共有 1 個文件被更改,包括 25 次插入11 次删除
  1. 25 11
      vrobbler/apps/scrobbles/tsv.py

+ 25 - 11
vrobbler/apps/scrobbles/tsv.py

@@ -6,6 +6,11 @@ import pytz
 from music.models import Album, Artist, Track
 from scrobbles.models import Scrobble
 
+from vrobbler.apps.scrobbles.musicbrainz import (
+    lookup_album_dict_from_mb,
+    lookup_artist_id_from_mb,
+)
+
 logger = logging.getLogger(__name__)
 
 
@@ -32,9 +37,8 @@ def process_audioscrobbler_tsv_file(file_path, user_tz=None):
                 continue
             artist, artist_created = Artist.objects.get_or_create(name=row[0])
             if artist_created:
-                logger.debug(f"Created artist {artist}")
-            else:
-                logger.debug(f"Found artist {artist}")
+                artist.musicbrainz_id = lookup_artist_id_from_mb(artist.name)
+                artist.save(update_fields=["musicbrainz_id"])
 
             album = None
             album_created = False
@@ -52,9 +56,22 @@ def process_audioscrobbler_tsv_file(file_path, user_tz=None):
                 album.artists.add(artist)
 
             if album_created:
-                logger.debug(f"Created album {album}")
-            else:
-                logger.debug(f"Found album {album}")
+                album_dict = lookup_album_dict_from_mb(
+                    album.name, artist_name=artist.name
+                )
+                album.year = album_dict["year"]
+                album.musicbrainz_id = album_dict["mb_id"]
+                album.musicbrainz_releasegroup_id = album_dict["mb_group_id"]
+                album.musicbrainz_albumartist_id = artist.musicbrainz_id
+                album.save(
+                    update_fields=[
+                        "year",
+                        "musicbrainz_id",
+                        "musicbrainz_releasegroup_id",
+                        "musicbrainz_albumartist_id",
+                    ]
+                )
+                album.artists.add(artist)
 
             track, track_created = Track.objects.get_or_create(
                 title=row[2],
@@ -62,13 +79,10 @@ def process_audioscrobbler_tsv_file(file_path, user_tz=None):
                 album=album,
             )
 
-            if track_created:
-                logger.debug(f"Created track {track}")
-            else:
-                logger.debug(f"Found track {track}")
-
             if track_created:
                 track.musicbrainz_id = row[7]
+                track.run_time = int(row[4])
+                track.run_time_ticks = int(row[4]) * 1000
                 track.save()
 
             timestamp = (