diff options
| author | 2026-06-17 15:08:30 -0400 | |
|---|---|---|
| committer | 2026-06-17 15:08:30 -0400 | |
| commit | ef3f687db0f53f026e808c4284e084255c9e9dd5 (patch) | |
| tree | 9271108ff34145b17696344eb727e44756001e12 /src/portal/py/modules/patreon.py | |
| parent | 22d3be9264087ed80d034df0e805bd8101a7d381 (diff) | |
| download | camu-ef3f687db0f53f026e808c4284e084255c9e9dd5.tar.gz camu-ef3f687db0f53f026e808c4284e084255c9e9dd5.tar.bz2 camu-ef3f687db0f53f026e808c4284e084255c9e9dd5.zip | |
Update portal to avoid TLS fingerprinting
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/portal/py/modules/patreon.py')
| -rw-r--r-- | src/portal/py/modules/patreon.py | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/portal/py/modules/patreon.py b/src/portal/py/modules/patreon.py index 9f672c1..6b1d2cb 100644 --- a/src/portal/py/modules/patreon.py +++ b/src/portal/py/modules/patreon.py @@ -1,15 +1,17 @@ import log -import httpx from json import JSONDecodeError from typing import Optional, Any from datetime import datetime -from base import USER_AGENT, Search, Module, Method, ParsedJson +from base import USER_AGENT, HttpResponse, Search, Module, Method, ParsedJson from modules.common import get_current_utc_time from post import Date, DateType, DateMeta, Post, User, Url, Media, File from query_parser import QueryParser BASE_URL = 'https://www.patreon.com/api' +def parse_patreon_date(date_str: str) -> datetime: + return datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S.%f%z') + class PatreonBase(Search): REACH_LIMIT = 3 @@ -19,7 +21,7 @@ class PatreonBase(Search): self.page: int = 0 self.cursor: Optional[str] = None - def check_api_response(self, response: Optional[httpx.Response]) -> Optional[ParsedJson]: + def check_api_response(self, response: Optional[HttpResponse]) -> Optional[ParsedJson]: if not response: return None try: @@ -86,14 +88,14 @@ class PatreonUser(PatreonBase): kwargs['raw_responses'] = {} kwargs['raw_responses']['api'] = hash kwargs['url'] = data['attributes']['url'] - published_at = datetime.strptime(data['attributes']['published_at'], "%Y-%m-%dT%H:%M:%S.%f%z").timestamp() + published_at = parse_patreon_date(data['attributes']['published_at']).timestamp() current_time = get_current_utc_time().timestamp() kwargs['dates'] = [ Date(DateType.CREATED, (published_at, published_at), DateMeta.NONE), Date(DateType.RETRIEVED, (current_time, current_time), DateMeta.NONE) ] if 'edited_at' in data['attributes']: - edited_at = datetime.strptime(data['attributes']['edited_at'], "%Y-%m-%dT%H:%M:%S.%f%z").timestamp() + edited_at = parse_patreon_date(data['attributes']['edited_at']).timestamp() kwargs['dates'].append(Date(DateType.EDITED, (edited_at, edited_at), DateMeta.NONE)) kwargs['author'] = self.user kwargs['title'] = data['attributes']['title'] |