]> git.0d.be Git - botaradio.git/commitdiff
fix: small fixes.
authorTerry Geng <gengyanda@gmail.com>
Fri, 6 Mar 2020 08:38:43 +0000 (16:38 +0800)
committerTerry Geng <gengyanda@gmail.com>
Fri, 6 Mar 2020 08:38:43 +0000 (16:38 +0800)
media/file.py
media/url.py
mumbleBot.py

index 781e39c5a6609dcc1093b13c033676a312b62951..a3362264286ec1b7f5db8ff68f969aa642c724b8 100644 (file)
@@ -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']
index 2c759fb91f573d7f972b846cd247a89abe53982f..c11ea8c55564b26d0f386c44283b9a8546a8d88b 100644 (file)
@@ -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
 
index 1d7ece69fb3a4fa6ed9caa1eae97519122455e4d..5b1165806728c168f8895e3045d35610612b0707 100644 (file)
@@ -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()