IRC!Radio is a radio station for IRC channels.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Go to file
scoobybejesus 25b46feac7
Modify base.html websocket script to update elements on index.html. Modify index.html to show previous two tracks.
2 years ago
data Initial commit 3 years ago
ircradio Modify base.html websocket script to update elements on index.html. Modify index.html to show previous two tracks. 2 years ago
.gitignore Initial commit 3 years ago
README.md Updated README 3 years ago
requirements.txt Remove duplicate requirement. 2 years ago
run.py Initial commit 3 years ago
settings.py_example Add JSON API for searches. Introduces new settings.py config option 'enable_search_route' 3 years ago

README.md

IRC!Radio

IRC!Radio is a radio station for IRC channels. You hang around on IRC, adding YouTube songs to the bot, listening to it with all your friends. Great fun!

Stack

IRC!Radio aims to be minimalistic/small using:

  • Python >= 3.7
  • SQLite
  • LiquidSoap >= 1.4.3
  • Icecast2
  • Quart web framework

Command list

- !np         - current song
- !tune       - upvote song
- !boo        - downvote song
- !request    - search and queue a song by title or YouTube id
- !dj+        - add a YouTube ID to the radiostream
- !dj-        - remove a YouTube ID
- !ban+       - ban a YouTube ID and/or nickname
- !ban-       - unban a YouTube ID and/or nickname
- !skip       - skips current song
- !listeners  - show current amount of listeners
- !queue      - show queued up music
- !queue_user - queue a random song by user
- !search     - search for a title
- !stats      - stats

Ubuntu installation

No docker. The following assumes you have a VPS somewhere with root access.

1. Requirements

As root:

apt install -y liquidsoap icecast2 nginx python3-certbot-nginx python3-virtualenv libogg-dev ffmpeg sqlite3
ufw allow 80
ufw allow 443

When the installation asks for icecast2 configuration, skip it.

2. Create system user

As root:

adduser radio

2. Clone this project

As radio:

su radio
cd ~/

git clone https://git.wownero.com/dsc/ircradio.git
cd ircradio/
virtualenv -p /usr/bin/python3 venv
source venv/bin/activate

pip install -r requirements.txt

3. Generate some configs

cp settings.py_example settings.py

Look at settings.py and configure it to your liking:

  • Change icecast2_hostname to your hostname, i.e: radio.example.com
  • Change irc_host, irc_port, irc_channels, and irc_admins_nicknames
  • Change the passwords under icecast2_
  • Change the liquidsoap_description to whatever

When you are done, execute this command:

python run generate

This will write icecast2/liquidsoap/nginx configuration files into data/.

4. Applying configuration

As root, copy the following files:

cp data/icecast.xml /etc/icecast2/
cp data/liquidsoap.service /etc/systemd/system/
cp data/radio_nginx.conf /etc/nginx/sites-enabled/

5. Starting some stuff

As root 'enable' icecast2/liquidsoap/nginx, this is to make sure these applications start when the server reboots.

sudo systemctl enable liquidsoap
sudo systemctl enable nginx
sudo systemctl enable icecast2

And start them:

sudo systemctl start icecast2
sudo systemctl start liquidsoap

Reload & start nginx:

systemctl reload nginx
sudo systemctl start nginx

6. Run the webif and IRC bot:

As radio, issue the following command:

python3 run webdev

Run it in screen or tux to keep it up, or write a systemd unit file for it.

7. Generate HTTPs certificate

certbot --nginx

Pick "Yes" for redirects.