30 lines
813 B
Python
30 lines
813 B
Python
"""
|
|
These are some mixin for models
|
|
"""
|
|
import datetime
|
|
from typing import Optional
|
|
|
|
import isodate
|
|
from isodate.isoerror import ISO8601Error
|
|
|
|
from pyyoutube.error import ErrorCode, ErrorMessage, PyYouTubeException
|
|
|
|
|
|
class DatetimeTimeMixin:
|
|
@staticmethod
|
|
def string_to_datetime(dt_str: Optional[str]) -> Optional[datetime.datetime]:
|
|
"""
|
|
Convert datetime string to datetime instance.
|
|
original string format is YYYY-MM-DDThh:mm:ss.sZ.
|
|
:return:
|
|
"""
|
|
if not dt_str:
|
|
return None
|
|
try:
|
|
r = isodate.parse_datetime(dt_str)
|
|
except ISO8601Error as e:
|
|
raise PyYouTubeException(
|
|
ErrorMessage(status_code=ErrorCode.INVALID_PARAMS, message=e.args[0])
|
|
)
|
|
else:
|
|
return r
|