31 lines
864 B
Python
31 lines
864 B
Python
"""
|
|
This provide some common utils methods for YouTube resource.
|
|
"""
|
|
|
|
import isodate
|
|
from isodate.isoerror import ISO8601Error
|
|
|
|
from pyyoutube.error import ErrorMessage, PyYouTubeException
|
|
|
|
|
|
def get_video_duration(duration: str) -> int:
|
|
"""
|
|
Parse video ISO 8601 duration to seconds.
|
|
Refer: https://developers.google.com/youtube/v3/docs/videos#contentDetails.duration
|
|
|
|
Args:
|
|
duration(str)
|
|
Videos ISO 8601 duration. Like: PT14H23M42S
|
|
Returns:
|
|
integer for seconds.
|
|
"""
|
|
try:
|
|
seconds = isodate.parse_duration(duration).total_seconds()
|
|
return int(seconds)
|
|
except ISO8601Error as e:
|
|
raise PyYouTubeException(
|
|
ErrorMessage(
|
|
status_code=10001,
|
|
message=f"Exception in convert video duration: {duration}. errors: {e}",
|
|
)
|
|
)
|