потихоньку поднимаю радио сервер на базе icecast'a и ices'a. от ices'a понадобилась дополнительная функциональность которую я решил реализовать при помощи модуля на питоне. суть модуля состоит в следующем:
-в зависимости от времени проигрываются песни из определенных папок (это работает без проблем);
-создается небольшой лог в 10-15 строк, в котором записываются последние проигранные песни и при проигрывании новой сравниваются записи в логе дабы избежать повторов. с этим то и возникла проблема. моя реализация выглядит примерно так:
#Собственно функция смены песни
def ices_get_next ():
song = music_folder + '/' + files[random.randint(0, len(files))]
while (song+'/n') in played == True:
song = music_folder + '/' + files[random.randint(0, len(files))]
#узнаем количество записей в файле (переменная files заполняется ранее). если их меньше 10 то добавляем еще одну строку, иначе заменяем последнюю сдвигая предыдущие "вверх"
if len(files) < 9 :
played.append(song)
else :
for i in range(9, 0, -1):
#а вот тут получаем ошибку IndexError: list index out of range
played.append[i] = played[i-1]
played.append(song)
f_played = open('/home/user1/played', 'w')
i = 0
for i in range(1, len(played), 1):
f_played.write(played[i-1])
f_played.close()
return song
может ли кто подсказать как решить возникшую проблему?
Пользователь решил продолжить мысль 18 Мая 2010, 19:29:52:
после вдумчивого прочтения манов написал такое
def ices_get_next ():
song = music_folder + '/' + files[random.randint(0, len(files))]
while song in played == True:
song = music_folder + '/' + files[random.randint(0, len(files))]
if len(played) >= 15:
played.pop(0)
played.append(song+'\n')
playedfile = open('/home/user1/played.lst', 'w')
for i in played:
playedfile.writelines(i)
playedfile.close()
return song
работает как надо и без сбоев
