feat: three playback mode "one-shot", "loop", "random"

fix: bugs when you are on the last item and you want
remove it.

Some tips for testing:
Observe the behavior when you are playing the last
item and you remove the last item, for all three modes.
This commit is contained in:
Terry Geng
2020-02-26 22:09:53 +08:00
parent 388016a5af
commit 6a1320f8f9
5 changed files with 97 additions and 37 deletions

View File

@ -220,13 +220,23 @@ def post():
logging.info("web: delete from playlist: " + util.format_debug_song_string(music))
if var.playlist.length() >= int(request.form['delete_music']):
if int(request.form['delete_music']) == var.playlist.current_index:
var.playlist.remove(int(request.form['delete_music']))
if var.botamusique.is_playing and not var.botamusique.is_pause:
var.botamusique.stop()
var.botamusique.launch_music(int(request.form['delete_music']))
index = int(request.form['delete_music'])
if index == var.playlist.current_index:
var.playlist.remove(index)
if index < len(var.playlist):
if not var.botamusique.is_pause:
var.botamusique.kill_ffmpeg()
var.playlist.current_index -= 1
# then the bot will move to next item
else: # if item deleted is the last item of the queue
var.playlist.current_index -= 1
if not var.botamusique.is_pause:
var.botamusique.kill_ffmpeg()
else:
var.playlist.remove(int(request.form['delete_music']))
var.playlist.remove(index)
elif 'play_music' in request.form:
@ -254,8 +264,12 @@ def post():
action = request.form['action']
if action == "randomize":
var.botamusique.stop()
var.playlist.randomize()
var.playlist.set_mode("random")
var.botamusique.resume()
if action == "one-shot":
var.playlist.set_mode("one-shot")
if action == "loop":
var.playlist.set_mode("loop")
elif action == "stop":
var.botamusique.stop()
elif action == "pause":
@ -269,12 +283,14 @@ def post():
var.botamusique.volume_set = var.botamusique.volume_set + 0.03
else:
var.botamusique.volume_set = 1.0
var.db.set('bot', 'volume', str(var.botamusique.volume_set))
logging.info("web: volume up to %d" % (var.botamusique.volume_set * 100))
elif action == "volume_down":
if var.botamusique.volume_set - 0.03 > 0:
var.botamusique.volume_set = var.botamusique.volume_set - 0.03
else:
var.botamusique.volume_set = 0
var.db.set('bot', 'volume', str(var.botamusique.volume_set))
logging.info("web: volume up to %d" % (var.botamusique.volume_set * 100))
if(var.playlist.length() > 0):