diff --git a/scanner/metadata.py b/scanner/metadata.py index dda0fdb..b38553a 100644 --- a/scanner/metadata.py +++ b/scanner/metadata.py @@ -1,4 +1,5 @@ # Copyright 2021 (c) Anna Schumaker. +import datetime import mutagen import re @@ -42,6 +43,14 @@ class Metadata: def length(self): return int(self.file.info.length) + def release(self): + date = self.file.get("date", [ "0" ]) + date = self.file.get("originalyear", date)[0].split("-") + year = int(date[0]) if len(date) > 0 else 1 + month = int(date[1]) if len(date) > 1 else 1 + day = int(date[2]) if len(date) > 2 else 1 + return datetime.date(max(year, 1), month, day) + def title(self): return self.file.get("title", [ "" ])[0] diff --git a/scanner/test_metadata.py b/scanner/test_metadata.py index baa7824..8a167a3 100644 --- a/scanner/test_metadata.py +++ b/scanner/test_metadata.py @@ -1,4 +1,5 @@ # Copyright 2021 (c) Anna Schumaker. +import datetime import pathlib import scanner import unittest @@ -24,6 +25,7 @@ class TestMetadata(unittest.TestCase): self.assertEqual(mdf.discsubtitle(), None) self.assertEqual(mdf.genres(), [ "Test" ]) self.assertEqual(mdf.length(), 10) + self.assertEqual(mdf.release(), datetime.date(2019, 2, 1)) self.assertEqual(mdf.title(), "Test Track") self.assertEqual(mdf.tracknumber(), 1) self.assertEqual(mdf.year(), 2019) @@ -34,6 +36,7 @@ class TestMetadata(unittest.TestCase): self.assertEqual(mdf.artistsort(), "Album Artist, Test") self.assertEqual(mdf.discsubtitle(), "Electric Boogaloo") self.assertEqual(mdf.genres(), [ "Test", "Genre", "List" ]) + self.assertEqual(mdf.release(), datetime.date(2019, 1, 1)) self.assertEqual(mdf.year(), 2019) def test_metadata_text_txt(self):