PixivSpider/config.py

45 lines
1.5 KiB
Python

"""配置管理"""
from typing import Dict, Any
from dataclasses import dataclass
@dataclass
class RedisConfig:
"""Redis配置"""
host: str = 'localhost'
port: int = 6379
max_connections: int = 10
db_range: tuple = (0, 5) # 支持的数据库范围(包含)
@dataclass
class PixivConfig:
"""Pixiv API配置"""
ajax_url: str = 'https://www.pixiv.net/ajax/illust/{}/pages'
top_url: str = 'https://www.pixiv.net/ranking.php'
user_agent: str = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36'
headers: Dict[str, str] = None
def __post_init__(self):
"""初始化默认请求头"""
self.headers = {
'accept': 'application/json',
'accept-language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en-US;q=0.7,en;q=0.6',
'dnt': '1',
'referer': 'https://www.pixiv.net/',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': self.user_agent
}
# 全局配置实例
REDIS_CONFIG = RedisConfig()
PIXIV_CONFIG = PixivConfig()
# Redis键模式
class RedisKeys:
"""Redis键定义"""
COOKIE = 'cookie'
DOWNLOADED_IMAGE = 'downloaded:{pid}_p{page}' # 已下载的图片页
DOWNLOADED_WORK = 'downloaded:{pid}' # 已完成的作品
TOTAL_PAGES = 'total_pages:{pid}' # 作品总页数
USER_ID = '{illust_id}' # 作品作者ID