try to get preview from peers, fixes #79
This commit is contained in:
parent
0ff3b9ee3c
commit
5f8094bba3
5 changed files with 33 additions and 12 deletions
|
|
@ -93,14 +93,12 @@ class Icons(dict):
|
|||
|
||||
icons = Icons(icons_db_path)
|
||||
|
||||
@run_async
|
||||
def get_icon(id, type_, size, callback):
|
||||
def get_icon_sync(id, type_, size):
|
||||
if size:
|
||||
skey = '%s:%s:%s' % (type_, id, size)
|
||||
data = icons[skey]
|
||||
if data:
|
||||
callback(bytes(data))
|
||||
return
|
||||
return bytes(data)
|
||||
key = '%s:%s' % (type_, id)
|
||||
data = icons[key]
|
||||
if not data:
|
||||
|
|
@ -128,7 +126,11 @@ def get_icon(id, type_, size, callback):
|
|||
if size:
|
||||
data = icons[skey] = resize_image(data, size=size)
|
||||
data = bytes(data) or ''
|
||||
callback(data)
|
||||
return data
|
||||
|
||||
@run_async
|
||||
def get_icon(id, type_, size, callback):
|
||||
callback(get_icon_sync(id, type_, size))
|
||||
|
||||
def clear_default_cover_cache():
|
||||
icons.clear('default:cover:')
|
||||
|
|
|
|||
|
|
@ -366,6 +366,11 @@ class Item(db.Model):
|
|||
path = self.get_path()
|
||||
if path:
|
||||
return getattr(media, self.info['extension']).cover(path)
|
||||
else:
|
||||
for u in self.users:
|
||||
if u.id != settings.USER_ID:
|
||||
if state.nodes.download_preview(u.id, self.id):
|
||||
break
|
||||
|
||||
def update_cover(self):
|
||||
key = 'cover:%s'%self.id
|
||||
|
|
@ -388,6 +393,14 @@ class Item(db.Model):
|
|||
del self.info['coverRatio']
|
||||
icons.clear('cover:%s:' % self.id)
|
||||
|
||||
def get_preview(self):
|
||||
key = 'preview:%s'%self.id
|
||||
data = icons[key]
|
||||
if not data:
|
||||
preview = self.extract_preview()
|
||||
if preview:
|
||||
icons[key] = preview
|
||||
|
||||
def update_preview(self):
|
||||
key = 'preview:%s'%self.id
|
||||
preview = self.extract_preview()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue