aboutsummaryrefslogtreecommitdiffstats
path: root/hypervideo_dl/extractor/patreon.py
diff options
context:
space:
mode:
Diffstat (limited to 'hypervideo_dl/extractor/patreon.py')
-rw-r--r--hypervideo_dl/extractor/patreon.py18
1 files changed, 9 insertions, 9 deletions
diff --git a/hypervideo_dl/extractor/patreon.py b/hypervideo_dl/extractor/patreon.py
index 4dc0298..79b041d 100644
--- a/hypervideo_dl/extractor/patreon.py
+++ b/hypervideo_dl/extractor/patreon.py
@@ -1,22 +1,22 @@
import itertools
-from urllib.error import HTTPError
from .common import InfoExtractor
from .vimeo import VimeoIE
-
from ..compat import compat_urllib_parse_unquote
+from ..networking.exceptions import HTTPError
from ..utils import (
+ KNOWN_EXTENSIONS,
+ ExtractorError,
clean_html,
determine_ext,
- ExtractorError,
int_or_none,
- KNOWN_EXTENSIONS,
mimetype2ext,
parse_iso8601,
str_or_none,
traverse_obj,
try_get,
url_or_none,
+ urljoin,
)
@@ -37,9 +37,9 @@ class PatreonBaseIE(InfoExtractor):
item_id, note='Downloading API JSON' if not note else note,
query=query, fatal=fatal, headers=headers)
except ExtractorError as e:
- if not isinstance(e.cause, HTTPError) or mimetype2ext(e.cause.headers.get('Content-Type')) != 'json':
+ if not isinstance(e.cause, HTTPError) or mimetype2ext(e.cause.response.headers.get('Content-Type')) != 'json':
raise
- err_json = self._parse_json(self._webpage_read_content(e.cause, None, item_id), item_id, fatal=False)
+ err_json = self._parse_json(self._webpage_read_content(e.cause.response, None, item_id), item_id, fatal=False)
err_message = traverse_obj(err_json, ('errors', ..., 'detail'), get_all=False)
if err_message:
raise ExtractorError(f'Patreon said: {err_message}', expected=True)
@@ -310,7 +310,7 @@ class PatreonIE(PatreonBaseIE):
f'posts/{post_id}/comments', post_id, query=params, note='Downloading comments page %d' % page)
cursor = None
- for comment in traverse_obj(response, (('data', ('included', lambda _, v: v['type'] == 'comment')), ...), default=[]):
+ for comment in traverse_obj(response, (('data', ('included', lambda _, v: v['type'] == 'comment')), ...)):
count += 1
comment_id = comment.get('id')
attributes = comment.get('attributes') or {}
@@ -404,8 +404,8 @@ class PatreonCampaignIE(PatreonBaseIE):
posts_json = self._call_api('posts', campaign_id, query=params, note='Downloading posts page %d' % page)
cursor = traverse_obj(posts_json, ('meta', 'pagination', 'cursors', 'next'))
- for post in posts_json.get('data') or []:
- yield self.url_result(url_or_none(traverse_obj(post, ('attributes', 'patreon_url'))), 'Patreon')
+ for post_url in traverse_obj(posts_json, ('data', ..., 'attributes', 'patreon_url')):
+ yield self.url_result(urljoin('https://www.patreon.com/', post_url), PatreonIE)
if cursor is None:
break