Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Русские тэги будут русскими
- set("tag.encodings",["UTF-8"])
- #Даем подрубиться через Telnet для стола заказов
- set("server.telnet",true)
- #Задаем точку подключения для ведущих
- set("harbor.bind_addr","0.0.0.0")
- #ЛОГИ!
- set("log.level", 3)
- def update_title_live(m) =
- if m["title"] == "" or m["title"] == "Unknown" then
- [("title", "SHIZAFM"),
- ("artist", "LIVE!!!")]
- else
- if m["artist"] == "" or m["artist"] == "?" then
- meta = string.extract(pattern='(.+)\s+-\s+(.+)', m["title"])
- sArtist = meta["1"]
- sTitle = meta["2"]
- [("title", sTitle),
- ("artist", "[SHIZAFM Live] #{sArtist}")]
- else
- sArtist = string.recode(out_enc="UTF-8", m["artist"])
- sTitle = string.recode(out_enc="UTF-8", m["title"])
- [("title", sTitle),
- ("artist", "[SHIZAFM Live] #{sArtist}")]
- end
- end
- end
- def shell_escape (s) =
- s = string.escape(s)
- s = string.replace(pattern='\?', fun(_)->"_", s)
- s
- end
- def current_user = ref "" end
- def authorize (user,password) =
- ret = get_process_lines("/usr/bin/python /etc/liquidsoap/auth/auth.py #{shell_escape(password)}")
- ret = list.hd(ret)
- log ("Подключение: PASSWORD=#{password}; RESULT=#{ret};", level=3)
- if ret == "true" then
- cu = get_process_output("/usr/bin/python /etc/liquidsoap/auth/userbase.py #{shell_escape(password)}")
- current_user := cu
- log ("Подключен как #{cu}", level=3)
- true
- else
- log ("Подключение разорвано!", level=3)
- false
- end
- end
- def file_closed (str) =
- newn = string.replace(pattern='~uname~', fun(_)->!current_user, str)
- system ("mv #{str} #{newn}")
- end
- def src_Xfade(a,b)
- add(normalize=false,
- [ sequence([ blank(duration=2.),
- fade.initial(duration=2.,b) ]),
- fade.final(duration=2.,a) ])
- end
- live = input.harbor("live",port=8001,auth=authorize)
- live = map_metadata(update_title_live, live)
- # Задаем плейлисты
- rotation = audio_to_stereo(playlist("/var/www/music/rotation")) #Основная ротация
- partners = audio_to_stereo(playlist("/var/www/music/partners")) #Партнерка
- jingles = audio_to_stereo(playlist("/var/www/music/djingls")) #Джинглы
- fail = audio_to_stereo(single("/var/www/music/fail.mp3")) #Ошибка
- # Берем ротацию, партнерку и смешиваем в пропорции 20/1
- myplaylist = random(weights = [1, 20],[partners, rotation])
- # Добавляем в эту смесь джинглы в пропорции 5\1 (тоесть примерно каждые 15 минут будет 1 джингл)
- mix = random(weights = [1, 5],[jingles, myplaylist])
- mix = crossfade(start_next=2.,fade_out=3.,fade_in=1.,mix) #О да! Кроссфейд!
- mix = mksafe(mix)
- # Если плейлисты не могут играть - врубаем БнП!
- radio = fallback(track_sensitive=false, transitions = [src_Xfade, src_Xfade], [strip_blank(max_blank=30., live), mix])
- radio = fallback(track_sensitive = false, [radio, fail])
- #radio = fallback(track_sensitive = false, [mix, fail]) #Если мы вдруг перестанем пускать федущих в эфиры - раскомментировать!
- #Врубаем радио!
- output.icecast(%mp3,
- host = "127.0.0.1",
- port = 8000,
- password = "ВСТАВЬТЕ ПАРОЛЬ СЮДЫ",
- mount = "/live",
- name="SHIZA-FM",
- description="SHIZAнутое радио",
- genre="anime-music",
- url="http://shizafm.com",
- radio)
- #Пишем эфиры
- output.file(%mp3(bitrate=128),
- "/var/www/music/archive/~uname~/%d.%m.%Y-%H:%M.mp3",
- reopen_on_metadata=false,
- fallible=true,
- on_close=file_closed,
- live)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement