Eurovision Hue πŸ’‘πŸ‡ͺπŸ‡ΊπŸŽΆ

May 16, 2026 Β· View on GitHub

Latest release

Build status codecov OpenSSF Scorecard

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']"
}
  • FeedUrl is the URL of the feed to monitor, for example the BBC News live blog.
  • ArticleSelector is 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.