diff options
-rw-r--r-- | ssh.py | 4 | ||||
-rw-r--r-- | termcast.py | 16 |
2 files changed, 14 insertions, 6 deletions
@@ -85,7 +85,7 @@ class Connection(object): self._display_streamer_screen(streamers) - c = self.chan.recv(1).decode('utf-8') + c = self.chan.recv(1).decode('utf-8', 'ignore') if c in keymap: self.chan.send("\033[2J\033[H") return keymap[c] @@ -115,7 +115,7 @@ class Connection(object): row = 4 for streamer in streamers: key = streamer["key"] - name = streamer["name"].decode('utf-8') + name = streamer["name"].decode('utf-8', 'replace') rows = streamer["rows"] cols = streamer["cols"] viewers = streamer["viewers"] diff --git a/termcast.py b/termcast.py index 25963ef..e94da82 100644 --- a/termcast.py +++ b/termcast.py @@ -29,8 +29,12 @@ class Handler(object): m = extra_data_re.search(self.buf) if m is None: break - extra_data_json = m.group(1) - extra_data = json.loads(extra_data_json.decode('utf-8')) + try: + extra_data_json = m.group(1).decode('utf-8') + extra_data = json.loads(extra_data_json) + except Exception as e: + print("failed to parse metadata: %s" % e, file=sys.stderr) + pass self.buf = self.buf[:m.start(0)] + self.buf[m.end(0):] if "geometry" in extra_data: self.rows = extra_data["geometry"][1] @@ -124,8 +128,12 @@ class Connection(object): extra_data = {} m = extra_data_re.match(buf) if m is not None: - extra_data_json = m.group(1) - extra_data = json.loads(extra_data_json.decode('utf-8')) + try: + extra_data_json = m.group(1).decode('utf-8') + extra_data = json.loads(extra_data_json) + except Exception as e: + print("failed to parse metadata: %s" % e, file=sys.stderr) + pass buf = buf[len(m.group(0)):] if "geometry" in extra_data: |