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

0 ответов

Другие вопросы по тегам