Eurovision Hue π‘πͺπΊπΆ
May 16, 2026 Β· View on GitHub
Introduction
Updates your Hue lights to follow along with the Eurovision Song Contest.
This project was inspired by the cnorthwood/eurovisionhue project.
How it Works
The application monitors a webpage for a live feed of the Eurovision Song Contest and updates your Philips Hue lights to match the colours of the flag of the current participant in the contest that is on stage.
The current participant is determined by finding the most recent occurrence of the name of a country in the live feed being monitored, so it may not always be accurate.
The Hue bridge for your lights must be discoverable on the same local network running the application. The first time the application runs, it will prompt you to press the button on your Hue bridge to allow it to connect to the bridge. You will then be able to select which lights you want to synchronise with the live feed.
Changing the Feed
If the built-in feed does not work for you, you can change the feed URL by changing the
following settings in appsettings.json:
{
"FeedUrl": "https://www.bbc.co.uk/news/live/cm2p9xmmpylt",
"ArticleSelector": "article[data-testid='content-post']"
}
FeedUrlis the URL of the feed to monitor, for example the BBC News live blog.ArticleSelectoris a CSS selector that matches the HTML element(s) in the feed that contain the name of the country currently on stage. If multiple elements match the selector, the first one will be used.
These values can also be set using environment variables of the same names, for example:
export FeedUrl="https://www.bbc.co.uk/news/live/cm2p9xmmpylt"
export ArticleSelector="article[data-testid='content-post']"
Note
The feed can also be reconfigured by the owner of this project via an edit to this GitHub Gist during the Eurovision Song Contest if you have not manually changed the settings.
This is useful if the feed URL changes during an event without users needing to reconfigure or rebuild their local copy of the application after it has been started. If the feed configuration is changed remotely, the application should automatically observe the change within 5 minutes.
Running with Docker
To run the application using Docker, you will need to have Docker installed.
First, pull the latest image for the application to your local machine:
docker pull ghcr.io/martincostello/eurovision-hue:latest
Finally, run the application using the following command:
docker run --interactive --tty --rm --env TZ=Europe/London --mount type=volume,src=eurovision-hue,dst=/app/MartinCostello/EurovisionHue ghcr.io/martincostello/eurovision-hue:latest
The eurovision-hue volume is used to persist the configuration of the application between runs.
Tip
You can change the timezone used by the application by changing the value of the TZ environment
variable to a valid tz database time zone, for example Europe/Vienna.
Demo
Note
To run the demo, you will need to either clone this repository locally, or download the demo HTML file.
To run a demo of the application using Docker, you can use the following command:
docker run --env ArticleSelector="td:nth-child(2)" --env FeedUrl="file:///app/demo.html" --env TZ=Europe/London --interactive --tty --rm --mount type=volume,src=eurovision-hue,dst=/app/MartinCostello/EurovisionHue --mount type=bind,source=./demo.html,target=/app/demo.html ghcr.io/martincostello/eurovision-hue:latest
This command will run the application in a mode where your selected Hue lights will randomly change to the colours of the flag of a Eurovision participant approximately every 10 seconds.
Building and Testing
Compiling the application yourself without Docker requires Git and the .NET SDK to be installed.
To build and test the application locally from a terminal/command-line, run the following set of commands:
git clone https://github.com/martincostello/eurovision-hue.git
cd eurovision-hue
./build.ps1
Verifying Container Image Signatures
The container images published for this project are signed using cosign. You can verify the signatures using the following command:
VERSION="1.0.0"
IMAGE="ghcr.io/martincostello/eurovision-hue:${VERSION}"
IDENTITY="https://github.com/martincostello/eurovision-hue/.github/workflows/build.yml@refs/tags/v${VERSION}"
OIDC_ISSUER="https://token.actions.githubusercontent.com"
cosign verify $IMAGE --certificate-identity $IDENTITY --certificate-oidc-issuer $OIDC_ISSUER
Feedback
Any feedback or issues can be added to the issues for this project in GitHub.
Repository
The repository is hosted in GitHub: https://github.com/martincostello/eurovision-hue.git
License
This project is licensed under the Apache 2.0 license.