From 1d97fe654ed27cf85e39b38fd81f29e795326e41 Mon Sep 17 00:00:00 2001 From: Terry Geng Date: Mon, 18 May 2020 00:07:56 +0800 Subject: [PATCH] fix: URL item duration unit in seconds, bad skip button in floating player --- database.py | 17 +++++++++++------ media/url.py | 8 ++++---- static/js/custom.js | 1 + templates/index.html | 3 ++- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/database.py b/database.py index 85b4e14..b791244 100644 --- a/database.py +++ b/database.py @@ -194,7 +194,7 @@ class Condition: SETTING_DB_VERSION = 2 -MUSIC_DB_VERSION = 3 +MUSIC_DB_VERSION = 4 class SettingsDatabase: @@ -504,7 +504,10 @@ class DatabaseMigration: 1: self.settings_table_migrate_from_1_to_2} self.music_table_migrate_func = {0: self.music_table_migrate_from_0_to_1, 1: self.music_table_migrate_from_1_to_2, - 2: self.music_table_migrate_from_2_to_3} + 2: self.music_table_migrate_from_2_to_4, + 3: self.music_table_migrate_from_2_to_4 + } + def migrate(self): self.settings_database_migrate() @@ -565,7 +568,7 @@ class DatabaseMigration: else: log.info(f"database: no music table found. Creating music table version {MUSIC_DB_VERSION}.") - self.create_music_table_version_3(conn) + self.create_music_table_version_4(conn) conn.commit() conn.close() @@ -608,7 +611,7 @@ class DatabaseMigration: conn.commit() - def create_music_table_version_3(self, conn): + def create_music_table_version_4(self, conn): self.create_music_table_version_1(conn) def settings_table_migrate_from_0_to_1(self, conn): @@ -671,13 +674,15 @@ class DatabaseMigration: return 2 # return new version number - def music_table_migrate_from_2_to_3(self, conn): + def music_table_migrate_from_2_to_4(self, conn): items_to_update = self.music_db.query_music(Condition(), conn) for item in items_to_update: if 'duration' not in item: item['duration'] = 0 + if item['type'] == 'url' or item['type'] == "url_from_playlist": + item['duration'] = item['duration'] * 60 self.music_db.insert_music(item) conn.commit() - return 3 # return new version number + return 4 # return new version number diff --git a/media/url.py b/media/url.py index 3402143..67d163a 100644 --- a/media/url.py +++ b/media/url.py @@ -95,10 +95,10 @@ class URLItem(BaseItem): if not info: return False - if self.duration > var.config.getint('bot', 'max_track_duration') != 0: + if self.duration > var.config.getint('bot', 'max_track_duration') * 60 != 0: # Check the length, useful in case of playlist, it wasn't checked before) log.info( - "url: " + self.url + " has a duration of " + str(self.duration) + " min -- too long") + "url: " + self.url + " has a duration of " + str(self.duration / 60) + " min -- too long") raise ValidationFailedError(constants.strings('too_long', song=self.title)) else: self.ready = "validated" @@ -125,14 +125,14 @@ class URLItem(BaseItem): for i in range(attempts): try: info = ydl.extract_info(self.url, download=False) - self.duration = info['duration'] / 60 + self.duration = info['duration'] self.title = info['title'] self.keywords = info['title'] succeed = True return True except youtube_dl.utils.DownloadError: pass - except KeyError: # info has no 'duration' + except KeyError: # info has no 'duration' break if not succeed: diff --git a/static/js/custom.js b/static/js/custom.js index 8e30667..1064aab 100644 --- a/static/js/custom.js +++ b/static/js/custom.js @@ -759,6 +759,7 @@ let volume_popover_instance = null; let volume_popover_show = false; volume_popover_btn.addEventListener('click', function(e){ e.stopPropagation(); }) +volume_popover_div.addEventListener('click', function(e){ e.stopPropagation(); }) function toggleVolumePopover(){ if (!volume_popover_show){ diff --git a/templates/index.html b/templates/index.html index f15c185..f7ca1ab 100644 --- a/templates/index.html +++ b/templates/index.html @@ -440,7 +440,8 @@ onclick="request('post', {action: 'pause'})"> -