forked from Wobbl/Wobuzz
Created own metadata dataclass instead of using TinyTag.tags()
This commit is contained in:
parent
7ff1ad7a02
commit
072f5c7691
3 changed files with 32 additions and 16 deletions
|
@ -3,18 +3,35 @@
|
|||
from pydub import AudioSegment
|
||||
from pygame.mixer import Sound
|
||||
from tinytag import TinyTag
|
||||
from tinytag.tinytag import Images as TTImages
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass
|
||||
class TrackMetadata:
|
||||
title: str
|
||||
artist: str
|
||||
album: str
|
||||
images: TTImages | None=None # tinytag images
|
||||
|
||||
|
||||
class Track:
|
||||
"""
|
||||
Class containing data for a track like file path, raw data...
|
||||
Class representing a track.
|
||||
"""
|
||||
|
||||
def __init__(self, app, path: str, cache: bool=False):
|
||||
def __init__(self, app, path: str, cache: bool=False, metadata: TrackMetadata=None):
|
||||
self.app = app
|
||||
self.path = path
|
||||
|
||||
self.tags = TinyTag.get(self.path, ignore_errors=True, duration=False)
|
||||
if metadata is None:
|
||||
# load metadata from audio file
|
||||
tags = TinyTag.get(self.path, ignore_errors=True, duration=False)
|
||||
|
||||
self.metadata = TrackMetadata(tags.title, tags.artist, tags.album)
|
||||
|
||||
else:
|
||||
self.metadata = metadata
|
||||
|
||||
self.cached = False
|
||||
self.audio = None
|
||||
|
@ -67,7 +84,8 @@ class Track:
|
|||
|
||||
self.duration = len(self.audio) # track duration in milliseconds
|
||||
|
||||
self.tags = TinyTag.get(self.path, ignore_errors=True, duration=False, image=True) # metadata with images
|
||||
# metadata with images
|
||||
self.metadata.images = TinyTag.get(self.path, ignore_errors=True, duration=False, image=True).images
|
||||
|
||||
self.cached = True
|
||||
|
||||
|
@ -78,11 +96,9 @@ class Track:
|
|||
self.sound = None
|
||||
self.duration = 0
|
||||
|
||||
self.tags = TinyTag.get(self.path, ignore_errors=True, duration=False) # metadata without images
|
||||
self.metadata.images = None
|
||||
|
||||
def load_audio(self):
|
||||
#file_type = self.path.split(".")[-1]
|
||||
|
||||
self.audio = AudioSegment.from_file(self.path)
|
||||
|
||||
def remaining(self, position: int):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue