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']
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")
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"
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
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()