set("log.file",false)
set("log.stdout",true)

set("server.telnet",true)
set("server.telnet.port", 5000)
set("server.telnet.bind_addr", "0.0.0.0")

set("decoder.file_extensions.gstreamer",["wav", "webm"])
set("decoder.mime_types.gstreamer",["audio/x-wav", "audio/wav", "video/webm"])

def crossfade(a,b)
  add(normalize=false,
      [ sequence([ blank(duration=5.),
                   fade.initial(duration=5.,b) ]),
        fade.final(duration=5.,a) ])
end

live = audio_to_stereo(
    rewrite_metadata(
        [
            ("title", "$(title) (LIVE - Dodsorfas Radio)"),
            ("comment", "http://www.radio.dodsorf.as")
            ],
        stretch(
            ratio=interactive.float("test", 1.00005),
            input.harbor(
                "dodsorfas.live",
                id="dodsorfas.live",
                port=5002,
                password=getenv("LIVE_PASSWORD"),
                user="source",
                logfile="/tmp/harbor.log"
                )
            )
        )
)

normal_songs = playlist(reload=600, mime_type="application/x-mpegURL", "http://web/playlist.php")
halloween = playlist("/playlists/events/Halloween.m3u")
christmas = playlist("/playlists/events/Christmas.m3u")

requests = audio_to_stereo(drop_video(request.queue(id="request")))

jingles = playlist("/jingles")

def is_date(startd, startm, endd, endm)
  localtime(time(), fun (~sec,~min,~hour,~mday,~mon,~year,~wday,~yday,~isdst) ->
    mday >= startd and mon == startm-1 and mday <= endd and mon <= endm-1) # These are POSIX standards, mon: month of year [0,11]
end

default = switch([
({is_date(22, 10, 31, 10)}, random(weights = [1,5], [halloween, normal_songs])),
({is_date(1, 12, 28, 12)}, random(weights = [1,5], [christmas, normal_songs])),
({true}, normal_songs)
])

mix = blank()
mix = fallback(track_sensitive=false, [default, mix])
mix = fallback(track_sensitive=true, [requests,mix])

mix = random(weights=[9, 1], [mix, jingles])

mix = fallback(track_sensitive=false, transitions=[crossfade], [live, mix])

mix = normalize(mix)
mix = audio_to_stereo(mix)

# OUTPUTS
output.icecast(
    password=getenv("HARBOR_PASSWORD"),
    host=getenv("BROADCAST_PORT_5001_TCP_ADDR"),
    port=int_of_string(getenv("BROADCAST_PORT_5001_TCP_PORT")),
    %wav,
    mount="dodsorfas.main",
    mix
    )
