2021-06-17 01:27:35 +02:00
|
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
# Copyright (c) 2021, dsc@xmr.pm
|
|
|
|
|
|
|
|
import os
|
|
|
|
cwd = os.path.dirname(os.path.realpath(__file__))
|
|
|
|
|
|
|
|
|
|
|
|
def bool_env(val):
|
|
|
|
return val is True or (isinstance(val, str) and (val.lower() == 'true' or val == '1'))
|
|
|
|
|
|
|
|
|
2023-09-02 20:02:09 +02:00
|
|
|
debug = False
|
2021-06-17 01:27:35 +02:00
|
|
|
host = "127.0.0.1"
|
2023-09-02 20:46:31 +02:00
|
|
|
ws_url = "http://127.0.0.1:2600/ws"
|
2021-06-17 01:27:35 +02:00
|
|
|
port = 2600
|
|
|
|
timezone = "Europe/Amsterdam"
|
|
|
|
|
2023-09-02 20:02:09 +02:00
|
|
|
redis_uri = os.environ.get('REDIS_URI', 'redis://localhost:6379')
|
2021-06-17 01:27:35 +02:00
|
|
|
|
2023-09-02 20:02:09 +02:00
|
|
|
dir_music = os.environ.get("DIR_MUSIC", os.path.join(cwd, "data", "music"))
|
|
|
|
dir_meta = os.environ.get("DIR_MUSIC", os.path.join(cwd, "data", "music_metadata"))
|
2023-09-02 21:24:12 +02:00
|
|
|
dir_mixes = "/home/radio/mixes/"
|
|
|
|
|
2023-09-02 20:02:09 +02:00
|
|
|
if not os.path.exists(dir_music):
|
|
|
|
os.mkdir(dir_music)
|
|
|
|
if not os.path.exists(dir_meta):
|
|
|
|
os.mkdir(dir_meta)
|
2021-08-04 18:53:56 +02:00
|
|
|
|
2023-09-02 20:02:09 +02:00
|
|
|
irc_admins_nicknames = ["dsc_", "qvqc", "lza_menace", "wowario", "scoobybejesus", "JockChamp[m]", "wowario[m]"]
|
|
|
|
# irc_host = os.environ.get('IRC_HOST', 'irc.OFTC.net')
|
|
|
|
irc_host = os.environ.get('IRC_HOST', '127.0.0.1')
|
2021-06-17 01:27:35 +02:00
|
|
|
irc_port = int(os.environ.get('IRC_PORT', 6667))
|
|
|
|
irc_ssl = bool_env(os.environ.get('IRC_SSL', False)) # untested
|
2023-09-02 20:02:09 +02:00
|
|
|
irc_nick = os.environ.get('IRC_NICK', 'DjWow')
|
|
|
|
irc_channels = os.environ.get('IRC_CHANNELS', '#wownero-music').split()
|
|
|
|
irc_realname = os.environ.get('IRC_REALNAME', 'DjWow')
|
2021-06-17 01:27:35 +02:00
|
|
|
irc_ignore_pms = False
|
|
|
|
irc_command_prefix = "!"
|
|
|
|
|
2023-09-02 20:02:09 +02:00
|
|
|
icecast2_hostname = "radio.wownero.com"
|
2023-09-02 21:13:24 +02:00
|
|
|
icecast2_scheme = "https"
|
2021-06-17 01:27:35 +02:00
|
|
|
icecast2_max_clients = 32
|
|
|
|
icecast2_bind_host = "127.0.0.1"
|
|
|
|
icecast2_bind_port = 24100
|
2023-09-02 20:02:09 +02:00
|
|
|
icecast2_mount = "wow.ogg"
|
|
|
|
icecast2_source_password = ""
|
|
|
|
icecast2_admin_password = ""
|
|
|
|
icecast2_relay_password = "" # for livestreams
|
2021-06-17 01:27:35 +02:00
|
|
|
icecast2_live_mount = "live.ogg"
|
|
|
|
icecast2_logdir = "/var/log/icecast2/"
|
|
|
|
|
|
|
|
liquidsoap_host = "127.0.0.1"
|
|
|
|
liquidsoap_port = 7555 # telnet
|
2023-09-02 20:02:09 +02:00
|
|
|
liquidsoap_description = "WOW!Radio"
|
2021-06-17 01:27:35 +02:00
|
|
|
liquidsoap_samplerate = 48000
|
|
|
|
liquidsoap_bitrate = 164 # youtube is max 164kbps
|
|
|
|
liquidsoap_crossfades = False # not implemented yet
|
|
|
|
liquidsoap_normalize = False # not implemented yet
|
|
|
|
liquidsoap_iface = icecast2_mount.replace(".", "(dot)")
|
2023-09-02 20:02:09 +02:00
|
|
|
liquidsoap_max_song_duration = 60 * 14 # seconds
|
2021-06-17 01:27:35 +02:00
|
|
|
|
|
|
|
re_youtube = r"[a-zA-Z0-9_-]{11}$"
|
2023-09-02 20:02:09 +02:00
|
|
|
|
|
|
|
openid_keycloak_config = {
|
|
|
|
"client_id": "",
|
|
|
|
"client_secret": "",
|
|
|
|
"configuration": "https://login.wownero.com/realms/master/.well-known/openid-configuration"
|
|
|
|
}
|
|
|
|
|
|
|
|
from ircradio.station import Station
|
|
|
|
radio_stations = {
|
|
|
|
"wow": Station(
|
|
|
|
id="wow",
|
|
|
|
music_dir=dir_music,
|
|
|
|
mount_point="wow.ogg",
|
|
|
|
request_id="pmain",
|
|
|
|
title="Radio!WOW",
|
|
|
|
description="random programming",
|
|
|
|
image="wow.jpg"
|
|
|
|
),
|
|
|
|
"berlin": Station(
|
|
|
|
id="berlin",
|
|
|
|
music_dir="/home/radio/mixes/berlin",
|
|
|
|
mount_point="berlin.ogg",
|
|
|
|
request_id="pberlin",
|
|
|
|
title="Berlin",
|
|
|
|
description="Progressive, techno, minimal, tech-trance",
|
|
|
|
image="berlin.jpg"
|
|
|
|
),
|
|
|
|
"dnb": Station(
|
|
|
|
id="dnb",
|
|
|
|
music_dir="/home/radio/mixes/dnb",
|
|
|
|
mount_point="dnb.ogg",
|
|
|
|
request_id="pdnb",
|
|
|
|
title="Drum and Bass",
|
|
|
|
description="Big up selecta",
|
|
|
|
image="dnb.jpg"
|
|
|
|
),
|
|
|
|
"trance": Station(
|
|
|
|
id="trance",
|
|
|
|
music_dir="/home/radio/mixes/trance",
|
|
|
|
mount_point="trance.ogg",
|
|
|
|
request_id="ptrance",
|
|
|
|
title="Trance",
|
|
|
|
description="du-du-du",
|
|
|
|
image="trance.jpg"
|
|
|
|
),
|
|
|
|
"chiptune": Station(
|
|
|
|
id="chiptune",
|
|
|
|
music_dir="/home/radio/mixes/chiptune",
|
|
|
|
mount_point="chiptune.ogg",
|
|
|
|
request_id="pchiptune",
|
|
|
|
title="Chiptune",
|
|
|
|
description="8-bit, 16-bit, PSG sound chips, consoles, handhelds, demoscene",
|
|
|
|
image="chiptune.webp"
|
|
|
|
),
|
|
|
|
"anju": Station(
|
|
|
|
id="anju",
|
|
|
|
music_dir="/home/radio/mixes/anjunadeep",
|
|
|
|
mount_point="anjunadeep.ogg",
|
|
|
|
request_id="panjunadeep",
|
|
|
|
title="Anjunadeep",
|
|
|
|
description="a collection of the anjunadeep edition podcasts",
|
|
|
|
image="anjunadeep.jpg"
|
|
|
|
),
|
|
|
|
"breaks": Station(
|
|
|
|
id="breaks",
|
|
|
|
music_dir="/home/radio/mixes/breaks",
|
|
|
|
mount_point="breaks.ogg",
|
|
|
|
request_id="pbreaks",
|
|
|
|
title="Breakbeat",
|
|
|
|
description="Breakbeat, breakstep, Florida breaks",
|
|
|
|
image="breakbeat.webp"
|
|
|
|
),
|
|
|
|
"raves": Station(
|
|
|
|
id="raves",
|
|
|
|
music_dir="/home/radio/mixes/raves",
|
|
|
|
mount_point="raves.ogg",
|
|
|
|
title="90s rave",
|
|
|
|
request_id="praves",
|
|
|
|
description="Abandoned warehouses, empty apartment lofts, under bridges, open fields",
|
|
|
|
image="raves.jpg"
|
|
|
|
),
|
|
|
|
"weed": Station(
|
|
|
|
id="weed",
|
|
|
|
music_dir="/home/radio/mixes/weed",
|
|
|
|
mount_point="weed.ogg",
|
|
|
|
title="Chill vibes 🌿",
|
|
|
|
description="psybient, psychill, psydub, psyduck <img width=32px height=48px src=\"/static/psyduck.png\">",
|
|
|
|
image="weed.jpg",
|
|
|
|
request_id="pweed"
|
|
|
|
),
|
|
|
|
"rock": Station(
|
|
|
|
id="rock",
|
|
|
|
music_dir="/home/radio/mixes/rock",
|
|
|
|
mount_point="rock.ogg",
|
|
|
|
request_id="prock",
|
|
|
|
title="Rock 🎸",
|
|
|
|
description="Rock & metal",
|
|
|
|
image="rock.webp"
|
|
|
|
)
|
|
|
|
}
|