from typing import Any from pydantic import BaseModel from urllib.parse import quote, unquote from crawlers.tiktok.web.utils import TokenManager from crawlers.utils.utils import get_timestamp # Model class BaseRequestModel(BaseModel): WebIdLastTime: str = str(get_timestamp("sec")) aid: str = "1988" app_language: str = "en" app_name: str = "tiktok_web" browser_language: str = "en-US" browser_name: str = "Mozilla" browser_online: str = "true" browser_platform: str = "Win32" browser_version: str = quote( "5.0 (Windows)", safe="", ) channel: str = "tiktok_web" cookie_enabled: str = "true" device_id: int = 7349090360347690538 device_platform: str = "web_pc" focus_state: str = "true" from_page: str = "user" history_len: int = 4 is_fullscreen: str = "false" is_page_visible: str = "true" language: str = "en" os: str = "windows" priority_region: str = "US" referer: str = "" region: str = "US" # SG JP KR... root_referer: str = quote("https://www.tiktok.com/", safe="") screen_height: int = 1080 screen_width: int = 1920 webcast_language: str = "en" tz_name: str = quote("America/Tijuana", safe="") # verifyFp: str = VerifyFpManager.gen_verify_fp() msToken: str = TokenManager.gen_real_msToken() # router model class UserProfile(BaseRequestModel): secUid: str = "" uniqueId: str class UserPost(BaseRequestModel): coverFormat: int = 2 count: int = 35 cursor: int = 0 secUid: str class UserLike(BaseRequestModel): coverFormat: int = 2 count: int = 30 cursor: int = 0 secUid: str class UserCollect(BaseRequestModel): cookie: str = "" coverFormat: int = 2 count: int = 30 cursor: int = 0 secUid: str class UserPlayList(BaseRequestModel): count: int = 30 cursor: int = 0 secUid: str class UserMix(BaseRequestModel): count: int = 30 cursor: int = 0 mixId: str class PostDetail(BaseRequestModel): itemId: str class PostComment(BaseRequestModel): aweme_id: str count: int = 20 cursor: int = 0 current_region: str = "US" # 作品评论回复 (Post Comment Reply) class PostCommentReply(BaseRequestModel): item_id: str comment_id: str count: int = 20 cursor: int = 0 current_region: str = "US" # 用户粉丝 (User Fans) class UserFans(BaseRequestModel): secUid: str count: int = 30 maxCursor: int = 0 minCursor: int = 0 scene: int = 67 # 用户关注 (User Follow) class UserFollow(BaseRequestModel): secUid: str count: int = 30 maxCursor: int = 0 minCursor: int = 0 scene: int = 21