{"id":16525565,"url":"https://github.com/andrewn/live-tracks","last_synced_at":"2026-05-08T20:32:42.911Z","repository":{"id":7902283,"uuid":"9283180","full_name":"andrewn/live-tracks","owner":"andrewn","description":"Tracks and artwork from radio live text","archived":false,"fork":false,"pushed_at":"2013-04-07T21:02:56.000Z","size":108,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-03T02:24:51.005Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/andrewn.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":"2013-04-07T21:02:01.000Z","updated_at":"2015-02-24T23:37:57.000Z","dependencies_parsed_at":"2022-08-20T17:21:24.693Z","dependency_job_id":null,"html_url":"https://github.com/andrewn/live-tracks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andrewn/live-tracks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewn%2Flive-tracks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewn%2Flive-tracks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewn%2Flive-tracks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewn%2Flive-tracks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrewn","download_url":"https://codeload.github.com/andrewn/live-tracks/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewn%2Flive-tracks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32795909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-10-11T17:04:03.931Z","updated_at":"2026-05-08T20:32:42.895Z","avatar_url":"https://github.com/andrewn.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Track matching\n\n`lib/track.js` subscribes to MQTT `bbc/livetext` topics and tries to match items that look like songs. At the moment this is a naive, case-insenstive regexp `/Now Playing: (.*) by (.*)/`. Found songs are republished on the `bbc/livetracks` topic, under the same service id and also under `track` and `artist`.\n\nSo, a the following bit of livetext: \n\n    bbc/livetext/1xtra    Now Playing: P's \u0026 Q's by Kano\n\nWill result in 3 items being published:\n\n    bbc/livetracks/1xtra        P's \u0026 Q's by Kano\n    bbc/livetracks/1xtra/track  P's \u0026 Q's\n    bbc/livetracks/1xtra/artist Kano\n\nThe livetext topic may publish the same 'now playing' text many times, but only 1 livetrack message for the track will be published.\n\n## Artwork resolution\n\n`lib/artwork.js` subscribes to MQTT `bbc/livetracks` topics and tries to find artwork for the songs. At the moment this is via the (Discogs)[http://www.discogs.com/] API.\n\nAny artwork URLs found will be published under the `bbc/livetracks/SERVICE/artwork` topic e.g.\n\n    bbc/livetracks/1xtra 21 Seconds by So Solid Crew\n\nWill result in the following items being published:\n\n    bbc/livetracks/1xtra/artwork http://api.discogs.com/image/R-115228-1327259213.jpeg\n    bbc/livetracks/1xtra/artwork http://api.discogs.com/image/R-115228-1327259220.jpeg\n    bbc/livetracks/1xtra/artwork http://api.discogs.com/image/R-115228-1327259226.jpeg\n\n# Installing\n\nThe code is written in javascript and runs in nodejs. For ease of running under Heroku a Procfile is included so you'll need foreman to run it. The Gemfile and package.json will have everything you need.\n\n    $ bundle install \n    $ npm install\n    $ foreman start\n\nTo just run either the `tracks` or `artworks` process only, set the ONLY environment variable when you call foreman:\n\n    $ ONLY=artworks foreman start\n\n # Deploying to Heroku\n\n Since this project has a Gemfile and package.json, Heroku wrongly assumes it's a Ruby project. To get around this, create the app with the nodejs buildpack:\n\n    $ heroku create -s cedar --buildpack https://github.com/heroku/heroku-buildpack-nodejs\n\nOr, if you've already created the app, add this config var:\n\n    $ heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewn%2Flive-tracks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewn%2Flive-tracks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewn%2Flive-tracks/lists"}