25 lines
747 B
Python
25 lines
747 B
Python
from app.MusicProvider.Strategy import MusicProviderStrategy
|
|
from app.models import Track
|
|
|
|
|
|
class MusicProviderContext:
|
|
def __init__(self, strategy: MusicProviderStrategy):
|
|
self.strategy = strategy
|
|
|
|
@property
|
|
def strategy(self) -> MusicProviderStrategy:
|
|
return self._strategy
|
|
|
|
@strategy.setter
|
|
def strategy(self, strategy: MusicProviderStrategy) -> None:
|
|
self._strategy = strategy
|
|
|
|
async def get_tracks(self) -> list[Track]:
|
|
token = await self.strategy.handle_token()
|
|
return await self.strategy.get_tracks(token)
|
|
|
|
async def get_cached_track(self, track: Track):
|
|
res = await self.strategy.fetch_track(track)
|
|
if not res:
|
|
return track
|
|
return res
|