Skip to content

Commit 4d2a143

Browse files
committed
combine CdnFeedHelper load_track and load_episode into load_content
1 parent b74dd82 commit 4d2a143

1 file changed

Lines changed: 13 additions & 42 deletions

File tree

librespot/audio/__init__.py

Lines changed: 13 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -326,32 +326,6 @@ def get_url(resp: StorageResolve.StorageResolveResponse) -> str:
326326
selected_url = random.choice(resp.cdnurl)
327327
return selected_url
328328

329-
@staticmethod
330-
def load_track(
331-
session: Session, track: Metadata.Track, file: Metadata.AudioFile,
332-
resp_or_url: typing.Union[StorageResolve.StorageResolveResponse,
333-
str], preload: bool,
334-
halt_listener: HaltListener) -> LoadedStream:
335-
if type(resp_or_url) is str:
336-
url = resp_or_url
337-
else:
338-
url = CdnFeedHelper.get_url(resp_or_url)
339-
start = int(time.time() * 1000)
340-
key = session.audio_key().get_audio_key(track.gid, file.file_id)
341-
audio_key_time = int(time.time() * 1000) - start
342-
343-
streamer = session.cdn().stream_file(file, key, url, halt_listener)
344-
input_stream = streamer.stream()
345-
normalization_data = NormalizationData.read(input_stream)
346-
if input_stream.skip(0xA7) != 0xA7:
347-
raise IOError("Couldn't skip 0xa7 bytes!")
348-
return LoadedStream(
349-
track,
350-
streamer,
351-
normalization_data,
352-
file.file_id, preload, audio_key_time
353-
)
354-
355329
@staticmethod
356330
def load_episode_external(
357331
session: Session, episode: Metadata.Episode,
@@ -375,9 +349,9 @@ def load_episode_external(
375349
)
376350

377351
@staticmethod
378-
def load_episode(
352+
def load_content(
379353
session: Session,
380-
episode: Metadata.Episode,
354+
track_or_episode: typing.Union[Metadata.Track, Metadata.Episode],
381355
file: Metadata.AudioFile,
382356
resp_or_url: typing.Union[StorageResolve.StorageResolveResponse, str],
383357
preload: bool,
@@ -388,7 +362,7 @@ def load_episode(
388362
else:
389363
url = CdnFeedHelper.get_url(resp_or_url)
390364
start = int(time.time() * 1000)
391-
key = session.audio_key().get_audio_key(episode.gid, file.file_id)
365+
key = session.audio_key().get_audio_key(track_or_episode.gid, file.file_id)
392366
audio_key_time = int(time.time() * 1000) - start
393367

394368
streamer = session.cdn().stream_file(file, key, url, halt_listener)
@@ -397,7 +371,7 @@ def load_episode(
397371
if input_stream.skip(0xA7) != 0xA7:
398372
raise IOError("Couldn't skip 0xa7 bytes!")
399373
return LoadedStream(
400-
episode,
374+
track_or_episode,
401375
streamer,
402376
normalization_data,
403377
file.file_id, preload, audio_key_time
@@ -742,22 +716,19 @@ def load(self, playable_id: PlayableId,
742716
preload, halt_listener)
743717
raise TypeError("Unknown content: {}".format(playable_id))
744718

745-
def load_stream(self, file: Metadata.AudioFile, track: Metadata.Track,
746-
episode: Metadata.Episode, preload: bool,
747-
halt_lister: HaltListener):
748-
if track is None and episode is None:
719+
def load_stream(self, file: Metadata.AudioFile,
720+
track_or_episode: typing.Union[Metadata.Track, Metadata.Episode],
721+
preload: bool, halt_lister: HaltListener):
722+
if track_or_episode is None:
749723
raise RuntimeError("No content passed!")
750724
elif file is None:
751725
raise RuntimeError("Content has no audio file!")
752726
response = self.resolve_storage_interactive(file.file_id, preload)
753727
if response.result == StorageResolve.StorageResolveResponse.Result.CDN:
754-
if track is not None:
755-
return CdnFeedHelper.load_track(self.__session, track, file,
756-
response, preload, halt_lister)
757-
return CdnFeedHelper.load_episode(self.__session, episode, file,
758-
response, preload, halt_lister)
728+
return CdnFeedHelper.load_content(self.__session, track_or_episode, file,
729+
response, preload, halt_lister)
759730
if response.result == StorageResolve.StorageResolveResponse.Result.STORAGE:
760-
if track is None:
731+
if track_or_episode is None:
761732
pass
762733
elif response.result == StorageResolve.StorageResolveResponse.Result.RESTRICTED:
763734
raise RuntimeError("Content is restricted!")
@@ -779,7 +750,7 @@ def load_episode(self, episode_id: EpisodeId,
779750
"Couldn't find any suitable audio file, available: {}".format(
780751
episode.audio))
781752
raise FeederException("Cannot find suitable audio file")
782-
return self.load_stream(file, None, episode, preload, halt_listener)
753+
return self.load_stream(file, episode, preload, halt_listener)
783754

784755
def load_track(self, track_id_or_track: typing.Union[TrackId,
785756
Metadata.Track],
@@ -799,7 +770,7 @@ def load_track(self, track_id_or_track: typing.Union[TrackId,
799770
"Couldn't find any suitable audio file, available: {}".format(
800771
track.file))
801772
raise FeederException("Cannot find suitable audio file")
802-
return self.load_stream(file, track, None, preload, halt_listener)
773+
return self.load_stream(file, track, preload, halt_listener)
803774

804775
def pick_alternative_if_necessary(
805776
self, track: Metadata.Track) -> typing.Union[Metadata.Track, None]:

0 commit comments

Comments
 (0)