summaryrefslogtreecommitdiff
path: root/src/portal/py/modules/fanbox.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/portal/py/modules/fanbox.py')
-rw-r--r--src/portal/py/modules/fanbox.py25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/portal/py/modules/fanbox.py b/src/portal/py/modules/fanbox.py
index 6e0f188..d50c173 100644
--- a/src/portal/py/modules/fanbox.py
+++ b/src/portal/py/modules/fanbox.py
@@ -1,21 +1,20 @@
import log
import json
-import httpx
from typing import Optional, Any
from json.decoder import JSONDecodeError
-from base import USER_AGENT, Search, Module, Method, ParsedJson
+from base import USER_AGENT, HttpResponse, Search, Module, Method, ParsedJson
from post import Url, PostType, Date, DateType, DateMeta, Post, User, Image, File, Tag
from query_parser import QueryParser
-from modules.common import reformat_pixiv_date, get_current_utc_time
+from modules.common import parse_pixiv_date, get_current_utc_time
-BASE_URL = "https://api.fanbox.cc"
+BASE_URL = 'https://api.fanbox.cc'
class FanboxBase(Search):
def __init__(self, userdata: Any) -> None:
super().__init__()
self.module: FanboxModule = userdata
- 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:
@@ -32,13 +31,13 @@ class FanboxBase(Search):
kwargs['unique_id'] = unique_id
kwargs['raw_responses'] = {}
kwargs['raw_responses']['api'] = json.dumps(data, separators=(',', ':'), indent=None)
- publish_date = reformat_pixiv_date(data['publishedDatetime']).timestamp()
+ publish_date = parse_pixiv_date(data['publishedDatetime']).timestamp()
current_date = get_current_utc_time().timestamp()
kwargs['dates'] = [
Date(DateType.CREATED, (publish_date, publish_date), DateMeta.NONE),
Date(DateType.RETRIEVED, (current_date, current_date), DateMeta.NONE)
]
- update_date = reformat_pixiv_date(data['updatedDatetime']).timestamp()
+ update_date = parse_pixiv_date(data['updatedDatetime']).timestamp()
if update_date != publish_date:
kwargs['dates'].append(Date(DateType.EDITED, (update_date, update_date), DateMeta.NONE))
user = User(unique_id=f'fanbox:u:{data['user']['userId']}', username=data['user']['name'])
@@ -81,6 +80,12 @@ class FanboxBase(Search):
return post
def request_post(self, post_id: int) -> Optional[Post]:
+ '''
+ url = f'{BASE_URL}/post.getComments?postId={post_id}&limit=10'
+ obj = self.check_api_response(self.module.do_request(Method.GET, url))
+ if not obj:
+ return None
+ '''
url = f'{BASE_URL}/post.info?postId={post_id}'
obj = self.check_api_response(self.module.do_request(Method.GET, url))
if not obj:
@@ -124,11 +129,14 @@ class FanboxUser(FanboxBase):
return False
for link in obj:
self.pagination.append(link)
+ if len(self.pagination) == 0:
+ log.warn(f'Found 0 posts for user.')
return True
def request_page(self, num: int) -> bool:
if len(self.pagination) == 0:
if not self.request_pagination():
+ log.error('Failed to load user\'s posts.')
self.errored = True
return False
if num >= len(self.pagination):
@@ -169,6 +177,7 @@ class FanboxModule(Module):
self.parser.add_command('post', FanboxPost)
self.parser.add_command('user', FanboxUser)
self.parser.add_command('supporting', FanboxSupporting)
+ # @TODO: At some point verify if tls-client supports zstd.
self.headers['Accept-Encoding'] = 'gzip, deflate, br, zstd'
self.headers['Accept-Language'] = 'en-US,en;q=0.5'
self.headers['Alt-Used'] = 'api.fanbox.cc'
@@ -176,9 +185,9 @@ class FanboxModule(Module):
self.headers['Referer'] = 'https://www.fanbox.cc/'
self.headers['User-Agent'] = USER_AGENT
self.cookies['FANBOXSESSID'] = sessid
+ self.cookies['cf_clearance'] = cf_clearance
self.cookies['privacy_policy_agreement'] = '7'
self.cookies['privacy_policy_notification'] = '0'
- self.cookies['cf_clearance'] = cf_clearance
def search(self, query: str, *extra_args: Any) -> Optional[Search]:
return self.parser.parse_query(query)