diff --git a/command.py b/command.py index 47c27a5..305edba 100644 --- a/command.py +++ b/command.py @@ -275,7 +275,7 @@ def cmd_play_url(bot, user, text, command, parameter): global log url = util.get_url_from_input(parameter) - music_wrapper = get_item_wrapper(bot, type='url', url=url) + music_wrapper = get_item_wrapper(bot, type='url', url=url, user=user) var.playlist.append(music_wrapper) log.info("cmd: add to playlist: " + music_wrapper.format_debug_string()) @@ -296,9 +296,10 @@ def cmd_play_playlist(bot, user, text, command, parameter): url = util.get_url_from_input(parameter) log.debug("cmd: fetching media info from playlist url %s" % url) - items = get_playlist_info(bot, url=url, start_index=offset, user=user) + items = get_playlist_info(url=url, start_index=offset, user=user) if len(items) > 0: - var.playlist.extend(list(map(lambda item: PlaylistItemWrapper(item, user), items))) + items = var.playlist.extend(list(map( + lambda item: get_item_wrapper(bot, **item), items))) for music in items: log.info("cmd: add to playlist: " + music.format_debug_string()) else: diff --git a/media/playlist.py b/media/playlist.py index 7165ea1..6b8d430 100644 --- a/media/playlist.py +++ b/media/playlist.py @@ -83,7 +83,10 @@ def get_item_wrapper(bot, **kwargs): def get_item_wrapper_by_id(bot, id, user): item = var.library.get_item_by_id(bot, id) - return PlaylistItemWrapper(var.library, item.id, item.type, user) + if item: + return PlaylistItemWrapper(var.library, item.id, item.type, user) + else: + return None def get_playlist(mode, _list=None, index=None): if _list and index is None: diff --git a/media/url.py b/media/url.py index c11ea8c..661797f 100644 --- a/media/url.py +++ b/media/url.py @@ -35,7 +35,7 @@ class URLItem(BaseItem): def __init__(self, bot, url, from_dict=None): self.validating_lock = threading.Lock() if from_dict is None: - super().__init__(bot, "") + super().__init__(bot) self.url = url if url[-1] != "/" else url[:-1] self.title = '' self.duration = 0 diff --git a/media/url_from_playlist.py b/media/url_from_playlist.py index 11e101c..a08d948 100644 --- a/media/url_from_playlist.py +++ b/media/url_from_playlist.py @@ -6,7 +6,7 @@ import hashlib from media.item import item_builders, item_loaders, item_id_generators from media.url import URLItem, url_item_id_generator -def get_playlist_info(bot, url, start_index=0, user=""): +def get_playlist_info(url, start_index=0, user=""): items = [] ydl_opts = { 'extract_flat': 'in_playlist' @@ -36,13 +36,14 @@ def get_playlist_info(bot, url, start_index=0, user=""): else "https://www.youtube.com/watch?v=" + info['entries'][j]['url'] print(info['entries'][j]) - music = PlaylistURLItem( - bot, - item_url, - title, - url, - playlist_title - ) + music = { + "type": "url_from_playlist", + "url": item_url, + "title": title, + "playlist_url": url, + "playlist_title": playlist_title, + "user": user + } items.append(music) except: diff --git a/mumbleBot.py b/mumbleBot.py index 5b11658..058c6cc 100644 --- a/mumbleBot.py +++ b/mumbleBot.py @@ -170,6 +170,11 @@ class MumbleBot: sys.exit(0) self.nb_exit += 1 + 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() + def check_update(self): self.log.debug("update: checking for updates...") new_version = util.new_release_version()