Check-in [9931f4e0e5]
Overview
Comment: | Use shorter domain names for homepage favicons again. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
9931f4e0e5fea7eed94561d8d7b875ab |
User & Date: | mario on 2015-05-16 01:47:25 |
Other Links: | manifest | tags |
Context
2015-05-16
| ||
16:36 | Simplify windowsmedia regexp. Omit bitrate=32, because `filter_bitrate` makes it appear empty per default then. check-in: 19ad85d18d user: mario tags: trunk | |
01:47 | Use shorter domain names for homepage favicons again. check-in: 9931f4e0e5 user: mario tags: trunk | |
2015-05-15
| ||
22:48 | Update Dirble comments. check-in: a906512c8d user: mario tags: trunk | |
Changes
Modified channels/favicon.py from [cef590a4be] to [8987f1daae].
1 2 3 | # encoding: utf-8 # api: streamtuner2 # title: Favicons | | | 1 2 3 4 5 6 7 8 9 10 11 | # encoding: utf-8 # api: streamtuner2 # title: Favicons # description: Load and display station favicons/logos. # config: # { name: load_favicon, type: bool, value: 1, description: "Load favicon instantly when â–¸playing a station.", color: yellow } # { name: favicon_google_first, type: bool, value: 1, description: "Prefer faster Google favicon to PNG conversion service." } # { name: favicon_delete_stub , type: bool, value: 1, description: "Don't accept any placeholder favicons." } # { name: google_homepage, type: bool, value: 0, description: "Google missing station homepages right away." } # type: feature # category: ui |
︙ | ︙ | |||
73 74 75 76 77 78 79 | module = "favicon" meta = plugin_meta() # Register with main def __init__(self, parent): | | | 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | module = "favicon" meta = plugin_meta() # Register with main def __init__(self, parent): # Reference main, and register station .play() hook self.parent, self.main = parent, parent parent.hooks["play"].append(self.update_playing) # Register in channel/streams updating pipeline (to predefine row["favicon"] filename from `homepage` or `img`) channels.GenericChannel.prepare_filters.append(self.prepare_filter_favicon) # Prepare favicon cache directory |
︙ | ︙ | |||
108 109 110 111 112 113 114 | channel.save() else: found = False # Favicon only for currently playing station if conf.load_favicon: if row.get("homepage") or row.get("img"): | | | > | | 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | channel.save() else: found = False # Favicon only for currently playing station if conf.load_favicon: if row.get("homepage") or row.get("img"): self.parent.thread(self.update_rows, [row], pixstore=pixstore, fresh_homepage=found) # Run through rows[] to update "favicon" from "homepage" or "img", # optionally display new image right away in ListStore def update_rows(self, entries, pixstore=None, fresh_homepage=False, **x): for i,row in enumerate(entries): ok = False # Try just once if row.get("homepage") in tried_urls: continue # Ignore existing ["favicon"] filename if row.get("favicon") and False: pass # Cache image filename: have or can't have favicon_fn = row_to_fn(row) print favicon_fn if not favicon_fn: continue try: # Image already exists if os.path.exists(favicon_fn): if not fresh_homepage: continue else: # For freshly added ["homepage"] when favicon already ok = True # exists in cache. Then just update pix store. # Download custom "img" banner/logo as favicon elif row.get("img"): tried_urls.append(row["img"]) |
︙ | ︙ | |||
232 233 234 235 236 237 238 239 240 241 | pass #----------------- # Convert row["img"] or row["homepage"] into local favicon cache filename rx_strip_proto = re.compile("^\w+://|/$") rx_non_wordchr = re.compile("[^\w._-]") def row_to_fn(row): | > > | < | > > > > > > | | | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 | pass #----------------- # Convert row["img"] or row["homepage"] into local favicon cache filename # Use just domain for homepages, but most of the url for banner/logo imgs. rx_strip_proto = re.compile("^\w+://|/$") rx_just_domain = re.compile("^\w+://|[/#?].*$") rx_non_wordchr = re.compile("[^\w._-]") def row_to_fn(row): url = row.get("img") if url: url = rx_strip_proto.sub("", url) # strip proto:// and trailing / else: url = row.get("homepage") if url: url = rx_just_domain.sub("", url) # remove proto:// and any /path if url: url = url.lower() url = rx_non_wordchr.sub("_", url) # remove any non-word characters url = "{}/{}.png".format(conf.icon_dir, url) # prefix cache directory return url # Copy banner row["img"] into icons/ directory def banner_localcopy(url, fn): |
︙ | ︙ |