Merge from upstream
authorJonathan Bangert <jonathan@bangert.dk>
Fri, 21 Jul 2023 13:40:55 +0000 (15:40 +0200)
committerJonathan Bangert <jonathan@bangert.dk>
Fri, 21 Jul 2023 13:40:55 +0000 (15:40 +0200)
1  2 
music_assistant/server/providers/deezer/__init__.py

index 6241f09d2fde9925debcfd6afe2cf190b0ffda5f,e74bb338e069208e66e8a691e3f4d435cbf153d7..d9b57ca2ecbb53d7df93407d3f716b829888b59e
@@@ -2,8 -2,8 +2,9 @@@
  import hashlib
  from asyncio import TaskGroup
  from collections.abc import AsyncGenerator
 +from dataclasses import dataclass
  from math import ceil
+ from typing import Any
  
  import deezer
  from aiohttp import ClientTimeout
@@@ -521,12 -520,23 +535,23 @@@ class DeezerProvider(MusicProvider):  
              metadata=MediaItemMetadata(
                  images=[MediaItemImage(type=ImageType.THUMB, path=playlist.picture_big)],
              ),
 -            is_editable=playlist.creator.id == self.client.user.id,
 +            is_editable=playlist.creator.id == self.user.id,
          )
  
-     def parse_track(self, track: deezer.Track, user_country: str) -> Track:
+     def parse_track(
+         self,
+         track: deezer.Track,
+         user_country: str,
+         extra_init_kwargs: dict[str, Any] | None = None,
+     ) -> Track | PlaylistTrack:
          """Parse the deezer-python track to a MASS track."""
-         return Track(
+         if "position" in extra_init_kwargs:
+             track_class = PlaylistTrack
+         elif "disc_number" in extra_init_kwargs and "track_number" in extra_init_kwargs:
+             track_class = AlbumTrack
+         else:
+             track_class = Track
+         return track_class(
              item_id=str(track.id),
              provider=self.domain,
              name=track.title,