Fix TSV imports of incomplete files

This commit is contained in:
2023-03-17 10:27:02 -04:00
parent 1b56933969
commit bbf3819e08
2 changed files with 38 additions and 10 deletions

View File

@ -1,3 +1,5 @@
from enum import Enum
JELLYFIN_VIDEO_ITEM_TYPES = ["Episode", "Movie"] JELLYFIN_VIDEO_ITEM_TYPES = ["Episode", "Movie"]
JELLYFIN_AUDIO_ITEM_TYPES = ["Audio"] JELLYFIN_AUDIO_ITEM_TYPES = ["Audio"]
@ -5,3 +7,14 @@ LONG_PLAY_MEDIA = {
"videogames": "VideoGame", "videogames": "VideoGame",
"books": "Book", "books": "Book",
} }
class AsTsvColumn(Enum):
ARTIST_NAME = 0
ALBUM_NAME = 1
TRACK_NAME = 2
TRACK_NUMBER = 3
RUN_TIME_SECONDS = 4
COMPLETE = 5
TIMESTAMP = 6
MB_ID = 7

View File

@ -3,12 +3,13 @@ import logging
from datetime import datetime from datetime import datetime
import pytz import pytz
from scrobbles.models import Scrobble
from music.utils import ( from music.utils import (
get_or_create_album, get_or_create_album,
get_or_create_artist, get_or_create_artist,
get_or_create_track, get_or_create_track,
) )
from scrobbles.constants import AsTsvColumn
from scrobbles.models import Scrobble
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -36,19 +37,33 @@ def process_audioscrobbler_tsv_file(file_path, user_id, user_tz=None):
extra={"row": row}, extra={"row": row},
) )
continue continue
artist = get_or_create_artist(row[0])
album = get_or_create_album(row[1], artist)
track = get_or_create_track( artist = get_or_create_artist(
title=row[2], row[AsTsvColumn["ARTIST_NAME"].value]
mbid=row[7], )
artist=artist, album = get_or_create_album(
album=album, row[AsTsvColumn["ALBUM_NAME"].value], artist
run_time_seconds=int(row[4]),
) )
track = get_or_create_track(
title=row[AsTsvColumn["TRACK_NAME"].value],
mbid=row[AsTsvColumn["MB_ID"].value],
artist=artist,
album=album,
run_time_seconds=int(
row[AsTsvColumn["RUN_TIME_SECONDS"].value]
),
)
if row[AsTsvColumn["COMPLETE"].value] == "S":
logger.info(
f"Skipping track {track} by {artist} because not finished"
)
continue
timestamp = ( timestamp = (
datetime.utcfromtimestamp(int(row[6])) datetime.utcfromtimestamp(
int(row[AsTsvColumn["TIMESTAMP"].value])
)
.replace(tzinfo=user_tz) .replace(tzinfo=user_tz)
.astimezone(pytz.utc) .astimezone(pytz.utc)
) )