fix: small fixes.

This commit is contained in:
Terry Geng 2020-03-06 16:38:43 +08:00
parent e70727cfd1
commit 3bfc0ae5a9
3 changed files with 27 additions and 22 deletions

View File

@ -46,11 +46,10 @@ class FileItem(BaseItem):
self.title = "" self.title = ""
self.artist = "" self.artist = ""
self.thumbnail = None self.thumbnail = None
if self.path: self.id = hashlib.md5(path.encode()).hexdigest()
self.id = hashlib.md5(path.encode()).hexdigest() if os.path.exists(self.uri()):
if os.path.exists(self.uri()): self._get_info_from_tag()
self._get_info_from_tag() self.ready = "yes"
self.ready = "yes"
else: else:
super().__init__(bot, from_dict) super().__init__(bot, from_dict)
self.path = from_dict['path'] self.path = from_dict['path']

View File

@ -6,12 +6,13 @@ import traceback
from PIL import Image from PIL import Image
import youtube_dl import youtube_dl
import glob import glob
from io import BytesIO
import base64
import constants import constants
import media import media
import variables as var import variables as var
from media.item import item_builders, item_loaders, item_id_generators from media.item import BaseItem, item_builders, item_loaders, item_id_generators
from media.file import FileItem
import media.system import media.system
log = logging.getLogger("bot") log = logging.getLogger("bot")
@ -30,30 +31,24 @@ item_loaders['url'] = url_item_loader
item_id_generators['url'] = url_item_id_generator item_id_generators['url'] = url_item_id_generator
class URLItem(FileItem): class URLItem(BaseItem):
def __init__(self, bot, url, from_dict=None): def __init__(self, bot, url, from_dict=None):
self.validating_lock = threading.Lock() self.validating_lock = threading.Lock()
if from_dict is None: if from_dict is None:
super().__init__(bot, "")
self.url = url if url[-1] != "/" else url[:-1] self.url = url if url[-1] != "/" else url[:-1]
self.title = '' self.title = ''
self.duration = 0 self.duration = 0
self.ready = 'pending'
super().__init__(bot, "")
self.id = hashlib.md5(url.encode()).hexdigest() self.id = hashlib.md5(url.encode()).hexdigest()
path = var.tmp_folder + self.id + ".mp3" self.path = var.tmp_folder + self.id + ".mp3"
self.thumbnail = ''
if os.path.isfile(path):
self.log.info("url: file existed for url %s " % self.url)
self.ready = 'yes'
self.path = path
self._get_info_from_tag()
else:
# self._get_info_from_url()
pass
else: else:
super().__init__(bot, "", from_dict) super().__init__(bot, from_dict)
self.url = from_dict['url'] self.url = from_dict['url']
self.duration = from_dict['duration'] self.duration = from_dict['duration']
self.path = from_dict['path']
self.title = from_dict['title']
self.thumbnail = from_dict['thumbnail']
self.downloading = False self.downloading = False
self.type = "url" self.type = "url"
@ -195,11 +190,21 @@ class URLItem(FileItem):
im = Image.open(path_thumbnail) im = Image.open(path_thumbnail)
self.thumbnail = self._prepare_thumbnail(im) self.thumbnail = self._prepare_thumbnail(im)
def _prepare_thumbnail(self, im):
im.thumbnail((100, 100), Image.ANTIALIAS)
buffer = BytesIO()
im = im.convert('RGB')
im.save(buffer, format="JPEG")
return base64.b64encode(buffer.getvalue()).decode('utf-8')
def to_dict(self): def to_dict(self):
dict = super().to_dict() dict = super().to_dict()
dict['type'] = 'url' dict['type'] = 'url'
dict['url'] = self.url dict['url'] = self.url
dict['duration'] = self.duration dict['duration'] = self.duration
dict['path'] = self.path
dict['title'] = self.title
dict['thumbnail'] = self.thumbnail
return dict return dict

View File

@ -424,7 +424,8 @@ class MumbleBot:
if self.exit: if self.exit:
self._loop_status = "exited" self._loop_status = "exited"
if var.config.getboolean('bot', 'save_playlist', fallback=True): if var.config.getboolean('bot', 'save_playlist', fallback=True) \
and var.config.get("bot", "save_music_library", fallback=True):
self.log.info("bot: save playlist into database") self.log.info("bot: save playlist into database")
var.playlist.save() var.playlist.save()