1

pyfoobarを使用して foobar の現在再生中のスクリプトを作成しようとしているときに、現在のトラックの長さ (文字列) を通常の整数に変換しようとしました。

from pyfoobar import foobar
import time

fb2k = foobar()
while(fb2k.isPlaying()==True):
    fb2k.playRandom()
    length=fb2k.lengthOfTrack()
    minute=int(length[0])*60
    second=int(length[2:])
    length=(minute+second)-1
    print "Now Playing: "+fb2k.getCurrentArtist()+" - "+fb2k.getCurrentTrack()
    time.sleep(length)

新しいトラックごとに更新するために、現在のトラックの秒数だけ遅延したループを使用しています。コンパイルすると、次のエラーが発生します。

Traceback (most recent call last):
  File "C:\Users\000\Downloads\pyfoobar\pyfoobar\playing.py", line 8, in <module>
    minute=int(length[0])*60
IndexError: string index out of range

おそらく何かが欠けていることが明らかですが、特に長さを計算する行が正しい秒数を返すため、エラーを修正しているものを見つけることができません。

4

1 に答える 1

1

本当にplayRandom同期ですか?isPlayingを呼び出す前にテストしましlengthOfTrackたが、おそらく呼び出し後playRandom(および実行が終了する前)isPlayingは false であるため、lengthOfTrack未定義のものが返されます。私は COM の経験がないので、何かばかげたことを言っているのかもしれませんが、最初に試みることはisPlaying、ループ内で再度チェックすることです。

于 2013-02-24T06:31:58.520 に答える