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是假的,所以lengthOfTrack会返回一些未定义的东西。我没有使用 COM 的经验,所以也许我在说一些愚蠢的话,但我会尝试的第一件事是isPlaying在循环内再次重新检查。

于 2013-02-24T06:31:58.520 回答