{"id":50294460,"url":"https://github.com/marcokstephen/bbcradiodelay","last_synced_at":"2026-05-28T08:02:03.043Z","repository":{"id":53159076,"uuid":"127682466","full_name":"marcokstephen/BBCRadioDelay","owner":"marcokstephen","description":"Streaming BBC Radio with time zone delays","archived":false,"fork":false,"pushed_at":"2021-04-03T19:15:53.000Z","size":18,"stargazers_count":9,"open_issues_count":2,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-08-16T09:10:04.197Z","etag":null,"topics":["bbc","icecast","radio-stream"],"latest_commit_sha":null,"homepage":"http://radioforexpats.co.uk","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcokstephen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-02T00:25:05.000Z","updated_at":"2023-03-02T23:24:52.000Z","dependencies_parsed_at":"2022-09-14T06:00:51.062Z","dependency_job_id":null,"html_url":"https://github.com/marcokstephen/BBCRadioDelay","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/marcokstephen/BBCRadioDelay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcokstephen%2FBBCRadioDelay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcokstephen%2FBBCRadioDelay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcokstephen%2FBBCRadioDelay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcokstephen%2FBBCRadioDelay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcokstephen","download_url":"https://codeload.github.com/marcokstephen/BBCRadioDelay/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcokstephen%2FBBCRadioDelay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33599465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bbc","icecast","radio-stream"],"created_at":"2026-05-28T08:01:57.677Z","updated_at":"2026-05-28T08:02:03.037Z","avatar_url":"https://github.com/marcokstephen.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BBC Radio Delay\n\nhttp://radioforexpats.co.uk\n\nThe goal of this project is to stream BBC radio with a time-zone delay, to give the impression of \"real-time listening\" (as if you were in Britain) despite actually being in Canadian time zones.\n\nThis guide will teach you how to install this project for yourself. You will require a Linux server. If you need one, you can rent one on DigitalOcean for approximately 5 USD per month. This guide assumes you are using Ubuntu.\n\nIf you already have ffmpeg, icecast2, and ices2 streams configured, you can jump to the section on \"Using this project\".\n\n## Installing Prerequisites\n\nYou need `icecast2` (software for creating a radio server), `ices2` (software to make a radio stream that can be served by icecast2), and `ffmpeg` (to download BBC audio streams and process audio files).\n\nFirst run the following command to update your repositories:\n```\nsudo apt-get update\n```\n\nThen we will install `ffmpeg`, `icecast2`, and `ices2`. If, when you are installing icecast2, a pop-up screen asks you to configure passwords, you can select no. You will do it manually later.\n```\nsudo apt-get install ffmpeg\nsudo apt-get install icecast2\nsudo apt-get install ices2\n```\n\n### Configuring icecast2\nFirst we need to set passwords. These passwords will be used to control who can access the icecast2 admin panel, as well as who can set up streams to broadcast through your server. To do this, open the following file:\n```\nvi /etc/icecast2/icecast.xml\n```\nFind the following block of code and edit the passwords as you wish. Take note of what you are setting the `source-password` to, you will need it later. You can set the `relay-password` to the same as the `source-password`.\n```\n\u003cauthentication\u003e\n        \u003c!-- Sources log in with username 'source' --\u003e\n        \u003csource-password\u003eabc\u003c/source-password\u003e\n        \u003c!-- Relays log in username 'relay' --\u003e\n        \u003crelay-password\u003eabc\u003c/relay-password\u003e\n\n        \u003c!-- Admin logs in with the username given below --\u003e\n        \u003cadmin-user\u003eadmin\u003c/admin-user\u003e\n        \u003cadmin-password\u003eabc\u003c/admin-password\u003e\n    \u003c/authentication\u003e\n```\n\nAlso find the following block of code and edit the `clients` and `sources` figures. These two figures are the limits of how many listeners your server will allow and how many radio streams your icecast2 will accomodate. If you don't know, you can make them 100 and 20 respectively.\n```\n    \u003climits\u003e\n        \u003cclients\u003e100\u003c/clients\u003e\n        \u003csources\u003e20\u003c/sources\u003e\n        ...\n    \u003c/limits\u003e\n```\n\nLastly, you must open the following file and set `ENABLE=true`:\n```\nvi /etc/default/icecast2\n```\n```\nENABLE=true\n```\n\nNow you can start `icecast2` and when you open your server in a web browser at port 8000, you should see the icecast2 page.\n```\n/etc/init.d/icecast2 start\n```\nExample: http://192.168.0.1:8000 (but make sure to replace 192.168.0.1 with your server's external IP address). You should see the icecast2 page.\n\n#### Debugging\nIf you don't see anything, as a debugging step you can try restarting the icecast service.\n```\n/etc/init.d/icecast2 restart\n```\nYou can also use the following tool to check for ports that are listening for connections. 8000 should appear if icecast is listening.\n```\nnetstat -l\n```\n\n### Configuring ices2\nYou need to make a folder to hold the logs.\n```\nmkdir /var/log/ices\n```\nYou are done, that was easy.\n\n## Using this Project\n\n### Configuring the scripts\nFirst, clone this repository.\n```\ngit clone https://github.com/marcokstephen/BBCRadioDelay.git\ncd BBCRadioDelay\n```\nTake note of what your full directory path is. You will need to modify the scripts to use this directory path. To get your current directory, run\n```\npwd\n```\nFor example, it might show your current directory is `/root/BBCRadioDelay`. Copy this, and modify the following six files to set the `BASE_DIRECTORY` variable:\n* `cron-scripts/kill-ffmpeg`\n* `cron-scripts/purge-ogg`\n* `cron-scripts/resync`\n* `run-scripts/downloader.sh`\n* `run-scripts/restart-service.sh`\n* `run-scripts/start_radio.sh`\n```\nBASE_DIRECTORY=/root/BBCRadioDelay\n```\n(make sure to set the variable according to what YOUR base directory is!)\n\nNext, you will need to open `run-scripts/start_radio.sh`.\n```\nvi run-scripts/start_radio.sh\n```\nFind the `SERVER_PASSWORD` and set it to what you made the `source-password` when configuring icecast2.\n```\nSERVER_ADDRESS=\"localhost\"\nSERVER_PORT=\"8000\"\nSERVER_PASSWORD=\"abc\"\n```\n\n### Starting the streams\n\nYou are now ready to start the streams. To do this, we use the `start_radio.sh` script.\n```\nrun-scripts/start_radio.sh {stream name} {stream code} {stream genre}\n```\nExamples:\n```\nrun-scripts/start_radio.sh \"BBC Radio 1\" radio1 \"Pop\"\nrun-scripts/start_radio.sh \"BBC Radio 2\" radio2 \"Adult Contemporary\"\nrun-scripts/start_radio.sh \"BBC Radio 4\" radio4fm \"Talk\"\nrun-scripts/start_radio.sh \"BBC Radio 5\" radio5live \"Talk\"\nrun-scripts/start_radio.sh \"BBC Radio 6\" 6music \"Music\"\n```\nYou can verify that things started properly by going to the `audio` folder and seeing that a file is downloading. The download log should also be saved to the `logs` folder. The radio stream itself won't have started yet, because it is going to delay at least 3.5 hours (that is the time difference to the first time zone -- Newfoundland). For debugging purposes, you can play around with different delays in `start_radio.sh` to make the streams start earlier.\n\nOnce the streams start, you can view them at http://192.168.0.1:8000, (remembering to use your own IP address) and you can listen by appending your mount point name. Examples:\n```\nhttp://192.168.0.1:8000/radio1/3-5\nhttp://192.168.0.1:8000/radio2/4\nhttp://192.168.0.1:8000/radio4fm/5\nhttp://192.168.0.1:8000/radio5live/6\nhttp://192.168.0.1:8000/6music/7\n```\n\n### Setting up the cron jobs\n\nThe stream should be working properly at this point but there is still some maintenance to do. There are three cron scripts that need to run. `kill-ffmpeg` and `purge-ogg` should run daily. `resync` should run once a week. You can open the files themselves to see a description of what it is that they do. To make these run, add them to your `crontab`.\n\n```\ncrontab -e\n```\nThe following will make `kill-ffmpeg` and `purge-ogg` run every day at 05:00, and `resync` will run every Sunday at 05:00. Again, make sure to replace the path to the files with whatever your file path is.\n```\n0 5 * * * /root/BBCRadioDelay/cron-scripts/kill-ffmpeg\n0 5 * * * /root/BBCRadioDelay/cron-scripts/purge-ogg\n0 5 * * sun /root/BBCRadioDelay/cron-scripts/resync\n```\n\n### Debugging\nIf the streams do not start, try checking the ices log to see if there are any attempts reported.\n```\ncat /var/log/ices/ices.log\n```\n\n# Questions?\nYou can open an issue on this repository or send an email to marcok dot stephen at gmail dot com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcokstephen%2Fbbcradiodelay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcokstephen%2Fbbcradiodelay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcokstephen%2Fbbcradiodelay/lists"}