Python-vlc остановить цикл дорожки в vlc.Instance()
Я Барри, и я новичок в python. Вернемся к моей проблеме. Недавно я создаю проигрыватель Python CD с python-vlc, я просто хочу, чтобы моя программа воспроизводила все треки на CD одновременно, но vlc сохраняет воспроизводить одну и ту же дорожку снова и снова. Я хочу, чтобы она прекратила воспроизведение дорожки после окончания песни, чтобы я мог видеть, что выводится из player.get_state() после окончания песни, чтобы перейти к следующему шагу.
Пожалуйста, помогите мне и извините за мой плохой английский
P/S: если вы обнаружили какие-либо проблемы в моем коде, пожалуйста, внесите свой вклад здесь.
Спасибо
#!/usr/bin/python
import vlc
import subprocess
import discid
import musicbrainzngs
import linecache
import threading
count_track = 0
musicbrainzngs.set_useragent("python-discid-example", "0.1", "my_email@mail")
instance = vlc.Instance()
player = instance.media_player_new()
player.set_playback_mode('default')
medialist = instance.media_list_new()
listplayer = instance.media_list_player_new()
listplayer.set_media_player(player)
disc = discid.read(features=["mcn", "isrc"])
subprocess.call("clear")
for track in disc.tracks:
track_num = track.number
try:
result = musicbrainzngs.get_releases_by_discid(disc.id, includes=["artists"]) #get disc's detail online(musicbrainz)
except musicbrainzngs.ResponseError:
print ("disc not found or bad response")
else:
if result.get("disc"):
print ("Album:\t%s"%result["disc"]["release-list"][0]["title"]) #print out album ()
print ("Artist:\t%s"%result["disc"]["release-list"][0]["artist-credit-phrase"])
print "Track: " + str(track_num)
#track_num = subprocess.check_output(['cdparanoia -sQ 2>&1| grep -P "^\s+\d+\." | wc -l'], shell=True)
#print track_num
def play_cd():
try:
track_meta = musicbrainzngs.search_recordings(query="isrc:" + track_list)
except musicbrainzngs.ResponseError:
print ("disc not found or bad response")
else:
if track_meta.get('recording-list'):
pass
#print ("Track" ":\t%s"%track_meta["recording-list"][0]["title"]) #print out album ()
#print ("Artist:\t%s"%result["disc"]["recording-list"][0]["artist-credit-phrase"])
track = instance.media_new("cdda:///dev/sr0", (":cdda-track=1"))
medialist.add_media(track)
listplayer.set_media_list(medialist)
listplayer.play()
print player.get_state()
def main():
thread = threading.Thread(target=play_cd)
thread.start()
thread.join()
while True:
count_track = count_track + 1
track_list = linecache.getline("isrc.txt", count_track)
main()
if count_track > int(track_num):
count_track = 0
#while True:
# count_track = count_track + 1
# track_list = linecache.getline("isrc.txt", count_track)
# asyncio.run(play_cd())
# if count_track > int(track_num):
# count_track = 0