mirror of
https://github.com/Horizontal42/Sort_YM.git
synced 2026-11-10 19:11:59 +03:00
fix apply always re-duplicating tracks on every re-run
track_key compared "id:albumId" against playlist track_id, but Yandex never echoes albumId back for playlist entries (always None on read) - so the existing-tracks check could never match anything, and every apply run re-inserted the whole account on top of itself.
This commit is contained in:
parent
384095f496
commit
1c814830e5
2 changed files with 9 additions and 4 deletions
|
|
@ -105,7 +105,10 @@ def apply_classification(
|
||||||
no_album = 0
|
no_album = 0
|
||||||
failed = 0
|
failed = 0
|
||||||
for row in playlist_rows:
|
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:
|
if track_key in already:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,9 @@ class FakeTrackShort:
|
||||||
|
|
||||||
class FakeClient:
|
class FakeClient:
|
||||||
def __init__(self):
|
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.created = []
|
||||||
self.inserted = []
|
self.inserted = []
|
||||||
self.next_kind = 200
|
self.next_kind = 200
|
||||||
|
|
@ -57,7 +59,7 @@ class FlakyClient:
|
||||||
return [self.playlist]
|
return [self.playlist]
|
||||||
|
|
||||||
def users_playlists(self, kind):
|
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
|
return self.playlist
|
||||||
|
|
||||||
def users_playlists_insert_track(self, kind, track_id, album_id, revision=1):
|
def users_playlists_insert_track(self, kind, track_id, album_id, revision=1):
|
||||||
|
|
@ -66,7 +68,7 @@ class FlakyClient:
|
||||||
if self.insert_calls == 1:
|
if self.insert_calls == 1:
|
||||||
raise TimedOutError()
|
raise TimedOutError()
|
||||||
self.playlist.revision += 1
|
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
|
return self.playlist
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue