Index: channels/__init__.py ================================================================== --- channels/__init__.py +++ channels/__init__.py @@ -75,10 +75,11 @@ ls = None # ListStore for station treeview rowmap = None # Preserve streams-datamap pix_entry = None # ListStore entry that contains favicon img_resize = None # Rescale `img` references to icon size fixed_size = [24,24] # Default height+width for favicons + parent = None # reference to main window # mapping of stream{} data into gtk treeview/treestore representation datamap = [ # coltitle width [ datasrc key, type, renderer, attrs ] [cellrenderer2], ... ["", 20, ["state", str, "pixbuf", {}], ], @@ -256,17 +257,15 @@ def model_iter(self): return self.gtk_list.get_selection().get_selected() # Currently selected entry in stations list, return complete data dict def row(self): - no = self.rowno() - ls = self.stations() - row = ls[no] + row = self.stations() [ self.rowno() ] # resolve stream url for some plugins - if row["url"].startswith("urn:"): - row = action.resolve_urn(row) - ls[no] = row + if row.get("url", "urn:x-streamtuner2:no").startswith("urn:"): + self.status("Resolving actual stream URL for `%s`" % row["url"], timeout=2) + action.resolve_urn(row) return row # Fetches a single varname from currently selected station entry def selected(self, name="url"): return self.row().get(name)