Skip to main content

Metaspector

Metaspector is a powerful Python library and command-line tool designed for inspecting and extracting metadata from various media file formats. Whether you need to programmatically access track information, album art, or simply get a quick overview of a file's properties, Metaspector provides a clean and consistent interface.


✨ Features

  • Comprehensive Metadata Extraction: Retrieve detailed information like title, artist, album, genre, release date, track numbers, and more.

  • Audio and Video Track Details: Get specifics about video/audio codecs, channels, sample rates, bitrates, video dimensions, and more.

  • Subtitle Track Details: Get a wide variety of subtitle specific metadata like "forced only", "auxiliary content", "language translation" etc.

  • Cover Art Extraction: Easily extract embedded cover art.

  • Multi-Format Support: Easily work with major media formats like:

    • 🎬 MP4/M4V/M4A (MPEG-4 incl. parsing of proprietary atoms often seen in M4V files distributed by Apple Inc.)

    • 🎵 MP3 (MPEG-1 Audio Layer III)

    • 🎧 FLAC (Free Lossless Audio Codec)

  • Multi-Codec Support: Easily work with major codec formats like:

    • 🎬 Video Codecs AVC1, HEVC, AV1, VP9 (incl. Dolby Vision)

    • 🎵 Audio Codecs E-AC3, AC3, AAC, MP3, FLAC (incl. Dolby Atmos)

    • 📺💬 Subtitles tx3g, cea-608, mp4s, subp, clcp, text

  • Flexible Output:

    • CLI: Get human-readable JSON output directly in your terminal.

    • API: Integrate seamlessly into your Python applications.

  • Section-Specific Output: Request only the metadata, video, audio, or subtitle sections for focused data retrieval.

  • Export Functionality: Export extracted metadata to JSON files or cover art to image files.

  • No Dependencies: Metaspector is a lightweight, self-contained library. It relies exclusively on built-in Python tools, requiring no external libraries to run.

  • Dolby Vision/Atoms Detection: Easily detect if a given video or audio track contains Dolby Vision or Atmos specific indicators

  • MP42Foundation oriented: Heavily oriented on MP42Foundation, also see https://github.com/SublerApp/MP42Foundation

  • ffmpeg oriented: Strives to be as compatible as possible with ffmpeg cli instructions


🚀 Installation

You can install metaspector directly from PyPI using pip:

pip install metaspector

For development or local usage, it's recommended to use a virtual environment.

# Create and activate a virtual environment (optional but recommended)
python3 -m venv .venv
source .venv/bin/activate

# Install in editable mode from your project's root directory
pip install -e .

💡 Usage

Command-Line Interface (CLI)

The metaspector CLI provides simple and direct access to the library's main functions.

Inspect a File

To inspect a file and print all of its metadata to the terminal as JSON, use the inspect command:

Using a local file path

metaspector inspect "/path/to/your/file.mp4"

Using a URL

metaspector inspect "https://some_example_url.com/path/to/your/file.mp4"

Inspect a Specific Section

You can specify a section to get a more focused output. For example, to view only the audio track details:

metaspector inspect "/path/to/your/file.m4a" --section audio

Export Metadata

To export the full metadata of a file to a JSON file, use the export command with the meta type:

metaspector export meta "/path/to/your/file.mp3" "./output/"

This command will create a file named your_file.json in the ./output/ directory.

Export Cover Art

To extract and save the embedded cover art, use the export command with the cover type:

metaspector export cover "/path/to/your/file.flac" "./output/"

This will save the image as your_file.jpg or your_file.png in the ./output/ directory.


Python API

Metaspector's API is designed for easy integration into your Python scripts.

Basic Inspection

To get all metadata from a file, instantiate MediaInspector and call the inspect() method:

from src.metaspector import MediaInspector

inspector = MediaInspector("/path/to/your/file.mp4")
metadata = inspector.inspect()

print(metadata)

Get Specific Sections

You can pass the section argument to the inspect() method to retrieve only a specific part of the metadata:

from src.metaspector import MediaInspector

inspector = MediaInspector("/path/to/your/file.m4a")
audio_data = inspector.inspect(section="audio")

print(audio_data)

Extract Cover Art

Use the get_cover_art() method to retrieve the raw image bytes, which you can then save to a file:

from src.metaspector import MediaInspector

inspector = MediaInspector("/path/to/your/file.flac")
cover_art_bytes = inspector.get_cover_art()

if cover_art_bytes:
    with open("cover.jpg", "wb") as f:
        f.write(cover_art_bytes)

Metadata

Release files for metaspector 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for metaspector 0.1.8
File Size Uploaded
metaspector-0.1.8.tar.gz 56.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for metaspector 0.1.8
File Interpreter ABI Platform
metaspector-0.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 120.0 kB

Release files / metaspector-0.1.8.tar.gz

Download URL metaspector-0.1.8.tar.gz
Size 56.6 kB
Tags Source
SHA-256 checksum
How to use checksums
7fd0273fa8c927e4f3c01423c864ce6ea9865d9592fe066c4511b4b4c4836795
BLAKE2b-256 checksum
How to use checksums
54db8e759df8d28e80ee8dc08acd34725dc2596b13c32e73f81aae919b42e3ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2025.

Transparency log

Release files / metaspector-0.1.8-py3-none-any.whl

Download URL metaspector-0.1.8-py3-none-any.whl
Size 63.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
48ed344d80e56d0139d0aee9158d73f81964f45f70401f9377f5e9f0387d47a2
BLAKE2b-256 checksum
How to use checksums
54cbbdcab0ca2a2cc4b30e0684e42fa9a064387bb50c6901d68a90dc308aec17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2025.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page