date support
This commit is contained in:
parent
cf300a2a91
commit
fda000646d
@ -14,7 +14,8 @@ from .objects import (
|
|||||||
Metadata,
|
Metadata,
|
||||||
Target,
|
Target,
|
||||||
Artist,
|
Artist,
|
||||||
Album
|
Album,
|
||||||
|
ID3Timestamp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ class Mapping(Enum):
|
|||||||
return cls.get_url_instance(key, value)
|
return cls.get_url_instance(key, value)
|
||||||
|
|
||||||
|
|
||||||
class ID3Timestamp():
|
class ID3Timestamp:
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
year: int = None,
|
year: int = None,
|
||||||
@ -108,18 +108,21 @@ class ID3Timestamp():
|
|||||||
day: int = None,
|
day: int = None,
|
||||||
hour: int = None,
|
hour: int = None,
|
||||||
minute: int = None,
|
minute: int = None,
|
||||||
second: int = None,
|
second: int = None
|
||||||
microsecond=0,
|
|
||||||
tzinfo=None,
|
|
||||||
fold=0
|
|
||||||
):
|
):
|
||||||
|
self.year = year
|
||||||
|
self.month = month
|
||||||
|
self.day = day
|
||||||
|
self.hour = hour
|
||||||
|
self.minute = minute
|
||||||
|
self.second = second
|
||||||
|
|
||||||
self.has_year = year is not None
|
self.has_year = year is not None
|
||||||
self.has_month = month is not None
|
self.has_month = month is not None
|
||||||
self.has_day = day is not None
|
self.has_day = day is not None
|
||||||
self.has_hour = hour is not None
|
self.has_hour = hour is not None
|
||||||
self.has_minute = minute is not None
|
self.has_minute = minute is not None
|
||||||
self.has_second = second is not None
|
self.has_second = second is not None
|
||||||
self.has_microsecond = microsecond is not None
|
|
||||||
|
|
||||||
if not self.has_year:
|
if not self.has_year:
|
||||||
year = 1
|
year = 1
|
||||||
@ -127,19 +130,20 @@ class ID3Timestamp():
|
|||||||
month = 1
|
month = 1
|
||||||
if not self.has_day:
|
if not self.has_day:
|
||||||
day = 1
|
day = 1
|
||||||
|
if not self.has_hour:
|
||||||
|
hour = 1
|
||||||
|
if not self.has_minute:
|
||||||
|
minute = 1
|
||||||
|
if not self.has_second:
|
||||||
|
second = 1
|
||||||
|
|
||||||
# https://stackoverflow.com/questions/399022/why-cant-i-subclass-datetime-date
|
self.date_obj = datetime.datetime(
|
||||||
super().__new__(
|
|
||||||
cls=type(self),
|
|
||||||
year=year,
|
year=year,
|
||||||
month=month,
|
month=month,
|
||||||
day=day,
|
day=day,
|
||||||
hour=hour,
|
hour=hour,
|
||||||
minute=minute,
|
minute=minute,
|
||||||
second=second,
|
second=second
|
||||||
microsecond=microsecond,
|
|
||||||
tzinfo=tzinfo,
|
|
||||||
fold=fold
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_timestamp(self) -> str:
|
def get_timestamp(self) -> str:
|
||||||
@ -165,19 +169,48 @@ class ID3Timestamp():
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
if self.has_year and self.has_month and self.has_day and self.has_hour and self.has_minute and self.has_second:
|
if self.has_year and self.has_month and self.has_day and self.has_hour and self.has_minute and self.has_second:
|
||||||
return self.strftime("%Y-%m-%dT%H:%M:%S")
|
return self.date_obj.strftime("%Y-%m-%dT%H:%M:%S")
|
||||||
if self.has_year and self.has_month and self.has_day and self.has_hour and self.has_minute:
|
if self.has_year and self.has_month and self.has_day and self.has_hour and self.has_minute:
|
||||||
return self.strftime("%Y-%m-%dT%H:%M")
|
return self.date_obj.strftime("%Y-%m-%dT%H:%M")
|
||||||
if self.has_year and self.has_month and self.has_day and self.has_hour:
|
if self.has_year and self.has_month and self.has_day and self.has_hour:
|
||||||
return self.strftime("%Y-%m-%dT%H")
|
return self.date_obj.strftime("%Y-%m-%dT%H")
|
||||||
if self.has_year and self.has_month and self.has_day:
|
if self.has_year and self.has_month and self.has_day:
|
||||||
return self.strftime("%Y-%m-%d")
|
return self.date_obj.strftime("%Y-%m-%d")
|
||||||
if self.has_year and self.has_month:
|
if self.has_year and self.has_month:
|
||||||
return self.strftime("%Y-%m")
|
return self.date_obj.strftime("%Y-%m")
|
||||||
if self.has_year:
|
if self.has_year:
|
||||||
return self.strftime("%Y")
|
return self.date_obj.strftime("%Y")
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def strptime(cls, time_stamp: str, format: str):
|
||||||
|
date_obj = datetime.datetime.strftime(time_stamp, format)
|
||||||
|
|
||||||
|
return cls(
|
||||||
|
year=date_obj.year,
|
||||||
|
month=date_obj.month,
|
||||||
|
day=date_obj.day,
|
||||||
|
hour=date_obj.hour,
|
||||||
|
minute=date_obj.minute,
|
||||||
|
second=date_obj.second
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def now(cls):
|
||||||
|
date_obj = datetime.datetime.now()
|
||||||
|
|
||||||
|
return cls(
|
||||||
|
year=date_obj.year,
|
||||||
|
month=date_obj.month,
|
||||||
|
day=date_obj.day,
|
||||||
|
hour=date_obj.hour,
|
||||||
|
minute=date_obj.minute,
|
||||||
|
second=date_obj.second
|
||||||
|
)
|
||||||
|
|
||||||
|
def strftime(self, format: str) -> str:
|
||||||
|
return self.date_obj.strftime(format)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return self.timestamp
|
return self.timestamp
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user