Merge branch 'master' of https://git.dodsorf.as/Dandellion/Radio-dodsorfas
This commit is contained in:
		
						commit
						e3b1ea7a05
					
				@ -5,10 +5,11 @@ services:
 | 
			
		||||
    build: ./docker-liquidsoap
 | 
			
		||||
    volumes:
 | 
			
		||||
    - ./state/liquidsoap/config:/config
 | 
			
		||||
    - ./state/liquidsoap/playlists:/playlists
 | 
			
		||||
    - ./state/playlists:/playlists
 | 
			
		||||
    - ./state/liquidsoap/data:/data
 | 
			
		||||
    - ./state/jingles:/jingles
 | 
			
		||||
    - /etc/localtime:/etc/localtime:ro 
 | 
			
		||||
    command: /bin/bash -xc 'env; liquidsoap -v --debug /config/debug.liq'
 | 
			
		||||
    command: /bin/bash -xc 'env; liquidsoap -v --debug /config/main.liq'
 | 
			
		||||
    environment:
 | 
			
		||||
    - HARBOR_PASSWORD=MGT7aEqP
 | 
			
		||||
    - LIVE_PASSWORD=fuckyoujoa
 | 
			
		||||
@ -64,7 +65,7 @@ services:
 | 
			
		||||
    links:
 | 
			
		||||
    - main
 | 
			
		||||
    volumes:
 | 
			
		||||
    - ./state/liquidsoap/playlists:/playlists
 | 
			
		||||
    - ./state/playlists:/playlists
 | 
			
		||||
    labels:
 | 
			
		||||
    - traefik.enable=true
 | 
			
		||||
    - traefik.frontend.rule=Host:radio.dodsorf.as
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								state/jingles/joa01.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								state/jingles/joa01.wav
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								state/liquidsoap/config/.main.liq.swp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								state/liquidsoap/config/.main.liq.swp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -1,62 +0,0 @@
 | 
			
		||||
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")
 | 
			
		||||
 | 
			
		||||
requests = audio_to_stereo(drop_video(request.queue(id="request")))
 | 
			
		||||
 | 
			
		||||
default = switch([
 | 
			
		||||
({true}, normal_songs)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
mix = blank()
 | 
			
		||||
mix = fallback(track_sensitive=false, [default, mix])
 | 
			
		||||
mix = fallback(track_sensitive=true, [requests,mix])
 | 
			
		||||
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
 | 
			
		||||
    )
 | 
			
		||||
@ -8,50 +8,6 @@ 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"])
 | 
			
		||||
 | 
			
		||||
register(name="Youtube_dl-x protocol settings","protocol.youtube-dl-x",())
 | 
			
		||||
register(name="Youtube-dl path","protocol.youtube-dl-x.path","youtube-dl -x --audio-format wav --postprocessor-args \"-y\"")
 | 
			
		||||
 | 
			
		||||
# Register the youtube-dl protocol, using youtube-dl.
 | 
			
		||||
# Syntax: youtube-d-xl:<ID>
 | 
			
		||||
# @flag hidden
 | 
			
		||||
def youtube_dl_x_protocol(~rlog,~maxtime,arg)
 | 
			
		||||
  binary = get(default="youtube-dl","protocol.youtube-dl-x.path")
 | 
			
		||||
 | 
			
		||||
  log = log(label="protocol.youtube-dl-x")
 | 
			
		||||
 | 
			
		||||
  def log(~level,s) =
 | 
			
		||||
    rlog(s)
 | 
			
		||||
    log(level=level,s)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  delay = maxtime - gettimeofday()
 | 
			
		||||
  cmd = "#{binary} -x --audio-format wav  --get-title --get-filename -- #{quote(arg)}"
 | 
			
		||||
  log(level=4,"Executing #{cmd}")
 | 
			
		||||
  x = get_process_lines(timeout=delay,cmd)
 | 
			
		||||
 | 
			
		||||
  x =
 | 
			
		||||
    if list.length(x) >= 2 then
 | 
			
		||||
      x
 | 
			
		||||
    else
 | 
			
		||||
      ["",".osb"]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  ext = "wav"
 | 
			
		||||
  title = list.hd(default="",x)
 | 
			
		||||
  cmd   = "rm -f $(output) && #{binary} -x --audio-format wav -q -f bestaudio/best --no-playlist --exec \"mv {} $(output)\" -- #{quote(arg)}"
 | 
			
		||||
  process = process_uri(extname=ext,cmd)
 | 
			
		||||
 | 
			
		||||
  if title != "" then
 | 
			
		||||
    ["annotate:title=#{quote(title)}:#{process}"]
 | 
			
		||||
  else
 | 
			
		||||
    [process]
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
add_protocol("youtube-dl-x", youtube_dl_x_protocol,
 | 
			
		||||
              doc="Resolve a request using youtube-dl.",
 | 
			
		||||
syntax="youtube-dl-x:uri")
 | 
			
		||||
 | 
			
		||||
def crossfade(a,b)
 | 
			
		||||
  add(normalize=false,
 | 
			
		||||
      [ sequence([ blank(duration=5.),
 | 
			
		||||
@ -79,108 +35,33 @@ live = audio_to_stereo(
 | 
			
		||||
        )
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
## BEGIN PLAYLISTS
 | 
			
		||||
normal_songs = playlist(reload=600, mime_type="application/x-mpegURL", "http://web/playlist.php")
 | 
			
		||||
halloween = playlist("/playlists/events/Halloween.m3u")
 | 
			
		||||
 | 
			
		||||
# Joakim
 | 
			
		||||
JoakimDiverse		= "/playlists/Joakim/JoakimDiverse.m3u"
 | 
			
		||||
AlternativeJoa		= "/playlists/Joakim/AlternativeJoa.m3u"
 | 
			
		||||
JoakimRemixes		= "/playlists/Joakim/JoakimRemixes.m3u"
 | 
			
		||||
 | 
			
		||||
# Daniel
 | 
			
		||||
DanAwesome		= "/playlists/Daniel/Dan - awesome.m3u"
 | 
			
		||||
DanDontStarve1		= "/playlists/Daniel/Dan - dontstarve1.m3u"
 | 
			
		||||
DanDubstepThingies	= "/playlists/Daniel/Dan - dubstepthingies.m3u"
 | 
			
		||||
DanEdgyMusicYT		= "/playlists/Daniel/Dan - Edgy Music YT.m3u"
 | 
			
		||||
DanElectronicRealMusic	= "/playlists/Daniel/Dan - electronicrealmusic.m3u"
 | 
			
		||||
 | 
			
		||||
# Artists
 | 
			
		||||
TaylorSwift		= "/playlists/artists/TaylorSwift.m3u"
 | 
			
		||||
AstridS			= "/playlists/artists/AstridS.m3u"
 | 
			
		||||
Coldplay		= "/playlists/artists/Coldplay.m3u"
 | 
			
		||||
DemiLovato		= "/playlists/artists/DemiLovato.m3u"
 | 
			
		||||
KatyPerry		= "/playlists/artists/KatyPerry.m3u"
 | 
			
		||||
SelenaGomez		= "/playlists/artists/SelenaGomez.m3u"
 | 
			
		||||
ShawnMendes		= "/playlists/artists/ShawnMendes.m3u"
 | 
			
		||||
ZaraLarsson		= "/playlists/artists/ZaraLarsson.m3u"
 | 
			
		||||
 | 
			
		||||
# Genres
 | 
			
		||||
Musicals		= "/playlists/Musicals.m3u"
 | 
			
		||||
Soundtracks		= "/playlists/Soundtracks.m3u"
 | 
			
		||||
 | 
			
		||||
#Events
 | 
			
		||||
Halloween		= "/playlists/events/Halloween.m3u"
 | 
			
		||||
 | 
			
		||||
## END PLAYLISTS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
randomsong = random(playlist(conservative=true, JoakimDiverse))
 | 
			
		||||
count = list.length(playlist.parse(JoakimDiverse))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(AlternativeJoa)), count], [playlist(AlternativeJoa), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(AlternativeJoa))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(DanAwesome)), count], [playlist(DanAwesome), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(DanAwesome))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(DanDontStarve1)), count], [playlist(DanDontStarve1), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(DanDontStarve1))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(DanDubstepThingies)), count], [playlist(DanDubstepThingies), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(DanDubstepThingies))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(DanEdgyMusicYT)), count], [playlist(DanEdgyMusicYT), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(DanEdgyMusicYT))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(DanElectronicRealMusic)), count], [playlist(DanElectronicRealMusic), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(DanElectronicRealMusic))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(TaylorSwift)), count], [playlist(TaylorSwift), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(TaylorSwift))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(AstridS)), count], [playlist(AstridS), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(AstridS))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(Coldplay)), count], [playlist(Coldplay), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(Coldplay))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(DemiLovato)), count], [playlist(DemiLovato), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(DemiLovato))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(KatyPerry)), count], [playlist(KatyPerry), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(KatyPerry))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(SelenaGomez)), count], [playlist(SelenaGomez), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(SelenaGomez))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(ShawnMendes)), count], [playlist(ShawnMendes), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(ShawnMendes))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(ZaraLarsson)), count], [playlist(ZaraLarsson), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(ZaraLarsson))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(Musicals)), count], [playlist(Musicals), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(Musicals))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(Soundtracks)), count], [playlist(Soundtracks), randomsong])
 | 
			
		||||
count = count + list.length(playlist.parse(Soundtracks))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(JoakimRemixes)), count], [playlist(JoakimRemixes), randomsong]) 
 | 
			
		||||
count = count + list.length(playlist.parse(JoakimRemixes))
 | 
			
		||||
 | 
			
		||||
randomsong = random(weights=[list.length(playlist.parse(Halloween)), count], [playlist(Halloween), randomsong]) 
 | 
			
		||||
count = count + list.length(playlist.parse(Halloween))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
randomsong = audio_to_stereo(randomsong)
 | 
			
		||||
 | 
			
		||||
###
 | 
			
		||||
requests = audio_to_stereo(drop_video(request.queue(id="request")))
 | 
			
		||||
 | 
			
		||||
jingles = playlist("/jingles/")
 | 
			
		||||
 | 
			
		||||
def is_halloween() =
 | 
			
		||||
  localtime(time(), fun (~sec,~min,~hour,~mday,~mon,~year,~wday,~yday,~isdst) ->
 | 
			
		||||
    mday >= 22 and mon == 10 and mday <=31) # These are POSIX standards, mon: month of year [0,11]
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
default = switch([
 | 
			
		||||
({is_halloween()}, random(weights = [1,5], [halloween, normal_songs])),
 | 
			
		||||
({true}, normal_songs)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
mix = blank()
 | 
			
		||||
mix = fallback(track_sensitive=false, [randomsong, mix])
 | 
			
		||||
mix = fallback(track_sensitive=true, transitions=[crossfade], [requests,mix])
 | 
			
		||||
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(
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user