5

Liquidsoap には非常に奇妙な問題があります。次のプレイリストがあります。

myplaylist = playlist(mode="normal",playlist_file,reload_mode="rounds",reload=1)

myplaylist = on_metadata(apply_metadata,myplaylist)

ここで、apply_metadata は呼び出されるとすぐにプレイリストを更新する python スクリプトを呼び出しますが、apply_metadata プロシージャが呼び出された場合でも、リロード後に Liquidsoap が古いプレイリストを再生し続けることがあります。

よろしくお願いします。

Liquidsoap スクリプトのコード全体:

# This function is called when
# a new metadata block is passed in
# the stream.
def apply_metadata(m) =
  title = m["filename"]
  artist = m["artist"]
  print("Now playing: #{title} by #{artist}")

  filename = string.split(separator="/",title) # rozdelime cestu po lomitkach
  filename = list.nth(list.rev(filename),0) # vezmeme meno suboru
  filename = list.nth(string.split(separator="\.",filename),0) # odpojime koncovku .mp3

  command = "python3.3 feedback.py " ^ filename
  system(command)

end

#!/usr/bin/liquidsoap 
# Log dir 
set("log.file.path","/tmp/basic-radio.log")

#tidy up before playing playlist
playlist_file = "playlist.m3u"
system("python3.3 feedback.py -init")


# Music 
myplaylist = playlist(mode="normal",playlist_file,reload_mode="rounds",reload=1)

myplaylist = on_metadata(apply_metadata,myplaylist)

# Stream it out 
output.icecast(%mp3, host = "localhost", port = 8080, password = "baldur", mount = "stream", myplaylist, fallible=true)
4

2 に答える 2

5

私は最終的にLiquidsoapのメーリングリストで解決策を見つけました:

私の頭に浮かぶ最初のことは、おそらくこれが意図されていない方法でプレイリスト()を使用しているということです..

request.dynamic の使用について考えたことはありますか? この演算子を使用すると、次に再生する曲を完全に制御でき、次のトラックのコールバックを選択した任意の言語で記述できるため、より便利になります..

幸運を!

ロマン

于 2013-11-02T19:38:41.260 に答える
3

使用することもできます

myplaylist = playlist(mode="normal",playlist_file,reload_mode="watch")

これにより、変更が検出されるとすぐにプレイリストがリロードされます。

于 2015-03-02T23:43:24.897 に答える