fix: URL item duration unit in seconds, bad skip button in floating player

This commit is contained in:
Terry Geng 2020-05-18 00:07:56 +08:00
parent 0b7d0b8465
commit 1d97fe654e
No known key found for this signature in database
GPG Key ID: F982F8EA1DF720E7
4 changed files with 18 additions and 11 deletions

View File

@ -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

View File

@ -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:

View File

@ -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){

View File

@ -440,7 +440,8 @@
onclick="request('post', {action: 'pause'})">
<i class="fas fa-pause"></i>
</button>
<button id="playerSkipBtn" class="btn btn-primary btn-sm">
<button id="playerSkipBtn" class="btn btn-primary btn-sm"
onclick="request('post', {action : 'next'})">
<i class="fas fa-fast-forward"></i>
</button>
</div>