Terminal helper for saving permitted public, non-DRM Metropolitan Opera livestream broadcast audio as a local .mp3 music album with Jellyfin-ready metadata and cover art.
Open Table of Contents
The Metropolitan Opera Livestream Getter by mp3li is a focused terminal tool for saving a permitted public, non-DRM Metropolitan Opera livestream broadcast as local MP3 audio with Jellyfin-style metadata and available artwork.
This tool was created for educational and accommodation purposes, including but not limited to helping provide offline audio access on MP3 players for disabled and elderly individuals. It is not intended or able to bypass DRM, encryption, access controls, subscriptions, or other protections.
The practical workflow is simple:
- paste the currently available Metropolitan Opera broadcast page link
- open the page in a temporary headless Chromium-based browser session
- capture the public HLS playlist requests needed for that one broadcast
- stop if the playlist shows an obvious encryption or DRM marker
- save the audio as a singular
.mp3,album.nfo, and cover image into a composer-organized music-album folder
It is not a general-purpose stream downloader and it does not save HLS playlist files as part of the finished result.
- Accepts a valid
https://ondemand.metopera.org/broadcast/...link. - Handles one broadcast at a time, matching the single currently available livestream workflow.
- Uses a fresh temporary browser profile and temporary playlist files.
- Selects the highest-bitrate detected audio stream when available.
- Creates a 192 kbps local
.mp3file with embedded ID3 music metadata, the complete generated album NFO XML, and the cover as front-cover album art when available. - Keeps the finished output folder free of
playlists/,master.m3u8, andrendition.m3u8files.
For every successful broadcast, the tool writes a Jellyfin-style album.nfo alongside the MP3. When the public Metropolitan Opera page provides the information, the NFO includes:
- title and source link
- short page description as
<outline> - longer
<plot>with the short description, full act-by-act synopsis, and world-premiere line - performance date and year
- runtime
- composer, conductor, librettist, and cast with roles
- The Metropolitan Opera as studio
- Metropolitan Opera ID
- current track and track count
- Full Synopsis URL
When available, the tool also saves cover.jpg (or the source image's supported extension). It does not save backdrops, banners, or landscape artwork.
The MP3 carries the same music information as ID3 tags: title, album, performers, album artist, composer, conductor, librettist, sung language, date, genre, and disc/track number. The full language name is saved as <language> in album.nfo, while the MP3 uses the standard three-letter ID3 code (for example, eng, fra, or deu). The complete album.nfo XML is also retained in the MP3's NFO_XML tag, and cover.jpg is embedded as the MP3's front-cover album art.
This current release is for macOS.
- Python 3
ffmpegandffprobeavailable in your TerminalPATH- Google Chrome, Chromium, Microsoft Edge, Brave, or Opera installed
The script uses only Python's standard library; there is no Python package-install step. Windows and Linux versions are coming soon.
cd "/Users/stellar/MyWork/The Metropolitan Opera Livestream Getter by mp3li"
python3 the_metropolitan_opera_livestream_getter.pyThe default output location is set in settings.json:
Output
Set output_directory to an absolute path or a path relative to the project folder to save the library elsewhere.
When the tool starts, paste the one valid Metropolitan Opera broadcast page link that is currently available:
Paste your The Metropolitan Opera livestream broadcast link:
The tool captures the temporary playlist information, checks it for clear encryption markers, and saves the supported result into the configured music library folder.
Each successful broadcast is saved as a one-track music album, grouped under its composer:
Output/Metropolitan Opera 24 Hour Livestreamed Operas/
Output/Metropolitan Opera 24 Hour Livestreamed Operas/Giacomo Puccini/
Output/Metropolitan Opera 24 Hour Livestreamed Operas/Giacomo Puccini/Madama Butterfly - Giacomo Puccini - 1904 (IT)/
Output/Metropolitan Opera 24 Hour Livestreamed Operas/Giacomo Puccini/Madama Butterfly - Giacomo Puccini - 1904 (IT)/Madama Butterfly - Giacomo Puccini - 1904 (IT).mp3
Output/Metropolitan Opera 24 Hour Livestreamed Operas/Giacomo Puccini/Madama Butterfly - Giacomo Puccini - 1904 (IT)/album.nfo
Output/Metropolitan Opera 24 Hour Livestreamed Operas/Giacomo Puccini/Madama Butterfly - Giacomo Puccini - 1904 (IT)/cover.jpg
The final suffix is the verified sung-language code, such as (EN), (FR), (DE), or (IT). The tool leaves it off if the Metropolitan Opera synopsis does not provide a recognized sung language.
Captured HLS playlists exist only in a temporary system folder while the conversion runs. They are deleted automatically and do not appear in the final title folder.
The Metropolitan Opera Livestream Getter by mp3li/
the_metropolitan_opera_livestream_getter.py
settings.json # output-directory preference
README.md
.gitignore
Output/ # created locally and gitignored
- Only Metropolitan Opera links in the
/broadcast/path are accepted. - This release requires macOS, a Chromium-based browser, and
ffmpeg/ffprobe. - Broadcast availability, artwork, metadata fields, and audio-stream details depend on what the public source page provides at the time of capture.
- Protected or encrypted streams are not processed.
- Windows and Linux support are planned for future versions.
README.md- public project overview, setup, workflow, metadata, output details, and responsible-use informationthe_metropolitan_opera_livestream_getter.py- standalone application script.gitignore- publication guardrails for generated and local files
This tool is intended only for permitted public, non-DRM Metropolitan Opera livestream broadcasts. It was created for educational and accommodation purposes, including offline listening on MP3 players for disabled and elderly individuals.
It does not bypass DRM, encryption, subscriptions, access controls, logins, or other protections. If a captured playlist contains an obvious encryption or DRM marker, the tool stops before audio processing. Users are responsible for ensuring that their use complies with the source's terms and all applicable law.