diff options
| author | 2020-02-24 10:30:59 +0000 | |
|---|---|---|
| committer | 2020-02-24 10:30:59 +0000 | |
| commit | eb60e09a23f7a61d6af98b505eaa9f6db98cf2c8 (patch) | |
| tree | 695bab9beb96905a6067e879c4c3cb0fa1c8d999 | |
| parent | easier to read requirements.txt (diff) | |
| signature | ||
add isodate requirement for parsing iso8601 durations
| -rw-r--r-- | modules/youtube.py | 13 | ||||
| -rw-r--r-- | requirements.txt | 1 | ||||
| -rw-r--r-- | src/utils/datetime/parse.py | 4 |
3 files changed, 7 insertions, 11 deletions
diff --git a/modules/youtube.py b/modules/youtube.py index a583ec55..f5710199 100644 --- a/modules/youtube.py +++ b/modules/youtube.py @@ -6,7 +6,6 @@ import datetime, re, urllib.parse from src import EventManager, ModuleManager, utils REGEX_YOUTUBE = re.compile("https?://(?:www\.|m\.)?(?:youtu.be/|youtube.com/)\\S+", re.I) -REGEX_ISO8601 = re.compile("PT(\d+H)?(\d+M)?(\d+S)?", re.I) URL_YOUTUBESEARCH = "https://www.googleapis.com/youtube/v3/search" URL_YOUTUBEVIDEO = "https://www.googleapis.com/youtube/v3/videos" @@ -52,7 +51,6 @@ class Module(ModuleManager.BaseModule): video_views = self._number(statistics.get("viewCount")) video_likes = self._number(statistics.get("likeCount")) video_dislikes = self._number(statistics.get("dislikeCount")) - video_duration = content["duration"] video_opinions = "" if video_likes and video_dislikes: @@ -66,14 +64,9 @@ class Module(ModuleManager.BaseModule): if video_views: video_views_str = ", %s views" % video_views - match = re.match(REGEX_ISO8601, video_duration) - video_duration = "" - video_duration += "%s:" % match.group(1)[:-1].zfill(2 - ) if match.group(1) else "" - video_duration += "%s:" % match.group(2)[:-1].zfill(2 - ) if match.group(2) else "00:" - video_duration += "%s" % match.group(3)[:-1].zfill(2 - ) if match.group(3) else "00" + td = utils.datetime.parse.iso8601_duration(content["duration"]) + video_duration = utils.datetime.format.to_pretty_time( + td.total_seconds()) url = URL_YOUTUBESHORT % video_id diff --git a/requirements.txt b/requirements.txt index 057949d0..093bb8cc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,7 @@ dataclasses ==0.6 dnspython ==1.16.0 feedparser ==5.2.1 html5lib ==1.0.1 +isodate ==0.6.0 lxml ==4.4.1 netifaces ==0.10.9 PySocks ==1.7.1 diff --git a/src/utils/datetime/parse.py b/src/utils/datetime/parse.py index 51941d78..01d1d929 100644 --- a/src/utils/datetime/parse.py +++ b/src/utils/datetime/parse.py @@ -1,10 +1,12 @@ import re, typing import datetime as _datetime -import dateutil.parser +import dateutil.parser, isodate from .common import * def iso8601(s: str) -> _datetime.datetime: return dateutil.parser.parse(s) +def iso8601_duration(s: str) -> _datetime.timedelta: + return isodate.parse_duration(s) def date_human(s: str) -> typing.Optional[_datetime.datetime]: try: |
