nani desu ne
This commit is contained in:
		
							parent
							
								
									c53213ab05
								
							
						
					
					
						commit
						7dc7f52afb
					
				@ -5,10 +5,11 @@ services:
 | 
				
			|||||||
    build: ./docker-liquidsoap
 | 
					    build: ./docker-liquidsoap
 | 
				
			||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
    - ./state/liquidsoap/config:/config
 | 
					    - ./state/liquidsoap/config:/config
 | 
				
			||||||
    - ./state/liquidsoap/playlists:/playlists
 | 
					    - ./state/playlists:/playlists
 | 
				
			||||||
    - ./state/liquidsoap/data:/data
 | 
					    - ./state/liquidsoap/data:/data
 | 
				
			||||||
 | 
					    - ./state/jingles:/jingles
 | 
				
			||||||
    - /etc/localtime:/etc/localtime:ro 
 | 
					    - /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:
 | 
					    environment:
 | 
				
			||||||
    - HARBOR_PASSWORD=MGT7aEqP
 | 
					    - HARBOR_PASSWORD=MGT7aEqP
 | 
				
			||||||
    - LIVE_PASSWORD=fuckyoujoa
 | 
					    - LIVE_PASSWORD=fuckyoujoa
 | 
				
			||||||
@ -64,7 +65,7 @@ services:
 | 
				
			|||||||
    links:
 | 
					    links:
 | 
				
			||||||
    - main
 | 
					    - main
 | 
				
			||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
    - ./state/liquidsoap/playlists:/playlists
 | 
					    - ./state/playlists:/playlists
 | 
				
			||||||
    labels:
 | 
					    labels:
 | 
				
			||||||
    - traefik.enable=true
 | 
					    - traefik.enable=true
 | 
				
			||||||
    - traefik.frontend.rule=Host:radio.dodsorf.as
 | 
					    - 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.file_extensions.gstreamer",["wav", "webm"])
 | 
				
			||||||
set("decoder.mime_types.gstreamer",["audio/x-wav", "audio/wav", "video/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)
 | 
					def crossfade(a,b)
 | 
				
			||||||
  add(normalize=false,
 | 
					  add(normalize=false,
 | 
				
			||||||
      [ sequence([ blank(duration=5.),
 | 
					      [ 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")))
 | 
					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 = blank()
 | 
				
			||||||
mix = fallback(track_sensitive=false, [randomsong, mix])
 | 
					mix = fallback(track_sensitive=false, [default, mix])
 | 
				
			||||||
mix = fallback(track_sensitive=true, transitions=[crossfade], [requests,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 = fallback(track_sensitive=false, transitions=[crossfade], [live, mix])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mix = normalize(mix)
 | 
					mix = normalize(mix)
 | 
				
			||||||
 | 
					mix = audio_to_stereo(mix)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# OUTPUTS
 | 
					# OUTPUTS
 | 
				
			||||||
output.icecast(
 | 
					output.icecast(
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user