From 3bfc0ae5a93c25fcd34769d9e4b3ec9eeb5d72bd Mon Sep 17 00:00:00 2001 From: Terry Geng Date: Fri, 6 Mar 2020 16:38:43 +0800 Subject: [PATCH] fix: small fixes. --- media/file.py | 9 ++++----- media/url.py | 37 +++++++++++++++++++++---------------- mumbleBot.py | 3 ++- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/media/file.py b/media/file.py index 781e39c..a336226 100644 --- a/media/file.py +++ b/media/file.py @@ -46,11 +46,10 @@ class FileItem(BaseItem): self.title = "" self.artist = "" self.thumbnail = None - if self.path: - self.id = hashlib.md5(path.encode()).hexdigest() - if os.path.exists(self.uri()): - self._get_info_from_tag() - self.ready = "yes" + self.id = hashlib.md5(path.encode()).hexdigest() + if os.path.exists(self.uri()): + self._get_info_from_tag() + self.ready = "yes" else: super().__init__(bot, from_dict) self.path = from_dict['path'] diff --git a/media/url.py b/media/url.py index 2c759fb..c11ea8c 100644 --- a/media/url.py +++ b/media/url.py @@ -6,12 +6,13 @@ import traceback from PIL import Image import youtube_dl import glob +from io import BytesIO +import base64 import constants import media import variables as var -from media.item import item_builders, item_loaders, item_id_generators -from media.file import FileItem +from media.item import BaseItem, item_builders, item_loaders, item_id_generators import media.system log = logging.getLogger("bot") @@ -30,30 +31,24 @@ item_loaders['url'] = url_item_loader item_id_generators['url'] = url_item_id_generator -class URLItem(FileItem): +class URLItem(BaseItem): def __init__(self, bot, url, from_dict=None): self.validating_lock = threading.Lock() if from_dict is None: + super().__init__(bot, "") self.url = url if url[-1] != "/" else url[:-1] self.title = '' self.duration = 0 - self.ready = 'pending' - super().__init__(bot, "") self.id = hashlib.md5(url.encode()).hexdigest() - path = var.tmp_folder + self.id + ".mp3" - - 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 + self.path = var.tmp_folder + self.id + ".mp3" + self.thumbnail = '' else: - super().__init__(bot, "", from_dict) + super().__init__(bot, from_dict) self.url = from_dict['url'] self.duration = from_dict['duration'] + self.path = from_dict['path'] + self.title = from_dict['title'] + self.thumbnail = from_dict['thumbnail'] self.downloading = False self.type = "url" @@ -195,11 +190,21 @@ class URLItem(FileItem): im = Image.open(path_thumbnail) 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): dict = super().to_dict() dict['type'] = 'url' dict['url'] = self.url dict['duration'] = self.duration + dict['path'] = self.path + dict['title'] = self.title + dict['thumbnail'] = self.thumbnail return dict diff --git a/mumbleBot.py b/mumbleBot.py index 1d7ece6..5b11658 100644 --- a/mumbleBot.py +++ b/mumbleBot.py @@ -424,7 +424,8 @@ class MumbleBot: if self.exit: 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") var.playlist.save()