Skip to content
Snippets Groups Projects
Verified Commit 1dec25f1 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

feat: add support for extracting wav files

parent 3dc6e89c
Branches
No related tags found
No related merge requests found
from typing import Optional
from mutagen.wave import WAVE
from extractors.MediaExtractor import MediaExtractor
from models.TrackMeta import TrackMeta
from util.extract_numbers import extract_numbers
class WaveExtractor(MediaExtractor):
file: WAVE
def __init__(self, filename: str):
self.file = WAVE(filename)
def extract_tag(self, tag: str) -> Optional[str]:
if tag not in self.file.tags:
return None
return str(self.file.tags[tag])
def extract_tags(self) -> TrackMeta:
discnumber, disctotal = extract_numbers(self.extract_tag('TPOS'))
tracknumber, tracktotal = extract_numbers(self.extract_tag('TRCK'))
return TrackMeta(
album=self.extract_tag('TALB'),
albumsort=self.extract_tag('TSOA'),
albumartist=self.extract_tag('TPE2'),
albumartistsort=self.extract_tag('TSO2'),
artist=self.extract_tag('TPE1'),
artistsort=self.extract_tag('TSOP'),
catalognumber=self.extract_tag('TXXX:CATALOGNUMBER'),
discnumber=discnumber,
disctotal=disctotal,
label=self.extract_tag('TPUB'),
media=self.extract_tag('TMED'),
originaldate=self.extract_tag('TDOR'),
originalyear=self.extract_tag('TDRC'),
title=self.extract_tag('TIT2'),
titlesort=self.extract_tag('TSOT'),
tracknumber=tracknumber,
tracktotal=tracktotal,
)
...@@ -6,6 +6,7 @@ from extractors.FlacExtractor import FlacExtractor ...@@ -6,6 +6,7 @@ from extractors.FlacExtractor import FlacExtractor
from extractors.MediaExtractor import MediaExtractor from extractors.MediaExtractor import MediaExtractor
from extractors.Mp3Extractor import Mp3Extractor from extractors.Mp3Extractor import Mp3Extractor
from extractors.Mp4Extractor import Mp4Extractor from extractors.Mp4Extractor import Mp4Extractor
from extractors.WavExtractor import WaveExtractor
def get_extractor(filename) -> Optional[MediaExtractor]: def get_extractor(filename) -> Optional[MediaExtractor]:
...@@ -19,5 +20,8 @@ def get_extractor(filename) -> Optional[MediaExtractor]: ...@@ -19,5 +20,8 @@ def get_extractor(filename) -> Optional[MediaExtractor]:
return AacExtractor(filename) return AacExtractor(filename)
elif filename.endswith(".mp4") or filename.endswith(".m4a"): elif filename.endswith(".mp4") or filename.endswith(".m4a"):
return Mp4Extractor(filename) return Mp4Extractor(filename)
elif filename.endswith(".aiff") or filename.endswith(".wav") \
or filename.endswith(".wave") or filename.endswith(".pcm"):
return WaveExtractor(filename)
else: else:
return None return None
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment