use new default poster, remove black posters from icon cache
This commit is contained in:
parent
fbf06a1545
commit
59a3709f84
6 changed files with 61 additions and 32 deletions
|
|
@ -1,9 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
|
||||
from io import BytesIO
|
||||
from PIL import Image
|
||||
import os
|
||||
import sqlite3
|
||||
|
||||
import tornado.concurrent
|
||||
|
|
@ -12,10 +10,11 @@ import tornado.ioloop
|
|||
import tornado.web
|
||||
|
||||
from oxtornado import run_async
|
||||
from settings import icons_db_path
|
||||
from settings import icons_db_path, static_path
|
||||
from utils import resize_image
|
||||
import db
|
||||
|
||||
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -46,12 +45,9 @@ class Icons(dict):
|
|||
def set_setting(self, c, key, value):
|
||||
c.execute('INSERT OR REPLACE INTO setting values (?, ?)', (key, str(value)))
|
||||
|
||||
def black(self):
|
||||
img = Image.new('RGB', (80, 128))
|
||||
o = BytesIO()
|
||||
img.save(o, format='jpeg')
|
||||
data = o.getvalue()
|
||||
o.close()
|
||||
def default_cover(self):
|
||||
with open(os.path.join(static_path, 'png', 'cover.png'), 'rb') as f:
|
||||
data = f.read()
|
||||
return data
|
||||
|
||||
def __getitem__(self, id, default=None):
|
||||
|
|
@ -110,13 +106,26 @@ def get_icon(id, type_, size, callback):
|
|||
if not data:
|
||||
data = icons[key]
|
||||
if not data:
|
||||
data = icons.black()
|
||||
skey = '%s:%s:%s' % ('default', 'cover', size)
|
||||
if size:
|
||||
data = icons[skey]
|
||||
if data:
|
||||
size = None
|
||||
if not data:
|
||||
data = icons.default_cover()
|
||||
if size:
|
||||
data = icons[skey] = resize_image(data, size=size)
|
||||
size = None
|
||||
if size:
|
||||
data = icons[skey] = resize_image(data, size=size)
|
||||
data = bytes(data) or ''
|
||||
callback(data)
|
||||
|
||||
def clear_default_cover_cache():
|
||||
for resolution in (64, 128, 256, 512, 1024):
|
||||
key = '%s:%s:%s' % ('default', 'cover', resolution)
|
||||
del icons[key]
|
||||
|
||||
@run_async
|
||||
def get_icon_app(id, type_, size, callback):
|
||||
with db.session():
|
||||
|
|
@ -140,7 +149,7 @@ def get_icon_app(id, type_, size, callback):
|
|||
if not data:
|
||||
data = icons[key]
|
||||
if not data:
|
||||
data = icons.black()
|
||||
data = icons.default_cover()
|
||||
size = None
|
||||
if size:
|
||||
data = icons[skey] = resize_image(data, size=size)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue