Я пытаюсь создать программу для воспроизведения музыки c в Python3, используя python-vlc
для воспроизведения аудиофайлов. Я хочу иметь возможность приостанавливать и воспроизводить звук, пока песня не закончена. У меня есть функция playSong(path)
, которая воспроизводит аудиофайл по заданному пути, и метод main
, который вызывает функцию playAudio
по любому указанному пути песни. У меня также есть несколько других функций для загрузки песен с YouTube, используя youtube-dl
. У нет проблем с main
или любым другим способом. Проблема в функции playSong
.
Вот мой код:
import os
import re
import sys
import random
import vlc
import ytUrl
import youtube_dl
from termcolor import colored
from mutagen.mp3 import MP3
...
def playSong(path):
audio = MP3(path)
duration = audio.info.length # This is not in use as of right now
player = vlc.MediaPlayer(path)
player.audio_set_delay(1000) # keeps vlc from playback freezing issues
player.play()
print("Playing " + colored(path[:-len(".mp3")], "green") + "...")
# the problem is here
while True:
do = input("> ").lower()
if do == "pause":
player.pause()
elif do == "play":
player.play()
elif do == "stop" or do == "skip":
player.stop()
elif do == "exit":
player.stop()
main()
Проблема в том, что метод playSong
не завершится, когда player
закончит песню из-за while True
l oop. Программа застряла на
do = input("> ").lower()
, даже когда проигрыватель закончил. Я не могу просто вынуть while
l oop, потому что я хочу иметь возможность играть и останавливать песню все время!
Как это исправить? Любая помощь приветствуется!