fixed the _pb2 suffix error and import errors
This commit is contained in:
@@ -12,8 +12,8 @@ from librespot.common.Utils import Utils
|
||||
from librespot.core import Session
|
||||
from librespot.metadata import PlayableId
|
||||
from librespot.metadata import TrackId
|
||||
from librespot.proto import Metadata
|
||||
from librespot.proto import StorageResolve
|
||||
from librespot.proto import Metadata_pb2
|
||||
from librespot.proto import StorageResolve_pb2
|
||||
|
||||
|
||||
class PlayableContentFeeder:
|
||||
@@ -26,7 +26,7 @@ class PlayableContentFeeder:
|
||||
def __init__(self, session: Session):
|
||||
self.session = session
|
||||
|
||||
def pick_alternative_if_necessary(self, track: Metadata.Track):
|
||||
def pick_alternative_if_necessary(self, track: Metadata_pb2.Track):
|
||||
if len(track.file) > 0:
|
||||
return track
|
||||
|
||||
@@ -49,7 +49,7 @@ class PlayableContentFeeder:
|
||||
|
||||
def resolve_storage_interactive(
|
||||
self, file_id: bytes,
|
||||
preload: bool) -> StorageResolve.StorageResolveResponse:
|
||||
preload: bool) -> StorageResolve_pb2.StorageResolveResponse:
|
||||
resp = self.session.api().send(
|
||||
"GET",
|
||||
(self.STORAGE_RESOLVE_INTERACTIVE_PREFETCH
|
||||
@@ -65,13 +65,13 @@ class PlayableContentFeeder:
|
||||
if body is None:
|
||||
RuntimeError("Response body is empty!")
|
||||
|
||||
storage_resolve_response = StorageResolve.StorageResolveResponse()
|
||||
storage_resolve_response = StorageResolve_pb2.StorageResolveResponse()
|
||||
storage_resolve_response.ParseFromString(body)
|
||||
return storage_resolve_response
|
||||
|
||||
def load_track(
|
||||
self,
|
||||
track_id_or_track: typing.Union[TrackId, Metadata.Track],
|
||||
track_id_or_track: typing.Union[TrackId, Metadata_pb2.Track],
|
||||
audio_quality_picker: AudioQualityPicker,
|
||||
preload: bool,
|
||||
halt_listener: HaltListener,
|
||||
@@ -94,9 +94,9 @@ class PlayableContentFeeder:
|
||||
|
||||
def load_stream(
|
||||
self,
|
||||
file: Metadata.AudioFile,
|
||||
track: Metadata.Track,
|
||||
episode: Metadata.Episode,
|
||||
file: Metadata_pb2.AudioFile,
|
||||
track: Metadata_pb2.Track,
|
||||
episode: Metadata_pb2.Episode,
|
||||
preload: bool,
|
||||
halt_lister: HaltListener,
|
||||
):
|
||||
@@ -104,41 +104,41 @@ class PlayableContentFeeder:
|
||||
raise RuntimeError()
|
||||
|
||||
resp = self.resolve_storage_interactive(file.file_id, preload)
|
||||
if resp.result == StorageResolve.StorageResolveResponse.Result.CDN:
|
||||
if resp.result == StorageResolve_pb2.StorageResolveResponse.Result.CDN:
|
||||
if track is not None:
|
||||
return CdnFeedHelper.load_track(self.session, track, file,
|
||||
resp, preload, halt_lister)
|
||||
return CdnFeedHelper.load_episode(self.session, episode, file,
|
||||
resp, preload, halt_lister)
|
||||
elif resp.result == StorageResolve.StorageResolveResponse.Result.STORAGE:
|
||||
elif resp.result == StorageResolve_pb2.StorageResolveResponse.Result.STORAGE:
|
||||
if track is None:
|
||||
# return StorageFeedHelper
|
||||
pass
|
||||
elif resp.result == StorageResolve.StorageResolveResponse.Result.RESTRICTED:
|
||||
elif resp.result == StorageResolve_pb2.StorageResolveResponse.Result.RESTRICTED:
|
||||
raise RuntimeError("Content is restricted!")
|
||||
elif resp.result == StorageResolve.StorageResolveResponse.Response.UNRECOGNIZED:
|
||||
elif resp.result == StorageResolve_pb2.StorageResolveResponse.Response.UNRECOGNIZED:
|
||||
raise RuntimeError("Content is unrecognized!")
|
||||
else:
|
||||
raise RuntimeError("Unknown result: {}".format(resp.result))
|
||||
|
||||
class LoadedStream:
|
||||
episode: Metadata.Episode
|
||||
track: Metadata.Track
|
||||
episode: Metadata_pb2.Episode
|
||||
track: Metadata_pb2.Track
|
||||
input_stream: GeneralAudioStream
|
||||
normalization_data: NormalizationData
|
||||
metrics: PlayableContentFeeder.Metrics
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
track_or_episode: typing.Union[Metadata.Track, Metadata.Episode],
|
||||
track_or_episode: typing.Union[Metadata_pb2.Track, Metadata_pb2.Episode],
|
||||
input_stream: GeneralAudioStream,
|
||||
normalization_data: NormalizationData,
|
||||
metrics: PlayableContentFeeder.Metrics,
|
||||
):
|
||||
if type(track_or_episode) is Metadata.Track:
|
||||
if type(track_or_episode) is Metadata_pb2.Track:
|
||||
self.track = track_or_episode
|
||||
self.episode = None
|
||||
elif type(track_or_episode) is Metadata.Episode:
|
||||
elif type(track_or_episode) is Metadata_pb2.Episode:
|
||||
self.track = None
|
||||
self.episode = track_or_episode
|
||||
else:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from librespot.common.Utils import Utils
|
||||
from librespot.proto import Metadata
|
||||
from librespot.proto import Metadata_pb2
|
||||
|
||||
|
||||
class StreamId:
|
||||
@@ -7,8 +7,8 @@ class StreamId:
|
||||
episode_gid: bytes = None
|
||||
|
||||
def __init__(self,
|
||||
file: Metadata.AudioFile = None,
|
||||
episode: Metadata.Episode = None):
|
||||
file: Metadata_pb2.AudioFile = None,
|
||||
episode: Metadata_pb2.Episode = None):
|
||||
if file is None and episode is None:
|
||||
return
|
||||
if file is not None:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
from librespot.audio.AbsChunkedInputStream import AbsChunkedInputStream
|
||||
from librespot.audio.AudioKeyManager import AudioKeyManager
|
||||
from librespot.audio.GeneralAudioStream import GeneralAudioStream
|
||||
from librespot.audio.GeneralWritableStream import GeneralWritableStream
|
||||
from librespot.audio.HaltListener import HaltListener
|
||||
from librespot.audio.NormalizationData import NormalizationData
|
||||
from librespot.audio.PlayableContentFeeder import PlayableContentFeeder
|
||||
from librespot.audio.StreamId import StreamId
|
||||
from librespot.audio import AbsChunkedInputStream
|
||||
from librespot.audio import AudioKeyManager
|
||||
from librespot.audio import GeneralAudioStream
|
||||
from librespot.audio import GeneralWritableStream
|
||||
from librespot.audio import HaltListener
|
||||
from librespot.audio import NormalizationData
|
||||
from librespot.audio import PlayableContentFeeder
|
||||
from librespot.audio import StreamId
|
||||
|
||||
@@ -10,23 +10,23 @@ from librespot.audio import NormalizationData
|
||||
from librespot.audio import PlayableContentFeeder
|
||||
from librespot.common import Utils
|
||||
from librespot.core import Session
|
||||
from librespot.proto import Metadata
|
||||
from librespot.proto import StorageResolve
|
||||
from librespot.proto import Metadata_pb2
|
||||
from librespot.proto import StorageResolve_pb2
|
||||
|
||||
|
||||
class CdnFeedHelper:
|
||||
_LOGGER: logging = logging.getLogger(__name__)
|
||||
|
||||
@staticmethod
|
||||
def get_url(resp: StorageResolve.StorageResolveResponse) -> str:
|
||||
def get_url(resp: StorageResolve_pb2.StorageResolveResponse) -> str:
|
||||
return random.choice(resp.cdnurl)
|
||||
|
||||
@staticmethod
|
||||
def load_track(
|
||||
session: Session,
|
||||
track: Metadata.Track,
|
||||
file: Metadata.AudioFile,
|
||||
resp_or_url: typing.Union[StorageResolve.StorageResolveResponse, str],
|
||||
track: Metadata_pb2.Track,
|
||||
file: Metadata_pb2.AudioFile,
|
||||
resp_or_url: typing.Union[StorageResolve_pb2.StorageResolveResponse, str],
|
||||
preload: bool,
|
||||
halt_listener: HaltListener,
|
||||
) -> PlayableContentFeeder.PlayableContentFeeder.LoadedStream:
|
||||
@@ -54,7 +54,7 @@ class CdnFeedHelper:
|
||||
|
||||
@staticmethod
|
||||
def load_episode_external(
|
||||
session: Session, episode: Metadata.Episode,
|
||||
session: Session, episode: Metadata_pb2.Episode,
|
||||
halt_listener: HaltListener
|
||||
) -> PlayableContentFeeder.PlayableContentFeeder.LoadedStream:
|
||||
resp = session.client().head(episode.external_url)
|
||||
@@ -79,9 +79,9 @@ class CdnFeedHelper:
|
||||
@staticmethod
|
||||
def load_episode(
|
||||
session: Session,
|
||||
episode: Metadata.Episode,
|
||||
file: Metadata.AudioFile,
|
||||
resp_or_url: typing.Union[StorageResolve.StorageResolveResponse, str],
|
||||
episode: Metadata_pb2.Episode,
|
||||
file: Metadata_pb2.AudioFile,
|
||||
resp_or_url: typing.Union[StorageResolve_pb2.StorageResolveResponse, str],
|
||||
halt_listener: HaltListener,
|
||||
) -> PlayableContentFeeder.PlayableContentFeeder.LoadedStream:
|
||||
if type(resp_or_url) is str:
|
||||
|
||||
@@ -17,14 +17,14 @@ from librespot.audio.decrypt import NoopAudioDecrypt
|
||||
from librespot.audio.format import SuperAudioFormat
|
||||
from librespot.audio.storage import ChannelManager
|
||||
from librespot.common import Utils
|
||||
from librespot.proto import StorageResolve
|
||||
from librespot.proto import StorageResolve_pb2
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from librespot.audio.decrypt.AudioDecrypt import AudioDecrypt
|
||||
from librespot.audio.HaltListener import HaltListener
|
||||
from librespot.cache.CacheManager import CacheManager
|
||||
from librespot.core.Session import Session
|
||||
from librespot.proto import Metadata
|
||||
from librespot.proto import Metadata_pb2
|
||||
|
||||
|
||||
class CdnManager:
|
||||
@@ -50,7 +50,7 @@ class CdnManager:
|
||||
|
||||
return body
|
||||
|
||||
def stream_external_episode(self, episode: Metadata.Episode,
|
||||
def stream_external_episode(self, episode: Metadata_pb2.Episode,
|
||||
external_url: str,
|
||||
halt_listener: HaltListener):
|
||||
return CdnManager.Streamer(
|
||||
@@ -65,7 +65,7 @@ class CdnManager:
|
||||
|
||||
def stream_file(
|
||||
self,
|
||||
file: Metadata.AudioFile,
|
||||
file: Metadata_pb2.AudioFile,
|
||||
key: bytes,
|
||||
url: str,
|
||||
halt_listener: HaltListener,
|
||||
@@ -96,9 +96,9 @@ class CdnManager:
|
||||
if body is None:
|
||||
raise IOError("Response body is empty!")
|
||||
|
||||
proto = StorageResolve.StorageResolveResponse()
|
||||
proto = StorageResolve_pb2.StorageResolveResponse()
|
||||
proto.ParseFromString(body)
|
||||
if proto.result == StorageResolve.StorageResolveResponse.Result.CDN:
|
||||
if proto.result == StorageResolve_pb2.StorageResolveResponse.Result.CDN:
|
||||
url = random.choice(proto.cdnurl)
|
||||
self._LOGGER.debug("Fetched CDN url for {}: {}".format(
|
||||
Utils.bytes_to_hex(file_id), url))
|
||||
|
||||
@@ -3,7 +3,7 @@ from __future__ import annotations
|
||||
import enum
|
||||
import typing
|
||||
|
||||
from librespot.proto.Metadata import AudioFile
|
||||
from librespot.proto.Metadata_pb2 import AudioFile
|
||||
|
||||
|
||||
class AudioQuality(enum.Enum):
|
||||
|
||||
@@ -3,10 +3,10 @@ from __future__ import annotations
|
||||
import typing
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from librespot.proto import Metadata
|
||||
from librespot.proto import Metadata_pb2
|
||||
|
||||
|
||||
class AudioQualityPicker:
|
||||
def get_file(self,
|
||||
files: typing.List[Metadata.AudioFile]) -> Metadata.AudioFile:
|
||||
files: typing.List[Metadata_pb2.AudioFile]) -> Metadata_pb2.AudioFile:
|
||||
pass
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from librespot.proto import Metadata
|
||||
from librespot.proto import Metadata_pb2
|
||||
import enum
|
||||
|
||||
|
||||
@@ -8,19 +8,19 @@ class SuperAudioFormat(enum.Enum):
|
||||
AAC = 0x02
|
||||
|
||||
@staticmethod
|
||||
def get(audio_format: Metadata.AudioFile.Format):
|
||||
if audio_format == Metadata.AudioFile.Format.OGG_VORBIS_96 or \
|
||||
audio_format == Metadata.AudioFile.Format.OGG_VORBIS_160 or \
|
||||
audio_format == Metadata.AudioFile.Format.OGG_VORBIS_320:
|
||||
def get(audio_format: Metadata_pb2.AudioFile.Format):
|
||||
if audio_format == Metadata_pb2.AudioFile.Format.OGG_VORBIS_96 or \
|
||||
audio_format == Metadata_pb2.AudioFile.Format.OGG_VORBIS_160 or \
|
||||
audio_format == Metadata_pb2.AudioFile.Format.OGG_VORBIS_320:
|
||||
return SuperAudioFormat.VORBIS
|
||||
if audio_format == Metadata.AudioFile.Format.MP3_256 or \
|
||||
audio_format == Metadata.AudioFile.Format.MP3_320 or \
|
||||
audio_format == Metadata.AudioFile.Format.MP3_160 or \
|
||||
audio_format == Metadata.AudioFile.Format.MP3_96 or \
|
||||
audio_format == Metadata.AudioFile.Format.MP3_160_ENC:
|
||||
if audio_format == Metadata_pb2.AudioFile.Format.MP3_256 or \
|
||||
audio_format == Metadata_pb2.AudioFile.Format.MP3_320 or \
|
||||
audio_format == Metadata_pb2.AudioFile.Format.MP3_160 or \
|
||||
audio_format == Metadata_pb2.AudioFile.Format.MP3_96 or \
|
||||
audio_format == Metadata_pb2.AudioFile.Format.MP3_160_ENC:
|
||||
return SuperAudioFormat.MP3
|
||||
if audio_format == Metadata.AudioFile.Format.AAC_24 or \
|
||||
audio_format == Metadata.AudioFile.Format.AAC_48 or \
|
||||
audio_format == Metadata.AudioFile.Format.AAC_24_NORM:
|
||||
if audio_format == Metadata_pb2.AudioFile.Format.AAC_24 or \
|
||||
audio_format == Metadata_pb2.AudioFile.Format.AAC_48 or \
|
||||
audio_format == Metadata_pb2.AudioFile.Format.AAC_24_NORM:
|
||||
return SuperAudioFormat.AAC
|
||||
raise RuntimeError("Unknown audio format: {}".format(audio_format))
|
||||
|
||||
Reference in New Issue
Block a user