Files
am-downloader/am_deduper/metadata.py
T

25 lines
701 B
Python

from __future__ import annotations
from pathlib import Path
try:
from tinytag import TinyTag
except ImportError: # optional until metadata phase is invoked
TinyTag = None
def read_metadata(path: Path) -> dict:
if TinyTag is None:
return {}
tag = TinyTag.get(str(path), image=False)
return {
"duration": tag.duration,
"artist": tag.artist,
"title": tag.title,
"album": tag.album,
"format": path.suffix.lower().lstrip("."),
"bitrate": int(tag.bitrate) if tag.bitrate else None,
"sample_rate": int(tag.samplerate) if tag.samplerate else None,
"bit_depth": int(tag.bitdepth) if tag.bitdepth else None,
}