Fix some stuff with chromecast adapter
This commit is contained in:
@@ -163,7 +163,7 @@ class ChromecastPlayer(Player):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
_serving_song_id = multiprocessing.Array("c", 1024) # huge buffer, just in case
|
_serving_song_id = multiprocessing.Array("c", 1024) # huge buffer, just in case
|
||||||
_serving_token = multiprocessing.Array("c", 12)
|
_serving_token = multiprocessing.Array("c", 16)
|
||||||
|
|
||||||
def _run_server_process(self, host: str, port: int):
|
def _run_server_process(self, host: str, port: int):
|
||||||
app = bottle.Bottle()
|
app = bottle.Bottle()
|
||||||
@@ -233,10 +233,8 @@ class ChromecastPlayer(Player):
|
|||||||
assert self._current_chromecast
|
assert self._current_chromecast
|
||||||
scheme = urlparse(uri).scheme
|
scheme = urlparse(uri).scheme
|
||||||
if scheme == "file":
|
if scheme == "file":
|
||||||
token = base64.b64encode(os.urandom(8)).decode("ascii")
|
token = base64.b16encode(os.urandom(8))
|
||||||
for r in (("+", "."), ("/", "-"), ("=", "_")):
|
self._serving_token.value = token
|
||||||
token = token.replace(*r)
|
|
||||||
self._serving_token.value = token.encode()
|
|
||||||
self._serving_song_id.value = song.id.encode()
|
self._serving_song_id.value = song.id.encode()
|
||||||
|
|
||||||
# If this fails, then we are basically screwed, so don't care if it blows
|
# If this fails, then we are basically screwed, so don't care if it blows
|
||||||
@@ -248,7 +246,8 @@ class ChromecastPlayer(Player):
|
|||||||
host_ip = s.getsockname()[0]
|
host_ip = s.getsockname()[0]
|
||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
uri = f"http://{host_ip}:{self.config.get(LAN_PORT_KEY)}/s/{token}"
|
uri = f"http://{host_ip}:{self.config.get(LAN_PORT_KEY)}/s/{token.decode()}"
|
||||||
|
print(uri)
|
||||||
|
|
||||||
cover_art_url = AdapterManager.get_cover_art_uri(song.cover_art, size=1000)
|
cover_art_url = AdapterManager.get_cover_art_uri(song.cover_art, size=1000)
|
||||||
self._current_chromecast.media_controller.play_media(
|
self._current_chromecast.media_controller.play_media(
|
||||||
|
@@ -433,7 +433,7 @@ class PlayerControls(Gtk.ActionBar):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
for player_id, player_name in players:
|
for player_id, player_name in sorted(players, key=lambda p: p[1]):
|
||||||
icon = (
|
icon = (
|
||||||
"audio-volume-high-symbolic"
|
"audio-volume-high-symbolic"
|
||||||
if player_id == self.current_device
|
if player_id == self.current_device
|
||||||
|
Reference in New Issue
Block a user