Autor Thema: fhempy: googlecast  (Gelesen 24652 mal)

Offline hkspks

  • New Member
  • *
  • Beiträge: 39
Antw:fhempy: googlecast
« Antwort #270 am: 07 September 2021, 22:53:31 »
Es gibt schon ein fix bei pychromecast, habe es bei mir eingebaut und dann geht es wieder.
unter \.local\lib\python3.x\site-packages\pychromecast\controllers\spotify.py ersetzen durch:

Hi, ich stochere gerade im Nebelmeer - wo finde ich denn das file auf Buster? /usr/local/lib/python3.7/* war nicht erfolgreich :(

Offline dominik

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2877
Antw:fhempy: googlecast
« Antwort #271 am: 07 September 2021, 23:08:11 »
Hi,
/opt/fhem/.local/......
fhempy -  https://github.com/dominikkarall/fhempy: GoogleCast, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 711
Antw:fhempy: googlecast
« Antwort #272 am: 08 September 2021, 09:03:29 »
Funktioniert Spotify an Googlecast-Devices nun oder nicht?
Ich verliere den Überblick

Und wenn nicht, gibt es bereits einen Fix?

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 188
Antw:fhempy: googlecast
« Antwort #273 am: 08 September 2021, 09:17:49 »
Hi, es gibt keinen offiziellen fix und wird es vermutlich auch nicht geben.

Wenn Du unter /opt/fhem/.local/lib/python3.x/site-packages/pychromecast/controllers/spotify.py
durch folgenden Code ersetzt, sollte Spotify wieder funktionieren. Bei mir geht es auf jeden Fall...

"""
Controller to interface with Spotify.
"""
import logging
import threading
import requests
import json

from . import BaseController
from ..config import APP_SPOTIFY
from ..error import LaunchError

APP_NAMESPACE = "urn:x-cast:com.spotify.chromecast.secure.v1"
TYPE_GET_INFO = "getInfo"
TYPE_GET_INFO_RESPONSE = "getInfoResponse"
#TYPE_SET_CREDENTIALS = "setCredentials"
#TYPE_SET_CREDENTIALS_ERROR = "setCredentialsError"
#TYPE_SET_CREDENTIALS_RESPONSE = "setCredentialsResponse"
TYPE_ADD_USER = "addUser"
TYPE_ADD_USER_RESPONSE = "addUserResponse"
TYPE_ADD_USER_ERROR = "addUserError"

# pylint: disable=too-many-instance-attributes
class SpotifyController(BaseController):
    """Controller to interact with Spotify namespace."""

    def __init__(self, access_token=None, expires=None):
        super().__init__(APP_NAMESPACE, APP_SPOTIFY)

        self.logger = logging.getLogger(__name__)
        self.session_started = False
        self.access_token = access_token
        self.expires = expires
        self.is_launched = False
        self.device = None
        self.credential_error = False
        self.waiting = threading.Event()

    def receive_message(self, _message, data: dict):
        """
        Handle the auth flow and active player selection.

        Called when a message is received.
        """
        if data["type"] == TYPE_GET_INFO_RESPONSE:
            self.device = data["payload"]["deviceID"]
            self.client = data["payload"]["clientID"]
            headers = {
                'authority': 'spclient.wg.spotify.com',
                'authorization': 'Bearer {}'.format(self.access_token),
                'content-type': 'text/plain;charset=UTF-8'
            }

            request_body = json.dumps({'clientId': self.client, 'deviceId': self.device})

            response = requests.post('https://spclient.wg.spotify.com/device-auth/v1/refresh', headers=headers, data=request_body)
            json_resp = response.json()
            self.send_message({
                "type": TYPE_ADD_USER,
                "payload": {
                    "blob": json_resp["accessToken"],
                    "tokenType": "accesstoken"
                }
            })
        if data["type"] == TYPE_ADD_USER_RESPONSE:
            self.is_launched = True
            self.waiting.set()

        if data["type"] == TYPE_ADD_USER_ERROR:
            self.device = None
            self.credential_error = True
            self.waiting.set()
        return True

    def launch_app(self, timeout=10):
        """
        Launch Spotify application.

        Will raise a LaunchError exception if there is no response from the
        Spotify app within timeout seconds.
        """

        if self.access_token is None or self.expires is None:
            raise ValueError("access_token and expires cannot be empty")

        def callback():
            """Callback function"""
            self.send_message({"type": TYPE_GET_INFO, "payload": {}})
           
        self.device = None
        self.credential_error = False
        self.waiting.clear()
        self.launch(callback_function=callback)

        counter = 0
        while counter < (timeout + 1):
            if self.is_launched:
                return
            self.waiting.wait(1)
            counter += 1

        if not self.is_launched:
            raise LaunchError(
                "Timeout when waiting for status response from Spotify app"
            )

    # pylint: disable=too-many-locals
    def quick_play(self, **kwargs):
        """
        Launches the spotify controller and returns when it's ready.
        To actually play media, another application using spotify connect is required.
        """
        self.access_token = kwargs["access_token"]
        self.expires = kwargs["expires"]

        self.launch_app(timeout=20)

Gruss Jan

Offline hkspks

  • New Member
  • *
  • Beiträge: 39
Antw:fhempy: googlecast
« Antwort #274 am: 08 September 2021, 09:50:44 »
Geht bei mir nicht. Gibt als State ein Timeout vom python-binding ... Webradio klappt famos.

Zur Installationsanleitung: ggf. sollte man in die Anleitung noch aufnehmen, dass auch der auth-code gesetzt werden muss; nicht nur die beiden spotify_sp* attribute
« Letzte Änderung: 08 September 2021, 12:10:41 von hkspks »

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 711
Antw:fhempy: googlecast
« Antwort #275 am: 08 September 2021, 12:20:44 »
Bei mir funktioniert es auf beiden Google-Nest-Lautsprechern. Mal sehen wie lange - Danke für die Lösung.

@hkspks
Trag die beiden Readings spotify_sp und spotify_key mal neu ein, da war mal was, dass die sich nach einer bestimmten Zeit geändert automatisch haben.

Offline Heiner

  • Full Member
  • ***
  • Beiträge: 268
Antw:fhempy
« Antwort #276 am: 13 September 2021, 09:16:03 »
Hi,

ich versuche gerade fhempy ans laufen zu bringen und scheitere leider.

Ich habe auf meinem PI zunaechst Python 3.7 installiert mit
sudo apt install python3 python3-pip python3-dev libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libglib2.0-dev libdbus-1-dev bluez libbluetooth-devsowie ein
sudo cpan Protocol::WebSocketausgefuehrt.

Dann in fhem mein updatefile erweitert
update add https://raw.githubusercontent.com/dom...und das update durrchgefuehrt
ein
define local_pybinding BindingsIo Python
erzeugt zwar auch ein Pytonbinding_15733 der auch active ist,
aber  leider bekomme ich  nicht den "opened" status im neu definierten "local_pybinding"

fhempy_log meldet:
Unable to install package fhempy>=0.1.12: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-9ja41_su/websockets/

Was kann ich tun?
« Letzte Änderung: 16 September 2021, 09:54:15 von Heiner »
Heiner
--------------------------------
fhem auf BananaPi
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Zigbee, FritzBox, FTUI

Offline thburkhart

  • Full Member
  • ***
  • Beiträge: 277
Antw:fhempy: googlecast
« Antwort #277 am: 28 September 2021, 20:01:09 »
welches Update hast du gemacht?
2 RASPI2B, 1 RASPI3B, 2 CUL, 2 Jeelink, 52 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 22 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, IOBroker, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 711
Antw:fhempy: googlecast
« Antwort #278 am: 07 Oktober 2021, 12:45:15 »
Hat noch jemand probleme Spotify über ein Googlecast-Device abzuspielen?

Auf dem Webplayer hat sich wohl was geändert, jedenfalls wird mir als Streaming-Ziel neuerdings nur noch der Rechner und GoogleCast angezeigt und erst wenn ich GoogleCast auswähle kann ich meine Nest-Geräte auswählen. Früher konnte ich die Nest-Geräte direkt auswählen. Weiß nicht ob das was damit zu tun hat.

Ergänzung:
Die beiden Devices zeigen an ob aus dem Webplayer auf einem der Nest-Geräte gestreamt wird oder nicht.
Lassen sich im streamingfall auch komplett bedienen (Pause, Start, Stop etc.)
Lediglich das Streamen zu starten funktioniert nicht mehr.
« Letzte Änderung: 07 Oktober 2021, 13:24:58 von Superposchi »

Offline SouzA

  • Sr. Member
  • ****
  • Beiträge: 785
  • Nein! Doch!! Ohhh....
Antw:fhempy: googlecast
« Antwort #279 am: 07 Oktober 2021, 13:38:16 »
Hat noch jemand probleme Spotify über ein Googlecast-Device abzuspielen?

Auf dem Webplayer hat sich wohl was geändert, jedenfalls wird mir als Streaming-Ziel neuerdings nur noch der Rechner und GoogleCast angezeigt und erst wenn ich GoogleCast auswähle kann ich meine Nest-Geräte auswählen. Früher konnte ich die Nest-Geräte direkt auswählen. Weiß nicht ob das was damit zu tun hat.


Kann ich bestätigen.
Ist bei mir auch so.

Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, TelegramBot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly

Offline dominik

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2877
Antw:fhempy: googlecast
« Antwort #280 am: 07 Oktober 2021, 19:30:56 »
Auch mit dieser (Link) Anpassung funktioniert es nicht?
https://forum.fhem.de/index.php/topic,116455.msg1173670.html#msg1173670
fhempy -  https://github.com/dominikkarall/fhempy: GoogleCast, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 188
Antw:fhempy: googlecast
« Antwort #281 am: 07 Oktober 2021, 20:23:15 »
heute morgen gab es bei den kids keine musik aber heute abend geht es wieder...

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 711
Antw:fhempy: googlecast
« Antwort #282 am: 07 Oktober 2021, 23:54:26 »
Nein, bis vorgestern ging es mit der Änderung an der Datei und der .pm.
Doch seit vorgestern geht kein Start mehr.

Wie gesagt, wenn eine Verbindung hergestellt ist funktioniert die Bedienung einwandfrei.
Lediglich das Ansprechen des Googlecast-Gerätes scheint nicht zu funktionieren, was dazu passt, dass Spotify in der Auswahl der Streaming-Ziele wohl was verändert hat.

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 188
Antw:fhempy: googlecast
« Antwort #283 am: 08 Oktober 2021, 15:23:51 »
Komisch, bei mir läuft noch alles wie gewünscht...
Die Url wird aus einem Favorit aufgerufen
set Google_Home_Mini_Julia playFavorite 2attr Google_Home_Mini_Julia favorite_2 https://open.spotify.com/playlist/7r7uO6oaiT0KAmJWksGkED

« Letzte Änderung: 08 Oktober 2021, 15:28:35 von JF Mennedy »

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 711
Antw:fhempy: googlecast
« Antwort #284 am: 10 Oktober 2021, 14:23:35 »
Nein, bei mir geht weder Play noch PlayFavorit. Der Set-Befehl verpufft einfach und es passiert nichts.

Wie gesagt, wenn etwas gestreamt wird, funktioniert die Bedienung perfekt, ur der Start eines Streams geht nicht.
Wie ist denn bei dir die Auswahl des Streaming-Ziels? Kannst du das Google-Gerät direkt auswählen oder musst du auch erst Googlecast auswählen und dann das Gerät.

 

decade-submarginal