2017-09-11 1 views
1

Je travaille sur une application Kivy du contrôleur Sonos (fonctionnant sur RPi). Le côté sonos des choses utilise node.js. Mon application kivy envoie actuellement une requête http pour obtenir l'état des sonos (volume, station, chanson, etc.) puis met à jour les étiquettes et les images. Cela fonctionne bien, mais je voudrais l'utiliser tordu à la place. Pour commencer, j'utilise l'exemple d'application Echo Server qui se trouve dans les documents kivy (https://kivy.org/docs/guide/other-frameworks.html). Lorsque je l'exécute, dataReceived obtient correctement les informations d'état en cours sur un changement d'état Sonos. C'est génial. Malheureusement, les données sont un mélange de texte et de json. Je me demande s'il y a un moyen d'analyser le json qui est retourné. Les données icianalyse des données en données torsadéesRecevoir

type de contenu: application/JSON contenu longueur: 1570 hôte: localhost: 8000 connexion: fermer

{ "type": "mute changement", "données": { "uuid": "RINCON_000000000000001400", "previousMute": true, "previousMute": false, "roomname": "office"}}

Au lieu d'utiliser dataReceived, est-il une meilleure façon? J'ai cherché un moyen juste obtenir le json (corps) sans toutes les informations d'en-tête, mais je n'ai pas trouvé beaucoup qui a fonctionné.

TIA

Répondre

0

utilisation Twisted Web. Par exemple:

from twisted.internet import reactor, endpoints 
from twisted.web.server import Site 
from twisted.web.resource import Resource 
import time 

class EchoPage(Resource): 
    isLeaf = True 
    def render_GET(self, request): 
     return "I got: {}".format(
      request.content.read(), 
     ) 

resource = EchoPage() 
factory = Site(resource) 
endpoint = endpoints.TCP4ServerEndpoint(reactor, 8880) 
endpoint.listen(factory) 
reactor.run()