diff --git a/sort_ym/apply.py b/sort_ym/apply.py index a478ec3..bb7a12d 100644 --- a/sort_ym/apply.py +++ b/sort_ym/apply.py @@ -105,7 +105,10 @@ def apply_classification( no_album = 0 failed = 0 for row in playlist_rows: - track_key = f"{row['id']}:{row['album_id']}" if row["album_id"] else str(row["id"]) + # Сервер никогда не возвращает albumId у треков в плейлисте (Track.album_id всегда + # None при чтении, проверено вживую на десятках плейлистов, включая чужие) - track_id + # всегда голый id. albumId нужен только для самой вставки, не для сравнения. + track_key = str(row["id"]) if track_key in already: continue diff --git a/tests/test_apply.py b/tests/test_apply.py index 4c0ca9c..00e0647 100644 --- a/tests/test_apply.py +++ b/tests/test_apply.py @@ -18,7 +18,9 @@ class FakeTrackShort: class FakeClient: def __init__(self): - self.playlists = {100: FakePlaylist(100, "Рок — RU", revision=5, tracks=[FakeTrackShort("1:10")])} + # Сервер никогда не возвращает albumId у треков плейлиста - track_id всегда голый id + # (проверено вживую), поэтому фейк тоже хранит только id, без ":album_id". + self.playlists = {100: FakePlaylist(100, "Рок — RU", revision=5, tracks=[FakeTrackShort("1")])} self.created = [] self.inserted = [] self.next_kind = 200 @@ -57,7 +59,7 @@ class FlakyClient: return [self.playlist] def users_playlists(self, kind): - self.playlist.tracks = [FakeTrackShort(f"{i}:{a}") for (i, a) in self.server_tracks] + self.playlist.tracks = [FakeTrackShort(str(i)) for (i, a) in self.server_tracks] return self.playlist def users_playlists_insert_track(self, kind, track_id, album_id, revision=1): @@ -66,7 +68,7 @@ class FlakyClient: if self.insert_calls == 1: raise TimedOutError() self.playlist.revision += 1 - self.playlist.tracks = [FakeTrackShort(f"{i}:{a}") for (i, a) in self.server_tracks] + self.playlist.tracks = [FakeTrackShort(str(i)) for (i, a) in self.server_tracks] return self.playlist