Index: channels/radiotray.py ================================================================== --- channels/radiotray.py +++ channels/radiotray.py @@ -143,11 +143,11 @@ try: if conf.radiotray_map == "play": self.radiotray_ng().play_url(row["url"]) else: self.radiotray_ng().add_radio(row["title"], row["url"], group) - except Exception, e: + except Exception as e: log.ERR("RTNG DBUS error", e) try: cfg = self.radiotray_ng().get_config() self.save_rtng_json(cfg, row, group) self.radiotray_ng().reload_bookmarks() Index: channels/specbuttons.py ================================================================== --- channels/specbuttons.py +++ channels/specbuttons.py @@ -111,11 +111,11 @@ f = subprocess.Popen(["locate", "/usr/share/[pi]*s/*%s*.*" % btn], stdout=subprocess.PIPE) except: return None path, err = f.communicate() if not err: - return path.split("\n")[0] + return path.decode("utf-8").split("\n")[0] # Update paths when saving config dialog def update_paths(self): r = {} for btn, cmd in conf.specbuttons.items(): Index: contrib/scripts.py ================================================================== --- contrib/scripts.py +++ contrib/scripts.py @@ -38,11 +38,12 @@ # not caching the final stream url. # Conversly this plugin prevents editing of script station entries. # -import os, shutil, copy, subprocess, sys, StringIO +import os, shutil, copy, subprocess, sys +from compat2and3 import StringIO import csv, zipfile import re, json, pq import ahttp import config from config import *