{"id":44340658,"url":"https://github.com/radio4000/media-now","last_synced_at":"2026-02-11T12:58:10.533Z","repository":{"id":16213025,"uuid":"79333517","full_name":"radio4000/media-now","owner":"radio4000","description":"Get media information from YouTube and Vimeo videos, Spotify tracks and Discogs releases.","archived":false,"fork":false,"pushed_at":"2026-02-03T14:08:52.000Z","size":5859,"stargazers_count":15,"open_issues_count":1,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-02-04T00:40:12.323Z","etag":null,"topics":["api","discogs-api","microservice","music-information-retrieval","spotify-api","vimeo-api","youtube-api"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/radio4000.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-01-18T11:27:49.000Z","updated_at":"2026-02-03T14:11:40.000Z","dependencies_parsed_at":"2024-01-16T20:28:12.643Z","dependency_job_id":"96000b6e-d87f-4bb4-be10-bfed4d862e51","html_url":"https://github.com/radio4000/media-now","commit_stats":null,"previous_names":["radio4000/media-now"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/radio4000/media-now","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radio4000%2Fmedia-now","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radio4000%2Fmedia-now/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radio4000%2Fmedia-now/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radio4000%2Fmedia-now/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/radio4000","download_url":"https://codeload.github.com/radio4000/media-now/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radio4000%2Fmedia-now/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29333147,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T12:42:24.625Z","status":"ssl_error","status_checked_at":"2026-02-11T12:41:23.344Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["api","discogs-api","microservice","music-information-retrieval","spotify-api","vimeo-api","youtube-api"],"created_at":"2026-02-11T12:58:09.566Z","updated_at":"2026-02-11T12:58:10.529Z","avatar_url":"https://github.com/radio4000.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"![The Burning of the Library at Alexandria in 391 AD. Ambrose Dudley](http://i.imgur.com/2fvkbVem.jpg)\n\n# Media Now\n\nParse URLs to extract provider and identifier. Fetch metadata from YouTube, Vimeo, Spotify, Discogs, MusicBrainz, and SoundCloud. No API keys.\n\nMeant to be useful for people dealing with music tracks in one shape or another (hello https://radio4000.com).\n\nAll functions return at least `provider`, `id` and `payload` (the original response).\n\n```js\nimport { getMedia, parseUrl, parseTitle, cleanTitle, discoverDiscogsUrl } from 'media-now'\n\ncleanTitle('Bohemian Rhapsody (Official Video) [HD]')\n// 'Bohemian Rhapsody'\n\nparseTitle('Nikolaj Nørlund - Hvid røg og tekno')\n// { artist: 'Nikolaj Nørlund', title: 'Hvid røg og tekno', original: '...' }\n\nparseUrl('https://vimeo.com/123456789')\n// { provider: 'vimeo', id: '123456789' }\n\nawait getMedia('https://www.youtube.com/watch?v=dQw4w9WgXcQ')\n// { provider, id, url, title, thumbnail, author, payload }\n\nawait discoverDiscogsUrl('Massive Attack - Teardrop')\n// 'https://www.discogs.com/release/...'\n```\n\n## Providers\n\nNote, the `getMedia()` methods automatically detects provider and calls these internally. But you can of course use them directly as well.\n\n```js\nimport { youtube } from 'media-now/providers/youtube'\nimport { vimeo } from 'media-now/providers/vimeo'\nimport { spotify } from 'media-now/providers/spotify'\nimport { discogs } from 'media-now/providers/discogs'\nimport { musicbrainz } from 'media-now/providers/musicbrainz'\nimport { soundcloud } from 'media-now/providers/soundcloud'\n\nyoutube.fetch(id)              // ~100ms - basic metadata via oEmbed\nyoutube.fetchExtended(id)      // ~1s - includes music card data (song, artist, album)\nyoutube.search(query)\nvimeo.fetch(id)\nspotify.fetch(id)\nsoundcloud.fetch(id)           // id is 'user/track'\ndiscogs.fetch(id)\ndiscogs.fetchMaster(id)\nmusicbrainz.search(query)\nmusicbrainz.fetchRecording(id)\nmusicbrainz.fetchRelease(id)\n```\n\n## Development\n\nTo validate the project\n\n```sh\nbun run check\nbun test\nbun run build\n```\n\n## Releasing\n\nPushing a tag prefixed with `v` triggers the GitHub Actions workflow that publishes to npm.\n\n```sh\n# bump version in package.json\ngit commit -am \"2.1.0\"\ngit tag v2.1.0\ngit push origin main v2.1.0\n```\n\n## History\n\nWe wrote this kind of package several times in the past: \n[media-now](https://github.com/internet4000/media-now), \n[media-now-deno](https://github.com/radio4000/media-now-deno/) \u0026 \n[media-url-parser](https://github.com/internet4000/media-url-parser).\n\n## Links\n\n- https://console.developers.google.com/apis/api/youtube/overview\n- https://developer.vimeo.com/apps\n- https://developer.spotify.com/my-applications/\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradio4000%2Fmedia-now","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fradio4000%2Fmedia-now","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradio4000%2Fmedia-now/lists"}