diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..3807756 --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,32 @@ +# PureStream Development Dockerfile +# Copies all files to avoid Synology Drive volume mount issues + +FROM mcr.microsoft.com/playwright/python:v1.49.1-jammy + +WORKDIR /app + +# Copy backend files +COPY backend/ /app/backend/ + +# Copy pre-built frontend +COPY frontend/dist/ /app/frontend/dist/ + +# Create directories for cache and session +RUN mkdir -p /app/cache /app/session + +# Install Python dependencies +WORKDIR /app/backend +RUN pip install --no-cache-dir -r requirements.txt && \ + pip install playwright-stealth && \ + playwright install chromium + +# Environment variables +ENV PYTHONUNBUFFERED=1 +ENV CACHE_DIR=/app/cache +ENV MAX_CACHE_SIZE_MB=500 +ENV CACHE_TTL_HOURS=24 +ENV ADMIN_PASSWORD=admin123 + +EXPOSE 8002 + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8002"] diff --git a/all_responses.jsonl b/all_responses.jsonl new file mode 100644 index 0000000..0ca7046 --- /dev/null +++ b/all_responses.jsonl @@ -0,0 +1,129 @@ +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=jhXxTsWcFmk_mxeFu7FVJiU1QpT6j4Zp2Nn0qifCVaIby2I_sTTuDVNUkMQWFG9ordYXjeJlzMTZolItuDhSYwLRAz_GzTBIpIvZam_hKjpZ8EMK_CXdajfNMn02SK4cyJpN8W_Zp9bLaZgnqgww0GB92TEn-w==&X-Bogus=DFSzKIVO-avANJZMCu50sqwyWdbd&X-Gnarly=MODLMnkXmGDYM-RZIqNJo5P3I3iKVU4-ROxu/zgXHmHF1GlS5rbkCViztUnTximoSBmQfr6cWmY46hO43RRgn0/2SBgce7QYB52f8tKadmNwnXv1ZD-5tsY8DZXaU4Pidg/wiZ2pjvpMCunSTNQjeYpDIvSbU-Bw/o4ysdC91vwqM5JNFmmfNrVKVnI-UTmw122gL51cBFo0l/rOeSjD7tx4PVjsGKCrlVsjlS/hnJipqQiPrx-rpjUB0hluLPPOujw1G2VDUfp/NhRavAEySbLdyWSNdBDLLIrWGMWaLe73NqfTCqr6SVNXS0YRho8tpgv=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=jhXxTsWcFmk_mxeFu7FVJiU1QpT6j4Zp2Nn0qifCVaIby2I_sTTuDVNUkMQWFG9ordYXjeJlzMTZolItuDhSYwLRAz_GzTBIpIvZam_hKjpZ8EMK_CXdajfNMn02SK4cyJpN8W_Zp9bLaZgnqgww0GB92TEn-w==&X-Bogus=DFSzKIVO7R2ANJZMCu50sqwyWdoI&X-Gnarly=MHZcQSvFRnP6hV4aoUmFevG1F48XF8MczeAnSsZ8mYBsV/FxjdUEeyyLbg77rF8pMvmXK6tzUTso4--zoYaiVWfSAbwG8cZEQmFBo939R5e0nBS5qQ4r6M/kVtnbK76085WakKd4cwjWI8IILvu1/600gsSX8yyRH3kWuBmoI45HKLYkTz0YgL/vUFYBmhs88DiXH4IVpHnerEaTp5msnkFPOACVQpAt0KcHwjQUpJXphJl2XCBhPGcmBOa8ythBh3OZ0JvPvQbh0pyxglrqMgF5aCS60X7yRRARAXjykPnG3B5idTtl94IBBJzm2vCL/MI=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1758119023&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=jhXxTsWcFmk_mxeFu7FVJiU1QpT6j4Zp2Nn0qifCVaIby2I_sTTuDVNUkMQWFG9ordYXjeJlzMTZolItuDhSYwLRAz_GzTBIpIvZam_hKjpZ8EMK_CXdajfNMn02SK4cyJpN8W_Zp9bLaZgnqgww0GB92TEn-w==&X-Bogus=DFSzKIVO7R2ANJZMCu50sqwyWdoI&X-Gnarly=MaaOIhywqCVcMM4KJXtNFAAXlad7HcQgYofYVCHatg9bS4aLsaryqsZ63ny8Cp9IJ5FWCCG/yoRDt-GkFdyjVpuEfBP1Xp5iEroxv7ofDeCqK-ycCxDYFrgb/93IyIiGPTMQKciMI9IgDDQbaiACEvCt567-3l71mMyH91w-KambvDEkzWded1gcb6Ia-DpPf4//zhCXHPqcJapCGZpnPYr0iPmZuCb/Ckt3GD/S3LnT9IYn5WKbjdWNA3Tgx6eNVpH/hiPL11zLqqUK/b4f6QHsJyLdu5Zgg2Ab6eAyi7aD0Nmip7aBqeCAL-09JHytxrG=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=jhXxTsWcFmk_mxeFu7FVJiU1QpT6j4Zp2Nn0qifCVaIby2I_sTTuDVNUkMQWFG9ordYXjeJlzMTZolItuDhSYwLRAz_GzTBIpIvZam_hKjpZ8EMK_CXdajfNMn02SK4cyJpN8W_Zp9bLaZgnqgww0GB92TEn-w==&X-Bogus=DFSzKIVO7R2ANJZMCu50sqwyWdoI&X-Gnarly=MJB4Uq5Ln3OxLENWtzqcp6uk7e1wG4yuyGVhOFfbuKcJEgAhMUZ/R6QjtXNt58C1rH5gNryrqhJOlMMXkB1bjqLmNXKtv6kc8Cjr8Av50yQCq24GE3ntt4sR6U9S07VIX5K0mTaZ/3EsMPpwfbK1J8AtRWEeqvas9aheEzAX9IUWG3XOdjssb-sKHtZiWxJLQFnBSkEeyeReJSY5u1mEn5-uw8CEr5D0ItA8Z1SLsD/BhnXNzWcSu/KJ3xnRSjrHR34mJIxht8FqzrYdTmoDqJGaYpGt0tyGG8SjgtJQunPHT1IYkc7W7LOKTDv9rnTcriR=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/user/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clientABVersions=70508271%2C72437276%2C73720541%2C74087155%2C74444735%2C74534793%2C74757743%2C74782565%2C74879363%2C74926160%2C75004380%2C75004402%2C75014048%2C75030792%2C75132380%2C75150719%2C75163115%2C75183089%2C75204947%2C75207601%2C75224161%2C75227408%2C75236328%2C75248304%2C75252005%2C75257252%2C75266020%2C75269551%2C75289530%2C75308229%2C75312670%2C75328674%2C75331578%2C75331914%2C75334097%2C75341153%2C75350407%2C75352865%2C75352896%2C75358321%2C75373599%2C70138197%2C70156809%2C70405643%2C71057832%2C71200802%2C71381811%2C71516509%2C71803300%2C71962127%2C72360691%2C72408100%2C72854054%2C72892778%2C73004916%2C73171280%2C73208420%2C73952802%2C73952825%2C73989921%2C74008524%2C74276218%2C74413136%2C74844724%2C75330961&cookie_enabled=true&count=5&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&maxCursor=0&minCursor=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&scene=21&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=jhXxTsWcFmk_mxeFu7FVJiU1QpT6j4Zp2Nn0qifCVaIby2I_sTTuDVNUkMQWFG9ordYXjeJlzMTZolItuDhSYwLRAz_GzTBIpIvZam_hKjpZ8EMK_CXdajfNMn02SK4cyJpN8W_Zp9bLaZgnqgww0GB92TEn-w==&X-Bogus=DFSzKIVOs/vANJZMCu50sqwyWdb2&X-Gnarly=MCQNrzPzg6mGKi2E5ut2prctYLeCfVpFnmbdipb2qqj4xUgRP9HMykvs7wrw8mM911iSc68nBiGpP097elfkJDAStxtim55kX2DWbKu9RH1Cxq35Nfpxz5-1UN6X1Z/ARRm6/kIG-cQJzOM9UyiulvJmG3LhOxOL98mMLV26zdkb2wO8t1lNQ61sYKzY6iMQbBZBpYq30iPndHwN4QGerFQG4L1KHMLPY5RcR/L5zY4ohyER9mFrI2D3OWP98gRWGX95ATRHNVYItz1p-j531VaO6iuwyMdaXjSJ63K99BO9wwl82Tt5XZocmnIwtQt7FkG=", "keys": ["extra", "hasMore", "isTruncated", "log_pb", "maxCursor", "minCursor", "statusCode", "status_code", "status_msg", "total", "userList"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&fromWeb=1&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["parental_guardian_entrance", "device_limit_register_expired", "idfa_popup_allow", "mixed_age_consent_action", "status_code", "minor_control_type", "is_minor", "screen_time_management", "policy_info_list", "teen_mode", "teen_mode_self", "parental_guardian_mode", "preference_settings", "extra", "log_pb", "ad_personality_settings", "policy_notice_enable", "notify_parents_with_email", "auto_replay_count", "age_gate_info", "interface_control_settings", "private_settings", "commercial_content_library_url", "screen_time_management_self", "about_privacy_policy_url", "cmpl_enc", "parental_guardian_name"]} +{"url": "https://www.tiktok.com/api/inbox/notice_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A1%2C%22is_mark_read%22%3A0%2C%22group%22%3A661%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/notice/multi/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A20%2C%22is_mark_read%22%3A0%2C%22group%22%3A500%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=jhXxTsWcFmk_mxeFu7FVJiU1QpT6j4Zp2Nn0qifCVaIby2I_sTTuDVNUkMQWFG9ordYXjeJlzMTZolItuDhSYwLRAz_GzTBIpIvZam_hKjpZ8EMK_CXdajfNMn02SK4cyJpN8W_Zp9bLaZgnqgww0GB92TEn-w==&X-Bogus=DFSzKIVOPOhANJZMCu50sqwyWdoI&X-Gnarly=MkVS3Rt45sThsfUARhwFSsScEPEbhaEyY8lQDIRXgHxMulieIobeHCOt4UU8xBcs9LV4zU58AeXja8hb8QWwf0ox8EcqZpuDf1fqF/obCZoshBwUNthc2ahdnvn0bkMnZM2MRLrHhlVd3PwgsWIni5S/VVo-ZcdGgEsq3ZaOzXLIEREhDIx6XVl/wwJVJyE-oOBc-pIIOt8J84KuZMFYxtSamGH7itr/jfnp6vhJrfTq0t42RwJHKsNz5KW0kU/aMq1jQc7rhvoGs3gOSeMp6d4o/68ACFwAn1zyENqDKtctq-Gi2UrLvuYduSiduVI5Qrb=", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/story/user_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=10&cursor=0&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&storyFeedScene=3&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["cursor", "extra", "hasMore", "log_pb", "statusCode", "status_code", "status_msg", "storyUsers", "totalCount"]} +{"url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=aBPLK2LYEfdc4C3rq28mcau3WPOUlT_SXUlfsT7-X3Fuljn4nrKTqx4mRPnO82snvtTRSvX40TthIVioA8z4-ilva3f8VM4YckMtIPirc37Cdpz6rWnjyxDiEilBWY3LRCU0L04jBB7Saqmy6I5lz1apR0GEPw==&X-Bogus=DFSzKIVO2gUANJZMCu50sqwyWdoc&X-Gnarly=M5hFdB7JZIHI7TjMuyROGMKbKM9p97a6WRAmntTPOPELIrr-PUbHI-I0e-T-xZ8nqCLAkBJ8y00bunhdJ4zsi67e8D4tPJrFhjHZ2KcX0aCIeHblounU8C9N7yv-PxUcJR8UZq2HCGgbevVW5dv-YyD9673ZGXZ1xh2nQaIbBkKZx2c0LWZM/b-EAGiVbU7SZGDwo-LfIIfN8d-q1vmjV5hZjBJ1Pd2uXSxZCRD6gTP74FpIFJ1OAMG6cyLgH/vtENvk6IlTgHTM4JuqyHvolL9sWxF0YG4HA6KbOD8UNb75iYGW69sGfCn8BtS9I8XL37G=", "keys": ["sug_list", "status_code", "status_msg", "rid", "words_query_record", "extra", "log_pb", "user_input_query"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=dmeaB_84ffdADJZ1dotu8YxbJQXM-QfYOpD2AP-HQGFIBhPt44pQCgpmqRTca-IeZl3YCn7x3zTQjd4XkIqtls2s_0WLkc3E7ldq0dBgfMAxGMn2NiGhEiVxVqYieOrqrrBPTZqO7y_NzaYvd1_qP4m-F9ehpw==&X-Bogus=DFSzKIVO1tXANJZMCu50sZwyWdLv&X-Gnarly=MFDZMlgU5RVn9iKTLH-bms-sAZ6QvXee9KS-q9fHHrBrtLY5MbpWR1B/1XcFqT9BDSgMiH4MAXU2buBdcGNiyvh5rgOcqRQJnQ58ulBrCsO85TC8P1Qox8ioNHF902vk8nr5aEjoxz5odXHpI-MDz1PUnCvnU1HPedxEE2BUnTVbWNvCDTUXHT4foZHlWAV8sTzWZcrUd2qymchRvGZLhe1EN05BWT4Oe107/xn8gh2cj67qfJFCVhzuwXyW9kJ7MU-zFAri6GCUs1JF1s2O4P5Jt1VmMzw8nq60BVpB/cEfdez52N7kV55HCm/saYHtd/b=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=vaWJZAtGc67pGvsUDCpx9qF7PLJbDR0ShHfut6csNu8T8NO5NKNd0kl_BD9uIIr1pHQrZx4GnCFgG4kyRHcofCwNQ-MNzT5NPNZ0uoM2O0ozXK5hThFr8yt-kcP8xHAAUSR80QSajaSM0NucTrnsou9zhlM1ug==&X-Bogus=DFSzKIVO33UANJZMCu5Ml9nkBjaz&X-Gnarly=MHCx2gMU9Fr3JR5uJM0aFT8ZGEb71JoolaEem6ldXqM/8vInzcHp3esNiSrBkPhhNsMoE592mzhCbDkNIHpiMXHToKU99BKhyHFHkD9gkl8Qqf/9tytuHSDlvDGV62vXbvIwOnf3IUk7ELaI3e7hyURyb/Yv3wvxBeu4t33cp8eoG88cd3lbJcZEFTRnY9wUNzbNICYdo3CfTIbYrBZqhTkPjZBzHUPi1QiIj4EB2a-r-hJkk0JXfIC9khlNE4Y-ZxdkNmbDY1Zu4xdvJpyNYbrNqCr83XwP4-dm9ZGAFd6Wz6trKb1x7u74NXciY2K7BDf=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=vaWJZAtGc67pGvsUDCpx9qF7PLJbDR0ShHfut6csNu8T8NO5NKNd0kl_BD9uIIr1pHQrZx4GnCFgG4kyRHcofCwNQ-MNzT5NPNZ0uoM2O0ozXK5hThFr8yt-kcP8xHAAUSR80QSajaSM0NucTrnsou9zhlM1ug==&X-Bogus=DFSzKIVOewsANJZMCu5Ml9nkBjGK&X-Gnarly=MH7K67YG6W4tCE9SFbzPOciq8hJPFljRK7FuDLEkgi33YKSITwUFPozbpmymZfS5XlDG7-9zvK2O6XWUmdQkpRYXw/UWpsBp81z3cBPnfOyeq/oYzK9kMxAvYUETBdVJh0oDDrHkbNOwlgfiahxKHaAi0/khjaX6cBN/Tffa9rIkk0szdqpEkl/6APqR8RAvxpimfX2zPy-/x81O7XXIvBkIpCt/FMi8eNxXf-r2wHGe7i8mlLOQFP8EKWnh3j7io6fbdsOi31mkJO4GQv84lGh7UzJgFTiYLf3uuXsezZDfnm/oPTQ6cdXRI-BRhUg81t/=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1758119023&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=vaWJZAtGc67pGvsUDCpx9qF7PLJbDR0ShHfut6csNu8T8NO5NKNd0kl_BD9uIIr1pHQrZx4GnCFgG4kyRHcofCwNQ-MNzT5NPNZ0uoM2O0ozXK5hThFr8yt-kcP8xHAAUSR80QSajaSM0NucTrnsou9zhlM1ug==&X-Bogus=DFSzKIVOewsANJZMCu5Ml9nkBjGK&X-Gnarly=MaqXFiSY2-eenYr8AtVP6EF6exi0r/Vs9T0X-AChvofOrf-gsNQ3EabbE0en2bxZZItzxJlBrtJ7As-2aNY1-/hWWoePQm1QkiWZKfsGGUvyUmB70lmkP/hvPqQxi6MefWfAEEpxVCEQ4X062yMTy82/Ik/Yg3detcCwTKj7AKSDptRMFW3lDgVkZlRjbe0Z21MU6fUH2zkzXRNLLXRZBK8f7McV-W/jWI7Zcl1h47VB8M/MiP/m8354dDz5iAbTgkfTiUD2yAn0Ud5YwNNhAYlWskuRrRjltnxkDJAkKxwlgecZgntEKLOO4SO-f2EEYKI=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=vaWJZAtGc67pGvsUDCpx9qF7PLJbDR0ShHfut6csNu8T8NO5NKNd0kl_BD9uIIr1pHQrZx4GnCFgG4kyRHcofCwNQ-MNzT5NPNZ0uoM2O0ozXK5hThFr8yt-kcP8xHAAUSR80QSajaSM0NucTrnsou9zhlM1ug==&X-Bogus=DFSzKIVOewsANJZMCu5Ml9nkBjGK&X-Gnarly=Mxu1eeSvlPAd-YKmHR01FH8nZkfal6U9ozuU6Xx6scUfCecay2mzls-LXEthJPQVElGVj0U6ClpiZax4syXuJJY2jG3ZEnCdLLLRdw1ngnRRUFrP6QtvhP9SBIcatp9Wt1B-VX7wUSO20nfdlPg4X-ZwQn36tSQs5R3F1b/9OkTplXua/FRjxTH/E7SjzRNYG6kxdFNUZFLtLGqSoN/m1t-MBUSjBSi1auMjhihoGpSF5gNGN3DMVsAxZ2/91McA4JKU8tQZR8bTiUsb0Xqf6YipVxsF2q9tTZrdUxcVzlw3UNzcHaumvleyXsZzY5Z27dW=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/inbox/notice_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A1%2C%22is_mark_read%22%3A0%2C%22group%22%3A661%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&fromWeb=1&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["notify_parents_with_email", "log_pb", "is_minor", "teen_mode", "screen_time_management_self", "parental_guardian_name", "mixed_age_consent_action", "age_gate_info", "interface_control_settings", "idfa_popup_allow", "status_code", "minor_control_type", "parental_guardian_mode", "about_privacy_policy_url", "ad_personality_settings", "teen_mode_self", "commercial_content_library_url", "policy_info_list", "auto_replay_count", "private_settings", "preference_settings", "extra", "screen_time_management", "parental_guardian_entrance", "cmpl_enc", "policy_notice_enable", "device_limit_register_expired"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/user/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clientABVersions=70508271%2C72437276%2C73720541%2C74087155%2C74444735%2C74534793%2C74757743%2C74782565%2C74879363%2C74926160%2C75004380%2C75004402%2C75014048%2C75030792%2C75132380%2C75150719%2C75163115%2C75183089%2C75204947%2C75207601%2C75224161%2C75227408%2C75236328%2C75248304%2C75252005%2C75257252%2C75266020%2C75269551%2C75289530%2C75308229%2C75312670%2C75328674%2C75331578%2C75331914%2C75334097%2C75341153%2C75350407%2C75352865%2C75352896%2C75358321%2C75373599%2C70138197%2C70156809%2C70405643%2C71057832%2C71200802%2C71381811%2C71516509%2C71803300%2C71962127%2C72360691%2C72408100%2C72854054%2C72892778%2C73004916%2C73171280%2C73208420%2C73952802%2C73952825%2C73989921%2C74008524%2C74276218%2C74413136%2C74844724%2C75330961&cookie_enabled=true&count=5&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&maxCursor=0&minCursor=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&scene=21&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=vaWJZAtGc67pGvsUDCpx9qF7PLJbDR0ShHfut6csNu8T8NO5NKNd0kl_BD9uIIr1pHQrZx4GnCFgG4kyRHcofCwNQ-MNzT5NPNZ0uoM2O0ozXK5hThFr8yt-kcP8xHAAUSR80QSajaSM0NucTrnsou9zhlM1ug==&X-Bogus=DFSzKIVOzDGANJZMCu5Ml9nkBjVz&X-Gnarly=M/d4ozVuoLfrIBP5TIrzJSmJjnBP9l1MCC2INteQ0khWbDE15IAnep9RnCchKOtqXL2IYAgFq3rBF2gxdl6rbFPLogXDPieIYVNsO2AruFnhVd2s84s1ddKvrbEPKdztJBmCWg8Q0BBdWY83qjqcj1cid5HwVtizc7jb50JXQ0iseenUkpDbq3gUmrRgVdwzrPGNP53Ugd1Br3IFLHZUgIXUtmz1uYvPRhyzzlvL053SGlJ02cpOMONWNSIW0NiJVSjdF9XHbHgHDNQqMCOh7iIqcB8QE3EhCF3p5U9/oIgNBJFgr4C4RKLWKgZPy8VqhVz=", "keys": ["extra", "hasMore", "isTruncated", "log_pb", "maxCursor", "minCursor", "statusCode", "status_code", "status_msg", "total", "userList"]} +{"url": "https://www.tiktok.com/api/notice/multi/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A20%2C%22is_mark_read%22%3A0%2C%22group%22%3A500%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=vaWJZAtGc67pGvsUDCpx9qF7PLJbDR0ShHfut6csNu8T8NO5NKNd0kl_BD9uIIr1pHQrZx4GnCFgG4kyRHcofCwNQ-MNzT5NPNZ0uoM2O0ozXK5hThFr8yt-kcP8xHAAUSR80QSajaSM0NucTrnsou9zhlM1ug==&X-Bogus=DFSzKIVOh/kANJZMCu5Ml9nkBjGN&X-Gnarly=M5GerUrCO6btinWouA1m9xsO3josxAXx2nVROSSPovtT2AxYSk/59UFAAcn41/8X3Dq0YK2RuQN-ShBOZVvpwXsPGICJyZCDNP78G9QFhbcsomnji/n3FV8chiOfpu4DaYLs0qsZhlC3fQUd-ziUhtP4sBLXzVYlmQ9vvESw1ebJNnWGuCeaAzzUks-1jgLWdi3FULca5BckEyD8wRTBnaK/nH9ImghCsdKpZei/O3sv3UA-LCtnrC1As-PkwzQAglQgPWJK-dMoL0Izob5jv9PpryyZXoX3CR3gheOuZ6TvRgY56vg8kbZDCjz8S3xn81v=", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/story/user_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=10&cursor=0&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&storyFeedScene=3&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["cursor", "extra", "hasMore", "log_pb", "statusCode", "status_code", "status_msg", "storyUsers", "totalCount"]} +{"url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=5JD8tqZyfDNGXubGRB1VGZzXa8df81ypXggNzLi1RfpU2odhW8MdnUEdmA7Rp9g1Adj0mnSl18K2E_qa1pMeToeQe95-GiAiDCIJTLjPgkf2Qzz8mFdikbu0nZNFT-woBj51BS3FohBSXN-wud1Eb1v0khWbyQ==&X-Bogus=DFSzKIVOLDiANJZMCu5Ml9nkBjVM&X-Gnarly=MalcefO355XPrxbD9QNT0hzk474hSskYEX9oyp5w3t4xMdeFrk-fZq4xq/iG4coW1eduSBe5m33qQFyaAsoEfgn5UdEWknjgF4cfYFcPHDFwtJsJWJRO20qxYqb371OU1k6czDsZnv30VRtdCLppaGEIefVxB98LNVMiRU/XY7GOG5GVeUhMSZQaS7c/dPJA-kBTy0P4gBuM6JEtFhtHsUmXOoAngrlUNNCnR0-Epv2hpauH/oeUCkrP-CKUzndk6sco1ujXr6Llkb7B6lEID59abV5FUcNNdB45CI-jVn4QnDojzUGxs57NbuhugskvOak=", "keys": ["sug_list", "status_code", "status_msg", "rid", "words_query_record", "extra", "log_pb", "user_input_query"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=DmAyOtgr5D7k7whr0FN5S3c907c70fkEYkS4N6nDHjRh8aoRFvlFGascrXHBVwaqPUNmKve1y2Q5teOXMCRsHy2aVZQwVPM7wV7fYtNkQR6Ny_RmKvLO_ecHnPR9yoPS1dVHJPyQEBq3aMky1DrcrS_BD22WRw==&X-Bogus=DFSzKIVOk7UANJZMCu5MlInkBjcy&X-Gnarly=M5RsW3OndpQX07PY/pLRXNBxM-bKXoTXx2nOKDFKAPp1CMM5CXyiF3rghdHY5R2oiY9Gqo9xOEHdJXmocatropNDh9/1aV2LH90z/TAuUze-D4ufVBLty2Zx4O0qUdmCGotD8y4XfPpXln9dfSMdhrKeGCvXx39LacedrWgGiCDVLgTY7XDM2VIMbBMTXfixz1L212/cY31t5/K1Hc2Fpq3pIv7tse-MpHPR6mFNil2CNIuNO76KPyuvXv2jhiS/AQGAs/1fMkTfAeEdFVg22E3zO2YPRX8DxMV3h5omYMqWzqpMtA76aWsUVO3HXQlvJEu=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=iP7BLLSTRYoau48HZeadiD-b4R29lMTKybJeoQbTa2Zl4Mtv1xCDOMuY3nCFQ9RHHLUzb9YGE84yL33maaqbhZE0c6-Oe4f7vV33oVov-msfr9pqQ8lYdNcp-U2kQnkhZn4PQ-Bb4t4R8PnoqRPyD4G9&X-Bogus=DFSzKwVOYTxANaXRCu5Mr9nkBjGP&X-Gnarly=MFsDfVjUHxdxHoMrwJ-5o5RB4Jno1QI00OXv9Ygf3gs6oKJVnks/pAxQOjC4lhZg7xwcOjuexn2cq0MUoWJ8IEFa8DbAQWCultiNJHl0zTlIOuQu8ZFrY/nE/WJ4MlZD4BXtJLPhar1wrwd0MKxvWZbpM4y14DZUOwbJWqMc1ls/1XuO/0hsmdVTRYSdcVwJOtICmEQ/dXU4qZB1cbUAn3XtlaX2B702mzCmpdsuor7-6MivXQRxRF1tn75gtQ22ZpuVQuhIjUCJRIAvuckb4et/6qspJRmy5n6WM3by7uyW2VWi3/oY54fvEQ5fDisqeT/=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/inbox/notice_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A1%2C%22is_mark_read%22%3A0%2C%22group%22%3A661%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1758119023&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=iP7BLLSTRYoau48HZeadiD-b4R29lMTKybJeoQbTa2Zl4Mtv1xCDOMuY3nCFQ9RHHLUzb9YGE84yL33maaqbhZE0c6-Oe4f7vV33oVov-msfr9pqQ8lYdNcp-U2kQnkhZn4PQ-Bb4t4R8PnoqRPyD4G9&X-Bogus=DFSzKwVOZM2ANaXRCu5Mr9nkBjcC&X-Gnarly=Mkv8BmL98Z32nbU/HynqyGcrdjj1RAIHdkYhEcCdr5o4IwKGQa9GPvKVBecHzGWaz46Fp68RsJh-aGkJC0AUNtfUSuK2DbsRoyR64xwUH5NxtBvZm0afyf7A8UaN8gZiAUSVRh7dwhMv3k9hWFwHbn12Jw5d0ee77c1EqwfLIaNj4jtWCDtHYpKbRkxnck8ebYblrKwPmqRHl4Pv4XeChF/l-GQupKuxokQbynBgxJsj2kGvL/v76V1a5ZtkSB/1dgJipW7itYovBepiC5q4HrjR1vJaUmJxT96Stc0iAhazufj1lFP6NHWAj9UmHfLSdvw=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=iP7BLLSTRYoau48HZeadiD-b4R29lMTKybJeoQbTa2Zl4Mtv1xCDOMuY3nCFQ9RHHLUzb9YGE84yL33maaqbhZE0c6-Oe4f7vV33oVov-msfr9pqQ8lYdNcp-U2kQnkhZn4PQ-Bb4t4R8PnoqRPyD4G9&X-Bogus=DFSzKwVOZM2ANaXRCu5Mr9nkBjcC&X-Gnarly=McGhajgV3WSIulv8C5hlPwDT5qQkO1Mt4VrFXU5ndh0/gEEAtQtz64uloZbqZ/m2GfA/Tp6FznPVMP2fO1u5SXLPbRuLh2xR/T/M1-0d8hOnvHtkWfw9jtujcafc/HdZR/n/E0MDNPWk1qucG/TbBMVw20TOX4HIbxWYJsOqQV7gQpRk0/b4Th0onZSTaFFrTHewx6-8zW3LdVqCeOHoJnA3sHgRTLC68qj7C8Eg1M63f-r2yq6XaPL4nQtQ851cmGGJEzrHX0Kr9LUmieCF92r5CO39tda0Dbb23i-tPXUMC/cIDDmuHBrRZP9/YOKXyM/=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&fromWeb=1&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["idfa_popup_allow", "preference_settings", "log_pb", "parental_guardian_entrance", "parental_guardian_name", "about_privacy_policy_url", "age_gate_info", "policy_info_list", "notify_parents_with_email", "status_code", "teen_mode", "screen_time_management_self", "parental_guardian_mode", "cmpl_enc", "policy_notice_enable", "private_settings", "commercial_content_library_url", "minor_control_type", "screen_time_management", "ad_personality_settings", "device_limit_register_expired", "interface_control_settings", "mixed_age_consent_action", "auto_replay_count", "extra", "is_minor", "teen_mode_self"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=iP7BLLSTRYoau48HZeadiD-b4R29lMTKybJeoQbTa2Zl4Mtv1xCDOMuY3nCFQ9RHHLUzb9YGE84yL33maaqbhZE0c6-Oe4f7vV33oVov-msfr9pqQ8lYdNcp-U2kQnkhZn4PQ-Bb4t4R8PnoqRPyD4G9&X-Bogus=DFSzKwVOZM2ANaXRCu5Mr9nkBjcC&X-Gnarly=M8anZahwwTPOpaXDM78S7uBUhudNHLCTGavQzp-UNYz5oALomzgcCBlJjwsStHfrtJ/kWhkoYYbtrCv76XAOfYVPDu1WRwFDetSy-teM6AzjpHw8ey95s88d/j2zH6ksKBzmOIdXxnC3qmz2/AaNCjX-RMF0bOja0EvKl8fnqe/-EoM7RCE-tBtl5NJD5m8WFbY0Zu3-ruU63J7OH8H1FD/omM9TbGm2j18wHf8R6Npz6MT20w9V1YWW/tr3YppBVDOLjhKyS4iX53Lui1WSF0ut9guwPkmvNgYrQ3jNE5lpeEd7KcomON8QZ9HHm9HGY0k=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/user/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clientABVersions=70508271%2C72437276%2C73720541%2C74087155%2C74444735%2C74534793%2C74757743%2C74782565%2C74879363%2C74926160%2C75004380%2C75004402%2C75014048%2C75030792%2C75132380%2C75150719%2C75163115%2C75183089%2C75204947%2C75207601%2C75224161%2C75227408%2C75236328%2C75248304%2C75252005%2C75257252%2C75266020%2C75269551%2C75289530%2C75308229%2C75312670%2C75328674%2C75331578%2C75331914%2C75334097%2C75341153%2C75350407%2C75352865%2C75352896%2C75358321%2C75373599%2C70138197%2C70156809%2C70405643%2C71057832%2C71200802%2C71381811%2C71516509%2C71803300%2C71962127%2C72360691%2C72408100%2C72854054%2C72892778%2C73004916%2C73171280%2C73208420%2C73952802%2C73952825%2C73989921%2C74008524%2C74276218%2C74413136%2C74844724%2C75330961&cookie_enabled=true&count=5&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&maxCursor=0&minCursor=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&scene=21&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=iP7BLLSTRYoau48HZeadiD-b4R29lMTKybJeoQbTa2Zl4Mtv1xCDOMuY3nCFQ9RHHLUzb9YGE84yL33maaqbhZE0c6-Oe4f7vV33oVov-msfr9pqQ8lYdNcp-U2kQnkhZn4PQ-Bb4t4R8PnoqRPyD4G9&X-Bogus=DFSzKwVOwzhANaXRCu5Mr9nkBjaM&X-Gnarly=Mx6SIY4cZqmkgoiZ/RJd/0RORjrCRV8IutBy8P-SxfEgXpWOHlyd9rPtkK9WCbOT2WuobZ4G6wL1p8U3iNtJ7r/GzIqlCdCatn4nzLMEaMopCaOmM7fEH/HEZr1El8yc6QxvXUf4BM6LQ0HI6ELwkIzjSkaD-2LK4y0DILsRc9McEj/vGzOB7oO-qvf6nzeiRMTxGTrebboesi3AqImJufBtlk-ZY/PWzvxjhMLLTyt3n30Lyi17Kz8mw/pFvZD/pFEnfdyg-av5-Ntj/D8jp6kRZE-C9WnRVUoPu7K9oVRh8qveTOyASKQ-K2TBO5cGnmn=", "keys": ["extra", "hasMore", "isTruncated", "log_pb", "maxCursor", "minCursor", "statusCode", "status_code", "status_msg", "total", "userList"]} +{"url": "https://www.tiktok.com/api/notice/multi/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A20%2C%22is_mark_read%22%3A0%2C%22group%22%3A500%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=iP7BLLSTRYoau48HZeadiD-b4R29lMTKybJeoQbTa2Zl4Mtv1xCDOMuY3nCFQ9RHHLUzb9YGE84yL33maaqbhZE0c6-Oe4f7vV33oVov-msfr9pqQ8lYdNcp-U2kQnkhZn4PQ-Bb4t4R8PnoqRPyD4G9&X-Bogus=DFSzKwVOITiANaXRCu5Mr9nkBjcI&X-Gnarly=MxiGb-7TE7stSx584UszDQxskwC2dHF-6d87HZbKPa1s9i0oJ/1ydWeLLa-bekQIlqMdgl9f7IPv1Ncx0YZZ27vZr9NODdOD2KU38pda4g5dlu2OLhrfkt1rO7UQWOwftmy2H6FYARYPmP6gPt69VEvGS-GwspYDjdowk67qDbTUPIDWfa62kDmVPhSTHcFrS2uZ/LY5wT-iIVGI6e/A2p4e9MOeaoGfkafShYsI09/u22GvFKJF8YLpc2EJc7q3h3NT3duLdRM1V-UhN0e2Mm8tuNKhkU-OPBfF/RtRkvtK9zt9koyspJiy6CYA7qN0Wku=", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/story/user_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=10&cursor=0&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&storyFeedScene=3&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["cursor", "extra", "hasMore", "log_pb", "statusCode", "status_code", "status_msg", "storyUsers", "totalCount"]} +{"url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=ukhcFRTjr8qLVY8zkblQk1J7HDs7LeQhNnjnEekI5dj6ZBD23o_SWDdlLZkCsa8MOw1uos6nf3VxBjNJlkFWgQ6hb1XrdM2WoGwauZR37I0SNuW3855v16TbKIHn9_avhwW4kOBNgKMZC3exgb85K_Rw&X-Bogus=DFSzKwVOYitANaXRCu5MronkBjaY&X-Gnarly=MwJmlsNN7KrdDoSfzAhSHtIXQ9bY/2cUg9QK7WGLdgjsXC-N4JLniza8pq1f47023/fQNqF4qd6-ZWar1fhg6Zlwxjf7do6NKjF4vS0TOPxCLmF4XFHEgXR5Bz2lhOP44lWkbNuaiXjAbyzKnSXvwWJK4GrVM9CYxlFbcpr9O/W/00POE/YI3974Hx7nFps07mTa0vCoNQNkCdOZXGIzTEypqV/091B4Nges3k8zVXNP5JICIhh9xlBJFx/phF9lTA/ifaUvmrUAyncvkbDEN/0xTrHpCfdLRQ4xCcaQwAU4TxC4imPDWlu8FMj7jHuPKOn=", "keys": ["sug_list", "status_code", "status_msg", "rid", "words_query_record", "extra", "log_pb", "user_input_query"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=q9D_OQ61XHsUaUWBsR2d0cJRwXOMIPgfAWuuQt1tiyLICdA389BSr2tJfgIJ7X2P9nKwVwAw_IDzFWHXdl9CmTv1E9FgdzElWNDZnymAjVYkye_J7lipSGmEd0kdjNlTdQfRnype0S16pcpueBZXGYdZ&X-Bogus=DFSzKwVOdgGANaXRCu5MrInkBjVf&X-Gnarly=MH89qkAZV4ywyTzMhze6CYike8h3V5sjpnsVysVy0-q3x7YyyutWGN8UQOUXfYS96zQsaMTcXmeZzXh86OeekE/gqyBwhg7BXr55OBylNzNqdTaWt4Rz048n5pZukO59bSzn6E-OUBkQZ41QczQpTzUVoL5tY1B69wwk9ReL30bLw3wO6wZuBpe3EFg8jjcUSv4vSly7ae4Ge4h7gN7qZxbYJf6qGocxWLFyBDKJTR3B50DEpOWCFawnUM7CXjhn-duL6h-RW9HAoeCNeXAz413zeMa7pw1hhNM5w3cKlVBQT2wRPU2TqfFe/1zyJLsMUHR=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=SpikihT0HCuxZMBNgO5iXRyyEm-IqCmpYkW3CsJ1ghaXlVnMjQNFMEZLnZknJjXBBV3k70oKAVvg6-0L3oaqBzWo8OyrYqohvOWozKkf1QLTcmAvbhJM1KI-3qaWjZNhp6t-vhAJrANeS_3ulT35PcoX&X-Bogus=DFSzKwVOzBJANaXRCu5KB4nkBjcV&X-Gnarly=MFEvVAJeop9aDjWNy-rR9z4tRq/iVX-pAHVZ6a1LCfZGsLNQ9WLhjftm4yTm29Q1u4ho14TslIEPlmg73iMBfHVqAIXczR9NFMrR3ZOgKn8ovnG40YM1/as/8x5E1wV81SzHzEOot6H62RnPfGqpVmLSS410rVtEVrIorsVw5iJpGGQQgGqcvCkDaI9PjAI2/qaB96oGqjcvdKwGATSznfCeRdVRwaVnJ6ltZxSX5rr0jq9t5DrfhJsMko3NbD4JpBlWoH4r3w0DlYvc51IJZxKLmgzYoRbsBN0NrAUzlqyfdm5n9noRBIYp1uqybo8ZB5R=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&fromWeb=1&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["teen_mode", "screen_time_management_self", "cmpl_enc", "notify_parents_with_email", "extra", "status_code", "device_limit_register_expired", "commercial_content_library_url", "mixed_age_consent_action", "log_pb", "policy_notice_enable", "teen_mode_self", "about_privacy_policy_url", "age_gate_info", "idfa_popup_allow", "preference_settings", "policy_info_list", "auto_replay_count", "is_minor", "screen_time_management", "parental_guardian_mode", "parental_guardian_entrance", "ad_personality_settings", "parental_guardian_name", "interface_control_settings", "private_settings", "minor_control_type"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1758119023&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=SpikihT0HCuxZMBNgO5iXRyyEm-IqCmpYkW3CsJ1ghaXlVnMjQNFMEZLnZknJjXBBV3k70oKAVvg6-0L3oaqBzWo8OyrYqohvOWozKkf1QLTcmAvbhJM1KI-3qaWjZNhp6t-vhAJrANeS_3ulT35PcoX&X-Bogus=DFSzKwVOsmTANaXRCu5KQ9nkBjGa&X-Gnarly=Mwu0V3NjeUNojle4UpS7d4wjtBDAImWih8IZFp1Nds3hmtVLoROO2sFHt9BTf6m/Sqr1N4884YGrl9FZlQ9iRTr9QWbCVGJeJi3Cz4xl39srkcu-gMeuKD7mYNRCBQWAiR/V8wuZoqTigL9KHlLiqPfMyYId6ZoQQuDCb4RVPAd-0h/w2OPs30y6SkvBYpCvajCl7-iCmuRi-vsWH3dHvfnUTMyqOXEGrhnOL0Qua-Pg5gSpTawW10TIIJ32CdJ/XlIpJxB9H9zO0bULtDx57Y4I614NBSychOOQMEaHT7S2ChYqV1g0d8rgcMca6xo4WUw=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=SpikihT0HCuxZMBNgO5iXRyyEm-IqCmpYkW3CsJ1ghaXlVnMjQNFMEZLnZknJjXBBV3k70oKAVvg6-0L3oaqBzWo8OyrYqohvOWozKkf1QLTcmAvbhJM1KI-3qaWjZNhp6t-vhAJrANeS_3ulT35PcoX&X-Bogus=DFSzKwVOsmTANaXRCu5KQ9nkBjGa&X-Gnarly=MkVOZHRaZaisuW814jngsOqZEuHYEglnCmuBd7Vldq/gOxSP3-SXgsWpRylC5884iswSIyLGiCAHXD0ddUHLv0QNNDjVNn/k31UxK1cVMbnTm/JoX7kdu267vbb9qEO8WI7L6IUctYha/BStqYa-qF2aRq3t8v58MrRWS2UEB3/djf1EgqyJxbImIQePHu/ooLS4Lq29M-ZkOBE8d2K9cPMe2KqET4TKKqQNRz5VCLjr/IfZtkGCSVPX0iBjDrIMG3dgRAEo/tJ3ClnJh0LNk/31Ty9nZ/XqPyrlnB8mpvxOQctn6/udJf/mCr0OqAx7DrR=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=SpikihT0HCuxZMBNgO5iXRyyEm-IqCmpYkW3CsJ1ghaXlVnMjQNFMEZLnZknJjXBBV3k70oKAVvg6-0L3oaqBzWo8OyrYqohvOWozKkf1QLTcmAvbhJM1KI-3qaWjZNhp6t-vhAJrANeS_3ulT35PcoX&X-Bogus=DFSzKwVOsmTANaXRCu5KQ9nkBjGa&X-Gnarly=MJoFiWD7YqX/eQrZs/2uAfpwCev5g7S3T0DgDmgOSN05-SrWkH8HWw7fPIsvcjS-XBdfIi5gk0v6bStyii6XdQANpjxVqoQ5eUvyb9D0PqdliGaxq03ZGV4mvk9I6eGAO3T0i48aUUqnQKxYcuHDWoj5mrqQSSaIfrPK24fwBUiUpU--5mJi-Vx1UEwN5w5AWa7H4oA3Mk-kqoYO-7s0t9UI72bDn3wBxB4JHJacHxcVLCHIdNIXuRfIXBov9u3YnXFXtCTVlunFgozqhjjfKGj8yzZsg0YxkoAybdzGpRRQyM92eTdrE8BtuDgvHjaEr1Z=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/user/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clientABVersions=70508271%2C72437276%2C73720541%2C74087155%2C74444735%2C74534793%2C74757743%2C74782565%2C74879363%2C74926160%2C75004380%2C75004402%2C75014048%2C75030792%2C75132380%2C75150719%2C75163115%2C75183089%2C75204947%2C75207601%2C75224161%2C75227408%2C75236328%2C75248304%2C75252005%2C75257252%2C75266020%2C75269551%2C75289530%2C75308229%2C75312670%2C75328674%2C75331578%2C75331914%2C75334097%2C75341153%2C75350407%2C75352865%2C75352896%2C75358321%2C75373599%2C70138197%2C70156809%2C70405643%2C71057832%2C71200802%2C71381811%2C71516509%2C71803300%2C71962127%2C72360691%2C72408100%2C72854054%2C72892778%2C73004916%2C73171280%2C73208420%2C73952802%2C73952825%2C73989921%2C74008524%2C74276218%2C74413136%2C74844724%2C75330961&cookie_enabled=true&count=5&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&maxCursor=0&minCursor=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&scene=21&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=SpikihT0HCuxZMBNgO5iXRyyEm-IqCmpYkW3CsJ1ghaXlVnMjQNFMEZLnZknJjXBBV3k70oKAVvg6-0L3oaqBzWo8OyrYqohvOWozKkf1QLTcmAvbhJM1KI-3qaWjZNhp6t-vhAJrANeS_3ulT35PcoX&X-Bogus=DFSzKwVOqjkANaXRCu5KQ9nkBjVY&X-Gnarly=MxQYbKbnUX8CQAnK0KuZeUppwu3BZ2L9yuMWhErSBdY6T0qYj9O0-i4SeOQslLoBptSkHUzmnirGrQyRjrCBXJdFowJOzEtXH9QFrgJP3LwQgHK-1WTdiBoyNy-ARwToPIBiDC/GrhWvUe9K5ns7V-GBs01R08yZIhwPzNhmxr2e6naIjLhKs9RSxJGGR0K8PxRrouf0jBMnW/9bpfFtCyG5VCV-sqtGCd6jaDp/b4xC2sn5/Bwdy9moQ3KoR/mQgdogsJI3tTFeT7gFAxnBZpDArKuzbtpfYYXO1oGNEw2t1CRtFXQDmRjtLQD5OG4h4kz=", "keys": ["extra", "hasMore", "isTruncated", "log_pb", "maxCursor", "minCursor", "statusCode", "status_code", "status_msg", "total", "userList"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/inbox/notice_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A1%2C%22is_mark_read%22%3A0%2C%22group%22%3A661%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/notice/multi/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A20%2C%22is_mark_read%22%3A0%2C%22group%22%3A500%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=SpikihT0HCuxZMBNgO5iXRyyEm-IqCmpYkW3CsJ1ghaXlVnMjQNFMEZLnZknJjXBBV3k70oKAVvg6-0L3oaqBzWo8OyrYqohvOWozKkf1QLTcmAvbhJM1KI-3qaWjZNhp6t-vhAJrANeS_3ulT35PcoX&X-Bogus=DFSzKwVOUHiANaXRCu5KB4nkBjce&X-Gnarly=MOCbc0zbv-PVN/e2/reDDDPl-j3FFllFboDlvffSULjUWw5FNilJW7xHaVsFzI826NOtwZVEpashE25M/do/GpWQakKSFPAxyBCR6HhhXvh2iCyj39tbbuQquj6u75DkYJK6HoqHihGQxICFlMcQ0XY-O7vlkvie3473QJ7LVc1H91FilKO6LNcyU192hOVzxdC1w-Zlu3nG-mBui7AD3WucSxI2URaUOqT36/ynTS7Jb5wTjkaXAM69LKPkenDbYswkCvSzAFcsTtuaKrJBcgRcqWfujjKucoQzueprqAKwXuTuso67t12QZPt9/a2xViW=", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/story/user_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=10&cursor=0&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&storyFeedScene=3&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["cursor", "extra", "hasMore", "log_pb", "statusCode", "status_code", "status_msg", "storyUsers", "totalCount"]} +{"url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=jEFh4qXUd7dfiAy6lh9Jszfu2u0Xyk9WKt-SGce2cSE-WT8A-9ImwrsIvNA0VGyZngpjYdcrrfcBPJWBdxN8YciCOf8fuZeKV5Q9VL-IFbK9OCUqMpHb1kfDVd2qYkaeae5YcmPse4-syTNtH8L3zmDZ&X-Bogus=DFSzKwVOLbGANaXRCu5KQ9nkBjGa&X-Gnarly=Mc8rlOX-9jbzlQgoZWN61ffuMdrOSayNo6OX/kmNiEK0E6mOV46W-g06VyVc8MMhoFV6ZK71nXx1G0V7vy3yDmkuUHQuXE//4NGXJymAZnppjfFh/7EfeiyQv3/2ZgaxGsWPvxzGdLeuJPzhpnBskiEcYKUWOmeLKeFGYPjD25Mlw9HVtLtRoaHmTGGeHL5pNL4aiO4yYFX4ZF3ry7xhJW60fhGGLcKs2lujBlzV62YWWIlzcYRDtBytqXtYP7z60mdaXyrMyK8YA1GCEsgSEk8iD/epXqh8LC/MxiLp8OGh08ljTAFVJYA5EdkSXE7NJez=", "keys": ["sug_list", "status_code", "status_msg", "rid", "words_query_record", "extra", "log_pb", "user_input_query"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=i4IQuFvY5gcWjjGvdLYh1dLG20vJLOT8_LcOr8S4Gl4OmNHyDlR1w5uowTETN1P0A88nAxCsReSVMJ6emLH-htk0jc9Or5dxrZk4YElVrX5sWPGgl5BMOfLVvJl_j_68Br2O4pfiq6ePRZg3haaYng-g&X-Bogus=DFSzKwVOs20ANaXRCu5KQInkBjVp&X-Gnarly=M8GXCtVLNaC8xlsYjpPLz63cWx5dvxia-qfyE1X-spYaHtyA20LOxW6bXlhUpAl-11JsRtarUNM2eBdCwIjFJPHXi0MkN65Dq5VnAtCcbPb7cKUwKdYUFleq4LhMbo74JnVlN94kylPAZ5isEObXjxP2WQ7rTcMJjDOGWO1GfqW-6e95TFdgJARwz4Mk/Yne4j2j53CI3q4/vRz6wU8Q-J8vG/FfCvSXxQnO/VOrlcJDNyozIMJMRW4tK4VOe1ILy9yAEnI8F8TXFO63PPbHUryfS1-DsNXXIDfX2w-pXtRtokiPfzYx4QuY0X0wUH8905z=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=oJZslKhk9Ki_kIndTqwzmjTib9yL5kJoC8EO43aWMo1pJ15mu8O-C25wyAzA120SgFpKoRNlStkrMHK2diPtIUvCTlOnQcplKeuutqJHyWzhTWJtcR3g5-jv4E-k0kd380c_ECueZ3ql3rtoph04nL1P&X-Bogus=DFSzKwVOnAbANaXRCu5sjInkBjGS&X-Gnarly=M8Bp/QkCXqRVcUgwibf-Fi9BnbvU9RcncGIGJtAkAajmN9XMk1B3BZOxOcSqOHTXHqjynXbH4Dyxzi9WmOeECAg1TFTGCg0TZ2fqvzOMiDZIe46Uewl6sP9BQv6UDXtGuznkTWZroKFgH6WFKGApVxVuPF9GKwJKTawR9Ko0Xed/8U/ZGURlU-llUF12NM1zZ1hGxe3vHD2sVwxQjjfT5nr7rvtavGEz02avi3z8wytCj3PkwCKfHOgtp5CvWxnFq8Sq/O3fG1bW3vzn-2Sw1dUC9HmhhW0zJhHzZLiSqVQKfPHVT916wq6VB904-TYAbev=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=oJZslKhk9Ki_kIndTqwzmjTib9yL5kJoC8EO43aWMo1pJ15mu8O-C25wyAzA120SgFpKoRNlStkrMHK2diPtIUvCTlOnQcplKeuutqJHyWzhTWJtcR3g5-jv4E-k0kd380c_ECueZ3ql3rtoph04nL1P&X-Bogus=DFSzKwVOXgGANaXRCu5sjInkBjG4&X-Gnarly=Mx42uNfE3ZktvzdIP-z51Ery49tCh1bWb2JPcwwOQhowVvwwosNxWhBj9YxSVrV0yXg8UzxvUdghwmUkleHrXkAQpmHWb-w0L5uBo65OlirNH4JaQVEDYe371q0uUWG/DkEl0rh0XbR1HBUXsZOTJFRA7wfuX1KwvDgVgdMknRVjSzmUOsSj/0jAqHFpfogA6S2dtD/O4p0jkXrhj-O3RnhkTvhgjzPpOl-0ibE7AN3cogXrm3JzMQq/c5z064m2o3FIR6VKMtu6FD3MsYRnL5KzMkZEvUPuM3a/qaN8rQZbGTeCzFnuZAJw9d1u0ioGh2R=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=oJZslKhk9Ki_kIndTqwzmjTib9yL5kJoC8EO43aWMo1pJ15mu8O-C25wyAzA120SgFpKoRNlStkrMHK2diPtIUvCTlOnQcplKeuutqJHyWzhTWJtcR3g5-jv4E-k0kd380c_ECueZ3ql3rtoph04nL1P&X-Bogus=DFSzKwVOXgGANaXRCu5sjInkBjG4&X-Gnarly=MFs4TePIG9Oeh2TDIIahI2J3MhwQunRs-y9vRentBeoJcF1sk7ECsMVez-OLWO0uWAFoOMfI6c/DyJwykZXDv-Uu92ZTTdZbYnGJ-2azQ/7YmyxPlFYfOXoF9qBZ--B9mr/A4Rg1dia/M7I-0IctskiPx7Y-TMOZuZmsCANd0CQFjOq02yny9dyjOOdkJj27oNMpnCVRHa3YESWVqrgit/wxrc/uY7mjMW75GsY0q7IrRt9inNp9lOFwyTsXtiJHC52WeKw1vdcc6avC6UtZ2RzXnlqRll9V4WCNta9DFOEs80dIznI8Z7pj8hOzGw6gJEk=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=oJZslKhk9Ki_kIndTqwzmjTib9yL5kJoC8EO43aWMo1pJ15mu8O-C25wyAzA120SgFpKoRNlStkrMHK2diPtIUvCTlOnQcplKeuutqJHyWzhTWJtcR3g5-jv4E-k0kd380c_ECueZ3ql3rtoph04nL1P&X-Bogus=DFSzKwVOXgGANaXRCu5sjInkBjG4&X-Gnarly=MJG0LPxziM5kh6sMgCNa868jN41qENdcXTLs7crVr37ox1EYzF4PXNuv26my9ILZ7Nj9guwpbAuY83GqahbnEibQbL7vnBukA4obCPhR2JRy2DcO7hbnX0XhLhUCn818AmTKQSFrfeVbp9A1kVJsHaTzDofTmr8DO8pW/YveQNuuZ/LvMo80xOMIp5hJ0Hclmbi7yamFcLmoex7lWQiMqNcv2EImuM0gYJR42hCJIcUQHwoKTUqup78svaUdVpcXu5BYUyRMD/g5ICuOauqs4U4oHKiCfR-6gSF1/IeEADCVKm8yvzjOlR8jWKcr2cgSgG/=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/user/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clientABVersions=70508271%2C72437276%2C73720541%2C74087155%2C74444735%2C74534793%2C74757743%2C74782565%2C74879363%2C74926160%2C75004380%2C75004402%2C75014048%2C75030792%2C75132380%2C75150719%2C75163115%2C75183089%2C75204947%2C75207601%2C75224161%2C75227408%2C75236328%2C75248304%2C75252005%2C75257252%2C75266020%2C75269551%2C75289530%2C75308229%2C75312670%2C75328674%2C75331578%2C75331914%2C75334097%2C75341153%2C75350407%2C75352865%2C75352896%2C75358321%2C75373599%2C70138197%2C70156809%2C70405643%2C71057832%2C71200802%2C71381811%2C71516509%2C71803300%2C71962127%2C72360691%2C72408100%2C72854054%2C72892778%2C73004916%2C73171280%2C73208420%2C73952802%2C73952825%2C73989921%2C74008524%2C74276218%2C74413136%2C74844724%2C75330961&cookie_enabled=true&count=5&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&maxCursor=0&minCursor=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&scene=21&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=oJZslKhk9Ki_kIndTqwzmjTib9yL5kJoC8EO43aWMo1pJ15mu8O-C25wyAzA120SgFpKoRNlStkrMHK2diPtIUvCTlOnQcplKeuutqJHyWzhTWJtcR3g5-jv4E-k0kd380c_ECueZ3ql3rtoph04nL1P&X-Bogus=DFSzKwVOSDvANaXRCu5sjInkBjcY&X-Gnarly=MxWGlKrAfyNVBROX9m17y4nRdfBR1Z0iUl7jwFEncJljUxH3DOvNIZXrt/JyxldE9kQssC0P8fsPDHRjx4NOjlC5X8SE9xxAmDqHs1Qsp80h-89gj4gCiYT61lshGhBS8-SX/hEj7mFMnhVIZu4HZHc46rilkmbBi8I5BZFCXQ1gCnjKy-so2UySBHJW8ZoKp0TM0-F-QihQ45F8tKHKxbGIYgnbG3695oKjgvzg2Vk6S/5YALE1hy2-lsVB9ME4A6H4zds93hl0wmCTxJ4SdhNQs6jfKLtE7wt8/GtFL6ca2k9eu4R6XYSdhIiPjFS7tfZ=", "keys": ["extra", "hasMore", "isTruncated", "log_pb", "maxCursor", "minCursor", "statusCode", "status_code", "status_msg", "total", "userList"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&fromWeb=1&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["notify_parents_with_email", "log_pb", "parental_guardian_mode", "parental_guardian_entrance", "age_gate_info", "idfa_popup_allow", "private_settings", "commercial_content_library_url", "minor_control_type", "is_minor", "teen_mode_self", "cmpl_enc", "policy_notice_enable", "device_limit_register_expired", "interface_control_settings", "extra", "status_code", "teen_mode", "screen_time_management_self", "ad_personality_settings", "preference_settings", "policy_info_list", "auto_replay_count", "screen_time_management", "about_privacy_policy_url", "parental_guardian_name", "mixed_age_consent_action"]} +{"url": "https://www.tiktok.com/api/inbox/notice_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A1%2C%22is_mark_read%22%3A0%2C%22group%22%3A661%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1758119023&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/notice/multi/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A20%2C%22is_mark_read%22%3A0%2C%22group%22%3A500%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=oJZslKhk9Ki_kIndTqwzmjTib9yL5kJoC8EO43aWMo1pJ15mu8O-C25wyAzA120SgFpKoRNlStkrMHK2diPtIUvCTlOnQcplKeuutqJHyWzhTWJtcR3g5-jv4E-k0kd380c_ECueZ3ql3rtoph04nL1P&X-Bogus=DFSzKwVOyw0ANaXRCu5sjInkBjcm&X-Gnarly=MRYIKSf1gos4ClZ0pVq2wFVWNlT2Zwk9HRb99EdpQWEUH0/9Fp2jX4T0ZYItK9Qpf4q97CP78sKMuLi38hAX2QRuFSy9H1Kqm5Jotl4e8adEfOjYEJMEqvma3eqFPDb2vEYRZjqayLgmy2zlhXGOFv4bTxR7-KJi-9mo2C-5LXCxgF99EMCX5LxFthvpwFO52lKNMvO3rU4SXnFmqxQd27s9R/Uo-tJC3Ds0UJk3xAWWNMrBkse6jnFJUDVHDMdOR/ZvUMDKJ3HCUv6mGmr-APs05MvBQlpPfiLUzyzctPtvqLHl2d62UheMCC2k6wxyG-/=", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/story/user_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=10&cursor=0&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&storyFeedScene=3&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["cursor", "extra", "hasMore", "log_pb", "statusCode", "status_code", "status_msg", "storyUsers", "totalCount"]} +{"url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=quMZXxYOmSKD1MUJRKz-__zRr3Tbyd-TTwrQ3jeYNjiLa-MgTel9dV4auvyqbbi4jjSccN94U34hJcZy5mD2RmDHN8r4w48i0GUijcxBthG4yvRA5Xw_FI7wBSG2xLyz8-07rLRtKfEWkIGdFOoKXtME&X-Bogus=DFSzKwVOlY2ANaXRCu5sj4nkBjcb&X-Gnarly=MkWV3puiaSNlgfErtsCz-EZqbs6/CZYv42wk4U1VujfLn1yBgeTPEfyFvDvnneVCQJVUy63V1LnXUQJs2SjLMx69bKl/lkc1OVsabQttOqAkT-1nlPQkthjpfSwwSX4ZL5WEjw429FSfEEkxvzAq8oa32pt81hymKn-h5mWZloNDeU-xxiNDnySxOtCOMteXbkDwr8CLPyow/VHCQFeEm-z3BjZ75kxYVfCtsZt8iwm50b-DnMXpN727Cja0CK1U/9Tr9fD2v4kL0L8rMuvT7kxwcdKv7STFQhs5211ZQ/gTP92jaIXANoUfPrD4mjGyjR/=", "keys": ["sug_list", "status_code", "status_msg", "rid", "words_query_record", "extra", "log_pb", "user_input_query"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=3qKkKhV8iKR4sE-UtQHLrKlCoCiGoEi4k982rLDH4H5RiEtscci2za6E_qry6fotOGu5Gt33eF7NDiJCczcUK6pPIc6HbKZB8JYIBSxnjvBENA8WnYPJtPSLZYK9aLH5AxSvbb4CckrSbB8zScMvSoI6&X-Bogus=DFSzKwVOeWvANaXRCu5sH9nkBjGa&X-Gnarly=MR3zhi2KxobHr9XGLH1r4849RCOWeHnH4a67P5eaUC7f/tjZq7fTYGSyO-LsF5rUPk1-y32jJ3ex4F4zWZDf2DDKd9EYGZYxlx-1UFg7G4eUlLoiXSA9fr3uYrxOxeEgvhjimowK62SvAuBU4dSxkxO50et9LpScoUgOj6vakOajhWHOwwTn7TkR4-XjYDIN8cjwZtca1XWfSIzmNsW8yA20aI9mPxDn5YS9AKsJZATn5ZjmtunD/iG8lCr3cTXb2zi3HNq8yMX8z73DuOCpJYqJwAxORA6NOP6qfW8XkdVdr4/-V0gmFvnLalxuYCJgcXZ=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1758119023&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&fromWeb=1&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["age_gate_info", "policy_notice_enable", "device_limit_register_expired", "minor_control_type", "is_minor", "teen_mode_self", "screen_time_management_self", "ad_personality_settings", "interface_control_settings", "private_settings", "mixed_age_consent_action", "teen_mode", "parental_guardian_mode", "parental_guardian_entrance", "about_privacy_policy_url", "parental_guardian_name", "cmpl_enc", "commercial_content_library_url", "policy_info_list", "notify_parents_with_email", "log_pb", "extra", "status_code", "screen_time_management", "idfa_popup_allow", "preference_settings", "auto_replay_count"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=YX5_Pzp-I9P-hnwBm-gxPOnBn6pJaKhKpM76kUR5Tg818WK5MVrVlb8JYLfRN-XHFTqNDgmr34jv75hI-KlQEkzjg9WyqBPjfGy0AlqCvFJyl82aNKR15wntXb2tU0Mge1i9-hbM8UXLkkRHAL9J7JvvVww=&X-Bogus=DFSzKwVOFGGANaXRCu5Qln2J46KD&X-Gnarly=MkxaFuZ8r758WQXQEDWlF3n7ScRIgNc60L4GaqcVQhCyOqxiydyMQ2SMt2XxJtoA26hhmv7htAMJn9CicCMlUicyfRO9Tk00iCkcRd2ya0AYeaoEILlrn-oEohBjKwG8YVQhYswa81VFEbf0hvjonSbasC6GpZ5sjFaBKeXozGxDmMDTRhdKdUZrfLUU563ADx2yL1MfHYBIU0Dgved/GMsQF/s9RQo5jU9q7D7yeyC9dLNVAkpK9v4Mm48tzytpRY77KvoTKBVB9nHWUOjp0YmyWPktjnl6dkO2VfRFM4jN8CrR3/jas9UVHBEhnXZ0JFe=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/inbox/notice_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A1%2C%22is_mark_read%22%3A0%2C%22group%22%3A661%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=YX5_Pzp-I9P-hnwBm-gxPOnBn6pJaKhKpM76kUR5Tg818WK5MVrVlb8JYLfRN-XHFTqNDgmr34jv75hI-KlQEkzjg9WyqBPjfGy0AlqCvFJyl82aNKR15wntXb2tU0Mge1i9-hbM8UXLkkRHAL9J7JvvVww=&X-Bogus=DFSzKwVOEPkANaXRCu5Ql72J46Kw&X-Gnarly=M/aUeyIvSCAZuq2hqynH9uRPy627DDHPWum2DW6VK4rKpwdPaAwpdaWSXmUBWi4qnaUp6q3Z-KweMtSpQFobK-HiiR4WYyILZW6uCD4i5YlRWhw/1CDgjS6EdstFI8mMJW-N99GyOrdGUE-jh1Ibu6gKKLbOfWleLOG0saqGya7HfHue2F0mUbImqxDmP829BMQ4UVURVqFEkozqTKXWTiSgRaKVnfi0bz7sEBxRvWH/sA71xosJ8A9sCnCN/mKSDM9nc4nnqXGDaLi8UuGzhA5eFSSMglXgG/FDSzZV5xXUr5OjAXBuNe32ax/10kSyY9I=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1758119023&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=YX5_Pzp-I9P-hnwBm-gxPOnBn6pJaKhKpM76kUR5Tg818WK5MVrVlb8JYLfRN-XHFTqNDgmr34jv75hI-KlQEkzjg9WyqBPjfGy0AlqCvFJyl82aNKR15wntXb2tU0Mge1i9-hbM8UXLkkRHAL9J7JvvVww=&X-Bogus=DFSzKwVOEPkANaXRCu5Ql72J46Kw&X-Gnarly=MHXgnTlbDzvT2Ym7/upkmwikZ-KAP38GLn3sosduwJfqW5rZkh2U9e2rszRglf1gZggwnPgNVFqyjEFeAH6rD6XqTb0qiZP/DeZgFIUQZzFCHRwxRjH/T-MOwESPsvOJ6iUeyxfEdkNYzpNx5O60PH4h0Dg1lzKUTIhK94c611o47PhmFb32U/NC5uAym2/eFmZoQw3DE46QbU/R-aC/2SQjqGSKrERs/wR5E7a1qdXB20VOxLpKtFUC8HSyXiya1lU7xdoN3KrskiYzRPGS73MyDiXfFIR-WEqtIh65iF-0tBSxridAwOL9u0kxqMa7b8f=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=YX5_Pzp-I9P-hnwBm-gxPOnBn6pJaKhKpM76kUR5Tg818WK5MVrVlb8JYLfRN-XHFTqNDgmr34jv75hI-KlQEkzjg9WyqBPjfGy0AlqCvFJyl82aNKR15wntXb2tU0Mge1i9-hbM8UXLkkRHAL9J7JvvVww=&X-Bogus=DFSzKwVOEPkANaXRCu5Ql72J46Kw&X-Gnarly=MwG1SYgz/pwSJca53B5l6LlhXUXw1QxVupk471VBKJlhglKiekdVYrz17qAQrOv85hq-tn5U-GeHOdaj9zU2ds0BoaSJdw1Sb0JfN0q2jXP/0ioZ5qghDH5NjM-VI3Ze5gqVfO9pLj6NvzesulIdfpjnjMFW6tqszz9Tt7Z4u9nRQs5YWMjIB9MiSFM3xgZxzDcl7FJ/ia1XpCNHiI1rX2Dz/UzH4IBHyOuxMhXn8ndGNTc4LMDn3AsMWmgpJng2L3q5HMa0XFkPLvdILfT7zjSBKZx42PWcoYhBydzOQuBBjpaXwG5zEqoy1aBoaFkHT3z=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/notice/multi/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A20%2C%22is_mark_read%22%3A0%2C%22group%22%3A500%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=YX5_Pzp-I9P-hnwBm-gxPOnBn6pJaKhKpM76kUR5Tg818WK5MVrVlb8JYLfRN-XHFTqNDgmr34jv75hI-KlQEkzjg9WyqBPjfGy0AlqCvFJyl82aNKR15wntXb2tU0Mge1i9-hbM8UXLkkRHAL9J7JvvVww=&X-Bogus=DFSzKwVOF2iANaXRCu5Qln2J46Kg&X-Gnarly=MFUnMWJ6mcMOylEv5sqMZrC4b7PvFchS-mkrOQKpREBs3iCwXQCvNiq6S5BsVyVCVUXFF9W9FrDixoJwSJqdpZNk7hUSSQs009XddPWH3lm2xDM1-bBDdLtzxsctGZaTvu5F11HpY-EKdNmGz-I0Sl7tl9fyDWgO-3-8PmizrSSHQFAeBCsn3VX0gJ7HXZtUSbnxcFMKldAxR1bLrR2BaJnw9kN-ZjmrD5Bax2nESqB62GpBHimE6ki4GR0UJPcDXm4XKtrKDDYE7GQDo0V23WLzfWDzUmhtDhdGmrEHMKZtIZJ-s39uqJG0jzmOPeDPh5R=", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/story/user_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&count=10&cursor=0&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&storyFeedScene=3&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["cursor", "extra", "hasMore", "log_pb", "statusCode", "status_code", "status_msg", "storyUsers", "totalCount"]} +{"url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=_8spkAsXozIV7PzDc6cHa-lzwC5ElPcb3pW21f6ZTqEMYC6GOoTJOSvvaSjXUS1WbN-eBoPKFHLOZkHemcqwlb1jDk0HWQ6uq4W9oPBPbsilfWMAqeUlAWfuUnPx_7Ek9nV2Z5t6uRsNbydqgyVGLKX40mo=&X-Bogus=DFSzKwVOdiiANaXRCu5Ql72J46Kn&X-Gnarly=MCBiioNAC36OowFL6cwu8md0WjsB5Ppoy5HIWdv9HOgOZuX4oik6JxQ3RwtXHOIAepuLdKl8WK89npqZdzAjcvZ4TQWLzlJe9gt-k7xK-gYgnhrWh8CT2n0KxTaMY0-JpC2pd4czZiLQctwpEqoXDj9hDq2ReopOODleIVjMGlkXPkbZEriXsQuDwjEka8AfO3cOY1lhD7RrGBSYc9kQcGOdaFvYqszQVvIFT-8b5uJzjg4s02oCZ4SdNVJM6pa1tfTJ7X-8UB0TDaEPC198d3Hs5TSxnd5k09k9tFVNjGGlBIlnEHSriPlLYweTFva8ban=", "keys": ["sug_list", "status_code", "status_msg", "rid", "words_query_record", "extra", "log_pb", "user_input_query"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=Zj7ZNUoPtai4TUSDXD5GVFD16VaZ1oX86MjhvCJ24GNoGfL_Vja3J5S31M_gxCHKL-Xjt7cyT-lvf0L07SzTRbOVurvWIFpWI0EBqz5rnSCr_w_Ee1nvlQYE7g4PQ9Bov5XxlPukdSTPV2T1L1E1cD3yUuY=&X-Bogus=DFSzKwVOWvGANaXRCu5Qld2J46s0&X-Gnarly=MCtxMPm5PIsMP0HWsKYO669bzcVyX42VU5LUsYh0vr3VyqE9nYWpnQiBVA9iZGtvv3u4/3DDcGtzPnMyIxqxPq0ZbYqTX8kTx7XKMHgS2PldITN292KrxwuvY3RlOkwRpHx9FsmE3Xz1zZgTSh2qswmHE58fiX18HBl1rLXCCbSTHSA8H/4ccLJD1dNgknCoUdWJXSfipXO8u8EpJq7PccV-bXhEs6hYUUlakqLLYWQFpkbFHXdGdrrSqN6uD6Tg/Kv6kOM93czgzBcqw1bhEf4Y623Dzi9bf0AgkqELJpZosZcRHek55GKCt10NWSeKNpA=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&os=ios&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true¤t_placeholder=&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&from_group_id=&from_page=search&history_len=1&history_list_v2=%25255B%25255D&is_fullscreen=false&is_page_visible=true&os=ios&priority_region=VN&referer=®ion=VN&req_source=webapp_search_blank_page&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["data", "status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&fromWeb=1&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&os=ios&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["screen_time_management_self", "parental_guardian_entrance", "ad_personality_settings", "private_settings", "mixed_age_consent_action", "minor_control_type", "teen_mode", "teen_mode_self", "age_gate_info", "device_limit_register_expired", "commercial_content_library_url", "preference_settings", "notify_parents_with_email", "is_minor", "about_privacy_policy_url", "cmpl_enc", "idfa_popup_allow", "extra", "log_pb", "screen_time_management", "parental_guardian_name", "policy_notice_enable", "policy_info_list", "auto_replay_count", "status_code", "parental_guardian_mode", "interface_control_settings"]} +{"url": "https://www.tiktok.com/node-webapp/api/login-config", "keys": ["statusCode", "config"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&os=ios&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/preload/item_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&count=2&coverFormat=0&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&from_page=search&history_len=1&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&language=en&os=ios&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=&X-Bogus=DFSzKwVOK1iANHwJCu5Qdn2J46KL&X-Gnarly=MOYEGOTA9IUFqX3-vgHO7rMHjQn6fFixR1104VecgcYt5Y4lDEWVlYS20N0YwXHbt0KTQg7pWNWB27tR5vLahSbKsr4BeozAwq0dU8Y4cnT2u7uF-Gh2SugVrx42C8mWeWEdNRXlkAN4LeWjoreW4cvxOhWyJpTOKYk5bsBylmMuhcOQlSzA4k8wi6LsukUuQ3gOP6YpQd4uniiMdDfwpDTDFImL1tTh/R0ZJJbxkjOd8CCARk43zCHDU62Zeqz5uU6EmRF1meTrhqZ0O0mWuveTSYd/PObLWabJDMZHBKsyEhtBYqfVvOaCiNPeiOkXc6z=", "keys": ["extra", "itemList", "log_pb", "statusCode", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&os=ios&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true¤t_placeholder=&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&from_group_id=&from_page=search&history_len=1&history_list_v2=%25255B%25255D&is_fullscreen=false&is_page_visible=true&os=ios&priority_region=VN&referer=®ion=VN&req_source=webapp_search_blank_page&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["data", "status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&fromWeb=1&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&os=ios&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["cmpl_enc", "policy_info_list", "auto_replay_count", "log_pb", "screen_time_management_self", "ad_personality_settings", "parental_guardian_entrance", "interface_control_settings", "idfa_popup_allow", "commercial_content_library_url", "notify_parents_with_email", "minor_control_type", "parental_guardian_mode", "teen_mode_self", "age_gate_info", "policy_notice_enable", "device_limit_register_expired", "private_settings", "mixed_age_consent_action", "status_code", "is_minor", "about_privacy_policy_url", "parental_guardian_name", "preference_settings", "extra", "teen_mode", "screen_time_management"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&os=ios&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/node-webapp/api/login-config", "keys": ["statusCode", "config"]} +{"url": "https://www.tiktok.com/api/preload/item_list/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&count=2&coverFormat=0&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&from_page=search&history_len=1&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&language=en&os=ios&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en&msToken=&X-Bogus=DFSzKwVOK1iANHwJCu5Qcw2J46B4&X-Gnarly=M5A-n6eIzDg1dT2FF13W6ebBRfnzPfE9kRb-qJ5dGLDdpSSe-y5rPjWTCwazvIzQaVmoGCrm1GOeVofah0RBIXZv0i3961SvxzOYggdd/qE87KEfHoTI1pHeyazUGcSXG8cRD46yPc1pbKOzdnJUn6duBwbeYQms8ExEIVDc2RfSpNzeoBnrxt7zoSCcD/eGlfEWu/tq-PvzGmCrrWk0D8nTYx/CADTzB5YZFQUgnCporCGkErjp0v3bf4D1aK83Noc2RTeIkpKiW-CwvMF6S-1PVWE1DBQ8NldYPBfCTTJJvv6a2P9VvATvA11HNOh8z0n=", "keys": ["extra", "itemList", "log_pb", "statusCode", "status_code", "status_msg"]} diff --git a/backend/all_responses.jsonl b/backend/all_responses.jsonl new file mode 100644 index 0000000..dbc30db --- /dev/null +++ b/backend/all_responses.jsonl @@ -0,0 +1,50 @@ +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/story/user_list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=10&cursor=0&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&storyFeedScene=3&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["cursor", "extra", "hasMore", "log_pb", "statusCode", "status_code", "status_msg", "storyUsers", "totalCount"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=video&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1769093917&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=yf2SkeEd8mpRzeFVO_o9WEjvaUlV3zWKc8VyjXgAVGByMuLRNwanRR2SD8hSKEsbozKkztC4OPYwCOFI1_ThTWMh399OVBudcLBOaDwyflgn6Q3Sz5ekKcdIRv6PTk5gNSEnBWkxhTv4xWfoFHRS5Y_VZsZXdA==&X-Bogus=DFSzKIVOUKbANJZMCu58d1wyWdbQ&X-Gnarly=MCh2fkYqIw9kGXih-yCZMzh0jKRnUA9UTa0OmNrL/CgCqbzMbQC6CqbbEr/QtxMblr/xd095euEqjlQE4ajAmg7xFfJj9plxvIDPhURngRkqFwRV7QIi9GTFynzfm8Ar6AfxCLlO9n7yGuGkDc8604znpwRffvVipe4lYC7-dkl9ToIaROPywy6ONnRyNZM5/ZuEwWB-xK40LoSf8EOyyLK7DWyVJx//MtaIiNR8TiplOj/2sFU9Fbk7h2DNSWXF2OFcbni4bPlC-83N9WkCuCLnPs4pGZ9PXiD98N8H2mLDH5Zdv2SijbFWZZ9u/jFI9b/=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=yf2SkeEd8mpRzeFVO_o9WEjvaUlV3zWKc8VyjXgAVGByMuLRNwanRR2SD8hSKEsbozKkztC4OPYwCOFI1_ThTWMh399OVBudcLBOaDwyflgn6Q3Sz5ekKcdIRv6PTk5gNSEnBWkxhTv4xWfoFHRS5Y_VZsZXdA==&X-Bogus=DFSzKIVOYLTANJZMCu58d1wyWdbl&X-Gnarly=MOBv-q4wYnrPM4AQcBIj4U9BEL8R8ANtzOCy/45SdzRwSDmRubcX4PgHmWB1T60/46mQacFd7iVJ0btloG2FUa16kc3O5X3lSACLmdYQgMFch0woMTvXGFyuiO651X3Qj5WddSFOL/WmEnfLz68HnS/h569S6Zl87MyvaXh9496S1Rcv-YI6IY9weMAGY4HJfEw5FkPBn0jKzMu3/-w0VZbbhIlCkomSRNF1oZ6ImBELhHPQ-Rl-Z4ys7fisNu2aiJBze02aLkjN-jQU96NAJrBwpn8sUlvhAPK7-aR2wc5pVQYwFq7p00f6Q99BBBsxL/b=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=yf2SkeEd8mpRzeFVO_o9WEjvaUlV3zWKc8VyjXgAVGByMuLRNwanRR2SD8hSKEsbozKkztC4OPYwCOFI1_ThTWMh399OVBudcLBOaDwyflgn6Q3Sz5ekKcdIRv6PTk5gNSEnBWkxhTv4xWfoFHRS5Y_VZsZXdA==&X-Bogus=DFSzKIVOYLTANJZMCu58d1wyWdbl&X-Gnarly=MwPPTq4PrErIRNAd7UZSSG3rOxO9zi50X/sp1gwR2HoZZcGwv9bt-c1teRwatl63280vmNtz3hJoFcoxMQSqx0YmfVCxsUwyd-8wWr8WG4ilcMnJbZd32hHNHU4jWwHCV5ormJAwFlkinyVHawkpQVNcUu-Gki5ejcfYwvdsGuV/WBP7qcYqYdklpVWCL0PbbIU43CVhwaXasH9B-E3K8nhLYnyB-lVJfyMFuUB56VJopCHg8bvkh233zNjLJQpvkENru7QKP6OIH/4-1S3M4WFQL5/EggJ13yrMTjnwkRT7Kbd7KgmNAhHgwqi33kVXR9z=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1769093917&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=yf2SkeEd8mpRzeFVO_o9WEjvaUlV3zWKc8VyjXgAVGByMuLRNwanRR2SD8hSKEsbozKkztC4OPYwCOFI1_ThTWMh399OVBudcLBOaDwyflgn6Q3Sz5ekKcdIRv6PTk5gNSEnBWkxhTv4xWfoFHRS5Y_VZsZXdA==&X-Bogus=DFSzKIVOYLTANJZMCu58d1wyWdbl&X-Gnarly=M8ghxSnY3aoYQdcBjs1FDCNHKr2gX1SyzO4f0a/ZMhw04Qf4pH/O1h63INXMDhQc5FG/4EHbYtKCjWY8BLcQUxsLFeHAswN5dwNy3HwVqXIfyDs4U-qTrqWsViiFxiy3mU4yzhSDs0-kxZuMh/5yJV962RaIthWWndhpgng2PuZogItch18-WW0NxvqAOvVq4KV2Mhux-Uen9DTUdwXF-J9ViwKQW3JGtUYdrShFc208aPSRfrp7SW8razbHO0PfeyfH8-VI-b9SLxQUKl6cSK9365LskIVTKlx87qQm2LAxwkcm5aI6RN/JquNLPNyqOTG=", "keys": ["statusCode", "statusMsg"]} +{"url": "https://www.tiktok.com/api/inbox/notice_list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A1%2C%22is_mark_read%22%3A0%2C%22group%22%3A661%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/notice/multi/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A20%2C%22is_mark_read%22%3A0%2C%22group%22%3A500%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=yf2SkeEd8mpRzeFVO_o9WEjvaUlV3zWKc8VyjXgAVGByMuLRNwanRR2SD8hSKEsbozKkztC4OPYwCOFI1_ThTWMh399OVBudcLBOaDwyflgn6Q3Sz5ekKcdIRv6PTk5gNSEnBWkxhTv4xWfoFHRS5Y_VZsZXdA==&X-Bogus=DFSzKIVOvzUANJZMCu58d1wyWdLo&X-Gnarly=MJd1vzDhCHkjXwUcK5h8Q/ME8qGSAcWqLcS89vuKCc3XXs2dDnvO/r8f1Gy7l8kBItjGplKJt4i8WrWaaRk-yKXJdffFNGAc9IzgvEFfjiPrQ2YAGQ5-YQHWs0xeYDF91g-4bQNJ3S-X1pVS3Us3tCzDGq88MFKmKlJdvzWiUwjZu5869V8a8S7Om1KqOi2wMAiarrZqFhabZAdGebvWfPOIPuN69mFLnqMqDX1NASwjl8frm/8rhyKjGLP938CmrkqVbHO1U1r9gyZC-JuP0921rsr0BYGQIn5K59tYYKrjg9GkBoXu575MPxPdWqpCKgb=", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&fromWeb=1&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["about_privacy_policy_url", "parental_guardian_name", "mixed_age_consent_action", "preference_settings", "policy_info_list", "auto_replay_count", "log_pb", "teen_mode_self", "status_code", "minor_control_type", "screen_time_management", "parental_guardian_mode", "parental_guardian_entrance", "device_limit_register_expired", "idfa_popup_allow", "cmpl_enc", "age_gate_info", "policy_notice_enable", "notify_parents_with_email", "extra", "teen_mode", "screen_time_management_self", "ad_personality_settings", "interface_control_settings", "private_settings", "commercial_content_library_url", "is_minor"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=xO4PD8oQNiS59ICpwUtKD0v5gBd1OQ8CyDV2b7XSxwAMuVJ6c1rc3ZSApGTwGgte1lAiUG_Ny2PO4-Zd2U94blec1t_UpzHho0wDMe_xALD36p90vP76okF75OvbyaBABYK5yHfIkfPY6zB9z7moiM0dYSWwqg==&X-Bogus=DFSzKIVO7tbANJZMCu58dZwyWdqL&X-Gnarly=M/IlZIV97mvw7e/R3HloobJZJGr8toTkU-j-fAnLAua3-Bt5z4BtiJ/sChqSc2y2tOTLa7C0pvtS1aba4V161dX1G99NMxH8aHHz8HNDhC4wa3ZriTwMHiK8Q7i2v1FGhz3AsurExEqVr-g2CPpfyvUb9h6NfzUpUZtepKBPiOyE50DxBurNiG3/DzlJegkWGXod58zEFCWjaE61K3lcX3CSYqBKYQWq/r3OiBTmTqxAKIpTW4S5tsh8z0CQXuXulbNJ667zF5n31kktPOVx9Sx6PFyQnzJeV99yADunQyGjMTGSSiyBr63li-5ymbveEIf=", "keys": ["sug_list", "status_code", "status_msg", "rid", "words_query_record", "extra", "log_pb", "user_input_query"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_7%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F120.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=2&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=aUVUlxd9gqJ8x6OvlQCaiQgpALBD0wd67idERNIoOtMUmGyiDFepqIqTBIU0kKkAm8S6qbmm3Tco7G7pULVel_pIMACD1e0ISFZcb95MQjvvQQZL0DC7xY99c5fNDa-N29lF4dPvUydhD01JL7PjPDvm7p17UQ==&X-Bogus=DFSzKIVOY3TANJZMCu58kHwyWdL7&X-Gnarly=M/5AwbsqGMkkuSHdcGJWR/YXZ/6qcpX054UoBEN7o2VvI0Fr1gj/TAtT2TQ04sjAkKuRosbzKTl72pHxks2GxN1gWEeBziGpqo6fPJbIa91EG/XRyiBN5puucTRiQsdNWWPYUs/p3Pu54s2saH9RYUJSk4i6CZqcgtoIx3jZD1yWhu/UF7SLETNhz-w/YuPn-DaSUshdt7vujga-qqShXuTqrlJWYXRv83nmtmIZLc3-K3TwnZJ1lYIpFCL-JIMHDm31-LL8vk9K9QE1eLl4tGj7Av2tZg/R1gGrMHmbmCC9k0KPNdgICBmvHavRK9d0wLb=", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1769093917&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/compliance/settings/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&fromWeb=1&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["notify_parents_with_email", "auto_replay_count", "extra", "log_pb", "interface_control_settings", "private_settings", "mixed_age_consent_action", "preference_settings", "screen_time_management", "screen_time_management_self", "age_gate_info", "policy_notice_enable", "about_privacy_policy_url", "ad_personality_settings", "parental_guardian_name", "idfa_popup_allow", "status_code", "minor_control_type", "parental_guardian_mode", "parental_guardian_entrance", "device_limit_register_expired", "commercial_content_library_url", "policy_info_list", "is_minor", "teen_mode", "teen_mode_self", "cmpl_enc"]} +{"url": "https://www.tiktok.com/api/feedback/v1/newest_reply/?WebIdLastTime=1769093917&aid=1284&app_key=tiktok-web&app_language=en&app_name=tiktok_web&appkey=tiktok-web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&clear_unread=false&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&iid=0&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["err_code", "message", "data", "pushResult"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=5U0RDzWDiSUzwfJCXRZDhrekiAEsWpeKlVSwRx-K9xjB0aFs9GvTiPG0J1i40OGNdhLirZwFO3itBZoPnLllt-9XOL2Xj2NO1S7Ng-zINjnu1WwxxHSColTn5bzStm5udBL0mrp_YGj0NBxgurqVL6LGqlQ=&X-Bogus=DFSzKwVOKytANaXRC-2sod2J46K5&X-Gnarly=McTqp-7TQ/Ls-BkPZcrHOx2DHD-FHjpy8DftfN3ZLkj6orgLA6ATSmxkKqM5qnM/nlqiF2UgaPVPAGDyEsBe0FFz-W4cmt0xeXmCBv/VIS0ELcv0j4hztHRGuwF36Z9FHvYB6vss-1bGhN6sEhi0YeqHee4h7BLOhQRYCAno/86e-fWle2Vxwb8Hkt2QmgmUsRkCz-5bi5JINsj6VkL8xlyudF-oYJdjId-ABWvuwKvI38VEAk-VZic6gMMZMGgYLW2zd0r4e5lJSmUkl5zweOt3qvtY-RKptuZpif-M/h-or3px27alE0O1uL0XaZFPeLK86vobLI==", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=5U0RDzWDiSUzwfJCXRZDhrekiAEsWpeKlVSwRx-K9xjB0aFs9GvTiPG0J1i40OGNdhLirZwFO3itBZoPnLllt-9XOL2Xj2NO1S7Ng-zINjnu1WwxxHSColTn5bzStm5udBL0mrp_YGj0NBxgurqVL6LGqlQ=&X-Bogus=DFSzKwVOhmiANaXRC-2sod2J46QK&X-Gnarly=M5OS2mcyff4AwSkko8gusAcRZnWKjK4UjNPj7e7NiwDlhxb8ivFK0iuU493-VHIKoCaViEyW89UPaC4mI43KbF-z5ts1m6xT8PRVD0dF4UlChBAyPuECGN7iq-4mTJ904RiQMlitY4f2mXL3dtNCOfayNpmq3-GvnJMfAbIkk0Z6OUjcghuujw1dKeOjQuJ90CT0jZuhMudwU3WCXF4TUhSvUp9JHlmKT4l1ulBGMLQFOzvzw3Kk9MK9kKThMHMOhGrs23zCJgFqqzoX8o6g614fKFYEFsN1cyCHanb58/EKM1eDJ0dU247dwabhf9T8-/jNQnFcJI==", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005%2C025007%2C025008&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=5U0RDzWDiSUzwfJCXRZDhrekiAEsWpeKlVSwRx-K9xjB0aFs9GvTiPG0J1i40OGNdhLirZwFO3itBZoPnLllt-9XOL2Xj2NO1S7Ng-zINjnu1WwxxHSColTn5bzStm5udBL0mrp_YGj0NBxgurqVL6LGqlQ=&X-Bogus=DFSzKwVOf8kANaXRC-2sod2J46B9&X-Gnarly=M5dnRGyXhDj24ZkomFvznMw8kfnaBB7MXfotkjI/dy2pO0Mk/qNer8Y1DDQFk13/OSaaFGfmZQIb2Eu39K0yjxIVeekzEEh2PY00UlRSlfIM5FQnbM-P0nzyHBxyjFni5bVct462HbUH1y8ye9QfZeMpYDYSmJL26vAc/iBfHtGKI2vUVlk4cVM-4lrITJWHCBsnPhhMXhEPj9r0HOjQhWjER0JNnFRckjFbL-sG5gCThRMcldct5uxEdHxnivdzsuEt8G-nr8B7ZcEO8g6W6M/DP-tlGCvL9KlAOkEk-f1AVhqrE-KqqU1yud-zTDqldemZ4k/JZu==", "keys": ["statusCode", "statusMsg", "permissionList"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=5U0RDzWDiSUzwfJCXRZDhrekiAEsWpeKlVSwRx-K9xjB0aFs9GvTiPG0J1i40OGNdhLirZwFO3itBZoPnLllt-9XOL2Xj2NO1S7Ng-zINjnu1WwxxHSColTn5bzStm5udBL0mrp_YGj0NBxgurqVL6LGqlQ=&X-Bogus=DFSzKwVOhmiANaXRC-2sod2J46QK&X-Gnarly=M5Io15YxcJraC1wKYXcvvxlCw0unJaKIf3Shz9v5RtOW54c1Zk8iMVHkTiWx9RSCyk0C/S7v1bPR2Vh8G2d5TFW4c8vycKZA6Uddy08w637T2Y7BE3tS7Rzha5s00t6KXG2gjaObsF5a3-4Hgwv9EgG6vURJpuWloVPnwrcNcn7FRB7jn1SqzXZ0R3Var6pdnYcxQlpWHFwJRpPB2uuomDl0hc4sA98UgEN-Rv2SLFNoYKEUDwo-Y5uGOm9jN3OhalzOXmLaSPQtqZfoSVgZGfJqH6uY0DyCG6bSvNqzSOJY38zENh9bbYDRPi8ivrV73HxZrmUyhZ==", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005%2C025007%2C025008&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=5U0RDzWDiSUzwfJCXRZDhrekiAEsWpeKlVSwRx-K9xjB0aFs9GvTiPG0J1i40OGNdhLirZwFO3itBZoPnLllt-9XOL2Xj2NO1S7Ng-zINjnu1WwxxHSColTn5bzStm5udBL0mrp_YGj0NBxgurqVL6LGqlQ=&X-Bogus=DFSzKwVOf8kANaXRC-2sod2J46B9&X-Gnarly=MRbJJo4-4Xcinsxt4xASeSAU1KlESXfVVVoNxivfeYtof3lqSXZYnwozVZ-aCcS9fB9pGYXDFqupbDTcgnCOYuOeS3F4bwmGhgU-4GlGHLsbn16PbdOPyFVc72BvhzuB1Luw8h6zO50w15d--IT8427YA6nZ4VZxrXBod2RLd4J5n30eYPKkbCZ0A5avrVs/cByuw8Dwd/RiBqXhms-Nq7-KuS3sHOtLdQOINRPGVrkvJ2OJEd3c3X0B/uHBNSJkX10KnpybpjL/-bNwh1xttZxqeFXivqLGEoeFBIOmQEBgylW1mh0N0RaqFb6yU/cY5EyvX2V3XI==", "keys": ["statusCode", "statusMsg", "permissionList"]} +{"url": "https://www.tiktok.com/api/inbox/notice_list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A1%2C%22is_mark_read%22%3A0%2C%22group%22%3A661%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=5U0RDzWDiSUzwfJCXRZDhrekiAEsWpeKlVSwRx-K9xjB0aFs9GvTiPG0J1i40OGNdhLirZwFO3itBZoPnLllt-9XOL2Xj2NO1S7Ng-zINjnu1WwxxHSColTn5bzStm5udBL0mrp_YGj0NBxgurqVL6LGqlQ=&X-Bogus=DFSzKwVO4YGANaXRC-2sod2J46B7&X-Gnarly=MPZQX1WdyRgCUr//YKhGwJmfy3RvIB4upf/jL2C7mJ-z1C42Tk/SQ//B0IVJBfIkSxdt0-91-W86XL1RgMUGW0ud-7Cr8qWDuLTNKbMH0RmM/EFt9bb-Vcx08oKrghnz11H5l9N5cVZsVSyRNRmXLPgUaOaOaPDF-PLq1XpLUnj-fZ94EMq55UCHYgRhWM4TeALZtJzBGGYazduK0ukphaZLSUx/-1c3sL1SeVxXcF5/h81u6uleyCWuTtCWkVOb5DmfUBuSb5370Tm7i62GsBbCcBfAf/437zFQf4GLFZb4F/cbRtyizY7-fbST888b-5LygYOuEu==", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005%2C025007%2C025008&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=5U0RDzWDiSUzwfJCXRZDhrekiAEsWpeKlVSwRx-K9xjB0aFs9GvTiPG0J1i40OGNdhLirZwFO3itBZoPnLllt-9XOL2Xj2NO1S7Ng-zINjnu1WwxxHSColTn5bzStm5udBL0mrp_YGj0NBxgurqVL6LGqlQ=&X-Bogus=DFSzKwVOf8kANaXRC-2sod2J46B9&X-Gnarly=MHoI4Fv1s9dzxbKvYHbpYEv41btQaAsUJtUOb4-55bMBIME5s9R7YSVkY9gicjkidrxe/dt3jBx/bJbcLjn25jq3KtWkamgrcBbo3uDPGj0SQ0CnxIcVMkxwHkXDXkIMsImqH7b-4n7jieXnwckESFVC0919h6E5GdsbfxKmyNH9TeSonA2-PXIcQrUVAQvC4yswQsVroryk6IQyAHawXIN6W3l8CR9jbCe16SZp3hBRWbpHmYgd5m2X7YxvjyOTuTdeRdP2bIFC5H7ksab-xcXmbPUYIHgCPYHdBHGsXbEvayFskFd2N2wAqgpD6mCzDdTYez94NI==", "keys": ["statusCode", "statusMsg", "permissionList"]} +{"url": "https://www.tiktok.com/api/notice/multi/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&group_list=%5B%7B%22count%22%3A20%2C%22is_mark_read%22%3A0%2C%22group%22%3A500%2C%22max_time%22%3A0%2C%22min_time%22%3A0%7D%5D&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=5U0RDzWDiSUzwfJCXRZDhrekiAEsWpeKlVSwRx-K9xjB0aFs9GvTiPG0J1i40OGNdhLirZwFO3itBZoPnLllt-9XOL2Xj2NO1S7Ng-zINjnu1WwxxHSColTn5bzStm5udBL0mrp_YGj0NBxgurqVL6LGqlQ=&X-Bogus=DFSzKwVOfsJANaXRC-2sod2J46QO&X-Gnarly=MCZNQs35QsWMT19R3oK3koJUeQX0iGLS0dO0b5WHpg5nMR6mUhh6xDsVyoEq213mLCoTwPQWaZFywl6-tVtORyEasgySEh-PRTeprBSFgzsS3GAY1LtyxiwvyQIyZT9XyALqqKh9tGWmy1n7515jG-FFvk7ZVLAJ-XvYlhRZsXjRZ3RxoBF19F-04JdH3IruyxqHSQ8M4Lx9-JhRPe0TKG/icqAwyUNio4VNen9NkhLX57Q7o3tsvad82W0AGiLRvVDtHQRsnOefh8HURDD6I8elq9GWLAZECOQwdwsQl582FJWJD02xDXtNVBUpUJw7GYtcFmniMk==", "keys": ["extra", "log_pb", "notice_lists", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/story/user_list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&count=10&cursor=0&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&isNonPersonalized=false&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&storyFeedScene=3&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=5U0RDzWDiSUzwfJCXRZDhrekiAEsWpeKlVSwRx-K9xjB0aFs9GvTiPG0J1i40OGNdhLirZwFO3itBZoPnLllt-9XOL2Xj2NO1S7Ng-zINjnu1WwxxHSColTn5bzStm5udBL0mrp_YGj0NBxgurqVL6LGqlQ=&X-Bogus=DFSzKwVOJzkANaXRC-2sod2J46sE&X-Gnarly=MOE5owaQmnF3KsNZBdfeiSlmyixPuc4fbP2i1tYW13yzgah8XZX3hKA1AMGU1a2KYHUQHgzvUY353H7ct-wDMuIzBdpRcI6aCp4gDDxMH7qhXupKyirQPBFBG8PDDk9QmVUV5xkqWAQr9hEE-aeNprbmeel/7qBTAy9XtUXvq8RlO6i5199XIsah-FPhjjAlnOiWaJrsCp85UygWV4GMFI39rRiuJMIxl9EKfw0EsAQF8O/HSbVQWpwCwuVaGngIVQwAtCTogPpVAhwr6RwnAjjx1ULMlObyd7/C-39WF2eQLtL6oFtIdUlJeeJ7g3WCgz1alxrPak==", "keys": ["cursor", "extra", "hasMore", "log_pb", "statusCode", "status_code", "status_msg", "storyUsers", "totalCount"]} +{"url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&keyword=hot%20trend&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=ILIzJgti9oEKksruJbbmi1H6uBu2nPxRgr9oI02Wjf87-nBd5TZX4eneaJNMU_h7BOcogmSAJnodLChIuYo75CwSulmxeAtLMeC152nk5GHVYZfdxi4JXSO2Rwo_0QE1Ayt2ZbWegGlLhR9J8CWolI95XdM=&X-Bogus=DFSzKwVO-5vANaXRC-2sod2J46Qe&X-Gnarly=MHe2TmXf4F91/1eO7rrUvMJc2AawxjxoSm6i9bN8f82u72ueB0UeSAMcYhNFlsCZK2o6I4ojhqto79MwRx/awQJcATwqz69d2ouXRorwrsOS7g6dgQnXD61nsiKl2HJ0XXf7UaRgEb0UDAsUIzD-uy3o0CnjGAEfd6MLpqBUBnEyRBbaiflWTTfJU9JusS3hb/PTiJivT/XHGW5r8UeeHLnYy1isNiGhDq33Zk0Y5J5I7b/PDy4--43dp5/m2UxK0BU1CBQBsLIHljezZ38axl/aLgEhgbGY837Qgz6gF7bekhmsRh67zXid-IJHv7ZItmZZCZmwqI==", "keys": ["sug_list", "status_code", "status_msg", "rid", "words_query_record", "extra", "log_pb", "user_input_query"]} +{"url": "https://www.tiktok.com/api/prefetch/explore/item_list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&categoryType=120&channel=tiktok_web&clientABVersions=70508271%2C72437276%2C73720541%2C75163115%2C75294819%2C75361163%2C75428705%2C75635433%2C75638230%2C75650499%2C75653719%2C75843653%2C75844157%2C75853335%2C75861400%2C75878361%2C75892453%2C75895817%2C75896366%2C75897568%2C75906135%2C75907770%2C75909186%2C75933865%2C75962579%2C75986062%2C76009533%2C76024531%2C76043568%2C76044897%2C70138197%2C70156809%2C70405643%2C71057832%2C71200802%2C71381811%2C71516509%2C71803300%2C71962127%2C72360691%2C72408100%2C72854054%2C72892778%2C73004916%2C73171280%2C73208420%2C73952802%2C73952825%2C73989921%2C74008524%2C74276218%2C74413136%2C74844724%2C75330961&cookie_enabled=true&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_new_user=false&is_page_visible=true&language=en&odinId=6884525631502042113&os=mac&priority_region=VN&pullType=1&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&video_encoding=dash&webcast_language=en&msToken=ATQCZYuo_YRovMrLb_vL8FWqc_30OnwYtyJRNQrLNhiZXeiNH8A3mTwlxrhUlOYNGjeL8kM-xOHdqMBFnMXi03IP3Q3UFaMzxwaOTe0cf10VfDxdOzsQp33ilmKMFwHiPso4sZFyCLh8H5WviDNoXdiLYTE=&X-Bogus=DFSzKwVO5whANaXRC-2sbn2J46KJ&X-Gnarly=MRn9-8ShKQsJBRFmtPxg60ptzuHO9RLS2eORhxGkfF892SS0uLM5dyfs7CAGRcjZvBbhTfpi80oLwbxs22MuozsMCD52RYb-Saci1NfbOEziwWIFMSPELBqIZuHu0qa1KwCwLboPbEj1NNhSoBHE6Fn0jhjNw5ElS1-3zUB0DrtIxVQV1NN9Ng/0mFmPQKa0pNcNKGPNRUVPE-XbGwB4VDLTc60uA-6dEyZDGCfXwxPLKLaHIS-pSSxIe4LG86a5AR3Bx4zDXJa2O1abGAFMfifk5a3uPBJRShQkPHbyXL3TKTXZx99wanzgUG86MCnP-BUCdlUFPI==", "keys": ["extra", "log_pb", "statusCode", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/user/following/request/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&count=20&data_collection_enabled=true&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&max_time=0&odinId=6884525631502042113&os=mac&priority_region=VN&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_id=6884525631502042113&user_is_login=true&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=ATQCZYuo_YRovMrLb_vL8FWqc_30OnwYtyJRNQrLNhiZXeiNH8A3mTwlxrhUlOYNGjeL8kM-xOHdqMBFnMXi03IP3Q3UFaMzxwaOTe0cf10VfDxdOzsQp33ilmKMFwHiPso4sZFyCLh8H5WviDNoXdiLYTE=&X-Bogus=DFSzKwVOvFiANaXRC-2sbn2J46BZ&X-Gnarly=MJVwgTcb8RwuF7GTbIXjiWpf8XBnggAfHedyaja30WLxARTK3tqwIyJcOMqrorv-CmDlZO-imOtm95QxF4KU5yi3a-WGrZQejMyTCP1AT3qGnkRCy3TRpNrs3alflFpyHzwDJGOT4noq/jMd6xHt7pvk-EtQK6NUl7AetuuVVNwI/DbLmXuKRD9C52gVq/7EVnUFzPmqfiGptizJBq-/l3/5NqzJmSq9eqed5Wjq3kH6KMzrK1qJMnWOWS5SJv78pFx4/197WKIJEcCmsFUK6Cq59Er-pYPe-obFb/ABDnKaE76PwI6t6UvGKupif9XLR6md5C4-Ju==", "keys": ["extra", "has_more", "log_pb", "min_time", "myself_user_id", "request_users", "status_code", "status_msg", "total"]} +{"url": "https://www.tiktok.com/tiktok/ppf/api/eligibility/v2?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=false&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=false&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["eligibility_list", "log_pb", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=false&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&keyword=nhac%20remix%20tiktok&odinId=6884525631502042113&os=mac&priority_region=&referer=®ion=VN&req_source=related_search&screen_height=720&screen_width=1280&search_source=general&tz_name=Etc%2FGMT-7&user_is_login=false&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en", "keys": ["data", "status_code", "status_msg", "log_id"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/v1/web-cookie-privacy/config?locale=en&appId=1988&theme=default&tea=1", "keys": ["statusCode", "body"]} +{"url": "https://www.tiktok.com/api/inbox/notice_count/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=false&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&priority_region=&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=false&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=Ij-C-T5pLcZDZZK11ertQXncj7-RMUfsCMl_yWkj8kkW3P1HkhKKkVOJxfG5M3CXe52wEJkIqFw-ETg6hNuHK8dgtYOPAJrVdOpI0MjEf3pvecA10K6gMG9ERA0i4W3MYHH_qpruPn90Rwa_tO8R89y7cD0=&X-Bogus=DFSzKwVOKQJANaXRC-2QRw2J46KD&X-Gnarly=M89N6WiMV0w-ShTJgJtlqwoSbcu6aIenkz-mqaakQGuvidVAm94a7CaWI2SZroZb9AIL3-7ckRoHJbHVRrrtAHs1/EQAmaZqkWFZCC-yK4Q5HHdY7tZ6W6nC53UHR3Ni4dSgbyytp05J3TZiscLA4SFjJ/DnT//qGaksLb3HwzkjuveU5N9I-ysatg5X9H22FoZLCf4a8jFHe7b2woBRdT8Pwdb/1aU1dwNbty5PAjyS2a5/-8WOPWcfw4PsUtCRjbKCBQsTNZDf-UZZptNNI3Lsm2NhrlhkZ-rjiGt2ooFRFxnSE31bXO6ljd/3E8BDOijP36ymkZ==", "keys": ["extra", "log_pb", "notice_count", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=false&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005%2C025007%2C025008&priority_region=&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=false&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=Ij-C-T5pLcZDZZK11ertQXncj7-RMUfsCMl_yWkj8kkW3P1HkhKKkVOJxfG5M3CXe52wEJkIqFw-ETg6hNuHK8dgtYOPAJrVdOpI0MjEf3pvecA10K6gMG9ERA0i4W3MYHH_qpruPn90Rwa_tO8R89y7cD0=&X-Bogus=DFSzKwVOeAbANaXRC-2QRw2J46QR&X-Gnarly=MCbooWBcYXTQyjBpwtD8N-Syh3Ah2NiGTY8bM2l-G9v9be2buYcjIatGgKSztJYb9ffsFVvWNcd8nIJwFQcU6NfHmLO0X4cmI9-C1q8PQv7xhXIYra2YlfPR95dBqUnUIwZUc2N4-Aip3tDddbH3TJr9RWNb/mkjGklGSQXEq6lmimXeL6NRWOx1AbaL0VQ/j9sZIu1eM8MLgVBUFJcR5R6VFX8S6ImSjsh9KOTI4xHlweGR77Ohc29MS5VCylhhrzhA2wd4sVX09/ytRettIBNrrUz-6rOG/sKTKWYxKhp8i5DgeVOTayRJkVLx9TtSzqlJAd0pMI==", "keys": ["statusCode", "statusMsg", "permissionList"]} +{"url": "https://www.tiktok.com/api/global-footer/graphql", "keys": ["data", "extensions"]} +{"url": "https://www.tiktok.com/api/ba/business/suite/permission/list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=false&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&odinId=6884525631502042113&os=mac&permissionList=001004%2C001005%2C025007%2C025008&priority_region=&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=false&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=Ij-C-T5pLcZDZZK11ertQXncj7-RMUfsCMl_yWkj8kkW3P1HkhKKkVOJxfG5M3CXe52wEJkIqFw-ETg6hNuHK8dgtYOPAJrVdOpI0MjEf3pvecA10K6gMG9ERA0i4W3MYHH_qpruPn90Rwa_tO8R89y7cD0=&X-Bogus=DFSzKwVOeAbANaXRC-2QRw2J46QR&X-Gnarly=MKkGno46-pW1/VpbE1ptI7xK8c9vYQ3iRBxtaZCty7f8Qve2/D-Eb/5J3J2WYUVkueEEIL2IgoHpqi2PPPxVkniW7vFyGVhM3mSkziTOCXdFiLV8m-gmXKkQCgYoAxWjaqQ-xChlbfb8zLYbK8N3RmJs86ZNDQBtOZ2S/Rg/n6b-amLviB217CdaNUNssXiO/FE9SbNrKSDRt02-9I-kYKl-9k9IZggTgRiyPNxEGuub9YN8rMkVNkeGGmc6P7ZudSzl-ZIdSecg07iTyWlLBQU8FD7uIVBX6V2BcJYl9lNA8QMW7AYf/vex5WV7yx-Q9SXQi-oS9k==", "keys": ["statusCode", "statusMsg", "permissionList"]} +{"url": "https://www.tiktok.com/api/prefetch/explore/item_list/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&categoryType=120&channel=tiktok_web&clientABVersions=70508271%2C73720541%2C75294819%2C75638230%2C75650499%2C75843653%2C75844157%2C75853335%2C75861400%2C75892453%2C75895817%2C75896366%2C75897568%2C75906135%2C75986062%2C76024531%2C76043568%2C70405643%2C71057832%2C71200802%2C73004916%2C73171280%2C73208420%2C74008524%2C74276218%2C74413136%2C74844724%2C75330961&cookie_enabled=true&data_collection_enabled=false&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_new_user=false&is_page_visible=true&language=en&odinId=6884525631502042113&os=mac&priority_region=&pullType=1&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=false&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&video_encoding=dash&webcast_language=en&msToken=Ij-C-T5pLcZDZZK11ertQXncj7-RMUfsCMl_yWkj8kkW3P1HkhKKkVOJxfG5M3CXe52wEJkIqFw-ETg6hNuHK8dgtYOPAJrVdOpI0MjEf3pvecA10K6gMG9ERA0i4W3MYHH_qpruPn90Rwa_tO8R89y7cD0=&X-Bogus=DFSzKwVODGzANaXRC-2QRw2J46K6&X-Gnarly=MFvGqBqh3ljsf1G7LD02xpn-IeyyMQf4JqeN516sSAmvj07GoNfqrvgFeXpiqx2fchQ49TfZKcKa9pVUeTNPvTLhs0A4gP-UZ8e858RF5ZQkKvgrniZfCpyR4QcEvZVt6HSk3kPx8bPj-//XArlC88i8fVze4y7ESIXtIvP1fARJsuxZr9fqgyenGxO8a1AYCt0bKgrY4F6c7aX8oR-QadWbY3bflq7pOrGC3N-7DHzOeqP77MQWtyGw7Qwxc2IzmQfmwXBD4C7PUhsovK4FdcFqO3S1f4sT2PzdMzG3UspjTpIjjETGJorTpbjIxsPqqXLfIOj9LZ==", "keys": ["extra", "log_pb", "statusCode", "status_code", "status_msg"]} +{"url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=false&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&keyword=nhac%20remix%20tiktok&odinId=6884525631502042113&os=mac&priority_region=&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=false&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=6T21t7jo6fm_ITwUxjlhK5GGInqEsRYFBRZiOyEUPnL1St1w9MD8crbYGJ8wlCk76_UVkpVizHkwuTjbBoww7WFssA3i4uRZzgdi1gvMFfEJhTV50UxIw2gF12nkAlOBndi3jtmlv3XfqHMVLsGk0Rzr0ZU=&X-Bogus=DFSzKwVOqtiANaXRC-2QRw2J46BB&X-Gnarly=MHc7lTViVSeVG3dkuRJQtgAXHUz9/Hwvka4GF43bNkiS0Ol0Doih0uap9tyTElKeSTcHXzppwZ612o5wKSM6sZarWp7RIibhe4sWM8x9FemHt3l0ZL-rO9cI3k0QklEO6XFi8IzWC0u-Vaea/Tq18GzPGftEuvLcRvat/txAY7EnXV2/ExdUN4u2WXiEixBvaFr2rp1dEQY/CoEVs6j0tNrKonpsIGbhLXlTRmYAlPnbKe/cgBSe4FmUqwP8vmoSy2Y95J9AgrMZrss29koNPl2xZ4e2Fi9z/hIhVlSA8o/T0D2TE8ihpEOWRLhaKTQ7Fx4NMS6F6k==", "keys": ["sug_list", "status_code", "status_msg", "rid", "words_query_record", "extra", "log_pb", "user_input_query"]} diff --git a/backend/api/routes/feed.py b/backend/api/routes/feed.py index ee7471d..558fada 100644 --- a/backend/api/routes/feed.py +++ b/backend/api/routes/feed.py @@ -281,9 +281,9 @@ async def proxy_video( if not os.path.exists(video_path): raise Exception("Video file not created") - print(f"Downloaded codec: {video_codec} (no transcoding - client will decode)") + print(f"Downloaded codec: {video_codec}") - # Save to cache directly - NO TRANSCODING + # Save to cache directly - client-side player handles all formats cached_path = save_to_cache(url, video_path) stats = get_cache_stats() print(f"CACHED: {url[:50]}... ({stats['files']} files, {stats['size_mb']}MB total)") diff --git a/backend/api/routes/user.py b/backend/api/routes/user.py index 7a9d545..437d270 100644 --- a/backend/api/routes/user.py +++ b/backend/api/routes/user.py @@ -7,8 +7,10 @@ from pydantic import BaseModel from typing import Optional, List import httpx import asyncio +import time from core.playwright_manager import PlaywrightManager +from core.tiktok_api_service import TikTokAPIService router = APIRouter() @@ -112,7 +114,7 @@ async def get_user_videos( ): """ Fetch videos from a TikTok user's profile. - Uses Playwright to crawl the user's page for reliable results. + Uses direct API calls for speed (~100-500ms), with Playwright fallback. """ username = username.replace("@", "") @@ -123,10 +125,25 @@ async def get_user_videos( raise HTTPException(status_code=401, detail="Not authenticated") print(f"Fetching videos for @{username}...") + start_time = time.time() + # Try fast API first + try: + videos = await TikTokAPIService.get_user_videos(username, cookies, user_agent, limit) + if videos: + duration = time.time() - start_time + print(f"[API] Got {len(videos)} videos in {duration:.2f}s") + return {"username": username, "videos": videos, "count": len(videos), "source": "api", "duration_ms": int(duration * 1000)} + except Exception as e: + print(f"[API] Failed for {username}: {e}") + + # Fallback to Playwright if API fails or returns empty + print(f"[Fallback] Using Playwright for @{username}...") try: videos = await PlaywrightManager.fetch_user_videos(username, cookies, user_agent, limit) - return {"username": username, "videos": videos, "count": len(videos)} + duration = time.time() - start_time + print(f"[Playwright] Got {len(videos)} videos in {duration:.2f}s") + return {"username": username, "videos": videos, "count": len(videos), "source": "playwright", "duration_ms": int(duration * 1000)} except Exception as e: print(f"Error fetching videos for {username}: {e}") raise HTTPException(status_code=500, detail=str(e)) @@ -140,7 +157,7 @@ async def search_videos( ): """ Search for videos by keyword or hashtag. - Uses Playwright to crawl TikTok search results for reliable data. + Uses direct API calls for speed (~200-800ms), with Playwright fallback. """ # Load stored credentials cookies, user_agent = PlaywrightManager.load_stored_credentials() @@ -149,10 +166,25 @@ async def search_videos( raise HTTPException(status_code=401, detail="Not authenticated") print(f"Searching for: {query} (limit={limit}, cursor={cursor})...") + start_time = time.time() + # Try fast API first + try: + videos = await TikTokAPIService.search_videos(query, cookies, user_agent, limit, cursor) + if videos: + duration = time.time() - start_time + print(f"[API] Found {len(videos)} videos in {duration:.2f}s") + return {"query": query, "videos": videos, "count": len(videos), "cursor": cursor + len(videos), "source": "api", "duration_ms": int(duration * 1000)} + except Exception as e: + print(f"[API] Search failed for {query}: {e}") + + # Fallback to Playwright if API fails or returns empty + print(f"[Fallback] Using Playwright for search '{query}'...") try: videos = await PlaywrightManager.search_videos(query, cookies, user_agent, limit, cursor) - return {"query": query, "videos": videos, "count": len(videos), "cursor": cursor + len(videos)} + duration = time.time() - start_time + print(f"[Playwright] Found {len(videos)} videos in {duration:.2f}s") + return {"query": query, "videos": videos, "count": len(videos), "cursor": cursor + len(videos), "source": "playwright", "duration_ms": int(duration * 1000)} except Exception as e: print(f"Error searching for {query}: {e}") raise HTTPException(status_code=500, detail=str(e)) @@ -178,7 +210,6 @@ async def get_suggested_accounts( # Check cache if _suggested_cache["accounts"] and (time.time() - _suggested_cache["updated_at"]) < CACHE_TTL: - print("Returning cached suggested accounts") return {"accounts": _suggested_cache["accounts"][:limit], "cached": True} # Load stored credentials @@ -198,10 +229,8 @@ async def get_suggested_accounts( _suggested_cache["updated_at"] = time.time() return {"accounts": accounts[:limit], "cached": False} else: - # Fallback: fetch actual profile data with avatars for static list - print("Dynamic fetch failed, fetching profile data for static accounts...") - fallback_list = get_fallback_accounts()[:min(limit, 20)] # Limit to 20 for speed - return await fetch_profiles_with_avatars(fallback_list, cookies, user_agent) + # Just return static accounts directly without API calls - TikTok API is unreliable + return {"accounts": get_fallback_accounts()[:limit], "cached": False, "fallback": True} except Exception as e: print(f"Error fetching suggested accounts: {e}") diff --git a/backend/core/playwright_manager.py b/backend/core/playwright_manager.py index 0e9fca9..d6858ef 100644 --- a/backend/core/playwright_manager.py +++ b/backend/core/playwright_manager.py @@ -17,9 +17,14 @@ from playwright.async_api import async_playwright, Response, Browser, BrowserCon try: from playwright_stealth import stealth_async except ImportError: - print("WARNING: playwright_stealth not found, disabling stealth mode.") - async def stealth_async(page): - pass + try: + from playwright_stealth import Stealth + async def stealth_async(page): + await Stealth().apply_stealth_async(page) + except ImportError: + print("WARNING: playwright_stealth not found, disabling stealth mode.") + async def stealth_async(page): + pass COOKIES_FILE = "cookies.json" @@ -43,10 +48,18 @@ class PlaywrightManager: "--start-maximized" ] - DEFAULT_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" + DEFAULT_USER_AGENT = "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1" # Use installed Chrome instead of Playwright's Chromium (avoids slow download) - CHROME_PATH = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" + import platform + import os + + # Check if running on macOS + if platform.system() == "Darwin" and os.path.exists("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"): + CHROME_PATH = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" + else: + # On Linux/Docker, use Playwright's bundled Chromium (None lets Playwright decide) + CHROME_PATH = None # VNC login state (class-level to persist across requests) _vnc_playwright = None @@ -515,8 +528,26 @@ class PlaywrightManager: try: data = await response.json() - # TikTok returns videos in "itemList" or "aweme_list" - items = data.get("itemList", []) or data.get("aweme_list", []) + # TikTok returns videos in various nested formats + items = [] + + # Try direct itemList first + if data.get("itemList") and isinstance(data["itemList"], list): + items = data["itemList"] + elif data.get("aweme_list") and isinstance(data["aweme_list"], list): + items = data["aweme_list"] + # Try nested data structure + elif data.get("data"): + nested_data = data["data"] + if isinstance(nested_data, list): + for item in nested_data: + if isinstance(item, dict): + if "item" in item and isinstance(item["item"], dict): + items.append(item["item"]) + else: + items.append(item) + elif isinstance(nested_data, dict): + items = nested_data.get("itemList", []) or nested_data.get("aweme_list", []) for item in items: video_data = PlaywrightManager._extract_video_data(item) @@ -789,13 +820,78 @@ class PlaywrightManager: url = response.url - # Look for search results API - if "search" in url and ("item_list" in url or "video" in url or "general" in url): + # Log ALL API responses to find the right one + if "/api/" in url and "tiktok.com" in url: try: + content_type = response.headers.get("content-type", "") + if "json" in content_type.lower(): + data = await response.json() + log_entry = {"url": url, "keys": list(data.keys()) if isinstance(data, dict) else "not dict"} + with open("all_responses.jsonl", "a", encoding="utf-8") as f: + f.write(json.dumps(log_entry) + "\n") + except: + pass + + # Look for search results API - stricter + is_search_api = "/api/search/" in url and ("item" in url or "general" in url or "full" in url) + + if is_search_api: + try: + content_type = response.headers.get("content-type", "") + if "json" not in content_type.lower(): + return + data = await response.json() - # Try different response formats - items = data.get("itemList", []) or data.get("data", []) or data.get("item_list", []) + # Debug: print the actual structure + if data: + keys = list(data.keys()) if isinstance(data, dict) else "not a dict" + print(f"DEBUG: Search API response keys: {keys} from {url}") + + # DUMP FOR DEBUGGING + try: + # Append to file or overwrite with list? Overwrite with wrapper for now + debug_data = {"url": url, "response": data} + with open("debug_search_response.json", "w", encoding="utf-8") as f: + json.dump(debug_data, f, indent=2) + print("DEBUG: Dumped search response to debug_search_response.json") + except Exception as e: + print(f"DEBUG: Failed to dump response: {e}") + + # Try different response formats - TikTok nests data in various ways + items = [] + + # First try direct itemList + if data.get("itemList") and isinstance(data["itemList"], list): + items = data["itemList"] + # Try data field + elif data.get("data"): + nested_data = data["data"] + if isinstance(nested_data, list): + # data is a list of items directly + for item in nested_data: + if isinstance(item, dict): + # Check if item has an "item" key (video wrapped) + if "item" in item and isinstance(item["item"], dict): + items.append(item["item"]) + # Check for aweme/video wrapper + elif "aweme" in item and isinstance(item["aweme"], dict): + items.append(item["aweme"]) + else: + items.append(item) + elif isinstance(nested_data, dict): + # data is an object with items inside + items = nested_data.get("itemList", []) or nested_data.get("item_list", []) or \ + nested_data.get("videos", []) or nested_data.get("aweme_list", []) + # Try item_list directly + elif data.get("item_list"): + items = data["item_list"] + # Try aweme_list (mobile API format) + elif data.get("aweme_list"): + items = data["aweme_list"] + + if items: + print(f"DEBUG: Found {len(items)} items, first item keys: {list(items[0].keys()) if items and isinstance(items[0], dict) else 'N/A'}") for item in items: # If we have enough for this specific batch, we don't need more @@ -814,10 +910,8 @@ class PlaywrightManager: print(f"DEBUG: Error parsing search API response: {e}") async with async_playwright() as p: - browser = await p.chromium.launch( + browser = await p.firefox.launch( headless=True, - executable_path=PlaywrightManager.CHROME_PATH, - args=PlaywrightManager.BROWSER_ARGS ) context = await browser.new_context(user_agent=user_agent) @@ -828,8 +922,9 @@ class PlaywrightManager: page.on("response", handle_response) try: - # Navigate to TikTok search page - search_url = f"https://www.tiktok.com/search/video?q={quote(query)}" + + # Navigate to TikTok search page - try standard search + search_url = f"https://www.tiktok.com/search?q={quote(query)}" try: await page.goto(search_url, wait_until="domcontentloaded", timeout=15000) except: @@ -861,6 +956,18 @@ class PlaywrightManager: except Exception as e: print(f"DEBUG: Error during search: {e}") + try: + await page.screenshot(path="debug_search_page.png") + print("DEBUG: Saved screenshot to debug_search_page.png") + + # Dump HTML + html_content = await page.content() + with open("debug_search_page.html", "w", encoding="utf-8") as f: + f.write(html_content) + print("DEBUG: Saved HTML to debug_search_page.html") + except: + pass + await browser.close() print(f"DEBUG: Total captured search videos in this batch: {len(captured_videos)}") diff --git a/backend/core/tiktok_api_service.py b/backend/core/tiktok_api_service.py new file mode 100644 index 0000000..a26bce0 --- /dev/null +++ b/backend/core/tiktok_api_service.py @@ -0,0 +1,356 @@ +""" +TikTok Direct API Service - Fast API calls without browser automation. + +Replaces Playwright crawling with direct HTTP requests to TikTok's internal APIs. +Expected performance: ~100-500ms vs 5-15 seconds with Playwright. +""" + +import httpx +import asyncio +from typing import List, Optional, Dict, Any +from urllib.parse import quote + +from core.playwright_manager import PlaywrightManager + + +class TikTokAPIService: + """ + Direct TikTok API calls for instant data retrieval. + + Key endpoints used: + - /api/user/detail/?uniqueId={username} - Get user profile and secUid + - /api/post/item_list/?secUid={secUid}&count={count} - Get user's videos + - /api/search/general/full/?keyword={query} - Search videos + """ + + BASE_URL = "https://www.tiktok.com" + DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" + + @staticmethod + def _build_headers(cookies: List[dict], user_agent: str = None) -> dict: + """Build request headers with cookies and user agent.""" + cookie_str = "; ".join([f"{c['name']}={c['value']}" for c in cookies]) + + return { + "User-Agent": user_agent or TikTokAPIService.DEFAULT_USER_AGENT, + "Referer": "https://www.tiktok.com/", + "Cookie": cookie_str, + "Accept": "application/json, text/plain, */*", + "Accept-Language": "en-US,en;q=0.9", + "sec-ch-ua": '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"', + "sec-ch-ua-mobile": "?0", + "sec-ch-ua-platform": '"Windows"', + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-origin", + } + + @staticmethod + def _extract_video_data(item: dict) -> Optional[dict]: + """ + Extract video data from TikTok API response item. + Matches the format used by PlaywrightManager._extract_video_data(). + """ + try: + if not isinstance(item, dict): + return None + + video_id = item.get("id") or item.get("aweme_id") + + # Get author info + author_data = item.get("author", {}) + author = author_data.get("uniqueId") or author_data.get("unique_id") or "unknown" + + # Get description + desc = item.get("desc") or item.get("description") or "" + + # Check if this is a product/shop video + is_shop_video = bool(item.get("products") or item.get("commerce_info") or item.get("poi_info")) + + # Get thumbnail/cover image + thumbnail = None + video_data = item.get("video", {}) + + thumbnail_sources = [ + video_data.get("cover"), + video_data.get("dynamicCover"), + video_data.get("originCover"), + ] + for src in thumbnail_sources: + if src: + thumbnail = src + break + + # Get direct CDN URL + cdn_url = None + cdn_sources = [ + video_data.get("playAddr"), + video_data.get("downloadAddr"), + ] + for src in cdn_sources: + if src: + cdn_url = src + break + + # Video page URL + video_url = f"https://www.tiktok.com/@{author}/video/{video_id}" + + # Get stats + stats = item.get("stats", {}) or item.get("statistics", {}) + views = stats.get("playCount") or stats.get("play_count") or 0 + likes = stats.get("diggCount") or stats.get("digg_count") or 0 + comments = stats.get("commentCount") or stats.get("comment_count") or 0 + shares = stats.get("shareCount") or stats.get("share_count") or 0 + + if video_id and author: + result = { + "id": str(video_id), + "url": video_url, + "author": author, + "description": desc[:200] if desc else f"Video by @{author}" + } + if thumbnail: + result["thumbnail"] = thumbnail + if cdn_url: + result["cdn_url"] = cdn_url + if views: + result["views"] = views + if likes: + result["likes"] = likes + if comments: + result["comments"] = comments + if shares: + result["shares"] = shares + if is_shop_video: + result["has_product"] = True + return result + + except Exception as e: + print(f"DEBUG: Error extracting video data: {e}") + + return None + + @staticmethod + async def get_user_sec_uid(username: str, cookies: List[dict], user_agent: str = None) -> Optional[str]: + """ + Get user's secUid from their profile. + secUid is required for the video list API. + """ + headers = TikTokAPIService._build_headers(cookies, user_agent) + profile_url = f"{TikTokAPIService.BASE_URL}/api/user/detail/?uniqueId={username}" + + try: + async with httpx.AsyncClient(timeout=10.0, follow_redirects=True) as client: + response = await client.get(profile_url, headers=headers) + + if response.status_code != 200: + print(f"DEBUG: Failed to get user profile, status: {response.status_code}") + return None + + data = response.json() + user_info = data.get("userInfo", {}) + user = user_info.get("user", {}) + sec_uid = user.get("secUid") + + if sec_uid: + print(f"DEBUG: Got secUid for @{username}: {sec_uid[:20]}...") + return sec_uid + + except Exception as e: + print(f"DEBUG: Error getting secUid for {username}: {e}") + + return None + + @staticmethod + async def get_user_videos( + username: str, + cookies: List[dict], + user_agent: str = None, + limit: int = 20, + cursor: int = 0 + ) -> List[dict]: + """ + Fetch videos from a user's profile using direct API call. + + Args: + username: TikTok username (without @) + cookies: Auth cookies list + user_agent: Browser user agent + limit: Max videos to return + cursor: Pagination cursor for more videos + + Returns: + List of video dictionaries + """ + print(f"DEBUG: [API] Fetching videos for @{username} (limit={limit})...") + + # Step 1: Get secUid + sec_uid = await TikTokAPIService.get_user_sec_uid(username, cookies, user_agent) + + if not sec_uid: + print(f"DEBUG: [API] Could not get secUid for @{username}") + return [] + + # Step 2: Fetch video list + headers = TikTokAPIService._build_headers(cookies, user_agent) + + # Build video list API URL + video_list_url = ( + f"{TikTokAPIService.BASE_URL}/api/post/item_list/?" + f"secUid={quote(sec_uid)}&" + f"count={min(limit, 35)}&" # TikTok max per request is ~35 + f"cursor={cursor}" + ) + + try: + async with httpx.AsyncClient(timeout=15.0, follow_redirects=True) as client: + response = await client.get(video_list_url, headers=headers) + + if response.status_code != 200: + print(f"DEBUG: [API] Video list failed, status: {response.status_code}") + return [] + + data = response.json() + + # Extract videos from response + items = data.get("itemList", []) or data.get("aweme_list", []) + + videos = [] + for item in items[:limit]: + video_data = TikTokAPIService._extract_video_data(item) + if video_data: + videos.append(video_data) + + print(f"DEBUG: [API] Successfully fetched {len(videos)} videos for @{username}") + return videos + + except Exception as e: + print(f"DEBUG: [API] Error fetching videos for {username}: {e}") + return [] + + @staticmethod + async def search_videos( + query: str, + cookies: List[dict], + user_agent: str = None, + limit: int = 20, + cursor: int = 0 + ) -> List[dict]: + """ + Search for videos using direct API call. + + Args: + query: Search keyword or hashtag + cookies: Auth cookies list + user_agent: Browser user agent + limit: Max videos to return + cursor: Pagination offset + + Returns: + List of video dictionaries + """ + print(f"DEBUG: [API] Searching for '{query}' (limit={limit}, cursor={cursor})...") + + headers = TikTokAPIService._build_headers(cookies, user_agent) + + # Build search API URL + # TikTok uses different search endpoints, try the main one + search_url = ( + f"{TikTokAPIService.BASE_URL}/api/search/general/full/?" + f"keyword={quote(query)}&" + f"offset={cursor}&" + f"search_source=normal_search&" + f"is_filter_search=0&" + f"web_search_code=%7B%22tiktok%22%3A%7B%22client_params_x%22%3A%7B%22search_engine%22%3A%7B%22ies_mt_user_live_video_card_use_498%22%3A1%7D%7D%7D%7D" + ) + + try: + async with httpx.AsyncClient(timeout=15.0, follow_redirects=True) as client: + response = await client.get(search_url, headers=headers) + + if response.status_code != 200: + print(f"DEBUG: [API] Search failed, status: {response.status_code}") + # Try alternative search endpoint + return await TikTokAPIService._search_videos_alt(query, cookies, user_agent, limit, cursor) + + data = response.json() + + # Search results structure + videos = [] + + # Try different response formats + item_list = data.get("data", []) + if not item_list: + item_list = data.get("itemList", []) + if not item_list: + item_list = data.get("item_list", []) + + for item in item_list[:limit]: + # Search results may have nested structure + video_item = item.get("item", item) + video_data = TikTokAPIService._extract_video_data(video_item) + if video_data: + videos.append(video_data) + + if videos: + print(f"DEBUG: [API] Successfully found {len(videos)} videos for '{query}'") + return videos + else: + # Fallback to alternative endpoint + return await TikTokAPIService._search_videos_alt(query, cookies, user_agent, limit, cursor) + + except Exception as e: + print(f"DEBUG: [API] Error searching for {query}: {e}") + return await TikTokAPIService._search_videos_alt(query, cookies, user_agent, limit, cursor) + + @staticmethod + async def _search_videos_alt( + query: str, + cookies: List[dict], + user_agent: str = None, + limit: int = 20, + cursor: int = 0 + ) -> List[dict]: + """ + Alternative search using video-specific endpoint. + """ + print(f"DEBUG: [API] Trying alternative search endpoint...") + + headers = TikTokAPIService._build_headers(cookies, user_agent) + + # Try video-specific search endpoint + search_url = ( + f"{TikTokAPIService.BASE_URL}/api/search/item/full/?" + f"keyword={quote(query)}&" + f"offset={cursor}&" + f"count={min(limit, 30)}" + ) + + try: + async with httpx.AsyncClient(timeout=15.0, follow_redirects=True) as client: + response = await client.get(search_url, headers=headers) + + if response.status_code != 200: + print(f"DEBUG: [API] Alt search also failed, status: {response.status_code}") + return [] + + data = response.json() + + videos = [] + item_list = data.get("itemList", []) or data.get("item_list", []) or data.get("data", []) + + for item in item_list[:limit]: + video_data = TikTokAPIService._extract_video_data(item) + if video_data: + videos.append(video_data) + + print(f"DEBUG: [API] Alt search found {len(videos)} videos") + return videos + + except Exception as e: + print(f"DEBUG: [API] Alt search error: {e}") + return [] + + +# Singleton instance +tiktok_api = TikTokAPIService() diff --git a/backend/debug_search_page.png b/backend/debug_search_page.png new file mode 100644 index 0000000..a1d54f6 Binary files /dev/null and b/backend/debug_search_page.png differ diff --git a/backend/debug_search_response.json b/backend/debug_search_response.json new file mode 100644 index 0000000..d88de7c --- /dev/null +++ b/backend/debug_search_response.json @@ -0,0 +1,224 @@ +{ + "url": "https://www.tiktok.com/api/search/general/preview/?WebIdLastTime=1769093917&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true&data_collection_enabled=false&device_id=7598200499679430161&device_platform=web_pc&focus_state=true&from_page=search&history_len=1&is_fullscreen=false&is_page_visible=true&keyword=nhac%20remix%20tiktok&odinId=6884525631502042113&os=mac&priority_region=&referer=®ion=VN&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=false&verifyFp=verify_mkpkve4d_fPPCnl5r_r0Lr_46Q3_AsYF_lR14fMWZsZMl&webcast_language=en&msToken=6T21t7jo6fm_ITwUxjlhK5GGInqEsRYFBRZiOyEUPnL1St1w9MD8crbYGJ8wlCk76_UVkpVizHkwuTjbBoww7WFssA3i4uRZzgdi1gvMFfEJhTV50UxIw2gF12nkAlOBndi3jtmlv3XfqHMVLsGk0Rzr0ZU=&X-Bogus=DFSzKwVOqtiANaXRC-2QRw2J46BB&X-Gnarly=MHc7lTViVSeVG3dkuRJQtgAXHUz9/Hwvka4GF43bNkiS0Ol0Doih0uap9tyTElKeSTcHXzppwZ612o5wKSM6sZarWp7RIibhe4sWM8x9FemHt3l0ZL-rO9cI3k0QklEO6XFi8IzWC0u-Vaea/Tq18GzPGftEuvLcRvat/txAY7EnXV2/ExdUN4u2WXiEixBvaFr2rp1dEQY/CoEVs6j0tNrKonpsIGbhLXlTRmYAlPnbKe/cgBSe4FmUqwP8vmoSy2Y95J9AgrMZrss29koNPl2xZ4e2Fi9z/hIhVlSA8o/T0D2TE8ihpEOWRLhaKTQ7Fx4NMS6F6k==", + "response": { + "sug_list": [ + { + "pos": [ + { + "begin": 0, + "end": 1 + }, + { + "begin": 3, + "end": 16 + } + ], + "content": "nh\u1ea1c remix tiktok hay nh\u1ea5t", + "sug_type": "", + "word_record": { + "group_id": "990422283496914074", + "words_position": 0, + "words_content": "nh\u1ea1c remix tiktok hay nh\u1ea5t", + "words_source": "sug" + }, + "extra_info": { + "cut_query": "[\"nhac\",\"remix\",\"tiktok\",\"hay\",\"nh\u1ea5t\"]", + "is_history_sug": "0", + "is_personalized": "1", + "lang": "vi", + "recall_reason": "tiktok_index_global_active_7d_query|tiktok_index_experience_decision_query|tiktok_awesome_sug_query|tiktok_orion_query|tiktok_index_active_7d_query|tiktok_orion_search_session|darwin_session_qq_14d_recall" + }, + "rich_sug_sec_pos": null, + "highlight_pos": null + }, + { + "pos": [ + { + "begin": 0, + "end": 16 + } + ], + "content": "nhac remix tiktok 1 tieng", + "sug_type": "", + "word_record": { + "group_id": "5221655059115435499", + "words_position": 1, + "words_content": "nhac remix tiktok 1 tieng", + "words_source": "sug" + }, + "extra_info": { + "cut_query": "[\"nhac\",\"remix\",\"tiktok\",\"1\",\"tieng\"]", + "is_history_sug": "0", + "is_personalized": "1", + "lang": "vi", + "recall_reason": "tiktok_index_active_7d_query|darwin_session_qq_14d_recall|tiktok_orion_search_session|tiktok_orion_query|tiktok_index_global_active_7d_query|tiktok_awesome_sug_query" + }, + "rich_sug_sec_pos": null, + "highlight_pos": null + }, + { + "pos": [ + { + "begin": 0, + "end": 16 + } + ], + "content": "nhac remix tiktok", + "sug_type": "", + "word_record": { + "group_id": "3810839298439660933", + "words_position": 2, + "words_content": "nhac remix tiktok", + "words_source": "sug" + }, + "extra_info": { + "cut_query": "[\"nhac\",\"remix\",\"tiktok\"]", + "is_personalized": "1", + "lang": "vi", + "recall_reason": "tiktok_awesome_sug_query|tiktok_index_hot_query|tiktok_orion_query|origin_query|tiktok_orion_search_session|tiktok_index_global_active_7d_query|orion_qse_recall|tiktok_index_active_7d_query|darwin_session_qq_14d_recall" + }, + "rich_sug_sec_pos": null, + "highlight_pos": null + }, + { + "pos": [ + { + "begin": 0, + "end": 9 + } + ], + "content": "nhac remix", + "sug_type": "", + "word_record": { + "group_id": "7634056513915263483", + "words_position": 3, + "words_content": "nhac remix", + "words_source": "sug" + }, + "extra_info": { + "cut_query": "[\"nhac\",\"remix\"]", + "is_personalized": "1", + "lang": "vi", + "recall_reason": "darwin_session_qq_14d_recall|orion_qse_recall|tiktok_orion_search_session" + }, + "rich_sug_sec_pos": null, + "highlight_pos": null + }, + { + "pos": [ + { + "begin": 0, + "end": 16 + } + ], + "content": "nhac remix tiktok hot", + "sug_type": "", + "word_record": { + "group_id": "8812269330015395678", + "words_position": 4, + "words_content": "nhac remix tiktok hot", + "words_source": "sug" + }, + "extra_info": { + "cut_query": "[\"nhac\",\"remix\",\"tiktok\",\"hot\"]", + "is_personalized": "1", + "lang": "vi", + "recall_reason": "tiktok_orion_query|tiktok_orion_search_session|tiktok_index_global_active_7d_query|tiktok_index_active_7d_query" + }, + "rich_sug_sec_pos": null, + "highlight_pos": null + }, + { + "pos": [ + { + "begin": 0, + "end": 16 + } + ], + "content": "nhac remix tiktok trung quoc", + "sug_type": "", + "word_record": { + "group_id": "1028885005219042853", + "words_position": 5, + "words_content": "nhac remix tiktok trung quoc", + "words_source": "sug" + }, + "extra_info": { + "cut_query": "[\"nhac\",\"remix\",\"tiktok\",\"trung\",\"quoc\"]", + "is_personalized": "1", + "lang": "vi", + "recall_reason": "tiktok_orion_query|tiktok_index_global_active_7d_query|tiktok_awesome_sug_query|tiktok_orion_search_session|darwin_session_qq_14d_recall|tiktok_index_active_7d_query" + }, + "rich_sug_sec_pos": null, + "highlight_pos": null + }, + { + "pos": [ + { + "begin": 0, + "end": 16 + } + ], + "content": "nhac remix tiktok chill", + "sug_type": "", + "word_record": { + "group_id": "6635576608389413344", + "words_position": 6, + "words_content": "nhac remix tiktok chill", + "words_source": "sug" + }, + "extra_info": { + "cut_query": "[\"nhac\",\"remix\",\"tiktok\",\"chill\"]", + "is_personalized": "1", + "lang": "vi", + "recall_reason": "tiktok_index_global_active_7d_query|tiktok_index_active_7d_query|darwin_session_qq_14d_recall|tiktok_awesome_sug_query|tiktok_orion_search_session|tiktok_orion_query" + }, + "rich_sug_sec_pos": null, + "highlight_pos": null + }, + { + "pos": [ + { + "begin": 0, + "end": 16 + } + ], + "content": "nhac remix tiktok trend", + "sug_type": "", + "word_record": { + "group_id": "7722580097107243844", + "words_position": 7, + "words_content": "nhac remix tiktok trend", + "words_source": "sug" + }, + "extra_info": { + "cut_query": "[\"nhac\",\"remix\",\"tiktok\",\"trend\"]", + "is_personalized": "1", + "lang": "vi", + "recall_reason": "tiktok_awesome_sug_query|tiktok_index_global_active_7d_query|tiktok_index_active_7d_query|tiktok_orion_query|darwin_session_qq_14d_recall|tiktok_orion_search_session" + }, + "rich_sug_sec_pos": null, + "highlight_pos": null + } + ], + "status_code": 0, + "status_msg": "", + "rid": "20260512101805F44BF93D662559B8A671", + "words_query_record": { + "info": "{}", + "words_source": "sug", + "query_id": "" + }, + "extra": { + "now": 1778552285000, + "logid": "20260512101805F44BF93D662559B8A671", + "fatal_item_ids": [], + "search_request_id": "", + "api_debug_info": null + }, + "log_pb": { + "impr_id": "20260512101805F44BF93D662559B8A671" + }, + "user_input_query": "nhac remix tiktok" + } +} \ No newline at end of file diff --git a/backend/main.py b/backend/main.py index 61d7cf0..b4e1232 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,3 +1,11 @@ +import sys +import asyncio + +# CRITICAL: Set Windows event loop policy BEFORE any other imports +# Playwright requires ProactorEventLoop for subprocess support on Windows +if sys.platform == "win32": + asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) + from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles @@ -5,12 +13,7 @@ from fastapi.responses import FileResponse from contextlib import asynccontextmanager from pathlib import Path from api.routes import auth, feed, download, following, config, user -import sys -import asyncio -# Force Proactor on Windows for Playwright -if sys.platform == "win32": - asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) @asynccontextmanager async def lifespan(app: FastAPI): diff --git a/backend/run_windows.py b/backend/run_windows.py new file mode 100644 index 0000000..e52d368 --- /dev/null +++ b/backend/run_windows.py @@ -0,0 +1,26 @@ +""" +Windows-compatible startup script for PureStream. +Sets ProactorEventLoop policy BEFORE uvicorn imports anything. +""" +import sys +import asyncio + +# CRITICAL: Must be set before importing uvicorn or any async code +if sys.platform == "win32": + asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) + # Also create the loop early + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + print(f"DEBUG: Forced ProactorEventLoop: {type(loop)}") + +# Now import and run uvicorn +import uvicorn + +if __name__ == "__main__": + uvicorn.run( + "main:app", + host="0.0.0.0", + port=8002, + reload=False, # Disabled: reload subprocess loses ProactorEventLoop on Windows + loop="asyncio" # Use asyncio, which should now use our ProactorEventLoop + ) diff --git a/crawl_debug.html b/crawl_debug.html new file mode 100644 index 0000000..de3ce69 --- /dev/null +++ b/crawl_debug.html @@ -0,0 +1,14 @@ + + + + TikTok - Make Your Day + + + + + +

Videos

+ + + +
\ No newline at end of file diff --git a/crawl_debug.md b/crawl_debug.md new file mode 100644 index 0000000..907ad16 --- /dev/null +++ b/crawl_debug.md @@ -0,0 +1,7 @@ +Top +Users +Videos +LIVE +Videos +Log in +Log in diff --git a/debug_search_page.html b/debug_search_page.html new file mode 100644 index 0000000..2a8c38b --- /dev/null +++ b/debug_search_page.html @@ -0,0 +1,731 @@ +Find 'hot trend' on TikTok | TikTok Search
Search
You may like
thư viện pháp luật
Diệp Không Sao
Trần Lê Vĩnh Đam Lên Tiếng Xin Lỗi
Vũ Thị Quỳnh Anh
Lê Thị Khánh Huyền
hongthitichcuc
runglaimohop
72 phép thể thao
Get reminded to take a break from TikTok after a period of uninterrupted screen time.Learn more
0m
5m
10m
15m
20m
25m
30m
35m
40m
45m
50m
55m
60m

Screen time breaks

Break reminders help you feel more mindful and balanced on TikTok.

Schedule a break
Get reminded to take a break after a period of uninterrupted screen time
Tailor your experience
Snooze to get reminded again or edit future reminders

To support your well-being, your daily screen time is set to 1 hour

We’ll let you know if your time is up so it’s easier to log off
You can manage your daily screen time in Settings and privacy
Manage daily screen time

Ready to close TikTok?

You’ve spent 0m on TikTok today. Close it to stay within your daily time, or enter the passcode 1234 to return to TikTok.

\ No newline at end of file diff --git a/debug_search_page.png b/debug_search_page.png new file mode 100644 index 0000000..7e7a36f Binary files /dev/null and b/debug_search_page.png differ diff --git a/debug_search_response.json b/debug_search_response.json new file mode 100644 index 0000000..68122b1 --- /dev/null +++ b/debug_search_response.json @@ -0,0 +1,45 @@ +{ + "url": "https://www.tiktok.com/api/search/suggest/guide/?WebIdLastTime=1758119023&aid=1988&app_language=en&app_name=tiktok_web&browser_language=en-US&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%29&channel=tiktok_web&cookie_enabled=true¤t_placeholder=&data_collection_enabled=true&device_id=7551063687516980743&device_platform=web_mobile&focus_state=true&from_group_id=&from_page=search&history_len=1&history_list_v2=%25255B%25255D&is_fullscreen=false&is_page_visible=true&os=ios&priority_region=VN&referer=®ion=VN&req_source=webapp_search_blank_page&screen_height=720&screen_width=1280&tz_name=Etc%2FGMT-7&user_is_login=true&verifyFp=verify_mjvcbi31_l3mxUEeU_ykis_4x6z_859S_8zEFmNseEnJU&webcast_language=en", + "response": { + "data": [ + { + "word": "th\u01b0 vi\u1ec7n ph\u00e1p lu\u1eadt", + "group_id": "2958109486559469237", + "word_type": "19" + }, + { + "word": "Di\u1ec7p Kh\u00f4ng Sao", + "group_id": "1345785342942469512" + }, + { + "word": "Tr\u1ea7n L\u00ea V\u0129nh \u0110am L\u00ean Ti\u1ebfng Xin L\u1ed7i", + "group_id": "7348036468917002150" + }, + { + "word": "V\u0169 Th\u1ecb Qu\u1ef3nh Anh", + "group_id": "5302181352124914202" + }, + { + "word": "L\u00ea Th\u1ecb Kh\u00e1nh Huy\u1ec1n", + "group_id": "7033481489138032483" + }, + { + "word": "hongthitichcuc", + "group_id": "114505717075702429", + "word_type": "15" + }, + { + "word": "runglaimohop", + "group_id": "3601732212843243866", + "word_type": "19" + }, + { + "word": "72 ph\u00e9p th\u1ec3 thao", + "group_id": "2020036794035663673" + } + ], + "status_code": 0, + "status_msg": "", + "log_id": "2026012300212652CB07ABCF014274BC0E" + } +} \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..7974d69 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,24 @@ +# PureStream Development Docker Compose +# Uses Dockerfile.dev which COPIES files to avoid Synology Drive filesystem issues + +services: + backend: + container_name: purestream_dev + build: + context: . + dockerfile: Dockerfile.dev + ports: + - "8002:8002" + volumes: + # Only mount data directories (not code) + - purestream_cache:/app/cache + - purestream_session:/app/session + shm_size: '2gb' + +volumes: + purestream_cache: + purestream_session: + + # NOTE: + # - Frontend is served by backend at http://localhost:8002 + # - Code changes require rebuild: docker-compose -f docker-compose.dev.yml up --build diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6a9e031..6d4a25b 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12,6 +12,7 @@ "axios": "^1.13.2", "clsx": "^2.1.1", "framer-motion": "^12.23.26", + "hls.js": "^1.6.15", "lucide-react": "^0.561.0", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -81,6 +82,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1409,6 +1411,7 @@ "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -1426,6 +1429,7 @@ "integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" @@ -1486,6 +1490,7 @@ "integrity": "sha512-3xP4XzzDNQOIqBMWogftkwxhg5oMKApqY0BAflmLZiFYHqyhSOxv/cd/zPQLTcCXr4AkaKb25joocY0BD1WC6A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.51.0", "@typescript-eslint/types": "8.51.0", @@ -1737,6 +1742,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1959,6 +1965,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -2364,6 +2371,7 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -2895,6 +2903,12 @@ "node": ">= 0.4" } }, + "node_modules/hls.js": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.15.tgz", + "integrity": "sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA==", + "license": "Apache-2.0" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3007,6 +3021,7 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -3507,6 +3522,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -3702,6 +3718,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -3714,6 +3731,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -4121,6 +4139,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -4186,6 +4205,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4279,6 +4299,7 @@ "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", diff --git a/frontend/package.json b/frontend/package.json index 6acafbb..00ed7ea 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,6 +14,7 @@ "axios": "^1.13.2", "clsx": "^2.1.1", "framer-motion": "^12.23.26", + "hls.js": "^1.6.15", "lucide-react": "^0.561.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 1738178..71a514f 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -23,7 +23,9 @@ import { Feed } from './components/Feed'; const Dashboard = () => { return (
- + + } /> +
) } @@ -44,7 +46,7 @@ function App() { } /> } /> diff --git a/frontend/src/components/Feed.tsx b/frontend/src/components/Feed.tsx index d8502fe..f9d4b3f 100644 --- a/frontend/src/components/Feed.tsx +++ b/frontend/src/components/Feed.tsx @@ -1,5 +1,7 @@ import React, { useState, useEffect, useRef } from 'react'; import { VideoPlayer } from './VideoPlayer'; +import { SkeletonFeed } from './SkeletonFeed'; +import { Sidebar } from './Sidebar'; import type { Video, UserProfile } from '../types'; import axios from 'axios'; import { API_BASE_URL } from '../config'; @@ -8,7 +10,7 @@ import { videoPrefetcher } from '../utils/videoPrefetch'; import { feedLoader } from '../utils/feedLoader'; type ViewState = 'login' | 'loading' | 'feed'; -type TabType = 'foryou' | 'following' | 'search'; +type TabType = 'foryou' | 'search' | 'following' | 'profile'; // Suggested categories for Following tab const SUGGESTED_CATEGORIES = [ @@ -109,7 +111,6 @@ export const Feed: React.FC = () => { const [suggestedLimit, setSuggestedLimit] = useState(12); const [showHeader, setShowHeader] = useState(false); const [isFollowingFeed, setIsFollowingFeed] = useState(false); - const [isVideoPaused, setIsVideoPaused] = useState(true); // Tracks if current video is paused (controls UI visibility) // Lazy load - start with 12 // Search state @@ -133,7 +134,7 @@ export const Feed: React.FC = () => { // Loading timer state - shows elapsed time during video crawling const [loadingElapsed, setLoadingElapsed] = useState(0); - const loadingTimerRef = useRef(null); + const loadingTimerRef = useRef | null>(null); // Start/stop loading timer helper functions const startLoadingTimer = () => { @@ -200,11 +201,9 @@ export const Feed: React.FC = () => { const isRightSwipe = distanceX < -minSwipeDistance; if (isLeftSwipe) { - if (activeTab === 'foryou') { setActiveTab('following'); setShowHeader(true); } - else if (activeTab === 'following') { setActiveTab('search'); setShowHeader(true); } + if (activeTab === 'foryou') { setActiveTab('search'); setShowHeader(true); } } else if (isRightSwipe) { - if (activeTab === 'search') { setActiveTab('following'); setShowHeader(true); } - else if (activeTab === 'following') { setActiveTab('foryou'); setShowHeader(true); } + if (activeTab === 'search') { setActiveTab('foryou'); setShowHeader(true); } } else { // Minor movement - Do nothing (Tap is handled by video click) } @@ -226,12 +225,12 @@ export const Feed: React.FC = () => { } }, [viewState]); - // Load suggested profiles when switching to Following tab + // Load suggested profiles on first load useEffect(() => { - if (activeTab === 'following' && suggestedProfiles.length === 0 && !loadingProfiles) { + if (suggestedProfiles.length === 0 && !loadingProfiles) { loadSuggestedProfiles(); } - }, [activeTab]); + }, []); // Keyboard arrow navigation for desktop useEffect(() => { @@ -243,12 +242,10 @@ export const Feed: React.FC = () => { if (e.key === 'ArrowRight') { e.preventDefault(); - if (activeTab === 'foryou') setActiveTab('following'); - else if (activeTab === 'following') setActiveTab('search'); + if (activeTab === 'foryou') setActiveTab('search'); } else if (e.key === 'ArrowLeft') { e.preventDefault(); - if (activeTab === 'search') setActiveTab('following'); - else if (activeTab === 'following') setActiveTab('foryou'); + if (activeTab === 'search') setActiveTab('foryou'); } }; @@ -332,24 +329,6 @@ export const Feed: React.FC = () => { try { const { data } = await axios.get(`${API_BASE_URL}/following`); setFollowing(data); - - // If on following tab, load actual feed instead of just profiles - if (activeTab === 'following') { - setIsFetching(true); - try { - const res = await axios.get(`${API_BASE_URL}/following/feed`); - if (res.data && res.data.length > 0) { - setVideos(res.data); - setCurrentIndex(0); - setIsFollowingFeed(true); - setActiveTab('foryou'); // Switch to feed view but with following content - } - } catch (e) { - console.error('Error loading following feed:', e); - } finally { - setIsFetching(false); - } - } } catch (error) { console.error('Error loading following list:', error); } @@ -516,7 +495,7 @@ export const Feed: React.FC = () => { // Pause the currently playing video by switching active tab temporarily // This triggers VideoPlayer's isActive=false which pauses the video - setActiveTab('following'); // Switch away from 'foryou' to pause video + setActiveTab('search'); // Switch away from 'foryou' to pause video try { // Fetch user profile data first (show header ASAP) @@ -615,9 +594,29 @@ export const Feed: React.FC = () => { const inputToSearch = overrideInput || searchInput; if (!inputToSearch.trim() || isSearching) return; + const cacheKey = `search_${inputToSearch.toLowerCase().trim()}`; + + // Check cache first (only for new searches, not "load more") + if (!isMore) { + const cached = localStorage.getItem(cacheKey); + if (cached) { + try { + const { results, timestamp } = JSON.parse(cached); + // Use cache if less than 5 minutes old + if (Date.now() - timestamp < 5 * 60 * 1000 && results.length > 0) { + setSearchResults(results); + setSearchHasMore(results.length >= 20); + console.log('Using cached results for:', inputToSearch); + return; + } + } catch (e) { + console.log('Cache parse error, fetching fresh'); + } + } + } + setIsSearching(true); setError(null); - startLoadingTimer(); // Start countdown timer // Clear previous results immediately if starting a new search if (!isMore) { @@ -643,10 +642,11 @@ export const Feed: React.FC = () => { } } - // Step 2: Always fetch related/suggested videos progressively + // Step 2: Fetch videos progressively - show immediately as they arrive const batchSize = 10; let totalFetched = 0; const maxVideos = 50; + let allFetchedVideos: Video[] = []; while (totalFetched < maxVideos) { const endpoint = `${API_BASE_URL}/user/search?query=${encodeURIComponent(cleanQuery)}&limit=${batchSize}&cursor=${startCursor + totalFetched}`; @@ -658,11 +658,12 @@ export const Feed: React.FC = () => { break; } - // Filter out duplicates before adding + // Filter out duplicates and add immediately (progressive display) setSearchResults(prev => { const existingIds = new Set(prev.map(v => v.id)); const uniqueNewVideos = newVideos.filter((v: Video) => !existingIds.has(v.id)); - return isMore || totalFetched > 0 ? [...prev, ...uniqueNewVideos] : uniqueNewVideos; + allFetchedVideos = [...prev, ...uniqueNewVideos]; + return allFetchedVideos; }); totalFetched += newVideos.length; setSearchCursor(data.cursor || startCursor + totalFetched); @@ -677,12 +678,19 @@ export const Feed: React.FC = () => { setSearchHasMore(true); } + // Cache the results + if (!isMore && allFetchedVideos.length > 0) { + localStorage.setItem(cacheKey, JSON.stringify({ + results: allFetchedVideos, + timestamp: Date.now() + })); + } + } catch (err) { console.error('Search failed:', err); setError('Search failed. Please try again.'); } finally { setIsSearching(false); - stopLoadingTimer(); // Stop countdown timer } }; @@ -817,697 +825,674 @@ export const Feed: React.FC = () => { // ========== LOADING VIEW ========== if (viewState === 'loading') { - return ( -
-
-
-
-
-
-
- - - -
-
-
-

Connecting to TikTok...

-
- ); + return ; } // ========== FEED VIEW WITH TABS ========== return ( -
- {/* Tab Navigation */} - {/* Tab Navigation - Hidden by default, show on toggle/swipe */} -
-
- - - -
-
+
+ {/* Desktop Sidebar */} + { + if (tab === 'profile') { + // Handle profile click if needed, or just open current user profile + } else { + setActiveTab(tab); + if (tab === 'foryou' && videos.length === 0) loadFeed(); + } + }} + onLogout={handleLogout} + /> - {/* Logout Button - Left Corner Icon */} - {/* Logout Button / Back Button Logic */} - {/* "make the go back button on the top right conner, replace, swith from the log out button" */} - - {!isInSearchPlayback ? ( - - ) : null} - - {/* FOR YOU TAB */} -
- {/* Video Counter - Shows loading state with blink effect */} -
- - {isFetching ? ( - - Loading {currentIndex + 1}/{videos.length}... - - ) : ( - <> - {currentIndex + 1} / {videos.length} - {hasMore && +} - - )} - -
- - {/* Video Feed */} -
- {videos.map((video, index) => ( -
- {Math.abs(index - currentIndex) <= 1 ? ( - openProfileView(author)} - isMuted={isMuted} - onMuteToggle={() => setIsMuted(prev => !prev)} - onPauseChange={(paused) => { - setIsVideoPaused(paused); - setShowHeader(paused); // Show top bar when video is paused - }} - /> - ) : ( - /* Lightweight Placeholder */ -
- {video.thumbnail ? ( - <> - -
-
-
- - ) : ( -
- )} -
- )} -
- ))} -
-
- - {/* FOLLOWING TAB - Minimal Style */} -
-
- - {/* Minimal Add Input */} -
- setNewFollowInput(e.target.value)} - onKeyDown={(e) => e.key === 'Enter' && handleAddFollow()} - placeholder="Add @username to follow..." - className="w-full bg-transparent border-b-2 border-white/20 focus:border-white/60 px-0 py-4 text-white text-lg focus:outline-none transition-colors placeholder:text-white/30" - /> - -
- - {/* My Following - Minimal chips */} - {following.length > 0 && ( -
-

Following

-
- {following.map(user => ( -
- - -
- ))} -
-
- )} - - {/* Trending - 2 columns */} -
-

Trending

-
- {SUGGESTED_CATEGORIES.map(cat => ( - - ))} -
-
- - {/* Suggested Accounts - Compact avatars */} -
-

Suggested

- - {loadingProfiles && ( -
-
-
- )} - -
- {(suggestedProfiles.length > 0 ? suggestedProfiles : SUGGESTED_ACCOUNTS.map(a => ({ username: a.username.replace('@', ''), nickname: a.label }))).slice(0, suggestedLimit).map((profile: UserProfile | { username: string; nickname: string }) => { - const username = 'username' in profile ? profile.username : ''; - - return ( - - ); - })} -
- - {/* Load More Button */} - {suggestedLimit < SUGGESTED_ACCOUNTS.length && ( - - )} -
-
-
- - {/* SEARCH TAB */} -
-
- {/* Minimal Search Input */} -
- setSearchInput(e.target.value)} - onKeyDown={(e) => e.key === 'Enter' && handleSearch()} - placeholder="Search..." - className="w-full bg-transparent border-b-2 border-white/20 focus:border-white/60 px-0 py-4 text-white text-lg focus:outline-none transition-colors placeholder:text-white/30" - disabled={isSearching} - /> + {/* Tab Navigation (Mobile Only) */} + {/* Tab Navigation - Hidden by default, show on toggle/swipe */} +
+
-

@username · video link · keyword

+ +
+
+ + {/* Logout Button - Left Corner Icon */} + {/* Logout Button / Back Button Logic */} + {/* "make the go back button on the top right conner, replace, swith from the log out button" */} + + {!isInSearchPlayback ? ( + + ) : null} + + {/* FOR YOU TAB */} +
+ {/* Video Counter - Shows loading state with blink effect */} +
+ + {isFetching ? ( + + Loading {currentIndex + 1}/{videos.length}... + + ) : ( + <> + {currentIndex + 1} / {videos.length} + {hasMore && +} + + )} +
- {/* Loading Animation - Skeleton Grid with Timer */} - {isSearching && ( -
- {/* Loading Timer Display */} -
-
- - Loading videos... - - - {Math.floor(loadingElapsed / 60)}:{(loadingElapsed % 60).toString().padStart(2, '0')} - + {/* Video Feed */} +
+ {videos.map((video, index) => ( +
+ {Math.abs(index - currentIndex) <= 1 ? ( + openProfileView(author)} + isMuted={isMuted} + onMuteToggle={() => setIsMuted(prev => !prev)} + onPauseChange={(paused) => { + setShowHeader(paused); // Show top bar when video is paused + }} + /> + ) : ( + /* Lightweight Placeholder */ +
+ {video.thumbnail ? ( + <> + +
+
+
+ + ) : ( +
+ )} +
+ )}
-
- {[...Array(12)].map((_, i) => ( -
- ))} -
-
- )} + ))} +
+
- {/* Empty State / Suggestions */} - {!isSearching && searchResults.length === 0 && ( - <> - {/* Trending */} + {/* FOLLOWING TAB - Minimal Style */} +
+
+ + {/* Minimal Add Input */} +
+ setNewFollowInput(e.target.value)} + onKeyDown={(e) => e.key === 'Enter' && handleAddFollow()} + placeholder="Add @username to follow..." + className="w-full bg-transparent border-b-2 border-white/20 focus:border-white/60 px-0 py-4 text-white text-lg focus:outline-none transition-colors placeholder:text-white/30" + /> + +
+ + {/* My Following - Minimal chips */} + {following.length > 0 && (
-

Trending

-
- {SUGGESTED_CATEGORIES.map(cat => ( - +

Following

+
+ {following.map(user => ( +
+ + +
))}
- - )} + )} - {/* Matched User Profile Card */} - {searchMatchedUser && ( -
-
- {/* Avatar */} - {searchMatchedUser.avatar ? ( - {searchMatchedUser.username} - ) : ( -
- {searchMatchedUser.username.charAt(0).toUpperCase()} -
- )} - - {/* User Info */} -
-

- @{searchMatchedUser.username} - {searchMatchedUser.verified && ( - - - - )} -

- {searchMatchedUser.nickname && ( -

{searchMatchedUser.nickname}

- )} -
- {searchMatchedUser.followers !== undefined && ( - - {searchMatchedUser.followers >= 1000000 - ? `${(searchMatchedUser.followers / 1000000).toFixed(1)}M` - : searchMatchedUser.followers >= 1000 - ? `${(searchMatchedUser.followers / 1000).toFixed(0)}K` - : searchMatchedUser.followers} followers - - )} - {searchMatchedUser.likes !== undefined && ( - - {searchMatchedUser.likes >= 1000000 - ? `${(searchMatchedUser.likes / 1000000).toFixed(1)}M` - : searchMatchedUser.likes >= 1000 - ? `${(searchMatchedUser.likes / 1000).toFixed(0)}K` - : searchMatchedUser.likes} likes - - )} -
-
- - {/* View Profile Button */} - -
-
- )} - - {/* Search Results */} - {searchResults.length > 0 && ( -
-
- {searchResults.length} videos -
- {searchInput.startsWith('@') && ( - - )} + {/* Trending - 2 columns */} +
+

Trending

+
+ {SUGGESTED_CATEGORIES.map(cat => ( -
-
- -
- {searchResults.map((video) => ( -
{ - if (!video.url) return; - setOriginalVideos(videos); - setOriginalIndex(currentIndex); - const playableVideos = searchResults.filter(v => v.url); - setVideos(playableVideos); - const newIndex = playableVideos.findIndex(v => v.id === video.id); - setCurrentIndex(newIndex >= 0 ? newIndex : 0); - setIsInSearchPlayback(true); - setActiveTab('foryou'); - }} - > - {video.thumbnail ? ( - {video.author} - ) : ( -
-
-
- )} -
-

@{video.author}

-
-
))}
- )} -
-
- {/* In-Search Back Button */} - {isInSearchPlayback && ( - - )} + {/* Suggested Accounts - Compact avatars */} +
+

Suggested

- {/* Profile View Overlay */} - {profileViewUsername && ( -
- {/* Profile Header */} -
-
-
- {/* Back Button */} - - - {/* Avatar */} - {profileUserData?.avatar ? ( - {profileViewUsername} - ) : ( -
- {profileViewUsername.charAt(0).toUpperCase()} -
- )} - - {/* User Info */} -
-

- @{profileViewUsername} -

- {profileUserData?.nickname && ( -

{profileUserData.nickname}

- )} -
- {profileUserData?.followers !== undefined && ( - - {profileUserData.followers >= 1000000 - ? `${(profileUserData.followers / 1000000).toFixed(1)}M` - : profileUserData.followers >= 1000 - ? `${(profileUserData.followers / 1000).toFixed(0)}K` - : profileUserData.followers} followers - - )} - {profileVideos.length > 0 && ( - - {profileVideos.length} videos - - )} -
-
- - {/* Follow Button */} - -
-
-
- - {/* Video Grid */} -
-
- {/* Loading Skeleton (Initial Load) with Timer */} - {profileLoading && profileVideos.length === 0 && ( -
- {/* Loading Timer Display */} -
-
- - Loading profile... - - - {Math.floor(loadingElapsed / 60)}:{(loadingElapsed % 60).toString().padStart(2, '0')} - -
-
- {[...Array(12)].map((_, i) => ( -
- ))} -
+ {loadingProfiles && ( +
+
)} - {/* Video Grid */} - {profileVideos.length > 0 && ( +
+ {(suggestedProfiles.length > 0 ? suggestedProfiles : SUGGESTED_ACCOUNTS.map(a => ({ username: a.username.replace('@', ''), nickname: a.label }))).slice(0, suggestedLimit).map((profile: UserProfile | { username: string; nickname: string }) => { + const username = 'username' in profile ? profile.username : ''; + + return ( + + ); + })} +
+ + {/* Load More Button */} + {suggestedLimit < SUGGESTED_ACCOUNTS.length && ( + + )} +
+
+
+ + {/* SEARCH TAB */} +
+
+ {/* Minimal Search Input */} +
+ setSearchInput(e.target.value)} + onKeyDown={(e) => e.key === 'Enter' && handleSearch()} + placeholder="Search..." + className="w-full bg-transparent border-b-2 border-white/20 focus:border-white/60 px-0 py-4 text-white text-lg focus:outline-none transition-colors placeholder:text-white/30" + disabled={isSearching} + /> + +

@username · video link · keyword

+
+ + {/* Loading Spinner - Simple, shown alongside results */} + {isSearching && ( +
+
+ Loading... +
+ )} + + {/* Empty State / Suggestions */} + {!isSearching && searchResults.length === 0 && ( + <> + {/* Trending */} +
+

Trending

+
+ {SUGGESTED_CATEGORIES.map(cat => ( + + ))} +
+
+ + )} + + {/* Matched User Profile Card */} + {searchMatchedUser && ( +
+
+ {/* Avatar */} + {searchMatchedUser.avatar ? ( + {searchMatchedUser.username} + ) : ( +
+ {searchMatchedUser.username.charAt(0).toUpperCase()} +
+ )} + + {/* User Info */} +
+

+ @{searchMatchedUser.username} + {searchMatchedUser.verified && ( + + + + )} +

+ {searchMatchedUser.nickname && ( +

{searchMatchedUser.nickname}

+ )} +
+ {searchMatchedUser.followers !== undefined && ( + + {searchMatchedUser.followers >= 1000000 + ? `${(searchMatchedUser.followers / 1000000).toFixed(1)}M` + : searchMatchedUser.followers >= 1000 + ? `${(searchMatchedUser.followers / 1000).toFixed(0)}K` + : searchMatchedUser.followers} followers + + )} + {searchMatchedUser.likes !== undefined && ( + + {searchMatchedUser.likes >= 1000000 + ? `${(searchMatchedUser.likes / 1000000).toFixed(1)}M` + : searchMatchedUser.likes >= 1000 + ? `${(searchMatchedUser.likes / 1000).toFixed(0)}K` + : searchMatchedUser.likes} likes + + )} +
+
+ + {/* View Profile Button */} + +
+
+ )} + + {/* Search Results */} + {searchResults.length > 0 && ( +
+
+ {searchResults.length} videos +
+ {searchInput.startsWith('@') && ( + + )} + +
+
+
- {profileVideos.map((video) => ( + {searchResults.map((video) => (
{ if (!video.url) return; - // Save current state for back navigation setOriginalVideos(videos); setOriginalIndex(currentIndex); - // Set videos to profile videos and play - const playableVideos = profileVideos.filter(v => v.url); + const playableVideos = searchResults.filter(v => v.url); setVideos(playableVideos); const newIndex = playableVideos.findIndex(v => v.id === video.id); setCurrentIndex(newIndex >= 0 ? newIndex : 0); setIsInSearchPlayback(true); setActiveTab('foryou'); - closeProfileView(); }} > {video.thumbnail ? ( {video.description ) : (
-
+
)} - {/* Hover Overlay */} -
- - - +
+

@{video.author}

- {/* Views Badge */} - {video.views && ( -
- {video.views >= 1000000 - ? `${(video.views / 1000000).toFixed(1)}M` - : video.views >= 1000 - ? `${(video.views / 1000).toFixed(0)}K` - : video.views} -
- )}
))}
- )} - - {/* Loading More Indicator */} - {profileLoading && profileVideos.length > 0 && ( -
-
-
- )} - - {/* No More Videos */} - {!profileHasMore && profileVideos.length > 0 && ( -

No more videos

- )} - - {/* Empty State */} - {!profileLoading && profileVideos.length === 0 && ( -
-
- - - - -
-

No videos found

-
- )} -
+
+ )}
- )} + + {/* In-Search Back Button */} + {isInSearchPlayback && ( + + )} + + {/* Profile View Overlay */} + {profileViewUsername && ( +
+ {/* Profile Header */} +
+
+
+ {/* Back Button */} + + + {/* Avatar */} + {profileUserData?.avatar ? ( + {profileViewUsername} + ) : ( +
+ {profileViewUsername.charAt(0).toUpperCase()} +
+ )} + + {/* User Info */} +
+

+ @{profileViewUsername} +

+ {profileUserData?.nickname && ( +

{profileUserData.nickname}

+ )} +
+ {profileUserData?.followers !== undefined && ( + + {profileUserData.followers >= 1000000 + ? `${(profileUserData.followers / 1000000).toFixed(1)}M` + : profileUserData.followers >= 1000 + ? `${(profileUserData.followers / 1000).toFixed(0)}K` + : profileUserData.followers} followers + + )} + {profileVideos.length > 0 && ( + + {profileVideos.length} videos + + )} +
+
+ + {/* Follow Button */} + +
+
+
+ + {/* Video Grid */} +
+
+ {/* Loading Skeleton (Initial Load) with Timer */} + {profileLoading && profileVideos.length === 0 && ( +
+ {/* Loading Timer Display */} +
+
+ + Loading profile... + + + {Math.floor(loadingElapsed / 60)}:{(loadingElapsed % 60).toString().padStart(2, '0')} + +
+
+ {[...Array(12)].map((_, i) => ( +
+ ))} +
+
+ )} + + {/* Video Grid */} + {profileVideos.length > 0 && ( +
+ {profileVideos.map((video) => ( +
{ + if (!video.url) return; + // Save current state for back navigation + setOriginalVideos(videos); + setOriginalIndex(currentIndex); + // Set videos to profile videos and play + const playableVideos = profileVideos.filter(v => v.url); + setVideos(playableVideos); + const newIndex = playableVideos.findIndex(v => v.id === video.id); + setCurrentIndex(newIndex >= 0 ? newIndex : 0); + setIsInSearchPlayback(true); + setActiveTab('foryou'); + closeProfileView(); + }} + > + {video.thumbnail ? ( + {video.description + ) : ( +
+
+
+ )} + {/* Hover Overlay */} +
+ + + +
+ {/* Views Badge */} + {video.views && ( +
+ {video.views >= 1000000 + ? `${(video.views / 1000000).toFixed(1)}M` + : video.views >= 1000 + ? `${(video.views / 1000).toFixed(0)}K` + : video.views} +
+ )} +
+ ))} +
+ )} + + {/* Loading More Indicator */} + {profileLoading && profileVideos.length > 0 && ( +
+
+
+ )} + + {/* No More Videos */} + {!profileHasMore && profileVideos.length > 0 && ( +

No more videos

+ )} + + {/* Empty State */} + {!profileLoading && profileVideos.length === 0 && ( +
+
+ + + + +
+

No videos found

+
+ )} +
+
+
+ )} +
); }; diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx new file mode 100644 index 0000000..3666653 --- /dev/null +++ b/frontend/src/components/Sidebar.tsx @@ -0,0 +1,83 @@ +import React from 'react'; +import { Home, Search, Heart, LogOut } from 'lucide-react'; + +interface SidebarProps { + activeTab: 'foryou' | 'search' | 'profile'; + onTabChange: (tab: 'foryou' | 'search' | 'profile') => void; + onLogout?: () => void; +} + +export const Sidebar: React.FC = ({ activeTab, onTabChange, onLogout }) => { + return ( +
+ {/* Logo */} +
+
+

+ PureStream +

+
+ + {/* Nav Items */} +
+ } + label="For You" + isActive={activeTab === 'foryou'} + onClick={() => onTabChange('foryou')} + /> + } + label="Search" + isActive={activeTab === 'search'} + onClick={() => onTabChange('search')} + /> + {/* Placeholder for future features */} + } + label="Likes" + isActive={false} + onClick={() => { }} + /> +
+ + {/* Bottom Actions */} +
+ +
+
+ ); +}; + +interface NavItemProps { + icon: React.ReactNode; + label: string; + isActive: boolean; + onClick: () => void; +} + +const NavItem: React.FC = ({ icon, label, isActive, onClick }) => { + return ( + + ); +}; diff --git a/frontend/src/components/SkeletonFeed.tsx b/frontend/src/components/SkeletonFeed.tsx new file mode 100644 index 0000000..a794b81 --- /dev/null +++ b/frontend/src/components/SkeletonFeed.tsx @@ -0,0 +1,38 @@ +import React from 'react'; + +export const SkeletonFeed: React.FC = () => { + return ( +
+ {/* Main Video Area Skeleton */} +
+
+
+ + {/* Right Sidebar Action Buttons */} +
+ {[1, 2, 3, 4].map((_, i) => ( +
+
+
+
+ ))} +
+ + {/* Bottom Info Area */} +
+
+
+
+ + {/* Music Skeleton */} +
+
+
+
+
+ + {/* Overlay Gradient */} +
+
+ ); +}; diff --git a/frontend/src/components/UserCard.tsx b/frontend/src/components/UserCard.tsx new file mode 100644 index 0000000..551d50e --- /dev/null +++ b/frontend/src/components/UserCard.tsx @@ -0,0 +1,61 @@ + +import React, { useState } from 'react'; +import type { UserProfile } from '../types'; + +interface UserCardProps { + user: UserProfile; +} + +const UserCard: React.FC = ({ user }) => { + const [isExpanded, setIsExpanded] = useState(false); + + return ( +
+
+
+ {user.username} +
+

{user.nickname}

+

@{user.username}

+
+
+ +
+ {isExpanded && ( +
+
+
+

{user.followers?.toLocaleString()}

+

Followers

+
+
+

{user.following?.toLocaleString()}

+

Following

+
+
+

{user.likes?.toLocaleString()}

+

Likes

+
+
+ {user.bio && ( +
+

Bio

+

{user.bio}

+
+ )} +
+ )} +
+ ); +}; + +export default UserCard; diff --git a/frontend/src/components/VideoPlayer.tsx b/frontend/src/components/VideoPlayer.tsx index 8cb1578..725920e 100644 --- a/frontend/src/components/VideoPlayer.tsx +++ b/frontend/src/components/VideoPlayer.tsx @@ -4,12 +4,7 @@ import type { Video } from '../types'; import { API_BASE_URL } from '../config'; import { videoCache } from '../utils/videoCache'; -// Check if browser supports HEVC codec (Safari, Chrome 107+, Edge) -const supportsHEVC = (): boolean => { - if (typeof MediaSource === 'undefined') return false; - return MediaSource.isTypeSupported('video/mp4; codecs="hvc1"') || - MediaSource.isTypeSupported('video/mp4; codecs="hev1"'); -}; + interface HeartParticle { id: number; @@ -55,7 +50,7 @@ export const VideoPlayer: React.FC = ({ const [cachedUrl, setCachedUrl] = useState(null); const [codecError, setCodecError] = useState(false); // True if video codec not supported const lastTapRef = useRef(0); - const browserSupportsHEVC = useRef(supportsHEVC()); + const fullProxyUrl = `${API_BASE_URL}/feed/proxy?url=${encodeURIComponent(video.url)}`; const thinProxyUrl = video.cdn_url ? `${API_BASE_URL}/feed/thin-proxy?cdn_url=${encodeURIComponent(video.cdn_url)}` : null; @@ -154,15 +149,21 @@ export const VideoPlayer: React.FC = ({ const videoEl = e.target as HTMLVideoElement; const error = videoEl?.error; - // Check if this is a codec/decode error (MEDIA_ERR_DECODE = 3) + // Check if this is a codec/decode error (MEDIA_ERR_DECODE = 3, MEDIA_ERR_SRC_NOT_SUPPORTED = 4) if (error?.code === 3 || error?.code === 4) { console.log(`Codec error detected (code ${error.code}):`, error.message); - // Only show codec error if browser doesn't support HEVC - if (!browserSupportsHEVC.current) { - setCodecError(true); - setIsLoading(false); + + // Always fall back to full proxy which will transcode to H.264 + if (!useFallback) { + console.log('Codec not supported, falling back to full proxy (will transcode to H.264)...'); + setUseFallback(true); return; } + + // If even full proxy failed, show error + setCodecError(true); + setIsLoading(false); + return; } if (thinProxyUrl && !useFallback) { @@ -482,9 +483,9 @@ export const VideoPlayer: React.FC = ({ )}
- {/* Side Controls - Only show when video is paused */} + {/* Side Controls - Always visible on hover or when paused */}
{/* Follow Button */} @@ -505,6 +506,7 @@ export const VideoPlayer: React.FC = ({ e.stopPropagation()} className="w-12 h-12 flex items-center justify-center bg-white/10 hover:bg-white/20 backdrop-blur-xl border border-white/10 rounded-full text-white transition-all" title="Download" > diff --git a/frontend/src/config.ts b/frontend/src/config.ts index 38c325c..2b5fef4 100644 --- a/frontend/src/config.ts +++ b/frontend/src/config.ts @@ -1,3 +1 @@ -export const API_BASE_URL = import.meta.env.PROD - ? '/api' - : (import.meta.env.VITE_API_URL || 'http://localhost:8002/api'); +export const API_BASE_URL = '/api'; diff --git a/frontend/src/index.css b/frontend/src/index.css index d5e0c71..46be7b4 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -15,6 +15,30 @@ height: 100vh; height: 100dvh; } + + body { + @apply bg-[#0f0f15] text-white antialiased; + color-scheme: dark; + font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; + } +} + +@layer components { + .glass-panel { + @apply bg-white/5 backdrop-blur-xl border border-white/10; + } + + .glass-panel-hover { + @apply hover:bg-white/10 transition-colors duration-200; + } + + .btn-primary { + @apply bg-gradient-to-r from-violet-600 to-indigo-600 hover:from-violet-500 hover:to-indigo-500 text-white font-medium px-4 py-2 rounded-xl transition-all active:scale-95 shadow-lg shadow-indigo-500/20; + } + + .btn-ghost { + @apply hover:bg-white/10 text-gray-300 hover:text-white px-4 py-2 rounded-xl transition-all active:scale-95; + } } @layer utilities { @@ -33,33 +57,17 @@ display: none; /* Chrome, Safari and Opera */ } -} - -@layer utilities { - .scrollbar-hide::-webkit-scrollbar { - display: none; - } - - .scrollbar-hide { - -ms-overflow-style: none; - scrollbar-width: none; + + .text-shadow { + text-shadow: 0 2px 4px rgba(0,0,0,0.5); } } +/* Animations */ @keyframes shake { - - 0%, - 100% { - transform: translateX(0); - } - - 25% { - transform: translateX(-4px); - } - - 75% { - transform: translateX(4px); - } + 0%, 100% { transform: translateX(0); } + 25% { transform: translateX(-4px); } + 75% { transform: translateX(4px); } } .animate-shake { @@ -67,34 +75,25 @@ } @keyframes heart-float { - 0% { - opacity: 1; - transform: scale(0) rotate(-15deg); - } - - 25% { - opacity: 1; - transform: scale(1.2) rotate(10deg); - } - - 50% { - opacity: 0.8; - transform: scale(1) translateY(-30px) rotate(-5deg); - } - - 100% { - opacity: 0; - transform: scale(0.6) translateY(-80px) rotate(15deg); - } + 0% { opacity: 1; transform: scale(0) rotate(-15deg); } + 25% { opacity: 1; transform: scale(1.2) rotate(10deg); } + 50% { opacity: 0.8; transform: scale(1) translateY(-30px) rotate(-5deg); } + 100% { opacity: 0; transform: scale(0.6) translateY(-80px) rotate(15deg); } } .animate-heart-float { animation: heart-float 1s ease-out forwards; } -body { - @apply bg-black antialiased; - color-scheme: dark; +@keyframes shimmer { + 0% { background-position: -200% 0; } + 100% { background-position: 200% 0; } +} + +.skeleton-pulse { + background: linear-gradient(90deg, rgba(255,255,255,0.03) 25%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0.03) 75%); + background-size: 200% 100%; + animation: shimmer 1.5s infinite; } .artplayer-app { diff --git a/frontend/src/utils/videoPrefetch.ts b/frontend/src/utils/videoPrefetch.ts index 50c545f..415c95f 100644 --- a/frontend/src/utils/videoPrefetch.ts +++ b/frontend/src/utils/videoPrefetch.ts @@ -85,7 +85,8 @@ class VideoPrefetcher { return; } - const API_BASE_URL = 'http://localhost:8002/api'; // Hardcoded or imported from config + const API_BASE_URL_CONFIG = (await import('../config')).API_BASE_URL; + const API_BASE_URL = API_BASE_URL_CONFIG || 'http://localhost:8002/api'; // Fallback if import fails const fullProxyUrl = `${API_BASE_URL}/feed/proxy?url=${encodeURIComponent(video.url)}`; // Use thin proxy if available for better performance const thinProxyUrl = video.cdn_url ? `${API_BASE_URL}/feed/thin-proxy?cdn_url=${encodeURIComponent(video.cdn_url)}` : null; diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 8b0f57b..296640c 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -1,7 +1,17 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' -// https://vite.dev/config/ +// https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], + server: { + host: '0.0.0.0', // Allow access from outside the container + port: 5173, + proxy: { + '/api': { + target: 'http://localhost:8002', + changeOrigin: true, + }, + }, + }, }) diff --git a/manage_app.ps1 b/manage_app.ps1 new file mode 100644 index 0000000..c6db7f2 --- /dev/null +++ b/manage_app.ps1 @@ -0,0 +1,60 @@ +param ( + [string]$Action = "start" +) + +$BackendPort = 8002 +$FrontendPort = 5173 +$RootPath = Get-Location +$BackendDir = Join-Path $RootPath "backend" +$FrontendDir = Join-Path $RootPath "frontend" + +function Stop-App { + Write-Host "Stopping PureStream..." -ForegroundColor Yellow + $ports = @($BackendPort, $FrontendPort) + foreach ($port in $ports) { + $processes = Get-NetTCPConnection -LocalPort $port -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess -Unique + if ($processes) { + foreach ($pidVal in $processes) { + Write-Host "Killing process on port $port (PID: $pidVal)" -ForegroundColor Red + Stop-Process -Id $pidVal -Force -ErrorAction SilentlyContinue + } + } else { + Write-Host "No process found on port $port" -ForegroundColor Gray + } + } + Write-Host "Stopped." -ForegroundColor Green +} + +function Start-App { + # Check if ports are already in use + $backendActive = Get-NetTCPConnection -LocalPort $BackendPort -ErrorAction SilentlyContinue + $frontendActive = Get-NetTCPConnection -LocalPort $FrontendPort -ErrorAction SilentlyContinue + + if ($backendActive -or $frontendActive) { + Write-Host "Ports are already in use. Stopping existing instances..." -ForegroundColor Yellow + Stop-App + } + + Write-Host "Starting PureStream Backend..." -ForegroundColor Cyan + # Launch in a new CMD window so user can see logs and it stays open (/k) + Start-Process "cmd.exe" -ArgumentList "/k title PureStream Backend & cd /d `"$BackendDir`" & python run_windows.py" -WindowStyle Normal + + Write-Host "Starting PureStream Frontend..." -ForegroundColor Cyan + # Launch in a new CMD window + Start-Process "cmd.exe" -ArgumentList "/k title PureStream Frontend & cd /d `"$FrontendDir`" & npm run dev" -WindowStyle Normal + + Write-Host "PureStream is starting!" -ForegroundColor Green + Write-Host "Backend API: http://localhost:$BackendPort" + Write-Host "Frontend UI: http://localhost:$FrontendPort" +} + +switch ($Action.ToLower()) { + "stop" { Stop-App } + "start" { Start-App } + "restart" { Stop-App; Start-App } + default { + Write-Host "Usage: .\manage_app.ps1 [start|stop|restart]" -ForegroundColor Red + Write-Host "Defaulting to 'start'..." -ForegroundColor Yellow + Start-App + } +} diff --git a/run_debug_search.ps1 b/run_debug_search.ps1 new file mode 100644 index 0000000..05f6132 --- /dev/null +++ b/run_debug_search.ps1 @@ -0,0 +1,2 @@ +$env:PYTHONPATH = "c:\Users\Admin\Downloads\kv-tiktok\backend" +& "c:\Users\Admin\Downloads\kv-tiktok\.venv\Scripts\python.exe" tests/debug_search.py diff --git a/ssr_data.json b/ssr_data.json new file mode 100644 index 0000000..b545f1f --- /dev/null +++ b/ssr_data.json @@ -0,0 +1,6949 @@ +{ + "__DEFAULT_SCOPE__": { + "webapp.app-context": { + "language": "en", + "region": "VN", + "appId": 1180, + "appType": "t", + "user": { + "ftcUser": false, + "secUid": "MS4wLjABAAAAI5ZOTO27wsZegpfiXRnGAqxJtou9z-kAzkqo3aBFOqfT5I0Qb7oEiLJ_PY5_24jK", + "uid": "6884525631502042113", + "nickName": "khoa.vo", + "signature": "", + "uniqueId": "khoa.vo93", + "createTime": "0", + "hasLivePermission": true, + "roomId": "", + "region": "VN", + "avatarUri": [ + "https://p16-sign-sg.tiktokcdn.com/tos-alisg-avt-0068/f24ab17d5bb92269fbfeefcab00e359e~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=aa31250f&x-expires=1769270400&x-signature=QCbafp1ggBQC8uHEHylqe4nmWlU%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my", + "https://p9-sign-sg.tiktokcdn.com/tos-alisg-avt-0068/f24ab17d5bb92269fbfeefcab00e359e~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=aa99488c&x-expires=1769270400&x-signature=K80%2FMHHqcnZ%2BIChhkd5orZ%2B2uUs%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my" + ], + "isPrivateAccount": true, + "hasIMPermission": true, + "hasSearchPermission": true, + "storeRegion": "VN", + "suggestAccountBind": false, + "showPrivateBanner": false, + "showScheduleTips": false, + "longVideoMinutes": 60, + "longVideoPopupDisplayedStatus": { + "cache_ttl": "30" + }, + "ageGateRegion": "VN", + "ageGateTime": "1602928715570", + "userMode": 0, + "hasSearchLivePermission": true, + "proAccountInfo": { + "status": 0, + "analyticsOn": true, + "businessSuiteEntrance": false, + "downloadLink": {} + }, + "analyticsOn": true, + "redDot": [], + "photoSensitiveVideosSetting": 2, + "hasCollectionsAccess": false, + "hasCollectionsRedDot": false, + "canExpPlaylist": false, + "showPodcastTooltip": false, + "hasPromoteEntry": 1 + }, + "wid": "7551063687516980743", + "webIdCreatedTime": "1758119023", + "odinId": "6884525631502042113", + "nonce": "El8Y5e22XlzSleJz0qs-C", + "botType": "others", + "requestId": "15880098769098762007", + "clusterRegion": "ALL_SG", + "abTestVersion": { + "versionName": "70508271,72437276,73720541,74087155,74444735,74534793,74757743,74782565,74879363,74926160,75004380,75004402,75014048,75030792,75132380,75150719,75163115,75183089,75204947,75207601,75224161,75227408,75236328,75248304,75252005,75257252,75266020,75269551,75289530,75308229,75312670,75328674,75331578,75331914,75334097,75341153,75350407,75352865,75352896,75358321,75373599,70138197,70156809,70405643,71057832,71200802,71381811,71516509,71803300,71962127,72360691,72408100,72854054,72892778,73004916,73171280,73208420,73952802,73952825,73989921,74008524,74276218,74413136,74844724,75330961", + "parameters": { + "use_inbox_notice_count_api": { + "vid": "v2" + }, + "mobile_vodkit": { + "vid": "v1" + }, + "video_bitrate_adapt": { + "vid": "v1" + }, + "mobile_consumption_limit_login": { + "vid": "v1" + }, + "video_serverpush": { + "vid": "v1" + }, + "xg_volume_test": { + "vid": "v2" + }, + "search_video": { + "botVid": "v1", + "vid": "v1" + }, + "periodic_login_popup_interval": { + "vid": "v2" + }, + "mobile_search_test": { + "vid": "v2" + }, + "xgplayer_preload_config": { + "vid": "v1" + }, + "browser_mode_encourage_login": { + "vid": "v1" + }, + "last_login_method": { + "vid": "v1" + }, + "remove_bottom_banner": { + "vid": "v1" + }, + "login_modal_ui_revamp": { + "vid": "v1" + }, + "mobile_consumption_limit_non_logged_in": { + "vid": "v1" + }, + "enable_ml_model": { + "vid": "v1" + }, + "confirm_logout": { + "vid": "v2" + }, + "one_column_player_size": { + "vid": "v2" + }, + "share_button_part1_test": { + "vid": "v1" + }, + "creator_center_connect": { + "vid": "v1" + }, + "use_follow_v2": { + "vid": "v1" + }, + "login_option_order_by_metrics": { + "vid": "v1" + }, + "mobile_predictive_data": { + "vid": "v0" + }, + "non_logged_in_comments": { + "vid": "v1" + }, + "volume_normalize": { + "vid": "v1" + }, + "qr_sso_popup": { + "vid": "v1" + }, + "browser_login_redirect": { + "vid": "v1" + }, + "webapp_switch_account": { + "vid": "v1" + }, + "sign_up_webapp_region_change": { + "vid": "v2" + }, + "webapp_login_email_phone": { + "vid": "v1" + }, + "mobile_consumption_limit_logged_in": { + "vid": "v1" + }, + "FYP_Comment_Pannel_Enhance": { + "vid": "v1" + }, + "ZTI_test": { + "consumer_path_list": [ + "/v1/message/send", + "/api/update/profile", + "/api/v1/item/create/bulk", + "/api/v1/web/project/post", + "/api/commit/follow/user", + "/api/commit/item/digg", + "/api/comment/publish", + "/api/comment/digg", + "/api/item/collect", + "/tiktok/region/change/precheck/get/v1", + "/webcast/room/enter", + "/webcast/room/chat", + "/webcast/room/share", + "/webcast/gift/send", + "/webcast/sub/contract/create", + "/webcast/wallet_api/diamond_buy_external", + "/webcast/wallet_api_tiktok/withdraw/v2", + "/webcast/wallet_api/diamond_exchange/", + "/webcast/user/relation/update" + ], + "vid": "v2" + }, + "ab_tag": { + "merge_risk_event": 1 + }, + "ab_tags": { + "prefetch_visa_cryptogram": true + }, + "add_guide_login_test": { + "vid": "v1" + }, + "add_kap_entry": { + "vid": "v2" + }, + "add_profile_left_bar": { + "vid": "v1" + }, + "add_transcript": { + "vid": "v2" + }, + "ai_comment_analysis": { + "vid": "v0" + }, + "analytics_upgrade_phase3": { + "vid": "v1" + }, + "app_style_share": { + "vid": "v1" + }, + "auto_dark_mode": { + "vid": "v1" + }, + "auto_scroll": { + "vid": "v3" + }, + "autoscroll_reposition": { + "vid": "v1" + }, + "browse_mode_autoplay_test": { + "vid": "v1" + }, + "browser_mode_creator_tab_3": { + "vid": "v2" + }, + "browser_mode_multi": { + "vid": "v1" + }, + "browser_mode_refactor": { + "vid": "v1" + }, + "browser_mode_scroll": { + "vid": "v1" + }, + "cashier_ux_optimization_balance_check": { + "vid": "v2" + }, + "cashier_ux_optimization_callback_delay": { + "vid": "v0" + }, + "cc_perf_phase1": { + "vid": { + "isCreatorCenterContextEnabled": true, + "isInsightV2Enabled": true, + "isOfflineI18nEnabled": true, + "isParallelIframeEnabled": false, + "isPhase2Enabled": true, + "isPrefetchIframeResourceEnabled": true, + "isServerSideTranslationEnabled": true + } + }, + "ccdc_support_ocr": { + "vid": "v2" + }, + "change_list_length_new": { + "vid": "12" + }, + "clean_fixed_bottom": { + "vid": "v2" + }, + "close_to_zoom_out_test": { + "vid": "v1" + }, + "comment_refactor_test": { + "vid": "v3" + }, + "comments_predict_model_opt": { + "vid": "v2" + }, + "core_ux_fix": { + "vid": "v1" + }, + "creator_center_connect_global": { + "vid": "v2" + }, + "creator_center_global_comment_management": { + "vid": "v1" + }, + "creator_center_global_post_management": { + "vid": "v1" + }, + "creator_center_test": { + "vid": "v2" + }, + "csp_merge_support": { + "vid": "v1" + }, + "csp_webapp_new": { + "vid": "v1" + }, + "csp_webapp_push": { + "webapp_push_result": true + }, + "csp_webform_redesign": { + "vid": "v2" + }, + "data_channel_sort": { + "vid": "migrate_v1" + }, + "delay_guest": { + "vid": "2" + }, + "desktop_app_download_test": { + "vid": "v2" + }, + "desktop_app_download_ui_test": { + "vid": "v2" + }, + "desktop_bundle_opt": { + "vid": "v1" + }, + "desktop_rspack": { + "vid": "v1" + }, + "desktop_ui_opt": { + "vid": "v4" + }, + "desktop_ui_reply": { + "vid": "v6" + }, + "detail_page_comments_redesign": { + "vid": "v1" + }, + "device_score_fetch": { + "vid": "v2" + }, + "digital_wellbeing_web": { + "vid": "v1" + }, + "enable_about_this_ad": { + "vid": "v2" + }, + "enable_ads": { + "vid": "v2" + }, + "enable_autoscroll_moremenu": { + "vid": "v1" + }, + "enable_continue_play": { + "vid": "v2" + }, + "enable_creator_comments": { + "vid": "v1" + }, + "enable_dm_side_nav": { + "vid": "v1" + }, + "enable_ec_lcc": { + "vid": "v1" + }, + "enable_fb_sdk": { + "vid": "v2" + }, + "enable_message_refactor": { + "vid": "v1" + }, + "enable_mini_player": { + "vid": "v6" + }, + "enable_mini_player_bitrateinfo": { + "vid": "v1" + }, + "enable_mini_player_new_design": { + "vid": "v0" + }, + "enable_mini_player_switch_tab_popup": { + "vid": "v0" + }, + "enable_not_interested": { + "vid": "v2" + }, + "enable_post_translation": { + "vid": "v2" + }, + "enable_profile_pinned_video": { + "vid": "v2" + }, + "enable_video_detail_moremenu_refactor": { + "vid": "v2" + }, + "enable_webapp_family_pairing": { + "vid": "v1" + }, + "enhance_video_consumption_test": { + "vid": "v3" + }, + "exchange_retention_popup": { + "vid": "v2" + }, + "expand_item_tag": { + "vid": "v2" + }, + "explore_all_tab": { + "vid": "v1" + }, + "explore_chips_unify_experiment": { + "vid": "v2" + }, + "explore_test": { + "vid": "v3" + }, + "explore_ui_change": { + "vid": "v3" + }, + "favorite_test": { + "vid": "v1" + }, + "feature_access_control_v2": { + "vid": "v1" + }, + "feed_change_optimize_ff": { + "vid": "v1" + }, + "feed_scroll_opt": { + "vid": "v1" + }, + "ff_avg_duration_portrait": { + "vid": { + "levels": [ + { + "target": 2, + "threshold": 400 + }, + { + "target": 1, + "threshold": 1600 + }, + { + "target": 0, + "threshold": 60000 + } + ], + "vid": "v1" + } + }, + "first_bind_then_pay": { + "first_bind_then_pay_type": "v0" + }, + "fix_tea_session": { + "vid": "v1" + }, + "following_display_live": { + "vid": "v2" + }, + "following_red_dot": { + "vid": "v2" + }, + "foryou_opt": { + "vid": "v1" + }, + "foryou_prefetch": { + "vid": "v2" + }, + "friends_tab": { + "vid": "v1" + }, + "fyf_profile_uj": { + "vid": "v1" + }, + "fyp_backup_v2": { + "enable": "true" + }, + "fyp_live_card_open_direct": { + "vid": "v1" + }, + "fyp_live_enter_btn": { + "vid": "v1" + }, + "fyp_live_highlight_preview_opt": { + "vid": "v2" + }, + "fyp_live_preview_265": { + "vid": "v1" + }, + "fyp_live_preview_guide": { + "timer": 60000, + "vid": "v2" + }, + "fyp_on_detail": { + "vid": "v2" + }, + "fyp_progress_bar": { + "vid": "v3" + }, + "fyp_redesign": { + "vid": "v1" + }, + "fyp_update_gradient": { + "vid": "v1" + }, + "global_web_footer": { + "vid": "v1" + }, + "guest_mode_interest": { + "vid": "v2" + }, + "guest_mode_redesign": { + "vid": "v3" + }, + "guide_user_to_next_video": { + "vid": "v2" + }, + "has_csi_webapp": { + "vid": "v1" + }, + "has_system_notification_inbox": { + "vid": "v2" + }, + "husky_param": { + "client_sdk_param": { + "enable_merge_request_web": 1 + }, + "only_remote_fetch_meta": true + }, + "increase_detail_page_cover_quantity_test": { + "vid": "v3" + }, + "introduce_my_vn_banking_mobile": { + "vid": "v2" + }, + "introduce_my_vn_banking_pc": { + "vid": "v1" + }, + "islands_arch_explore": { + "vid": "v2" + }, + "islands_arch_phase2": { + "vid": "v1" + }, + "islands_arch_rest_page": { + "vid": "v1" + }, + "islands_arch_user_profile": { + "vid": "v1" + }, + "islands_arch_video_detail": { + "vid": "v1" + }, + "kep_new_ui_login": { + "vid": "v3" + }, + "kep_video_sort_ctr_exp": { + "vid": "fix" + }, + "kep_videos": { + "enable_capcut_user_features": false, + "enable_ecom_gauss_provider": false, + "enable_ecom_live_online_provider": false, + "enable_user_creation_duration_provider": false, + "enable_user_long_video_hte": false, + "enable_user_post_tags": false, + "filter_bubble_params": { + "enable_filter_bubble_user_poster": false + }, + "group_data": { + "enable_relation_type": false + }, + "predict": { + "use_predict_provider": true, + "get_campaign_info": 0 + }, + "recall": { + "recflow_swing_m": { + "disable": true + }, + "viking_capcut_publish_retriever": { + "disable": true + }, + "viking_mi_ab0_retriever": { + "disable": true + }, + "dr_finish_retriever": { + "disable": true + }, + "viking_lowvv_backup_retriever": { + "disable": true + }, + "soft_boost": { + "disable": true + }, + "hard_boost2": { + "disable": true + }, + "redis_onlinecf_retriever": { + "disable": true + }, + "viking_multi_stage_retriever_ab": { + "disable": true + }, + "search_value_query_invert_retriever": { + "disable": true + }, + "fast_search_query_invert_retriever": { + "disable": true + }, + "predict_cache_retriever": { + "disable": true + } + }, + "user_active_days_provider": { + "enable_get_user_active_days": 0 + }, + "user_data": { + "enable_muse_live_online": false, + "enable_result_cache": false, + "enable_longterm_profile": false, + "enable_get_user_consume_level": false, + "enable_user_abase_info": false, + "enable_user_bg_profile": false, + "enable_new_device_location": false, + "enable_active_user_stats": false, + "enable_get_user_stable_level": false, + "diversity_gauss_params": { + "enable_diversity_gauss_provider": false + }, + "use_user_interest": false, + "use_new_user_interest": false + } + }, + "live-ring-stroke": { + "vid": "v0" + }, + "live_abr_bb4live_optimize": { + "bandwidthDetect": true, + "method": 8, + "vid": "v2" + }, + "live_abr_dynamic_buffer": { + "vid": "v1" + }, + "live_abr_param": { + "vid": "v1" + }, + "live_abr_refactor": { + "vid": "v1" + }, + "live_abr_version": { + "vid": "v2" + }, + "live_card_open_direct": { + "vid": "v1" + }, + "live_chat_input_focus_opt": { + "vid": "v2" + }, + "live_chat_input_focus_shortcut": { + "vid": "v1" + }, + "live_chat_locking_opt": { + "vid": "v1" + }, + "live_chat_message_cache_opt": { + "vid": "v1" + }, + "live_chat_refactor_phase1": { + "vid": "v1" + }, + "live_chunk_load_err_opt": { + "vid": "v1" + }, + "live_context_optimize": { + "vid": "v1" + }, + "live_csr": { + "vid": "v1" + }, + "live_csr_insert_context": { + "vid": "v2" + }, + "live_csr_skeleton": { + "vid": "v1" + }, + "live_detail_endlive_auto_feed": { + "timer": 8, + "vid": "v3" + }, + "live_discover_feed_preload": { + "vid": "v1" + }, + "live_edenx_runtime": { + "vid": "v2" + }, + "live_enable_h3": { + "h3_ma": 604800, + "vid": "v1" + }, + "live_end_improved_metrics": { + "vid": "v2" + }, + "live_enter_room_chore": { + "vid": "v1" + }, + "live_event_aggregation": { + "vid": "v1" + }, + "live_feed_checkalive_interval_20vs5_exp": { + "vid": "v1" + }, + "live_feed_refresh": { + "vid": "v1" + }, + "live_feed_save": { + "vid": "v1" + }, + "live_feed_style": { + "vid": "v1" + }, + "live_full_screen_comment": { + "vid": "v1" + }, + "live_fyp_redesign_a": { + "vid": "v1" + }, + "live_game_enhance": { + "contrastFactor": 1.15, + "enable": true, + "saturationFactor": 1.2, + "sharpenConflictWithSR": false, + "sharpenFactor": 0.6, + "sharpenMaxHeight": 1280, + "sharpenMaxWidth": 1280, + "vid": "v1" + }, + "live_gift_add_animation": { + "vid": "v1" + }, + "live_gift_add_animation_send_loading": { + "vid": "v0" + }, + "live_golive_entrance": { + "vid": "v2" + }, + "live_header_delay": { + "vid": "v3" + }, + "live_i18n_reduce": { + "vid": "v1" + }, + "live_im_sdk_socket_link": { + "vid": "v2" + }, + "live_kyc_webapp_migration": { + "vid": "v2" + }, + "live_lcp_perf_optimize": { + "vid": "v3" + }, + "live_like": { + "vid": "v2" + }, + "live_login_reflow_btn": { + "vid": "v2" + }, + "live_low_latency": { + "vid": "v1" + }, + "live_manager_entrance": { + "vid": "v1" + }, + "live_mse_in_worker": { + "vid": "v1" + }, + "live_multi_stream_switch": { + "vid": "v1" + }, + "live_nav_entrance": { + "vid": "v1" + }, + "live_nav_follow_rec": { + "vid": "v1" + }, + "live_new_discover": { + "vid": "v2" + }, + "live_new_mse_player": { + "vid": "v1" + }, + "live_new_sidenav": { + "vid": "v1" + }, + "live_persister": { + "vid": "v1" + }, + "live_player_icon": { + "vid": "v2" + }, + "live_player_mute_text": { + "vid": "v2" + }, + "live_player_switch_button": { + "vid": "v2" + }, + "live_preview_web": { + "vid": "v3" + }, + "live_pro_show": { + "vid": "v1" + }, + "live_quick_chat_expand": { + "vid": "v1" + }, + "live_recharge_bind_ewallets": { + "vid": "v1" + }, + "live_recharge_bookmark_guidance": { + "vid": "v1" + }, + "live_recharge_by_amount": { + "vid": "v1" + }, + "live_recharge_cashier_google_pay": { + "vid": "v2" + }, + "live_recharge_cashier_phase3": { + "vid": "v2" + }, + "live_recharge_coins_cache": { + "vid": "v2" + }, + "live_recharge_get_coins_entrance_for_you_page": { + "vid": "v2" + }, + "live_recharge_homescreen": { + "vid": "v2" + }, + "live_recharge_login_itp_new": { + "vid": "v1" + }, + "live_recharge_mobile_non_login_redesign_keep_pkg": { + "vid": "v2" + }, + "live_recharge_noneu_agreement_optimize": { + "vid": "v2" + }, + "live_recharge_path_shortening_home_screen": { + "vid": "v2" + }, + "live_recharge_pay_result_synchronous_return": { + "vid": "v2" + }, + "live_recharge_sa_stcpay": { + "vid": "v2" + }, + "live_recharge_uwa_pc_entry": { + "vid": "v2" + }, + "live_remove_zti": { + "vid": "v1" + }, + "live_report_comment_reason_api": { + "vid": "v2" + }, + "live_report_reason_api": { + "vid": "v2" + }, + "live_room_age_restriction": { + "vid": "v2" + }, + "live_room_caption": { + "vid": "v0" + }, + "live_room_cohost_profile_card": { + "vid": "v2" + }, + "live_room_container_upgrade": { + "vid": "v1" + }, + "live_room_container_upgrade_gift_more": { + "vid": "v2" + }, + "live_room_csr": { + "vid": "v2" + }, + "live_room_match": { + "vid": "v2" + }, + "live_room_non_streaming": { + "vid": "v1" + }, + "live_room_preload_stream": { + "vid": "v1" + }, + "live_room_preload_stream_mse": { + "vid": "v1" + }, + "live_room_preview_card_opt": { + "vid": "v1" + }, + "live_search_jump": { + "vid": "v1" + }, + "live_side_channel": { + "vid": "v1" + }, + "live_sidenav_lazy": { + "vid": "v1" + }, + "live_stream_snapshot": { + "vid": "v1" + }, + "live_studio_download_refactor_pc": { + "vid": "v2" + }, + "live_subscription_cashier": { + "vid": "v2" + }, + "live_suggest_host_optimize": { + "vid": "v2" + }, + "live_top_viewers": { + "vid": "v2" + }, + "live_un_logged_in_definition": { + "vid": "v1" + }, + "live_volume_balance": { + "dynamicBalance": false, + "rangeTargetLufs": [ + { + "range": [ + -35, + -16 + ], + "target": -21 + }, + { + "range": [ + -16, + 0 + ], + "target": -12 + } + ], + "vid": "v3" + }, + "live_wallet_cashier_new_arch_phase2": { + "vid": "v0" + }, + "live_wallet_ccdc_iframe_wait_starlin": { + "vid": "v1" + }, + "live_wallet_end_result_success_page_refactor": { + "vid": "v1" + }, + "live_wallet_finger_sdk": { + "vid": "v1" + }, + "live_wallet_helmet_and_coin": { + "vid": "v1" + }, + "live_wallet_optimizing_frequency_check": { + "vid": "v0" + }, + "live_wallet_pc_header_vmok": { + "vid": "v2" + }, + "live_wallet_pc_live_room_recharge": { + "vid": "v2" + }, + "live_wallet_performance_packup": { + "vid": "v1" + }, + "live_wallet_recharge_apple_pay": { + "vid": "v2" + }, + "live_wallet_scm_recharge_campaign_optimization": { + "vid": "v1" + }, + "live_wallet_truncate_coin_context": { + "vid": "v2" + }, + "live_webcodecs_player": { + "vid": "v1" + }, + "live_webcodecs_rate": { + "vid": "v1" + }, + "login_google_onetap": { + "vid": "v1" + }, + "login_itp_resolve": { + "vid": "v1" + }, + "m10n_web": { + "vid": "v1" + }, + "mobile_localstorage_polyfill": { + "vid": "v1" + }, + "mobile_micro_frontend_all_pages": { + "vid": "v2" + }, + "multiple_ins_new": { + "vid": "v1" + }, + "muse_nonlogin_web": { + "sort_params": { + "enable_poi_recall": false + } + }, + "muse_pc_web": { + "sort_params": { + "enable_poi_recall": false + } + }, + "muse_web": { + "sort_params": { + "enable_poi_recall": false + } + }, + "nav_phase_3": { + "vid": "v2" + }, + "new_Live_im_hooks": { + "vid": "v1" + }, + "new_item_tag": { + "vid": "v2" + }, + "new_live_player_version": { + "vid": "v1" + }, + "new_server_call": { + "vid": "v1" + }, + "on_device_ml_player_preload": { + "vid": { + "default": 0, + "label_index_mapping": [ + "lt_12s", + "gt_12s" + ], + "plans": [ + { + "maxQueueCount": 6, + "preloadTime": 4 + }, + { + "maxQueueCount": 5, + "preloadTime": 5 + } + ], + "vid": "v0" + } + }, + "one_col_slide_opt": { + "vid": "v1" + }, + "one_col_slide_opt_2": { + "vid": "v1" + }, + "optimise_browser_mode": { + "vid": "v2" + }, + "page_init_refactor": { + "vid": "v1" + }, + "page_loading_tiny_changes": { + "vid": "v2" + }, + "page_stability_opt": { + "vid": "v1" + }, + "page_stability_strategy": { + "vid": "v1" + }, + "payin_webapp_payin_bankcard_ab_config": { + "group": 2 + }, + "pc_inspiration": { + "vid": "v1" + }, + "pc_video_playlist_test": { + "vid": "v3" + }, + "perf_blur_background": { + "vid": "v1" + }, + "photo_mode_yml": { + "vid": "v1" + }, + "photo_test": { + "vid": "v2" + }, + "player_degrade": { + "vid": "v2" + }, + "player_error_optimize": { + "vid": "v3" + }, + "player_retry": { + "vid": "v1" + }, + "pns_communication_service_sdk": { + "vid": "v1" + }, + "pns_keyword_filtering": { + "vid": "v1" + }, + "pns_kr_consent": { + "vid": "v1" + }, + "pns_popup_sdk": { + "vid": "v1" + }, + "pre_risk_load": { + "cbi_pre_risk_libra_type": "v1" + }, + "preload_expiration_extend": { + "vid": "v1" + }, + "preview_cover": { + "vid": "v1" + }, + "preview_progress_disable": { + "vid": "v1" + }, + "privacy_add_comment_permission": { + "vid": "v1" + }, + "privacy_add_dm_permission": { + "vid": "v1" + }, + "profile_follow_info": { + "vid": "v2" + }, + "promote_qr_code": { + "vid": "v1" + }, + "psort_push_type": { + "strong_reach_push": { + "user_ab": { + "tiktok_pivot_scenario_setting_provider": { + "scenario_allow_map": { + "7435925695869501496": true, + "7449298784200212486": true, + "7449693274664730630": true + } + } + } + } + }, + "push_authorization_refactor": { + "vid": "v4" + }, + "redesign_studio_entry_on_tt_web": { + "vid": "v1" + }, + "reduce_user_item_list": { + "vid": "v4" + }, + "remove_disclaimer": { + "vid": "v1" + }, + "remove_tooltip": { + "vid": "v1" + }, + "report_item_tag": { + "vid": "v2" + }, + "retry_info": { + "retry_libra_type": "v1" + }, + "revamp_share_menu": { + "vid": "v1" + }, + "reverse_expand_item_tag": { + "vid": "v1" + }, + "sati": { + "enable_global_reserve_price": true, + "global_reserve_price": 5000, + "idt_tiktok_pc_feed": { + "framework_min_ad_gap": 3, + "enable_pads_gap_fusion": false, + "enable_uav_gap_fusion": false, + "enable_threshold_pads_gap_fusion": true, + "threshold_pads_gap_fusion_weight": -4, + "threshold_pads_gap_fusion_bias": 6 + } + }, + "scheduled_breaks_teens": { + "vid": "v1" + }, + "search_add_live": { + "vid": "v2" + }, + "search_add_related_search": { + "vid": "v2" + }, + "search_bar_style_opt": { + "vid": "v3" + }, + "search_core_content": { + "vid": "v1" + }, + "search_entry_comment_top": { + "vid": "v2" + }, + "search_entry_comment_word": { + "vid": "v2" + }, + "search_entry_search_bar": { + "vid": "v2" + }, + "search_keep_sug_show": { + "vid": "v2" + }, + "search_preview_ui_change": { + "vid": "v3" + }, + "search_top_author_card": { + "vid": "v2" + }, + "search_transfer_guesssearch": { + "vid": "v2" + }, + "search_transfer_history": { + "vid": "v2" + }, + "search_video_lab": { + "vid": "v3" + }, + "seo_breadcrumb_detail": { + "vid": "v2" + }, + "seo_desktop": { + "vid": "v2" + }, + "seo_preview_ui_change": { + "vid": "v1" + }, + "should_highlight_hashtag": { + "vid": "v2" + }, + "should_recom_reduce_icon_risk": { + "vid": "v1" + }, + "show_aigc_label_web": { + "vid": "v1" + }, + "show_live_preview_content": { + "vid": "v1" + }, + "show_mask_for_bottom_info": { + "vid": "v1" + }, + "show_search_live_head": { + "vid": "v1" + }, + "side_nav_cache": { + "vid": "v1" + }, + "sidenav_test": { + "vid": "v2" + }, + "sleep_hours_webapp": { + "vid": "v1" + }, + "solaria_portrait_service": { + "vid": "v1" + }, + "standardizing_payment_code_ui": { + "vid": "v1" + }, + "stm_web_revamp": { + "vid": "v1" + }, + "studio_web_advanced_video_player": { + "vid": "v1" + }, + "studio_web_eh_entrance": { + "vid": "v3" + }, + "studio_web_eh_entrance_v2": { + "vid": "v5" + }, + "tikcast": { + "enable_ec_lcc": true, + "fans_privilege_upgrade": 1, + "live_restricted_mode": true + }, + "tiktok": { + "disable_effect_filter": 1, + "enable_digital_wellbeing_infra_server": true, + "enable_webapp_push": true, + "live_restricted_mode": true, + "new_deletion_entrance": "v0", + "private_account_prompt_for_u18": 0, + "search_engine": { + "debug_unlimited_music_retrieval_copyright_codes": [ + "1180_unlimited_2", + "1180_unlimited_10", + "1180_unlimited_1" + ], + "enable_tiktok_studio_unlimited_music_search": 1, + "enable_unlimited_music_retrieval": 1, + "ies_mt_music_display_unlimited_music_tag": 1 + }, + "use_aligned_copies": 2 + }, + "tiktok_live_introduce_apple_pay_row": { + "vid": "v1" + }, + "tiktok_sort_nonlogin_webapp": { + "sort_params": { + "enable_poi_recall": false + } + }, + "tiktok_sort_pc_webapp": { + "sort_params": { + "enable_poi_recall": false + } + }, + "tiktok_sort_webapp": { + "sort_params": { + "enable_poi_recall": false + } + }, + "tiktok_web": { + "async_post": 1, + "capcut_entry_group": 2, + "content_check_lite": 1, + "copyright_precheck": "1", + "enable_cloud_draft": "1", + "enable_edit_post": "2", + "enable_local_draft": "1", + "enable_new_playlist": "1", + "enable_new_post_api": "1", + "enable_web_60_min_flag": true, + "fbv_notice_enable": 1, + "hashtag_history": 1, + "interaction_optimization": 4, + "long_to_short_effect_caption": 1, + "long_to_short_effect_text": 1, + "max_divided_num": "1", + "music_precheck_extend": 1, + "music_recommend_by_video": 1, + "opt_v1_new_entrance_v3": 1, + "opt_v1_new_upload_ui": 2, + "post_polling_version": 1, + "show_aigc_toggle": 1, + "show_creator_academy_pc_entrance": 3, + "studio_ui_revamp": true, + "studio_web_l2s_enhanced_entrance": 1, + "studio_web_l2s_enhanced_sidebar": "v1", + "support_large_file": 1, + "tts_product_anchor": 1, + "ui_revamp_version": 2, + "unlimited_music_library": "1", + "upload_file_step_optimization": 2, + "use_l2s_language_choice_optimize": 1, + "use_l2s_non_verbal": 1, + "use_l2s_saving_project": 1, + "use_video_preview_transcode_multi_chunk": true, + "use_web_creation_video_edit_multi_chunk": true, + "video_split_count_limit": 10, + "web_crea_auto_expand_music_panel": 1, + "web_creation_cover_tool": 2, + "web_creation_hd_post_button": 0, + "web_creation_local_video_preview": 1, + "web_creation_poi": "1", + "web_creation_support_edit": 1 + }, + "top_right_button_group": { + "vid": "v4" + }, + "top_right_button_group_all": { + "vid": "v1" + }, + "translation_reduce": { + "vid": "v2" + }, + "tt4d_player_ssr": { + "vid": "v1" + }, + "tt_player_dash": { + "vid": { + "vid": "v0", + "format": "MP4" + } + }, + "tt_player_event_trigger": { + "vid": "v1" + }, + "tt_player_fallback_eos": { + "vid": { + "vid": "v0" + } + }, + "tt_player_firstframe": { + "vid": "v1" + }, + "tt_player_hevc_ignore_env": { + "vid": "v1" + }, + "tt_player_logger": { + "vid": "v1" + }, + "tt_player_logger_ext": { + "vid": "v1" + }, + "tt_player_metric": { + "vid": "v1" + }, + "tt_player_openmse": { + "vid": "v1" + }, + "tt_player_preload": { + "vid": { + "maxQueueCount": 5, + "minBufferLength": 10, + "preloadMaxCacheCount": 10, + "preloadSize": 209715, + "preloadTime": 5, + "segmentMinDuration": 0, + "startPreloadControl": true, + "startPreloadMinBuffer": 5, + "startPreloadMinPosTime": 5, + "vid": "v2" + } + }, + "tt_player_request": { + "vid": { + "vid": "v1", + "loaderOptions": { + "useScope": true + } + } + }, + "tt_player_reuse": { + "vid": "v2" + }, + "tt_player_stuck": { + "vid": { + "loaderOptions": { + "autoCaculateTotal": true, + "recreateLoader": false, + "resetFetchingWhenCanceled": true + }, + "vid": "v1" + } + }, + "tt_player_upgrade": { + "vid": { + "maxCacheCount": 10, + "mp4ParserConfig": { + "cache": { + "maxDuration": 10 + } + }, + "playerConfig": { + "autoSeekToFirstFrame": true, + "fallback": false, + "maxBackwardBufferDuration": 60, + "maxForwardBufferDuration": 45, + "minBackwardBufferDuration": 5, + "minForwardBufferDuration": 30, + "stuckTimeout": 10000 + }, + "playerType": "NEW_TT", + "preload": { + "cache": true, + "maxPreloadDuration": 10, + "maxPreloadedCount": 5 + }, + "vid": "v3" + } + }, + "tt_player_upgrade_preload": { + "vid": { + "vid": "v1", + "preloaderConfig": { + "preloadTriggerPlayTime": 5, + "preloadTriggerStayTime": -1 + } + } + }, + "tt_player_use_addr_list": { + "vid": "v1" + }, + "tt_player_video_play": { + "vid": "v2" + }, + "tteh_effect_anchor_v1": { + "vid": "v2" + }, + "ttlive_broadcast_topic_version_two": { + "vid": "v2" + }, + "ttplayer_audio_equalizer": { + "vid": { + "enable": true, + "targetLoudness": -12, + "vid": "v1" + } + }, + "ttplayer_bitrate_select": { + "vid": { + "config": { + "bitrateLower": 200000, + "bitrateRange": [ + 200000, + 1500000 + ], + "bitrateUpper": 2000000, + "mode": "buffer-info", + "paramBf": 0.3, + "paramBp": 0.5, + "paramLower": 0.6, + "paramUpper": 1.5, + "paramUpperBl": 0.7, + "paramVl1": 0.8, + "paramVl2": 3, + "paramVlLower": 10, + "paramVlUpper": 10, + "slidingWindowCountThreshold": 30, + "slidingWindowExtraction": "weighted_median", + "slidingWindowType": "by_weight", + "slidingWindowWeight": "size", + "slidingWindowWeightThreshold": 20000000 + }, + "hevcQualityType": 14, + "qualityType": 20, + "selector": "buffer-info", + "vid": "v2" + } + }, + "ui_layout_alignment": { + "vid": "v3" + }, + "unify_live_head": { + "vid": "v1" + }, + "use_aligned_copies": { + "vid": "v2" + }, + "use_error_boundary": { + "vid": "v2" + }, + "use_left_navigation_refactor": { + "vid": "v2" + }, + "use_navigation_refactor": { + "vid": "v5" + }, + "use_profile_avatar": { + "vid": "v2" + }, + "video_auto_play_optimize": { + "vid": "v1" + }, + "video_closed_caption": { + "vid": "v2" + }, + "video_detail_author_card": { + "vid": "v2" + }, + "video_detail_auto_pip_opt": { + "vid": "v1" + }, + "video_detail_nav_opt": { + "vid": "v1" + }, + "video_detail_related_refetch": { + "vid": "v2" + }, + "video_detail_responsive_ui": { + "vid": "v1" + }, + "video_detail_search_bar": { + "vid": "v2" + }, + "video_detail_yml_ui": { + "vid": "v2" + }, + "video_resolution_auto": { + "vid": "v2" + }, + "virtual_list_experiment": { + "vid": "v1" + }, + "vv_avg_per_day_portrait": { + "vid": { + "levels": [ + { + "target": 12, + "threshold": 5 + }, + { + "target": 13, + "threshold": 10 + }, + { + "target": 14, + "threshold": 50 + }, + { + "target": 15, + "threshold": 9999 + } + ], + "vid": "v3" + } + }, + "web_creation_vmok": { + "vid": "v1" + }, + "web_dm_combo": { + "vid": "v3" + }, + "web_dm_heartbeat_optimize": { + "vid": "v2" + }, + "web_dm_message_reaction": { + "vid": "v2" + }, + "web_dm_quote_message": { + "vid": "v3" + }, + "web_dm_runtime_share": { + "vid": "v3" + }, + "web_dm_share_panel_fix": { + "vid": "v2" + }, + "web_dm_status_msg": { + "vid": "v4" + }, + "web_dm_sticker_msg_display": { + "vid": "v2" + }, + "web_player_refactor": { + "vid": "v2" + }, + "webapp_add_shop": { + "vid": "v2" + }, + "webapp_auto_dark_mode": { + "vid": "v1" + }, + "webapp_collection_adder": { + "vid": "v2" + }, + "webapp_collection_profile": { + "vid": "v1" + }, + "webapp_creator_just_watched": { + "vid": "v3" + }, + "webapp_creator_post_sort": { + "vid": "v5" + }, + "webapp_docfile_refactor": { + "vid": "v1" + }, + "webapp_dynamic_bottom_right": { + "vid": "v1" + }, + "webapp_explore_cache": { + "vid": "v1" + }, + "webapp_explore_category": { + "vid": "v2" + }, + "webapp_explore_nav_order": { + "vid": "v2" + }, + "webapp_explore_video_info": { + "vid": "v4" + }, + "webapp_feature_expansion": { + "vid": "v1" + }, + "webapp_following_accts_left_nav": { + "vid": "v3" + }, + "webapp_fyp_prefetching_feed": { + "vid": "v2" + }, + "webapp_header_ls_entrance": { + "vid": "v1" + }, + "webapp_inapp_notice": { + "vid": "v3" + }, + "webapp_jotai_detail": { + "vid": "v1" + }, + "webapp_jotai_foryou": { + "vid": "v3" + }, + "webapp_live_avator_animation": { + "vid": "v1" + }, + "webapp_live_discover_feed_prefetch": { + "vid": "v1" + }, + "webapp_live_explore_api": { + "vid": "v1" + }, + "webapp_live_explore_card": { + "vid": "v1" + }, + "webapp_live_nav_avatar": { + "vid": "v1" + }, + "webapp_live_recommand_switch": { + "vid": "v1" + }, + "webapp_live_search_show": { + "vid": "v1" + }, + "webapp_live_search_sug": { + "vid": "v1" + }, + "webapp_node_opt": { + "vid": "v1" + }, + "webapp_perf_page_switch": { + "vid": "v1" + }, + "webapp_picture_comments": { + "vid": "v1" + }, + "webapp_preview_cover": { + "vid": "v5" + }, + "webapp_recharge_get_tax_country": { + "country_list": [ + "CA", + "US", + "AE" + ], + "enable": true + }, + "webapp_recommend_language": { + "vid": "v2" + }, + "webapp_repost_action": { + "vid": "v4" + }, + "webapp_repost_label": { + "vid": "v1" + }, + "webapp_repost_notice": { + "vid": "v1" + }, + "webapp_repost_tab": { + "vid": "v1" + }, + "webapp_seo_photomode_user_exp": { + "vid": "v1" + }, + "webapp_suggested_accounts": { + "vid": "v2" + }, + "webapp_video_detail_page_related_mask": { + "vid": "v2" + }, + "webcast": { + "appeal_version": 2, + "enable_ec_lcc": true, + "fans_privilege_upgrade": 1, + "fe_referral_gift_variant": "normal", + "fe_vault_gifts_enabled": true, + "frequent_amount": { + "count": 4, + "threshold_day": 30 + }, + "intention_threshold": 0.7, + "like_icon_optimize": true, + "live_restricted_mode": true, + "pi_clip_eu": 2, + "pi_clip_row": 2, + "pi_clip_us": 2, + "quick_payment_optimization_exp_1_config": { + "quick_payment_enabled": true, + "quick_payment_type": 2 + }, + "room_create_payload": { + "fans_privilege_upgrade": 1 + }, + "show_appeal_verify_mark": true, + "show_pc_rewards_center": true, + "show_preview_ai_title_position": "summary", + "show_preview_asr_summary": true, + "show_preview_traffic_tag_summary": true, + "two_step_recharge_type": 2, + "watch_day_cnt_layer_for_preview_content": 0, + "web_drawer_show_explore": true, + "web_follow_guide_strategy_group": 4, + "web_minimal_package": { + "baseline": "30", + "filter_packages": [], + "force_recommend_packages": [ + "70" + ] + }, + "web_recharge_latency_optimization": true, + "webapp_pwa_push": false, + "webapp_show_preview_content": true, + "webapp_suggest_host_optimize": 1 + }, + "yml_ui_optimize": { + "vid": "v3" + } + }, + "abTestApp": { + "parameters": { + "tiktok": { + "long_video_popup_display_optimization": true + } + } + } + }, + "csrfToken": "q0Q4ki72-I7zQB6eLbpBBaqFBGrUF_v85N9s", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", + "encryptedWebid": "1%7CAYDsetgnxt5vzYX8hD6Wq2DQ4FXiL_pqcdLwHWwz6B8%7C1767278585%7C46a4b0b8d2fc0ee903d0e781593a0d2d7b491a49752c86f034adf69319d371a0", + "host": "www.tiktok.com" + }, + "webapp.biz-context": { + "cookieConsent": { + "ga": true, + "af": true, + "fbp": true, + "lip": true, + "bing": true, + "ttads": true, + "reddit": true, + "criteo": true + }, + "os": "mac", + "isMobile": false, + "isAndroid": false, + "isIOS": false, + "jumpType": "t", + "navList": [ + { + "title": "Company", + "children": [ + { + "title": "About", + "href": "https://www.tiktok.com/about?lang=en" + }, + { + "title": "Newsroom", + "href": "https://newsroom.tiktok.com/" + }, + { + "title": "Contact", + "href": "https://www.tiktok.com/about/contact?lang=en" + }, + { + "title": "Careers", + "href": "https://careers.tiktok.com" + } + ] + }, + { + "title": "Programs", + "children": [ + { + "title": "TikTok for Good", + "href": "https://www.tiktok.com/forgood" + }, + { + "title": "Advertise", + "href": "https://www.tiktok.com/business/?attr_source=tt_official_site&attr_medium=tt_official_site_guidance&refer=tiktok_web" + }, + { + "title": "Sell on TikTok Shop", + "href": "https://seller-vn.tiktok.com/account/register?channel=ttcom_program" + }, + { + "title": "TikTok LIVE Creator Networks", + "href": "https://www.tiktok.com/live/creator-networks/en?enter_from=tiktok_official" + }, + { + "title": "Developers", + "href": "https://developers.tiktok.com/?refer=tiktok_web" + }, + { + "title": "Transparency", + "href": "https://www.tiktok.com/transparency" + }, + { + "title": "TikTok Embeds", + "href": "https://www.tiktok.com/embed" + } + ] + }, + { + "title": "Support", + "children": [ + { + "title": "Help Center", + "href": "https://support.tiktok.com/en" + }, + { + "title": "Safety Center", + "href": "https://www.tiktok.com/safety?lang=en" + }, + { + "title": "Privacy Center", + "href": "https://www.tiktok.com/privacy/overview/en?enter_method=webapp_mobile_sidenav" + }, + { + "title": "Creator Portal", + "href": "https://www.tiktok.com/creators/creator-portal/en-us/" + }, + { + "title": "Community Guidelines", + "href": "https://www.tiktok.com/community-guidelines?lang=en" + }, + { + "title": "Transparency", + "href": "https://www.tiktok.com/transparency" + }, + { + "title": "Accessibility", + "href": "https://www.tiktok.com/accessibility" + } + ] + }, + { + "title": "Legal", + "children": [ + { + "title": "Terms of Use", + "key": "terms-of-service", + "href": "https://www.tiktok.com/legal/terms-of-service?lang=en" + }, + { + "title": "Privacy Policy", + "key": "privacy-policy-row", + "href": "https://www.tiktok.com/legal/privacy-policy-row?lang=en" + } + ] + } + ], + "kapLinks": [ + { + "title": "Category", + "children": [ + { + "lang": [ + "en" + ], + "links": [ + { + "title": "Dance", + "href": "https://www.tiktok.com/channel/dance" + }, + { + "title": "Arts", + "href": "https://www.tiktok.com/channel/arts" + }, + { + "title": "Food and Drink", + "href": "https://www.tiktok.com/channel/food-and-drink" + }, + { + "title": "Tourism", + "href": "https://www.tiktok.com/channel/tourism" + }, + { + "title": "Production and Manufacturing", + "href": "https://www.tiktok.com/channel/production-and-manufacturing" + }, + { + "title": "Vehicles and Transportation", + "href": "https://www.tiktok.com/channel/vehicles-and-transportation" + }, + { + "title": "Relationship", + "href": "https://www.tiktok.com/channel/relationship" + }, + { + "title": "TikTok Style", + "href": "https://www.tiktok.com/channel/tiktok-style" + }, + { + "title": "Athletics", + "href": "https://www.tiktok.com/channel/athletics" + }, + { + "title": "Hobbies", + "href": "https://www.tiktok.com/channel/hobbies" + } + ] + } + ] + } + ], + "config": { + "featureFlags": { + "feature_bar": true, + "business_account_open": true, + "feature_tt4b_ads": true, + "support_multiline_desc": true, + "pc_video_playlist": true, + "feature_mobile_ui_opt_stage2": true, + "add_recipe_card": true, + "collapse_seo_header": true, + "collapse_seo_header_mobile": true, + "seo_enable_new_poi_page": true, + "enable_privacy_center": true, + "hashtag_viewcount": false, + "should_show_effect_detail_page": true, + "kep_remove_desc_keywords": true, + "hashtag_canonical_url": true, + "music_canonical_url": true, + "user_canonical_url": true, + "find_card_refactor": true, + "shape_loggedin_disabled": false, + "kep_new_grid": true, + "feedback_project_u_switch": false, + "feedback_project_u_faq_whitelist": [ + "7076288989640055298", + "7078299661441702406", + "7078299661806606854", + "7078299662016322054", + "7078299662960040453", + "7078299662544804357", + "7078299662733548037", + "7078299663324944902", + "7078299663509494277", + "7078299663815678469", + "7078299664000227846", + "7078299675148687878", + "7078299664386103813", + "7078299664612596229", + "7133058396747586049", + "7133058093574855170", + "7096681481912752642", + "7096682605210278401", + "7096682193606433281", + "7096681482017692162", + "7096682193606449665", + "7078299665203993094", + "7078299665359182341", + "7078299665539537414", + "7133510846939929090", + "7133539120697350658", + "7133059126174702081", + "7133058396747536897", + "7133059126174718465", + "7133059126174734849", + "7133058396747553281", + "7078299677157759494", + "7078299677283588613", + "7078299677417806342", + "7078299672355281413", + "7078299672489499141", + "7078299671956822533", + "7078299671818410501", + "7078299672091040261", + "7078299673303194117", + "7078299673445800453", + "7078299672762128901", + "7078299672892152325", + "7078299673038952965", + "7078299665992522245", + "7078299666147711494", + "7078299666311289349", + "7078299666466478598", + "7078299666768468486", + "7078299666898491909", + "7078299667162733062", + "7078299678101477893", + "7078299667292756485", + "7078299667473111558", + "7078299667611523589", + "7078299667871570438", + "7078299668030953990", + "7078299668341332485", + "7078299668479744518", + "7078299668764957189", + "7078299668903369221", + "7078299669398297093", + "7078299669406816773", + "7078299669591235078", + "7078299669754812934", + "7078299669901613574", + "7078299670065191430", + "7078299670375569926", + "7078299670543342086", + "7078299670769834501", + "7078299671000521221", + "7078299671268956678", + "7078299671419951622", + "7078299676599917062", + "7078299676734134790", + "7078299678910978565", + "7078299680282515974", + "7078299680450288134", + "7078299678378301957", + "7078299678508325382", + "7078299678629960198", + "7078299678776760837", + "7460563007266085382", + "7460563007266134534", + "7460562942841494022", + "7460563007266101766", + "7460758059388869125", + "7460563007266118150", + "7133058093574789634", + "7133058396747471361", + "7133058396747520513", + "7387751569967766022", + "7387751569967831558", + "7133539120722221569", + "7133510846939945474", + "7133510846939961858", + "7135364082579806722", + "7135364432586086913", + "7135364082579823106", + "7387751569967749638", + "7387751569967847942", + "7387751569967815174", + "7078299674720868870", + "7078299675006081542", + "7078299674859280902", + "7133510846939994626", + "7078299679418489349", + "7078299679624010245", + "7078299679758227974", + "7078299679921805830", + "7078299680072800773", + "7133058093574871554", + "7078299680207018502", + "7387751569967733254", + "7387751569967716870", + "7387751569967700486", + "7387754233984244229", + "7387754233984227845", + "7387754233984211461", + "7387754233984195077", + "7387754236332743173", + "7387754233984178693", + "7078299680244767238", + "7135363369778911745", + "7135363369778928129", + "7135363685995928065", + "7135363369812367873", + "7135364432640629250", + "7135363369812417025", + "7387754233983982085", + "7135363686037740034", + "7382137518617090565", + "7382137518617074181", + "7382137518617057797", + "7382137518617041413", + "7382137518617025029", + "7382137518617008645", + "7184920240411662853", + "7183620262166829574", + "7323043003466062342", + "7387751569967798790", + "7387751569967782406", + "7387751569967864326", + "7078299674238523909", + "7416276856443869702", + "7460139677463386629", + "7460139247685655046", + "7460139247685671430", + "7460422806652623366", + "7460422806652688902", + "7460430224057408005", + "7460430224057424389", + "7460430224057440773", + "7460422806652721670", + "7460430224057457157", + "7460070065288043013", + "7460422806652738054", + "7460436168329435653", + "7460422806652770822" + ], + "feedback_project_u_submit_entry_switch": true, + "feedback_project_u_submit_page_switch": true + }, + "desktopAppDownloadLink": { + "mac": "https://lf-pc-app.ttwstatic.com/obj/tiktok-pc-app-sg/tiktok-v1.2.3-darwin-universal.dmg", + "win": "https://lf-pc-app.ttwstatic.com/obj/tiktok-pc-app-sg/tiktok-downloader-v1.2.3-win32-ia32-default.exe" + }, + "signUpOpen": true, + "cookieBanner": { + "load_dynamically": true, + "decline_btn_staged_rollout_area": [ + "ALL" + ], + "resource": { + "prefix": "/pns/tiktok-cookie-banner", + "themes": [ + "default", + "ttm" + ], + "esm": "/pns/tiktok-cookie-banner/{{VERSION}}/default.esm.js", + "nomodule": "/pns/tiktok-cookie-banner/{{VERSION}}/default.js", + "version": "1.0.0.276" + }, + "i18n": { + "cookieBannerTitle": "cookiesUpdate_banner_header", + "cookieBannerTitleNew": "cookiesUpdate_banner_header", + "cookieBannerSubTitle": "cookiesUpdate_banner_body", + "cookieBannerSubTitleNew": "cookiesUpdate_banner_body", + "cookieBannerSubTitleV2": "cookiesUpdate_banner_body", + "cookieBannerBtnManage": "cookie_btn_manage", + "cookieBannerBtnAccept": "cookiesUpdate_banner_button2", + "cookieBannerBtnDecline": "cookiesUpdate_banner_button1", + "cookiesBannerDetails": "cookies_banner_details", + "cookiesBannerCookiesPolicy": "cookies_banner_cookies_policy", + "cookiesBannerAccept": "cookiesUpdate_banner_button2", + "webDoNotSellSettingsSavedToast": "web_do_not_sell_settings_saved_toast", + "cookieSettingManageYourCookieTitle": "cookie_banner_category_manage", + "cookieSettingSave": "save_settings", + "cookieSettingAnalyticsAndMarketing": "cookie_banner_subcategory_cookies", + "cookieSettingNecessary": "cookie_setting_page_nc_title", + "cookieSettingNecessarySubtitle": "cookie_setting_page_nc_subtitle", + "cookieSettingNecessaryV2": "cookie_banner_subcategory_essential", + "cookieSettingNecessarySubtitleV2": "cookies_essential_desc", + "cookieSettingAnalyticsAndMarketingSubtitle": "cookie_setting_page_aam_subtitle", + "cookieSettingAnalyticsAndMarketingSubtitleV2": "cookie_analytics_marketing_desc", + "cookieManageTip": "cookie_manage_desc" + } + }, + "isGrayFilter": false, + "nickNameControlDay": "7", + "desktopAppSurveyLink": { + "default": "https://survey.zijieapi.com/q/260904/48I09JB5/bfe7/#/", + "vn": "https://survey.zijieapi.com/q/262500/dKX3wN78/e8fd/#/" + }, + "desktopWebSurveyLink": { + "new": "", + "old": "" + }, + "onDeviceMLConfig": { + "commentsPreload": { + "commentPreloadHighThreshold": { + "enable_preload": true, + "preload_ml": { + "scene": "comment_preload_ml", + "delay": 8000, + "skip_count": 5, + "run_gap": 5000, + "ignore_count": 0, + "package": "https://sf16-sg.tiktokcdn.com/obj/eden-sg/azboeh7uhbfnuptbvg/model-comment-4-30.bytenn", + "features": "", + "output": [ + { + "op": "predict_bin", + "args": [ + 0.1 + ], + "labels": [ + "true", + "false" + ] + } + ], + "engine_config": { + "inputs": [ + "serving_default_ml_input_1:0" + ], + "outputs": [ + "StatefulPartitionedCall:0" + ] + } + } + }, + "commentPreloadLowThreshold": { + "enable_preload": true, + "preload_ml": { + "scene": "comment_preload_ml", + "delay": 1000, + "skip_count": 2, + "run_gap": 3000, + "ignore_count": 0, + "package": "https://sf16-sg.tiktokcdn.com/obj/eden-sg/azboeh7uhbfnuptbvg/comment-predict.json", + "features": "", + "output": [ + { + "op": "predict_bin", + "args": [ + 0.3 + ], + "labels": [ + "true", + "false" + ] + } + ], + "engine_config": { + "inputs": [ + "serving_default_ml_input_1:0" + ], + "outputs": [ + "StatefulPartitionedCall:0" + ] + } + } + } + }, + "playerPreload": { + "playerPreloadStrategy": { + "enable_preload": true, + "preload_ml": { + "scene": "video_preload", + "delay": 5000, + "skip_count": 4, + "run_gap": 5000, + "ignore_count": -1, + "package": "https://sf16-sg.tiktokcdn.com/obj/eden-sg/azboeh7uhbfnuptbvg/video_preload_predict.bytenn", + "features": "", + "output": [ + { + "op": "predict_bin", + "args": [ + 0.4 + ], + "labels": [ + "true", + "false" + ] + } + ], + "engine_config": { + "inputs": [ + "serving_default_ml_input_1:0" + ], + "outputs": [ + "StatefulPartitionedCall:0" + ] + } + }, + "slideStrategy": [ + 6, + 12 + ] + } + } + }, + "exploreCategoryList": { + "v0": [ + { + "text": "pc_web_explorePage_all", + "name": "All", + "type": "120" + }, + { + "text": "pc_web_explorePage_topics_singing_dancing", + "name": "Singing & Dancing", + "type": "119" + }, + { + "text": "pc_web_explorePage_topics_comedy", + "name": "Comedy", + "type": "104" + }, + { + "text": "pc_web_explorePage_topics_sports", + "name": "Sports", + "type": "112" + }, + { + "text": "pc_web_explorePage_topics_anime_comics", + "name": "Anime & Comics", + "type": "100" + }, + { + "text": "pc_web_explorePage_topics_relationship", + "name": "Relationship", + "type": "107" + }, + { + "text": "pc_web_explorePage_topics_shows", + "name": "Shows", + "type": "101" + }, + { + "text": "pc_web_explorePage_topics_lipsync", + "name": "Lipsync", + "type": "110" + }, + { + "text": "pc_web_explorePage_topics_daily_life", + "name": "Daily Life", + "type": "105" + }, + { + "text": "pc_web_explorePage_topics_beauty_care", + "name": "Beauty Care", + "type": "102" + }, + { + "text": "pc_web_explorePage_topics_games", + "name": "Games", + "type": "103" + }, + { + "text": "pc_web_explorePage_topics_society", + "name": "Society", + "type": "114" + }, + { + "text": "pc_web_explorePage_topics_outfit", + "name": "Outfit", + "type": "109" + }, + { + "text": "pc_web_explorePage_topics_cars", + "name": "Cars", + "type": "115" + }, + { + "text": "pc_web_explorePage_topics_food", + "name": "Food", + "type": "111" + }, + { + "text": "pc_web_explorePage_topics_animals", + "name": "Animals", + "type": "113" + }, + { + "text": "pc_web_explorePage_topics_family", + "name": "Family", + "type": "106" + }, + { + "text": "pc_web_explorePage_topics_drama", + "name": "Drama", + "type": "108" + }, + { + "text": "pc_web_explorePage_topics_fitness_health", + "name": "Fitness & Health", + "type": "117" + }, + { + "text": "pc_web_explorePage_topics_education", + "name": "Education", + "type": "116" + }, + { + "text": "pc_web_explorePage_topics_technology", + "name": "Technology", + "type": "118" + } + ], + "v1": [ + { + "text": "pc_web_explorePage_all", + "name": "All", + "type": "120" + }, + { + "text": "pc_web_explorePage_topics_singing_dancing", + "name": "Singing & Dancing", + "type": "119" + }, + { + "text": "pc_web_explorePage_topics_comedy", + "name": "Comedy", + "type": "104" + }, + { + "text": "pc_web_explorePage_topics_relationship", + "name": "Relationship", + "type": "107" + }, + { + "text": "pc_web_explorePage_topics_sports", + "name": "Sports", + "type": "112" + }, + { + "text": "pc_web_explorePage_topics_technology", + "name": "Technology", + "type": "118" + }, + { + "text": "pc_web_explorePage_topics_anime_comics", + "name": "Anime & Comics", + "type": "100" + }, + { + "text": "pc_web_explorePage_topics_daily_life", + "name": "Daily Life", + "type": "105" + }, + { + "text": "pc_web_explorePage_topics_games", + "name": "Games", + "type": "103" + }, + { + "text": "pc_web_explorePage_topics_beauty_care", + "name": "Beauty Care", + "type": "102" + }, + { + "text": "pc_web_explorePage_topics_shows", + "name": "Shows", + "type": "101" + }, + { + "text": "pc_web_explorePage_topics_lipsync", + "name": "Lipsync", + "type": "110" + }, + { + "text": "pc_web_explorePage_topics_outfit", + "name": "Outfit", + "type": "109" + }, + { + "text": "pc_web_explorePage_topics_society", + "name": "Society", + "type": "114" + }, + { + "text": "pc_web_explorePage_topics_fitness_health", + "name": "Fitness & Health", + "type": "117" + }, + { + "text": "pc_web_explorePage_topics_cars", + "name": "Cars", + "type": "115" + }, + { + "text": "pc_web_explorePage_topics_food", + "name": "Food", + "type": "111" + }, + { + "text": "pc_web_explorePage_topics_education", + "name": "Education", + "type": "116" + }, + { + "text": "pc_web_explorePage_topics_drama", + "name": "Drama", + "type": "108" + }, + { + "text": "pc_web_explorePage_topics_animals", + "name": "Animals", + "type": "113" + }, + { + "text": "pc_web_explorePage_topics_family", + "name": "Family", + "type": "106" + } + ], + "v2": [ + { + "text": "pc_web_explorePage_all", + "name": "All", + "type": "120" + }, + { + "text": "Web_explorePage_dynamicCategories_celebTV", + "name": "Celebrities & TV", + "type": "200" + }, + { + "text": "Web_explorePage_dynamicCategories_musicDance", + "name": "Music & Dance", + "type": "201" + }, + { + "text": "Web_explorePage_dynamicCategories_fashion", + "name": "Fashion", + "type": "202" + }, + { + "text": "Web_explorePage_dynamicCategories_videoGames", + "name": "Video Games", + "type": "203" + }, + { + "text": "Web_explorePage_dynamicCategories_animeCartoons", + "name": "Anime and Cartoons", + "type": "204" + }, + { + "text": "Web_explorePage_dynamicCategories_sportsFitness", + "name": "Sports & Fitness", + "type": "205" + }, + { + "text": "Web_explorePage_dynamicCategories_comedy", + "name": "Comedy", + "type": "206" + }, + { + "text": "Web_explorePage_dynamicCategories_food", + "name": "Food", + "type": "207" + }, + { + "text": "Web_explorePage_dynamicCategories_news", + "name": "News", + "type": "208" + }, + { + "text": "pc_web_explorePage_topics_technology", + "name": "Technology", + "type": "215" + }, + { + "text": "Web_explorePage_dynamicCategories_cars", + "name": "Cars", + "type": "209" + }, + { + "text": "Web_explorePage_dynamicCategories_babies", + "name": "Baby", + "type": "210" + }, + { + "text": "Web_explorePage_dynamicCategories_pets", + "name": "Pets", + "type": "211" + }, + { + "text": "Web_explorePage_dynamicCategories_relationships", + "name": "Relationship", + "type": "212" + }, + { + "text": "Web_explorePage_dynamicCategories_wellness", + "name": "Health", + "type": "213" + }, + { + "text": "Web_explorePage_dynamicCategories_gardening", + "name": "Gardening", + "type": "214" + } + ] + } + }, + "domains": { + "kind": "t", + "captcha": "", + "imApi": "https://im-api-sg.tiktok.com", + "imFrontier": "wss://im-ws-sg.tiktok.com/ws/v2", + "mTApi": "https://t.tiktok.com", + "rootApi": "https://www.tiktok.com", + "secSDK": "", + "slardar": "mon.tiktokv.com", + "starling": "https://starling-sg.tiktokv.com", + "tea": "https://mcs-sg.tiktokv.com", + "teaChannel": "sg", + "teaChannelType": "tcpy", + "libraWebSDK": "https://libraweb-sg.tiktok.com", + "webcastApi": "https://webcast.tiktok.com", + "webcastRootApi": "https://webcast.tiktok.com", + "tcc": "https://sf-tcc-config.tiktokcdn.com/obj/tcc-config-web-alisg/", + "locationApi": "https://location-sg.tiktokv.com" + }, + "downloadLink": { + "microsoft": { + "visible": true, + "normal": "https://www.microsoft.com/store/apps/9NH2GPH4JZS4" + }, + "apple": { + "visible": true, + "normal": "https://www.tiktok.com/download-link/af/id1235601864" + }, + "amazon": { + "visible": true, + "normal": "https://www.amazon.com/dp/B07KR1RJL2/" + }, + "google": { + "visible": true, + "normal": "https://www.tiktok.com/download-link/af/com.ss.android.ugc.trill" + } + }, + "deviceLimitRegisterExpired": true, + "subdivisions": [ + "Ho Chi Minh" + ], + "geo": [ + "1580578" + ], + "geoCity": { + "City": "District 1", + "Subdivisions": "Ho Chi Minh", + "OriginalSubdivisions": [ + { + "GeoNameID": "1580578", + "ASCIName": "Ho Chi Minh", + "Name": "Ho Chi Minh" + } + ], + "SubdivisionsArr": [ + "Ho Chi Minh" + ] + }, + "isGoogleBot": false, + "isBingBot": false, + "isBot": false, + "isSearchEngineBot": false, + "isTTP": false, + "dateFmtLocale": { + "name": "en", + "months": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "monthsShort": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "weekdays": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "weekdaysMin": [ + "S", + "M", + "T", + "W", + "T", + "F", + "S" + ], + "weekdaysShort": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "formats": { + "lt": "h:mm A", + "lts": "h:mm:ss A", + "LT": "HH:mm", + "LTS": "HH:mm:ss", + "L": "MM/DD/YYYY", + "LL": "MMMM D, YYYY", + "LL-D": "MMMM YYYY", + "LL-Y": "MMMM D", + "LLL": "MMMM D, YYYY HH:mm", + "LLL-Y": "MMMM D HH:mm", + "LLLL": "dddd MMMM D, YYYY HH:mm", + "LLLL-Y": "dddd MMMM D HH:mm", + "l": "M/D/YYYY", + "l-Y": "M/D", + "ll": "MMM D, YYYY", + "ll-Y": "MMM D", + "lll": "MMM D, YYYY h:mm A", + "lll-Y": "MMM D h:mm A", + "llll": "ddd MMM D, YYYY h:mm A", + "llll-Y": "ddd MMM D h:mm A", + "ll-Y+w": "ddd, MMM D", + "LT+to": "HH:mm ([GMT]Z)", + "LLL+to": "MMMM D, YYYY, HH:mm ([GMT]Z)" + }, + "past": { + "y": { + "one": "%s yr. ago", + "other": "%s yr. ago" + }, + "M": { + "one": "%s mo. ago", + "other": "%s mo. ago" + }, + "w": { + "one": "%s wk. ago", + "other": "%s wk. ago" + }, + "d": { + "one": "%s day ago", + "other": "%s days ago" + }, + "h": { + "one": "%s hr. ago", + "other": "%s hr. ago" + }, + "m": { + "one": "%s min. ago", + "other": "%s min. ago" + }, + "s": { + "one": "%s sec. ago", + "other": "%s sec. ago" + } + }, + "future": { + "y": { + "one": "in %s yr.", + "other": "in %s yr." + }, + "M": { + "one": "in %s mo.", + "other": "in %s mo." + }, + "w": { + "one": "in %s wk.", + "other": "in %s wk." + }, + "d": { + "one": "in %s day", + "other": "in %s days" + }, + "h": { + "one": "in %s hr.", + "other": "in %s hr." + }, + "m": { + "one": "in %s min.", + "other": "in %s min." + }, + "s": { + "one": "in %s sec.", + "other": "in %s sec." + } + }, + "abbr": { + "y": { + "one": "%sy", + "other": "%sy" + }, + "M": { + "one": "%smo", + "other": "%smo" + }, + "w": { + "one": "%sw", + "other": "%sw" + }, + "d": { + "one": "%sd", + "other": "%sd" + }, + "h": { + "one": "%sh", + "other": "%sh" + }, + "m": { + "one": "%sm", + "other": "%sm" + }, + "s": { + "one": "%ss", + "other": "%ss" + } + }, + "justNow": "Just now", + "yesterday": "Yesterday", + "today": "Today", + "tomorrow": "Tomorrow", + "weekStart": 0 + }, + "videoPlayerConfig": { + "fallback": false + }, + "playbackNormalizePath": { + "path": [ + "/foryou", + "/following" + ] + }, + "bitrateConfig": { + "bitrateLower": 200000, + "bitrateRange": [ + 200000, + 2500000 + ], + "bitrateUpper": 2000000, + "mode": "buffer-info", + "paramBf": 0.3, + "paramBp": 0.7, + "paramLower": 0.5, + "paramUpper": 1.4, + "paramUpperBl": 0.4, + "paramVl1": 0.7, + "paramVl2": 1, + "paramVlLower": 0.5, + "paramVlUpper": 0.8, + "slidingWindowCountThreshold": 10, + "slidingWindowExtraction": "weighted_median", + "slidingWindowType": "by_weight", + "slidingWindowWeight": "size", + "slidingWindowWeightThreshold": 10000000 + }, + "searchVideoForLoggedin": false, + "studioDownloadEntrance": { + "regions": [ + "BY", + "TJ", + "TM", + "KZ", + "GB", + "DE", + "ES", + "FR", + "UZ", + "KG", + "MD", + "AC", + "AD", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AS", + "AU", + "AW", + "AX", + "BA", + "BB", + "BD", + "BF", + "BG", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BQ", + "BS", + "BT", + "BV", + "BW", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CI", + "CK", + "CM", + "CN", + "CS", + "CU", + "CV", + "CW", + "CX", + "CY", + "DK", + "DM", + "DR", + "EA", + "EE", + "EH", + "EN", + "ET", + "FJ", + "FK", + "FM", + "FO", + "GA", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GN", + "GP", + "GQ", + "GS", + "GU", + "GW", + "GY", + "HK", + "HR", + "HT", + "IC", + "IE", + "IL", + "IM", + "IN", + "IO", + "IS", + "JE", + "KE", + "KH", + "KI", + "KN", + "KY", + "LA", + "LC", + "LI", + "LK", + "LR", + "LS", + "LU", + "LV", + "MC", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MS", + "MT", + "MU", + "MV", + "MW", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NJ", + "NO", + "NR", + "NU", + "NZ", + "PF", + "PG", + "PK", + "PM", + "PN", + "PR", + "PW", + "QS", + "RE", + "RW", + "SB", + "SC", + "SH", + "SI", + "SJ", + "SL", + "SM", + "SN", + "SR", + "ST", + "SX", + "SZ", + "TC", + "TF", + "TG", + "TK", + "TL", + "TO", + "TP", + "TS", + "TV", + "TZ", + "UG", + "UM", + "VA", + "VC", + "VG", + "VI", + "VU", + "WF", + "WS", + "XA", + "XB", + "XK", + "XX", + "YJ", + "YT", + "ZA", + "ZG", + "ZM", + "ZN", + "ZW", + "ZZ", + "ES", + "TR", + "AZ", + "MA", + "LB", + "DZ", + "ER", + "TN", + "SS", + "BR", + "MX", + "TH", + "ID", + "MY", + "VN", + "PH", + "SG", + "KR", + "JP", + "EG", + "SY", + "PS", + "JO", + "IQ", + "DJ", + "KM", + "SO", + "TD", + "OM", + "QA", + "KW", + "AE", + "BH", + "SA", + "YE", + "LY", + "SD", + "MR", + "LT", + "JM", + "CH", + "IR", + "AN", + "FI", + "PY", + "AR", + "GR", + "UY", + "CR", + "DO", + "PE", + "IT", + "TT", + "SV", + "CZ", + "BE", + "CO", + "TW", + "HN", + "EC", + "SK", + "NP", + "RS", + "NI", + "SE", + "GT", + "CL", + "NL", + "RO", + "HU", + "VE", + "AT", + "PL", + "PA", + "BO", + "GM", + "PT" + ], + "userRegions": [ + "US", + "AS", + "GU", + "MP", + "PR", + "VI", + "UM" + ], + "allRegions": false, + "userBlockRegions": [ + "KP", + "IR", + "SY", + "CU", + "RU" + ], + "userBlockGeoNameIDs": [ + "703883", + "702657", + "709716" + ] + }, + "liveSuggestConfig": { + "isBlockedArea": false, + "isRiskArea": false + }, + "liveAnchorEntrance": { + "liveCenter": true, + "creatorHub": true, + "liveStudio": true + }, + "liveStudioEnable": true, + "xgplayerInitHost": { + "group1": [ + "v16-webapp.tiktok.com", + "v16m-webapp.tiktokcdn-us.com" + ], + "group2": [ + "v16-webapp-prime.tiktok.com", + "v16-webapp-prime.us.tiktok.com", + "v19-webapp-prime.us.tiktok.com", + "v19-webapp-prime.tiktok.com", + "v16-webapp-prime-test-ttp.us.tiktok.com", + "v19-webapp-prime-test-ttp.us.tiktok.com", + "v16-webapp-prime-test.tiktok.com", + "v19-webapp-prime-test.tiktok.com", + "webapp-va.tiktok.com", + "webapp-sg.tiktok.com", + "webapp-i18n.tiktok.com", + "video-useast5.us.tiktok.com", + "video-useast5-bp.us.tiktok.com", + "webapp-useastred.eu.tiktok.com", + "webapp-no1a.tiktok.com" + ] + }, + "videoOrder": { + "videoOrder": [ + { + "property": "QualityType", + "detail": [ + 10, + 28, + 30 + ] + }, + { + "property": "Bitrate", + "order": "desc" + } + ] + }, + "searchLiveForLoggedin": true, + "canUseQuery": false, + "bitrateSelectorConfigs": { + "configs": [ + { + "paramBf": 0.3, + "paramBp": 0.5, + "paramUpper": 1.5, + "paramLower": 0.6, + "paramUpperBl": 0.7, + "paramVl1": 0.8, + "paramVl2": 3, + "paramVlUpper": 0.9, + "paramVlLower": 0.7, + "bitrateUpper": 4000000, + "bitrateLower": 200000, + "slidingWindowType": "by_weight", + "slidingWindowWeight": "size", + "slidingWindowWeightThreshold": 20000000, + "slidingWindowCountThreshold": 30, + "slidingWindowExtraction": "weighted_median", + "bitrateRange": [ + 20000, + 25000000 + ], + "mode": "bandwidth", + "quality_filter": {}, + "white_list": [], + "autoBitrateParams": { + "paramA": 0, + "paramB": 1.537664e-08, + "paramC": 0.470864, + "paramD": 1280000, + "minBitrate": 200000 + }, + "defaultBitrate": 1000000 + }, + { + "paramBf": 0.3, + "paramBp": 0.5, + "paramUpper": 1.5, + "paramLower": 0.6, + "paramUpperBl": 0.7, + "paramVl1": 0.8, + "paramVl2": 3, + "paramVlUpper": 0.9, + "paramVlLower": 0.7, + "bitrateUpper": 4000000, + "bitrateLower": 200000, + "slidingWindowType": "by_weight", + "slidingWindowWeight": "size", + "slidingWindowWeightThreshold": 20000000, + "slidingWindowCountThreshold": 30, + "slidingWindowExtraction": "weighted_median", + "bitrateRange": [ + 20000, + 25000000 + ], + "mode": "buffer-info1", + "quality_filter": {}, + "white_list": [], + "autoBitrateParams": { + "paramA": 0, + "paramB": 1.537664e-08, + "paramC": 0.470864, + "paramD": 1280000, + "minBitrate": 200000 + }, + "defaultBitrate": 1000000 + } + ] + }, + "idc": "my", + "vregion": "Singapore-Central", + "vgeo": "VGeo-ROW", + "videoCoverSettings": { + "format": 0, + "acceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "_ssrCount": 0 + }, + "hevcRobustness": { + "useHevcRobustTest": false, + "forceRobustTest": [ + "Edge" + ] + }, + "apiKeys": { + "firebase": "AIzaSyDHGqRfibWT6DffZBTYlhXfTQHAP_ri1MI" + }, + "solariaPortrait": { + "ff_duration_avg": "323", + "vv_avg_per_day": "0" + }, + "claConfig": { + "translationLanguageList": [ + { + "en_name": "", + "code": "az", + "local_name": "Az\u0259rbaycan", + "locale": "az", + "index": 1 + }, + { + "en_name": "", + "code": "id", + "local_name": "Bahasa Indonesia", + "locale": "id_ID", + "index": 2 + }, + { + "en_name": "", + "code": "ms", + "local_name": "Bahasa Melayu", + "locale": "ms_MY", + "index": 3 + }, + { + "en_name": "", + "code": "jv", + "local_name": "Basa Jawa", + "locale": "jv_ID", + "index": 4 + }, + { + "en_name": "", + "code": "ca", + "local_name": "Catal\u00e0", + "locale": "ca", + "index": 5 + }, + { + "en_name": "", + "code": "ceb", + "local_name": "Cebuano", + "locale": "ceb_PH", + "index": 6 + }, + { + "en_name": "", + "code": "cs", + "local_name": "\u010ce\u0161tina", + "locale": "cs_CZ", + "index": 7 + }, + { + "en_name": "", + "code": "da", + "local_name": "Dansk", + "locale": "da", + "index": 8 + }, + { + "en_name": "", + "code": "de", + "local_name": "Deutsch", + "locale": "de_DE", + "index": 9 + }, + { + "en_name": "", + "code": "et", + "local_name": "Eesti", + "locale": "et", + "index": 10 + }, + { + "en_name": "", + "code": "en", + "local_name": "English", + "locale": "en", + "index": 11 + }, + { + "en_name": "", + "code": "es", + "local_name": "Espa\u00f1ol", + "locale": "es", + "index": 12 + }, + { + "en_name": "", + "code": "fil", + "local_name": "Filipino", + "locale": "fil_PH", + "index": 13 + }, + { + "en_name": "", + "code": "fr", + "local_name": "Fran\u00e7ais", + "locale": "fr", + "index": 14 + }, + { + "en_name": "", + "code": "ga", + "local_name": "Gaeilge", + "locale": "ga", + "index": 15 + }, + { + "en_name": "", + "code": "hr", + "local_name": "Hrvatski", + "locale": "hr", + "index": 16 + }, + { + "en_name": "", + "code": "is", + "local_name": "\u00cdslenska", + "locale": "is", + "index": 17 + }, + { + "en_name": "", + "code": "it", + "local_name": "Italiano", + "locale": "it_IT", + "index": 18 + }, + { + "en_name": "", + "code": "sw", + "local_name": "Kiswahili", + "locale": "sw", + "index": 19 + }, + { + "en_name": "", + "code": "lv", + "local_name": "Latvie\u0161u", + "locale": "lv", + "index": 20 + }, + { + "en_name": "", + "code": "lt", + "local_name": "Lietuvi\u0173", + "locale": "lt", + "index": 21 + }, + { + "en_name": "", + "code": "hu", + "local_name": "Magyar", + "locale": "hu_HU", + "index": 22 + }, + { + "en_name": "", + "code": "nl", + "local_name": "Nederlands", + "locale": "nl_NL", + "index": 23 + }, + { + "en_name": "", + "code": "nb", + "local_name": "norsk (bokm\u00e5l)", + "locale": "nb", + "index": 24 + }, + { + "en_name": "", + "code": "uz", + "local_name": "O\u02bbzbek", + "locale": "uz", + "index": 25 + }, + { + "en_name": "", + "code": "pl", + "local_name": "Polski", + "locale": "pl_PL", + "index": 26 + }, + { + "en_name": "", + "code": "pt", + "local_name": "Portugu\u00eas", + "locale": "pt", + "index": 27 + }, + { + "en_name": "", + "code": "ro", + "local_name": "Rom\u00e2n\u0103", + "locale": "ro_RO", + "index": 28 + }, + { + "en_name": "", + "code": "sq", + "local_name": "Shqip", + "locale": "sq", + "index": 29 + }, + { + "en_name": "", + "code": "sk", + "local_name": "Sloven\u010dina", + "locale": "sk", + "index": 30 + }, + { + "en_name": "", + "code": "sl", + "local_name": "Sloven\u0161\u010dina", + "locale": "sl", + "index": 31 + }, + { + "en_name": "", + "code": "fi", + "local_name": "Suomi", + "locale": "fi_FI", + "index": 32 + }, + { + "en_name": "", + "code": "sv", + "local_name": "Svenska", + "locale": "sv_SE", + "index": 33 + }, + { + "en_name": "", + "code": "vi", + "local_name": "Ti\u1ebfng Vi\u1ec7t", + "locale": "vi_VN", + "index": 34 + }, + { + "en_name": "", + "code": "tr", + "local_name": "T\u00fcrk\u00e7e", + "locale": "tr_TR", + "index": 35 + }, + { + "en_name": "", + "code": "el", + "local_name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac", + "locale": "el_GR", + "index": 36 + }, + { + "en_name": "", + "code": "bg", + "local_name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438", + "locale": "bg", + "index": 37 + }, + { + "en_name": "", + "code": "kk", + "local_name": "\u049a\u0430\u0437\u0430\u049b\u0448\u0430", + "locale": "kk", + "index": 38 + }, + { + "en_name": "", + "code": "ru", + "local_name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439", + "locale": "ru_RU", + "index": 39 + }, + { + "en_name": "", + "code": "uk", + "local_name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430", + "locale": "uk_UA", + "index": 40 + }, + { + "en_name": "", + "code": "he", + "local_name": "\u05e2\u05d1\u05e8\u05d9\u05ea", + "locale": "he_IL", + "index": 41 + }, + { + "en_name": "", + "code": "ur", + "local_name": "\u0627\u0631\u062f\u0648", + "locale": "ur", + "index": 42 + }, + { + "en_name": "", + "code": "ar", + "local_name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629", + "locale": "ar", + "index": 43 + }, + { + "en_name": "", + "code": "hi", + "local_name": "\u0939\u093f\u0902\u0926\u0940", + "locale": "hi_IN", + "index": 44 + }, + { + "en_name": "", + "code": "bn", + "local_name": "\u09ac\u09be\u0999\u09cd\u0997\u09be\u09b2\u09bf", + "locale": "bn_IN", + "index": 45 + }, + { + "en_name": "", + "code": "th", + "local_name": "\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22", + "locale": "th_TH", + "index": 46 + }, + { + "en_name": "", + "code": "my", + "local_name": "\u1019\u103c\u1014\u103a\u1019\u102c", + "locale": "my_MM", + "index": 47 + }, + { + "en_name": "", + "code": "km", + "local_name": "\u1781\u17d2\u1798\u17c2\u179a", + "locale": "km_KH", + "index": 48 + }, + { + "en_name": "", + "code": "ja", + "local_name": "\u65e5\u672c\u8a9e", + "locale": "ja_JP", + "index": 49 + }, + { + "en_name": "", + "code": "zh-Hant", + "local_name": "\u4e2d\u6587\uff08\u7e41\u9ad4\uff09", + "locale": "zh_Hant_TW", + "index": 50 + }, + { + "en_name": "", + "code": "zh-Hans", + "local_name": "\u4e2d\u6587\uff08\u7b80\u4f53\uff09", + "locale": "zh_Hans", + "index": 51 + }, + { + "en_name": "", + "code": "ko", + "local_name": "\ud55c\uad6d\uc5b4", + "locale": "ko_KR", + "index": 52 + } + ], + "dntLanguageList": [ + { + "code": "af", + "en_name": "", + "local_name": "Afrikaans" + }, + { + "code": "az", + "en_name": "", + "local_name": "Az\u0259rbaycan" + }, + { + "code": "id", + "en_name": "", + "local_name": "Bahasa Indonesia" + }, + { + "code": "ms", + "en_name": "", + "local_name": "Bahasa Melayu" + }, + { + "code": "jv", + "en_name": "", + "local_name": "Basa Jawa" + }, + { + "code": "bs", + "en_name": "", + "local_name": "bosanski" + }, + { + "code": "ca", + "en_name": "", + "local_name": "Catal\u00e0" + }, + { + "code": "ceb", + "en_name": "", + "local_name": "Cebuano" + }, + { + "code": "cs", + "en_name": "", + "local_name": "\u010ce\u0161tina" + }, + { + "code": "da", + "en_name": "", + "local_name": "Dansk" + }, + { + "code": "de", + "en_name": "", + "local_name": "Deutsch" + }, + { + "code": "et", + "en_name": "", + "local_name": "Eesti" + }, + { + "code": "en", + "en_name": "", + "local_name": "English" + }, + { + "code": "es", + "en_name": "", + "local_name": "Espa\u00f1ol" + }, + { + "code": "eo", + "en_name": "", + "local_name": "Esperanto" + }, + { + "code": "eu", + "en_name": "", + "local_name": "Euskara" + }, + { + "code": "fil", + "en_name": "", + "local_name": "Filipino" + }, + { + "code": "fr", + "en_name": "", + "local_name": "Fran\u00e7ais" + }, + { + "code": "fy", + "en_name": "", + "local_name": "Frysk" + }, + { + "code": "ga", + "en_name": "", + "local_name": "Gaeilge" + }, + { + "code": "hr", + "en_name": "", + "local_name": "Hrvatski" + }, + { + "code": "zu", + "en_name": "", + "local_name": "IsiZulu" + }, + { + "code": "is", + "en_name": "", + "local_name": "\u00cdslenska" + }, + { + "code": "it", + "en_name": "", + "local_name": "Italiano" + }, + { + "code": "sw", + "en_name": "", + "local_name": "Kiswahili" + }, + { + "code": "lv", + "en_name": "", + "local_name": "Latvie\u0161u" + }, + { + "code": "lt", + "en_name": "", + "local_name": "Lietuvi\u0173" + }, + { + "code": "hu", + "en_name": "", + "local_name": "Magyar" + }, + { + "code": "mg", + "en_name": "", + "local_name": "Malagasy" + }, + { + "code": "nl", + "en_name": "", + "local_name": "Nederlands" + }, + { + "code": "no", + "en_name": "", + "local_name": "norsk" + }, + { + "code": "nb", + "en_name": "", + "local_name": "norsk (bokm\u00e5l)" + }, + { + "code": "uz", + "en_name": "", + "local_name": "O\u02bbzbek" + }, + { + "code": "pl", + "en_name": "", + "local_name": "Polski" + }, + { + "code": "pt", + "en_name": "", + "local_name": "Portugu\u00eas" + }, + { + "code": "ro", + "en_name": "", + "local_name": "Rom\u00e2n\u0103" + }, + { + "code": "sq", + "en_name": "", + "local_name": "Shqip" + }, + { + "code": "sk", + "en_name": "", + "local_name": "sloven\u010dina" + }, + { + "code": "sl", + "en_name": "", + "local_name": "sloven\u0161\u010dina" + }, + { + "code": "fi", + "en_name": "", + "local_name": "Suomi" + }, + { + "code": "sv", + "en_name": "", + "local_name": "Svenska" + }, + { + "code": "tl", + "en_name": "", + "local_name": "Tagalog" + }, + { + "code": "vi", + "en_name": "", + "local_name": "Ti\u1ebfng Vi\u1ec7t" + }, + { + "code": "tr", + "en_name": "", + "local_name": "T\u00fcrk\u00e7e" + }, + { + "code": "el", + "en_name": "", + "local_name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac" + }, + { + "code": "be", + "en_name": "", + "local_name": "\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f" + }, + { + "code": "bg", + "en_name": "", + "local_name": "\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438" + }, + { + "code": "kk", + "en_name": "", + "local_name": "\u049a\u0430\u0437\u0430\u049b\u0448\u0430" + }, + { + "code": "mk", + "en_name": "", + "local_name": "\u043c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438" + }, + { + "code": "mn", + "en_name": "", + "local_name": "\u043c\u043e\u043d\u0433\u043e\u043b" + }, + { + "code": "ru", + "en_name": "", + "local_name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439" + }, + { + "code": "sr", + "en_name": "", + "local_name": "\u0441\u0440\u043f\u0441\u043a\u0438" + }, + { + "code": "tt", + "en_name": "", + "local_name": "\u0422\u0430\u0442\u0430\u0440\u0447\u0430" + }, + { + "code": "uk", + "en_name": "", + "local_name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430" + }, + { + "code": "ka", + "en_name": "", + "local_name": "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8" + }, + { + "code": "he", + "en_name": "", + "local_name": "\u05e2\u05d1\u05e8\u05d9\u05ea" + }, + { + "code": "ur", + "en_name": "", + "local_name": "\u0627\u0631\u062f\u0648" + }, + { + "code": "ar", + "en_name": "", + "local_name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629" + }, + { + "code": "fa", + "en_name": "", + "local_name": "\u0641\u0627\u0631\u0633\u06cc" + }, + { + "code": "mr", + "en_name": "", + "local_name": "\u092e\u0930\u093e\u0920\u0940" + }, + { + "code": "hi", + "en_name": "", + "local_name": "\u0939\u093f\u0902\u0926\u0940" + }, + { + "code": "bn", + "en_name": "", + "local_name": "\u09ac\u09be\u0999\u09cd\u0997\u09be\u09b2\u09bf" + }, + { + "code": "pa", + "en_name": "", + "local_name": "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40" + }, + { + "code": "gu", + "en_name": "", + "local_name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0" + }, + { + "code": "ta", + "en_name": "", + "local_name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd" + }, + { + "code": "te", + "en_name": "", + "local_name": "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41" + }, + { + "code": "kn", + "en_name": "", + "local_name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1" + }, + { + "code": "ml", + "en_name": "", + "local_name": "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02" + }, + { + "code": "si", + "en_name": "", + "local_name": "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd" + }, + { + "code": "th", + "en_name": "", + "local_name": "\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22" + }, + { + "code": "my", + "en_name": "", + "local_name": "\u1019\u103c\u1014\u103a\u1019\u102c" + }, + { + "code": "lo", + "en_name": "", + "local_name": "\u0ea5\u0eb2\u0ea7" + }, + { + "code": "km", + "en_name": "", + "local_name": "\u1781\u17d2\u1798\u17c2\u179a" + }, + { + "code": "am", + "en_name": "", + "local_name": "\u12a0\u121b\u122d\u129b" + }, + { + "code": "ja", + "en_name": "", + "local_name": "\u65e5\u672c\u8a9e" + }, + { + "code": "zh-Hant", + "en_name": "", + "local_name": "\u4e2d\u6587\uff08\u7e41\u9ad4\uff09" + }, + { + "code": "zh-Hans", + "en_name": "", + "local_name": "\u4e2d\u6587\uff08\u7b80\u4f53\uff09" + }, + { + "code": "ko", + "en_name": "", + "local_name": "\ud55c\uad6d\uc5b4" + } + ], + "isoToSubtitleLanguageCode": { + "ar": "ara-SA", + "bg": "bul-BG", + "bn": "ben-BD", + "ceb": "ceb-PH", + "cs": "ces-CZ", + "da": "dan-DK", + "de": "deu-DE", + "el": "ell-GR", + "en": "eng-US", + "es": "spa-ES", + "et": "est-EE", + "fi": "fin-FI", + "fil": "fil-PH", + "fr": "fra-FR", + "fr-ca": "fra-CA", + "fr-CA": "fra-CA", + "he": "heb-IL", + "hi": "hin-IN", + "hr": "hrv-HR", + "hu": "hun-HU", + "id": "ind-ID", + "it": "ita-IT", + "ja": "jpn-JP", + "jv": "jav-ID", + "km": "khm-KH", + "ko": "kor-KR", + "lt": "lit-LT", + "lv": "lav-LV", + "ms": "msa-MY", + "my": "mya-MM", + "nb": "nob-NO", + "nl": "nld-NL", + "pl": "pol-PL", + "pt": "por-PT", + "ro": "ron-RO", + "ru": "rus-RU", + "sk": "slk-SK", + "sv": "swe-SE", + "th": "tha-TH", + "tr": "tur-TR", + "uk": "ukr-UA", + "ur": "urd-PK", + "uz": "uzb-UZ", + "vi": "vie-VN", + "zh": "cmn-Hans-CN", + "zh-hans": "cmn-Hans-CN", + "zh-Hans": "cmn-Hans-CN", + "zh-hant": "cmn-Hant-CN", + "zh-Hant": "cmn-Hant-CN", + "kk": "kaz-KZ", + "is": "isl-IS", + "ga": "gle-IE", + "ca": "cat-ES", + "sq": "alb-AL", + "sl": "slv-SI", + "sw": "swa-SW", + "az": "aze-AZ" + }, + "subtitleToIsoLanguageCode": { + "ara-SA": "ar", + "bul-BG": "bg", + "ben-BD": "bn", + "ceb-PH": "ceb", + "ces-CZ": "cs", + "dan-DK": "da", + "deu-DE": "de", + "ell-GR": "el", + "eng-US": "en", + "spa-ES": "es", + "est-EE": "et", + "fin-FI": "fi", + "fil-PH": "fil", + "fra-FR": "fr", + "fra-CA": "fr-CA", + "heb-IL": "he", + "hin-IN": "hi", + "hrv-HR": "hr", + "hun-HU": "hu", + "ind-ID": "id", + "ita-IT": "it", + "jpn-JP": "ja", + "jav-ID": "jv", + "khm-KH": "km", + "kor-KR": "ko", + "lit-LT": "lt", + "lav-LV": "lv", + "msa-MY": "ms", + "mya-MM": "my", + "nob-NO": "nb", + "nld-NL": "nl", + "pol-PL": "pl", + "por-PT": "pt", + "ron-RO": "ro", + "rus-RU": "ru", + "slk-SK": "sk", + "swe-SE": "sv", + "tha-TH": "th", + "tur-TR": "tr", + "ukr-UA": "uk", + "urd-PK": "ur", + "uzb-UZ": "uz", + "vie-VN": "vi", + "cmn-Hans-CN": "zh-Hans", + "cmn-Hant-CN": "zh-Hant", + "kaz-KZ": "kk", + "isl-IS": "is", + "gle-IE": "ga", + "cat-ES": "ca", + "alb-AL": "sq", + "slv-SI": "sl", + "swa-SW": "sw", + "aze-AZ": "az" + } + }, + "upliftModelInfo": { + "perf_blur_background": { + "inference_effective_duration": 1, + "inference_disabled_vgeo_list": [ + "VGeo-EU", + "VGeo-US" + ], + "v0": { + "type": "base", + "default_vid": "v0" + }, + "v1": { + "type": "base", + "default_vid": "v1" + }, + "v2": { + "type": "model", + "default_vid": "v0", + "treatment_list": [ + { + "treatment_vid": "v1", + "model_name": "perf_blur_background_play_duration_post_r", + "model_type": "r", + "feature_number": "353", + "prediction_threshold": 0, + "feature_mask": "CBAAAAAAAAAEAAAAAAAAAATDfX0moRArLj4IhMe/4P/wsAlAGieQCEzbqMAA" + } + ] + } + }, + "preview_cover": { + "inference_effective_duration": 1, + "inference_disabled_vgeo_list": [ + "VGeo-EU", + "VGeo-US" + ], + "v0": { + "type": "base", + "default_vid": "v0" + }, + "v1": { + "type": "base", + "default_vid": "v1" + }, + "v2": { + "type": "model", + "default_vid": "v0", + "treatment_list": [ + { + "treatment_vid": "v1", + "model_name": "preview_cover_play_duration_post_r", + "model_type": "r", + "feature_number": "353", + "prediction_threshold": 0, + "feature_mask": "AAAAAAAAAAAQAAAAAAAAAYDe3iR6pCIeISokouu36iUw0YBibakMOuFF+CgA" + } + ] + } + }, + "top_right_qr": { + "inference_effective_duration": 1, + "inference_disabled_vgeo_list": [ + "VGeo-EU", + "VGeo-US" + ], + "v0": { + "type": "base", + "default_vid": "v0" + }, + "v1": { + "type": "base", + "default_vid": "v1" + }, + "v2": { + "type": "model", + "default_vid": "v0", + "treatment_list": [ + { + "treatment_vid": "v1", + "model_name": "top_right_qr_play_duration_post_r", + "model_type": "r", + "feature_number": "353", + "prediction_threshold": 0, + "feature_mask": "ABYAAgAAAAAAAAAEAAQAAYG18fByIBgGSx6IZ+FnqXuQAwAAeAaiEg3P/ImA" + } + ] + } + }, + "default_auto_scroll": { + "inference_effective_duration": 1, + "inference_disabled_vgeo_list": [ + "VGeo-EU", + "VGeo-US" + ], + "v0": { + "type": "base", + "default_vid": "v0" + }, + "v1": { + "type": "base", + "default_vid": "v1" + }, + "v2": { + "type": "model", + "default_vid": "v0", + "treatment_list": [ + { + "treatment_vid": "v1", + "model_name": "default_auto_scroll_play_duration_post_r", + "model_type": "r", + "feature_number": "353", + "prediction_threshold": 0, + "feature_mask": "IBAAAAAAAAGwAAAAAAAAAcQ99fUp4hIZCSeEgC0/rKswb4FGTUkESQFAcGGA" + } + ] + } + }, + "webapp_auto_dark_mode": { + "inference_effective_duration": 1, + "inference_disabled_vgeo_list": [ + "VGeo-EU", + "VGeo-US" + ], + "v0": { + "type": "base", + "default_vid": "v0" + }, + "v1": { + "type": "base", + "default_vid": "v1" + }, + "v2": { + "type": "model", + "default_vid": "v0", + "treatment_list": [ + { + "treatment_vid": "v1", + "model_name": "auto_dark_mode_play_duration_post_r", + "model_type": "r", + "feature_number": "353", + "prediction_threshold": 0, + "feature_mask": "///6JAAAAAP3+AAgAQZZKf//4AAAAAAAAAAAAWAQFAAQAAAAAAAAAIAAAAeA" + } + ] + }, + "v3": { + "type": "model", + "default_vid": "v0", + "treatment_list": [ + { + "treatment_vid": "v1", + "model_name": "auto_dark_mode_play_duration_post_t", + "model_type": "t", + "feature_number": "353", + "prediction_threshold": 0, + "feature_mask": "///6JAAAAAP3+AAgAQZZKf//4AAAAAAAAAAAAWAQFAAQAAAAAAAAAIAAAAeA" + } + ] + } + }, + "webapp_dynamic_bottom_right": { + "inference_effective_duration": 1, + "inference_disabled_vgeo_list": [ + "VGeo-EU", + "VGeo-US" + ], + "v0": { + "type": "base", + "default_vid": "v0" + }, + "v1": { + "type": "base", + "default_vid": "v1" + }, + "v2": { + "type": "model", + "default_vid": "v0", + "treatment_list": [ + { + "treatment_vid": "v2", + "model_name": "dynamic_bottom_right_play_duration_post_r", + "model_type": "r", + "feature_number": "353", + "prediction_threshold": 0, + "feature_mask": "///6JAFAAAf/+AAwAQMAIf/+dgAAFiMAAgAABm8gP4AAAAAAAAAAG5kAAAAA" + } + ] + }, + "v3": { + "type": "model", + "default_vid": "v0", + "treatment_list": [ + { + "treatment_vid": "v2", + "model_name": "dynamic_bottom_right_play_duration_post_t", + "model_type": "t", + "feature_number": "353", + "prediction_threshold": 0, + "feature_mask": "///6JAFAAAf/+AAwAQMAIf/+dgAAFiMAAgAABm8gP4AAAAAAAAAAG5kAAAAA" + } + ] + } + }, + "video_detail_end_card": { + "v0": { + "type": "base", + "default_vid": "v2" + }, + "v1": { + "type": "model", + "default_vid": "v0", + "treatment_list": [ + { + "treatment_vid": "v1", + "model_name": "video_detail_end_card_v1_play_duration_r", + "model_type": "r", + "feature_number": "353", + "prediction_threshold": 0.2, + "feature_mask": "V//6JAAAAAP3+AAgAQZZKf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "treatment_vid": "v2", + "model_name": "video_detail_end_card_v2_play_duration_r", + "model_type": "r", + "feature_number": "353", + "prediction_threshold": 0.2, + "feature_mask": "V//6JAAAAAP3+AAgAQZZKf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + } + ] + }, + "v2": { + "type": "base", + "default_vid": "v0" + } + } + }, + "interestList": { + "interest_list": [ + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691802882053~noop.webp", + "id": "Animals", + "text": "Animals", + "text_key": "new_user_interest_animals" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691800996870~noop.webp", + "id": "Comedy", + "text": "Comedy", + "text_key": "new_user_interest_comedy" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691804510213~noop.webp", + "id": "Travel", + "text": "Travel", + "text_key": "new_user_interest_travel" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691810021382~noop.webp", + "id": "Food", + "text": "Food", + "text_key": "new_user_interest_food" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691798885381~noop.webp", + "id": "Sports", + "text": "Sports", + "text_key": "new_user_interest_sports" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691809501190~noop.webp", + "id": "Beauty & Style", + "text": "Beauty & Style", + "text_key": "new_user_interest_beauty_style" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691794949125~noop.webp", + "id": "Art", + "text": "Art", + "text_key": "new_user_interest_art" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691806067717~noop.webp", + "id": "Gaming", + "text": "Gaming", + "text_key": "new_user_interest_gaming" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691796261894~noop.webp", + "id": "Science & Education", + "text": "Science & Education", + "text_key": "new_user_interest_science_education" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691796775942~noop.webp", + "id": "Dance", + "text": "Dance", + "text_key": "new_user_interest_dance" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691792318469~noop.webp", + "id": "DIY", + "text": "DIY", + "text_key": "new_user_interest_us_diy" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691798375429~noop.webp", + "id": "Auto", + "text": "Auto", + "text_key": "new_user_interest_auto" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691792851973~noop.webp", + "id": "Music", + "text": "Music", + "text_key": "new_user_interest_us_music" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691791275014~noop.webp", + "id": "Life Hacks", + "text": "Life Hacks", + "text_key": "new_user_interest_us_life_hacks" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691803422725~noop.webp", + "id": "Oddly Satisfying", + "text": "Oddly Satisfying", + "text_key": "new_user_interest_oddlysatisfying" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691806604294~noop.webp", + "id": "Outdoors", + "text": "Outdoors", + "text_key": "new_user_interest_outdoors" + }, + { + "cover_url": "http://p16.muscdn.com/img/musically-maliva-obj/1650691801547782~noop.webp", + "id": "Fandom", + "text": "Fandom", + "text_key": "new_user_interest_fandom" + } + ] + }, + "showApkTab": false, + "forceLoginSpecialRegions": [ + "BR" + ], + "hashedIP": "ab3d294a" + }, + "webapp.i18n-translation": { + "Webapp": { + "suggested_search_feedback1": "Which issues did you find?", + "suggested_search_feedback2": "Search history can\u2019t be seen", + "suggested_search_feedback3": "Recent search history disappeared", + "suggested_search_feedback4": "The suggested searches are not interesting or are not personalized", + "suggested_search_feedback5": "The suggested searches have misspelling/grammar mistakes", + "suggested_search_feedback6": "The suggested searches have illegal or unverified terms in them", + "suggested_search_feedback7": "The suggested searches have inappropriate terms (explicit or sickening)", + "suggested_search_feedback8": "Other", + "suggested_search_feedback9": "Give feedback", + "suggested_search_feedback10": "Feedback", + "suggested_search_feedback11": "Submit", + "suggested_search_feedback12": "Required", + "suggested_search_feedback13": "Your feedback will help us improve our suggested search terms", + "Share to": "Share on", + "studio_ttWeb_redesignEntry_tiktokStudio": "TikTok Studio", + "studio_ttWeb_redesignEntry_growthTools": "Growth tools", + "pc_web_explorePage_all": "All", + "pc_web_explorePage_topics_singing_dancing": "Singing & Dancing", + "pc_web_explorePage_topics_comedy": "Comedy", + "pc_web_explorePage_topics_sports": "Sports", + "pc_web_explorePage_topics_anime_comics": "Anime & Comics", + "pc_web_explorePage_topics_relationship": "Relationship", + "pc_web_explorePage_topics_shows": "Shows", + "pc_web_explorePage_topics_lipsync": "Lipsync", + "pc_web_explorePage_topics_daily_life": "Daily Life", + "pc_web_explorePage_topics_beauty_care": "Beauty Care", + "pc_web_explorePage_topics_games": "Games", + "pc_web_explorePage_topics_society": "Society", + "pc_web_explorePage_topics_outfit": "Outfit", + "pc_web_explorePage_topics_cars": "Cars", + "pc_web_explorePage_topics_food": "Food", + "pc_web_explorePage_topics_animals": "Animals", + "pc_web_explorePage_topics_family": "Family", + "pc_web_explorePage_topics_drama": "Drama", + "pc_web_explorePage_topics_fitness_health": "Fitness & Health", + "pc_web_explorePage_topics_education": "Education", + "pc_web_explorePage_topics_technology": "Technology", + "Web_explorePage_dynamicCategories_celebTV": "Celebrities & TV", + "Web_explorePage_dynamicCategories_musicDance": "Music & Dance", + "Web_explorePage_dynamicCategories_fashion": "Fashion", + "Web_explorePage_dynamicCategories_videoGames": "Video Games", + "Web_explorePage_dynamicCategories_animeCartoons": "Anime & Cartoons", + "Web_explorePage_dynamicCategories_sportsFitness": "Sports & Fitness", + "Web_explorePage_dynamicCategories_comedy": "Comedy", + "Web_explorePage_dynamicCategories_food": "Food", + "Web_explorePage_dynamicCategories_news": "News", + "Web_explorePage_dynamicCategories_cars": "Cars", + "Web_explorePage_dynamicCategories_babies": "Babies", + "Web_explorePage_dynamicCategories_pets": "Pets", + "Web_explorePage_dynamicCategories_relationships": "Relationships", + "Web_explorePage_dynamicCategories_wellness": "Wellness", + "Web_explorePage_dynamicCategories_gardening": "Gardening", + "new_user_interest_dailylife": "Daily Life", + "new_user_interest_comedy": "Comedy", + "new_user_interest_in_entertainment": "Entertainment", + "new_user_interest_animals": "Animals", + "new_user_interest_beauty_style": "Beauty & Style", + "new_user_interest_food": "Food", + "new_user_interest_in_learning": "Learning", + "new_user_interest_sports": "Sports", + "new_user_interest_drama": "Drama", + "new_user_interest_talent": "Talent", + "new_user_interest_auto": "Auto", + "new_user_interest_family": "Family", + "new_user_interest_diy_lifehacks": "DIY & Life Hacks", + "new_user_interest_fitness_health": "Fitness & Health", + "new_user_interest_in_artscrafts": "Arts & Crafts", + "new_user_interest_dance": "Dance", + "new_user_interest_oddlysatisfying": "Oddly Satisfying", + "new_user_interest_home_garden": "Home & Garden", + "new_user_interest_outdoors": "Outdoors", + "new_user_interest_gaming": "Gaming", + "new_user_interest_travel": "Travel", + "new_user_interest_us_diy": "DIY", + "new_user_interest_fashionaccessories": "Fashion Accessories", + "new_user_interest_art": "Art", + "new_user_interest_tech": "Tech", + "new_user_interest_science_education": "Science & Education", + "new_user_interest_clothing_apparel": "Clothing & Apparel", + "new_user_interest_popculture": "Pop Culture", + "new_user_interest_star": "Star", + "new_user_interest_celebrity": "Celebrity", + "new_user_interest_in_home_decor": "Home decor", + "new_user_interest_in_tech_science": "Tech & Science", + "new_user_interest_in_nature_wildlife": "Nature & Wildlife", + "new_user_interest_in_motivation": "Motivation", + "new_user_interest_in_emotional": "Emotional", + "new_user_interest_us_music": "Music", + "new_user_interest_us_life_hacks": "Life Hacks", + "new_user_interest_motivationadvice": "Motivation & Advice", + "new_user_interest_occupation": "Occupation", + "new_user_interest_fandom": "Fandom", + "new_user_interest_love_dating": "Love & Dating", + "custom": "Custom", + "terms": "Terms", + "privacy": "Privacy", + "copyright": "Copyright", + "Legal": "Legal", + "Privacy Policy": "Privacy Policy", + "help": "Help", + "safety": "Safety", + "privacyCenter_webFooter_resourcesPrivacy_navLink": "Privacy Center", + "Community Guidelines": "Community Guidelines", + "hca_web_Company": "Company", + "hca_web_Program": "Program", + "hca_web_TermsAndPolicies": "Terms & Policies", + "Upload": "Upload", + "Inbox": "Inbox", + "Page not available": "Page not available", + "server_error_sub": "Sorry about that! Please try again later.", + "try_again_btn": "Try again", + "online": "online", + "network_error_title": "Network error", + "network_error_sub": "Connect to the internet and try again.", + "download": "Download", + "following": "Following", + "friends": "Friends", + "messages": "Messages", + "Get": "Get", + "Post": "Post", + "Follow": "Follow", + "Trending": "Trending", + "Search": "Search", + "Like": "Like", + "inbox_follow_failed_banned": "This account was banned due to multiple Community Guideline violations", + "inbox_follow_failed_noconnection": "Couldn\u2019t follow, try checking your internet connection", + "inbox_follow_failed_other": "Couldn\u2019t follow account", + "video_detail": "Video details", + "search_video": "Videos", + "about": "About", + "or": "or", + "TikTok": "TikTok", + "scan_qrcode": "Scan QR code", + "Discover": "Discover", + "SERP discover title": "Discover New Videos on TikTok", + "TikTok i18n keywords": "TikTok, \u30c6\u30a3\u30c3\u30af\u30c8\u30c3\u30af, tik tok, tick tock, tic tok, tic toc, tictok, \u0442\u0438\u043a \u0442\u043e\u043a, ticktock", + "SEO_discover_title": "Discover popular videos | TikTok", + "SEO_discover_desc": "On your device or on the web, join millions of viewers on the fastest growing video app. Download TikTok to discover new creators, search popular hashtags, and watch trending videos.", + "SEO_following_title": "Following - Watch videos from creators you follow | TikTok ", + "SEO_following_desc": "It starts on TikTok. On your device or on the web, find and follow popular TikTok creators. Join millions of viewers on the fastest growing video app. Download TikTok to get started. ", + "SEO_qa_title_1": "{question} | TikTok Q&A", + "SEO_qa_desc_1": "There are {number} answers to the question \u201c{question}\u201d. Find out what people are saying.", + "SEO_search_title": "Find {searchkeywords} on TikTok | TikTok Search", + "SEO_search_desc": "Watch {searchkeywords} videos on TikTok customized just for you. There\u2019s something for everyone. Download the app to discover new creators and popular trends.", + "SEO_Recharge_title": "TikTok Coins: Buy and recharge Coins to send Gifts | TikTok", + "SEO_Recharge_desc": "Get Coins to send Gifts to TikTok LIVE hosts here! Buy or recharge TikTok Coins at a lower price, with more payment options and a customizable recharge amount.", + "search_on_tiktok": "Search {eventname} on TikTok!", + "offline_title": "Search on TikTok", + "outapp_copywriter": "Search {eventname} on TikTok to celebrate {eventname} with millions in the TikTok community.", + "expiration_reminder": "Sorry, this campaign has ended. Join us next time!", + "seo_serp_expansion_title": "{expansion_keywords}\uff5cTikTok Search", + "seo_serp_expansion_num1": "Discover videos related to {expansion_keywords} on TikTok.", + "SEO_live_title": "{username} is LIVE | TikTok", + "SEO_live_discover_title": "TikTok LIVE | TikTok", + "SEO_live_discover_desc": "Go LIVE, watch LIVE streams, discover livestreams from trending TikTok creators, and more.", + "SEO_live_desc": "Check out {username}'s LIVE streams on TikTok! Watch, follow, and discover the latest content from {username}.", + "SEO_live_desc2": "Upcoming LIVE: {event_name}. Check out {username}\u2019s LIVE streams on TikTok! Watch, follow, and discover the latest content from {username}. ", + "LIVE": "LIVE", + "playlist_sharing_metatitle": "{playlist_name} | TikTok Music Playlist", + "playlist_sharing_metadescription": "Check out this TikTok music playlist! {playlist_name} #TikTok", + "SEO_foryou_animals_title": "Animals | TikTok", + "SEO_foryou_animals_desc": "All about #animals on TikTok. #animalcare. Best animal TikTok videos. Pet TikToks. TikTok dogs. Cats on TikTok.", + "SEO_foryou_beauty_title": "Beauty | TikTok", + "SEO_foryou_beauty_desc": "Define your own #beauty on TikTok. Makeup routines. Beauty hacks. Beauty TikTokers.", + "SEO_foryou_comedy_title": "Comedy | TikTok", + "SEO_foryou_comedy_desc": "Watch and post original #comedyvideos on TikTok. Comedy challenges. Funny TikToks. Comedy TikTokers.", + "SEO_foryou_dance_title": "Dance | TikTok", + "SEO_foryou_dance_desc": "#dance with the TikTok community. Best TikTok dance. Popular TikTok dances. Dancing TikToks. TikTok dancers.", + "SEO_foryou_food_title": "Food | TikTok", + "SEO_foryou_food_desc": "Need #food inspo? Best food videos on TikTok. Viral foods. TikTok recipes. Food accounts. ", + "SEO_foryou_gaming_title": "Gaming | TikTok", + "SEO_foryou_gaming_desc": "Watch #gaming videos on TikTok. Gamers on TikTok. TikTok gaming. TikTok gamers. Game TikTok accounts.", + "SEO_foryou_sports_title": "Sports | TikTok", + "SEO_foryou_sports_desc": "Who\u2019s up for some #sports today? Fitness on TikTok. Best gym videos. Funny gym TikToks. ", + "share_live_event_title": "{Event Topic} | LIVE Event", + "share_live_event_desc": "{number} people registered for this event. See what\u2019s going on there!", + "playlist_share_title": "Playlist {Playlist_name} created by {username}", + "playlist_share_desc": "Enjoy a curated video list and find more videos on TikTok!", + "user_SEO_official_title1": "{username} Official | TikTok", + "user_SEO_title1": "{username} | TikTok", + "share_effect_title": "{sticker_name} on TikTok", + "share_sticker_desc": "{num, plural, one {{number} video used this sticker! {sticker_desc}} other {{number} videos used this sticker! {sticker_desc}}}", + "share_sticker_preset": "Check out this sticker I\u2019m using on TikTok!", + "basicPoi_metaTdk_title": "{poiName} | TikTok", + "basicPoi_metaTdk_regional_desc": "{videoCount} videos of things to do in {regionalPoiName}, food and drinks in {regionalPoiName}, sightseeings in {regionalPoiName}, shoppings in {regionalPoiName}, parks in {regionalPoiName}, where to stay in {regionalPoiName}. Discover {regionalPoiName} information on TikTok.", + "basicPoi_metaTdk_store_desc": "{poiName}, {l1PoiName}. Explore {videoCount} videos of {poiName} in {l1PoiName} on TikTok.", + "basicPoi_metaTdk_keyword": "{poiName}, {relatedKeyword}", + "basicPoi_metaTdk_storeSite": "{poiName}, {currentRegionalPoiName}, {currentL1RegionalPoiName}, {ttTypeNameMedium}, {ttTypeNameSuper}, {ttTypeNameTiny}", + "poidetails_tiktokplaces": "TikTok Places", + "videos_": "videos", + "poidetails_location_name_placehldtwo": "Explore { } on TikTok", + "poisuggest_placeuna_title_1": "Place unavailable", + "err_feature_unavailable": "Feature unavailable", + "pm_mt_ls_download_button": "Download LIVE Studio", + "SEO TikTok Description": "TikTok is the destination for short-form mobile videos. Our mission is to capture and present the world's creativity, knowledge, and precious life moments, directly from the mobile phone. TikTok enables everyone to be a creator, and encourages users to share their passion and creative expression through their videos.", + "seo_tts_selected_title": "{s_keywords} - TikTok Shop", + "seo_tts_selected_desc": "Check out {s_keywords} selection on TikTok Shop and get free shipping on eligible items. Discover trending items and exclusive collections!", + "seo_tts_selected_keywords": "{keywords}, TikTok Shop", + "seo_aggre_metadesc1": "{views} posts. Discover videos related to {keywords} on TikTok.", + "seo_aggre_metadesc2": "See more videos about {related_search_keywords}.", + "shared_collection_other_apps_title": "Collection %1$s created by %s", + "shared_collection_other_apps_description": "Watch amazing videos in this curated collection %1$s", + "TikTok Trends": "TikTok Trends", + "TikTok Trending": "TikTok Trending", + "Trending Videos": "Trending Videos", + "Trending Hashtags": "Trending Hashtags", + "SEO_trending_title": "Watch trending videos for you | TikTok", + "SEO_trending_desc": "It starts on TikTok. Join the millions of viewers discovering content and creators on TikTok - available on the web or on your mobile device.", + "seo_serp_hashtag_title": "#{hashtag} | TikTok", + "seo_serp_hashtag_desc": "{tagText} | ", + "playlist_webapp_profileview_playlists_numbervid": "{num, plural, one {{number} post} other {{number} posts}}", + "seo_serp_hashtag_desc1": "Watch the latest videos about #{hashtag} on TikTok. ", + "err_tag": "Couldn\u2019t find this hashtag. Visit TikTok to discover more trending creators, hashtags, and sounds.", + "SEO TikTok Keyword": "TikTok, Tik Tok, musically, mobile video, short-form video", + "TikTok i18n keywords for home": "tik tok, tick tock, tic tok, tic toc, tictok, \u0442\u0438\u043a \u0442\u043e\u043a, ticktock", + "SEO_homepage_title": "TikTok - Make Your Day", + "SEO_homepage_desc": "TikTok - trends start here. On a device or on the web, viewers can watch and discover millions of personalized short videos. Download the app to get started.", + "seo_serp_music_title": "{authorName} - {musicName} | TikTok", + "seo_serp_music_desc3": "{musicName} created by {authorName}.", + "seo_serp_music_desc": "{musicName} song created by {authorName}. ", + "seo_serp_music_desc1": "{video_count} videos. ", + "seo_serp_music_desc2": "Watch the latest videos about {musicName} on TikTok.", + "err_sound": "Couldn\u2019t find this sound. Visit TikTok to discover more trending creators, hashtags, and sounds.", + "err_sound_copy": "This sound has no copyright in your region. Visit TikTok to discover more trending creators, hashtags, and sounds.", + "basicPoi_task2_metaTdk_title": "{subcategoryName} in {poiName} | TikTok", + "basicPoi_task2_metaTdk_desc": "{subcategoryName} in {poiName}, {upperLevelPoiName}.{views} videos. Discover videos related to {subcategoryName} in {poiName} on TikTok. Find more information about {subtitle1}, {subtitle2}, {subtitle3}, {subtitle4}.", + "basicPoi_task2_metaTdk_keyword": "{keywords}, {relatedSearch}", + "seo_kep_metaTitle": "Looking for videos about {s_title}? TikTok offers the latest and most comprehensive news and creator perspectives, plus real-time user discussions, giving you a well-rounded understanding of {s_title}.", + "seo_kep_news_metaDesc": "{s_title}, TikTok", + "music_SEO_desc3": "{musicName} is a popular song by {authorName} | Create your own TikTok videos with the {musicName} song and explore {posts} videos made by new and popular creators.", + "seo_serp_user2_title": "{username} Official | TikTok", + "seo_serp_user1_title": "{username} | TikTok", + "seo_serp_user_desc": "{username} on TikTok | ", + "seo_serp_user_desc1": "{heart} Likes. ", + "seo_serp_user_desc2": "{follower} Followers. ", + "seo_tdkImprove_body": "{num, plural, one {Watch {s_nickname}'s popular videos: \"{most_recent_video_title_1}\", \"{hot_video_title2}\". Join {followers_count} follower on TikTok for more {tags} content} other {Watch {s_nickname}'s popular videos: \"{most_recent_video_title_1}\", \"{hot_video_title2}\". Join {followers_count} followers on TikTok for more {tags} content}}", + "seo_serp_user_desc3": "Watch the latest video from {username}.", + "seo_liveEntry_header": "{s_nickname} - Watch {s_nickname} LIVE on TikTok", + "seo_liveEntry_desc": "\ud83d\udd34 LIVE: {s_liveTitle}, {s_desc}", + "err_user": "Couldn\u2019t find this account. Visit TikTok to discover more trending creators, hashtags, and sounds.", + "err_user_private": "This account is private. Follow this account to see their videos or visit TikTok to discover new creators. ", + "seo_serp_videotxt_desc1": "{likes} Likes, ", + "seo_serp_videotxt_desc2": "{comments} Comments. ", + "seo_serp_videotxt_desc3": "TikTok video from {username}: \u201c{videoText}\u201d. ", + "seo_serp_searchQuery_desc": "{searchQueryAfterView}.", + "seo_serp_musicName_desc": "{musicName}.", + "serp_videoText_searchQuery_title": "{videoText} | {searchQueryAfterView} | TikTok", + "serp_videoText_searchQuery_title2": "{username}\u2019s video of {searchQueryAfterView} | TikTok", + "seo_serp_videotxt_title": "{videoText} | TikTok", + "seo_serp_videotxt_title2": "{username}\u2019s videos with {musicName} | TikTok", + "err_vid_geo": "This video is unavailable in your region. Visit TikTok to discover more trending videos.", + "err_vid": "This video is unavailable. Visit TikTok to discover more trending videos.", + "subVideo_outApp_sharing_title": "{creator}\u2019s subscriber-only video on TikTok", + "basicPoi_toDoList_region": "Things to do in {regionalPoiName}", + "basicPoi_toDoList": "Things to do", + "seo_popular_sightseeing": "{num, plural, one {{num} popular sightseeing in {poiName}} other {{num} popular sightseeings in {poiName}}}", + "basicPoi_sightSeeing": "Sightseeing in {regionalPoiName}", + "basicPoi_outdoorActivities": "Outdoor activities in {regionalPoiName}", + "basicPoi_nightLife": "Nightlife in {regionalPoiName}", + "basicPoi_familyFriendly": "Family-friendly activities in {regionalPoiName}", + "basicPoi_bestRestaurant_region": "Best restaurants in {regionalPoiName}", + "basicPoi_foodNDrinks": "Food & Drinks", + "seo_popular_restaurant": "{num, plural, one {{num} popular restaurant in {poiName}} other {{num} popular restaurants in {poiName}}}", + "basicPoi_brunchRestaurants": "Best brunch restaurants in {regionalPoiName}", + "basicPoi_fineDining": "Best fine dining restaurants in {regionalPoiName}", + "basicPoi_seaFood": "Best seafood restaurants in {regionalPoiName}", + "basicPoi_veganRestaurants": "Best vegan restaurants in {regionalPoiName}", + "basicPoi_hotels_region": "Hotels in {regionalPoiName}", + "basicPoi_hotels": "Hotels", + "seo_popular_hotel": "{num, plural, one {{num} popular hotel in {poiName}} other {{num} popular hotels in {poiName}}}", + "basicPoi_downtownHotels": "Hotels in downtown {regionalPoiName}", + "basicPoi_petFriendly": "Pet friendly hotels in {regionalPoiName}", + "basicPoi_airbnbs": "Airbnbs in {regionalPoiName}", + "basicPoi_luxuryHotels": "Luxury hotels in {regionalPoiName}", + "basicPoi_parks_region": "Parks in {regionalPoiName}", + "basicPoi_parks": "Parks", + "seo_popular_park": "{num, plural, one {{num} popular park in {poiName}} other {{num} popular parks in {poiName}}}", + "basicPoi_amusementParks": "Amusement parks in {regionalPoiName}", + "basicPoi_dogParks": "Dog parks in {regionalPoiName}", + "basicPoi_skateParks": "Skate parks in {regionalPoiName}", + "basicPoi_indoorParks": "Indoor parks in {regionalPoiName}", + "basicPoi_shopping_region": "Shopping in {regionalPoiName}", + "basicPoi_shopping": "Shopping", + "seo_popular_shoppingMall": "{num, plural, one {{num} popular shopping mall in {poiName}} other {{num} popular shopping malls in {poiName}}}", + "basicPoi_shoppingMalls": "Shopping malls in {regionalPoiName}", + "basicPoi_downtownShopping": "Shopping in downtown {regionalPoiName}", + "basicPoi_vintageShopping": "Vintage shopping in {regionalPoiName}", + "basicPoi_giftShops": "Gift shops in {regionalPoiName}", + "share": "Share", + "seo_exploreMore_cta": "Explore more", + "grid": "Grid", + "Video": "Video", + "keys": "en-GB", + "delete": "Delete", + "net": "Net", + "TikTok i18n title": "TikTok", + "desktop_app_downloadPopup_header": "TikTok desktop app", + "pcWeb_desktopApp_maintainPopup_body": "We maintain the same content and product safety standards across TikTok web and desktop app.", + "desktop_app_downloadPopup_cta": "Download", + "desktop_app_upToDate_toast": "Your app is up to date with the latest version", + "desktop_app_tab_settings": "Settings", + "desktop_app_tab_updateTikTok": "Update TikTok", + "Inbox_Notifications": "Notifications", + "log_in": "Log in", + "Inbox_New": "New", + "live_creator_hub_home_desc": "Explore the endless possibilities of TikTok LIVE. It's the place to be for real-time fun, expression, creativity, and connection.", + "cancel": "Cancel", + "editprofile_feedtooltip_title": "Edit your profile", + "editprofile_feedtooltip_subtitle": "You can now update your photo, username, and bio", + "editprofile_close": "Close", + "editprofile_editprofile": "Edit profile", + "WebApp_coin_recharge_1": "Get Coins", + "tiktok_series_webapp_tooltip_get_started": "Get started with Series", + "scheduler_welcome_tooltip_title": "Schedule videos", + "scheduler_welcome_tooltip_des": "You can now schedule a time and date to post your videos.", + "OK": "OK", + "tenMinPlusUpload_webPage_introduceToolTip_title": "Introducing {minute} minute videos", + "tenMinPlusUpload_webPage_introduceToolTip_body": "You can now upload videos up to {minute} minutes long!", + "new_feature_guidance_Upload": "Upload", + "podcasts_linkFullEpisodes_linkPodcastPage_tooltip": "Add your podcast", + "Next": "Next", + "Open": "Open", + "link_close_popup": "Close", + "webdm_message_button": "Messages", + "follow": "Follow", + "web_followingNav_viewAll_btn": "View all", + "feed_caption_see_more": "See more", + "see_less": "See less", + "see_more": "See more", + "desktop_logged_in_profile": "Following accounts", + "sidenav_follow_hint": "Accounts you follow will appear here ", + "Followers": "Followers", + "following_my_empty_desc": "When you follow people, you'll see them here", + "followers_my_empty_desc": "When people follow you, you'll see them here", + "common_registration_username_suggested": "Suggested", + "profile_suggested_empty_toast": "Suggested accounts will appear here", + "see_all": "See all", + "sug_accounts": "Suggested accounts", + "webLIVE_enableEvent_LIVEPage_eventStartNowReminder": "It\u2019s time to go LIVE! Registered users and your followers will be notified once you\u2019re LIVE.", + "webLIVE_enableEvent_LIVEPage_eventReminder": "{num, plural, one {Your LIVE event, {event_name}, is scheduled to start in {num} minute. You can go LIVE now.} other {Your LIVE event, {event_name}, is scheduled to start in {num} minutes. You can go LIVE now.}}", + "go_live": "Go LIVE", + "live_on_status": "LIVE now", + "sidenav_login_cta": "Log in to follow creators, like videos, and view comments.", + "Following": "Following", + "Friends": "Friends", + "pc_web_explore_main_header": "Explore", + "Profile": "Profile", + "for_you": "For You", + "nonpersonalizedFeeds_LIVEfeed_navP_menuLink": "Popular", + "Company": "Company", + "more": "More", + "Explore": "Explore", + "web_navigation_activity": "Activity", + "web_seo_shop_anchor": "Shop", + "ecom_creator_half_screen_create_video_title": "Post video", + "pm_mt_viewer_overlay_back_btn": "Back", + "pcWeb_navi_creatorTools": "Creator tools", + "ttlive_navigation_goLIVE_live_studio": "LIVE Studio", + "ttlive_navigation_goLIVE_obs": "OBS", + "ttlive_ls_tray_openLS": "Open LIVE Studio", + "live_center_title": "LIVE Center", + "live_creator_hub_name": "LIVE Creator Hub", + "ttlive_bookmarks_Bar_tooltip": "Drag this to your bookmarks bar to pin LIVE streams", + "noitfTabUpdate_mainMenu_noitfs_menuItem": "Notifications", + "ttlive_navigation_live_entrance": "Discover LIVE", + "web_followingNav_view_btn": "View", + "Feedback": "Feedback", + "Language": "Language", + "Analytics": "Analytics", + "view_analytics": "View Analytics", + "ls_live_studio": "LIVE Studio", + "Promote_web_entrance_profile": "Promote post", + "LIVE_shopping_prelogin_nav": "LIVE shopping", + "web_dark_mode_automatic": "Automatic", + "pc_web_dark_mode": "Dark mode", + "pc_web_light_mode": "Light mode", + "pc_web_device_theme": "Use device theme", + "tteh_webapp_acquisitionBanner_1": "Create TikTok effects", + "TTSseller_web_bizMenu_link": "Sell on TikTok Shop", + "tiktok_series_webapp_option": "Series", + "web_business_suite_entry": "Business Suite", + "desktop_app_accountSettings": "Account settings", + "settings": "Settings", + "Feedback and help": "Feedback and help", + "webapp_support": "Support", + "get_app": "Get app", + "log_out": "Log out", + "Back": "Back", + "Close": "Close", + "email_redesign_webapp_order_details_page_title": "Scan QR code to view your order details", + "email_redesign_webapp_logistics_page_title": "Scan QR code to track your package", + "email_redesign_webapp_write_review_page_title": "Scan QR code to write review", + "email_redesign_webapp_refund_detail_page_title": "Scan QR code to view refund details", + "email_redesign_webapp_orders_title": "Scan QR code to view your orders", + "email_redesign_webapp_vouchers_title": "Scan QR code to view your vouchers", + "email_redesign_webapp_shopping_cart_title": "Scan QR code to view Shopping cart", + "seller_messages_email_webapp_reply_title": "Scan QR code to view seller messages", + "seller_messages_email_webapp_mute_title": "Scan QR code to mute this seller", + "seller_messages_email_webapp_setting_title": "Scan QR code to turn off email notifications", + "Ecom_email_pc_shoptab_homepage_title": "Scan QR code to view TikTok Shop", + "Ecom_email_pc_pdp_shoptab_homepage_title": "Scan QR code to view product details", + "Ecom_email_pc_deal_page_shoptab_homepage_title": "Scan QR code to view top deals", + "Ecom_email_pc_pdp_title": "Scan QR code to view product details", + "Ecom_email_pc_coupon_add_on_title": "Scan QR code to view coupon add-on page", + "Ecom_email_pc_free_shipping_add_on_page_title": "Scan the QR code to view the page with eligible products you can add to this order and get free shipping", + "SNS_QR_code_instructions1": "Scan QR code to view your subscription details", + "email_redesign_webapp_order_details_page_context": "You can also open TikTok app, tap \u201cProfile\u201d at bottom right, and view order details in My orders > View all", + "email_redesign_webapp_logistics_page_context": "You can also open TikTok app, tap \u201cProfile\u201d at bottom right, and track your package in My orders > Shipped", + "email_redesign_webapp_write_review_page_context": "You can also open TikTok app, tap \u201cProfile\u201d at bottom right, and write a review in My orders > Review", + "email_redesign_webapp_refund_detail_page_context": "You can also open TikTok app, tap \u201cProfile\u201d at bottom right, and view refund details in My orders > View all", + "email_redesign_webapp_orders_context": "You can also open TikTok app, tap \u201cProfile\u201d at bottom right, and view your orders in My orders > View all", + "email_redesign_webapp_vouchers_context": "You can also open TikTok app, tap \u201cProfile\u201d at bottom right, and view your vouchers in My orders > Your voucher", + "email_redesign_webapp_shopping_cart_context": "You can also open TikTok app, tap \u201cProfile\u201d at bottom right, and view your shopping cart in My orders", + "seller_messages_email_webapp_reply_desc": "You can also view seller messages in your Inbox on the TikTok app.", + "seller_messages_email_webapp_mute_desc": "You can also mute the seller through inbox settings on the TikTok app.", + "seller_messages_email_webapp_setting_desc": "You can also turn off seller message email notifications through inbox settings on the TikTok app.", + "Ecom_email_pc_shoptab_homepage_description": "You can also open the TikTok app and tap \"Shop\" to access this page.", + "Ecom_email_pc_pdp_shoptab_homepage_description": "You can also open the TikTok app and tap a product to access details.", + "Ecom_email_pc_deal_page_shoptab_homepage_description": "You can also open the TikTok app and tap \"Shop\" to view top deals.", + "Ecom_email_pc_pdp_description": "You can also open the TikTok app and tap a product to access details.", + "Ecom_email_pc_coupon_add_on_description": "You can also open the TikTok, tap \"Shop\" then tap \"Coupons\" to access this page.", + "Ecom_email_pc_free_shipping_add_on_page_description": "You can also open TikTok app, tap \"Shop\" then check your order and follow the link to add more items to this order and get free shipping.", + "SNS_QR_code_instructions2": "You can also open TikTok app, tap \u201cProfile\u201d at bottom right, and view order details in \"My orders > View all\"", + "Likes": "Likes", + "login_fb_noLonger_LogInEase": "Make sure you can log back in TikTok", + "login_fb_noLonger_LinkPhoneNumberReminder": "Link your phone number so you can still access your account when other login methods don\u2019t work.", + "login_fb_noLonger_LinkPhone": "Link phone", + "Log_out_sheet_2": "Are you sure you want to log out?", + "login_fb_confirmLogOut_body": "If you haven\u2019t linked your phone number to this account, you might encounter difficulty logging back in when other login methods are unavailable.", + "login_fb_confirmLogOut_stay_cta": "Stay logged in", + "Cancel": "Cancel", + "account": "Account", + "Is your problem resolved?": "Is your problem resolved?", + "backend_settings_yes": "Yes", + "backend_settings_no": "No", + "Thank you for your feedback": "Thank you for your feedback", + "backend_settings_stillhaveproblem": "Need more help?", + "Help Center": "Help Center", + "backend_settings_topictitle": "SELECT A TOPIC", + "feedback_pc_back": "Go back", + "backend_settings_faqtitle": "FREQUENTLY ASKED QUESTIONS", + "Report a problem": "Report a problem", + "feedback_pc_history": "Feedback History", + "Tell us your feedback": "Tell us your feedback", + "Please provide as much detail as possible": "Please provide as much detail as possible", + "feedback_pc_upload": "Upload supporting media", + "Submit": "Submit", + "Network error. Please try again.": "Network error. Please try again.", + "com_mig_your_support_tickets": "Your feedback", + "Description must be at least 2 characters": "Description must be at least 2 characters", + "cs_webapp_supportTickets_contactUs": "Contact us", + "cs_webapp_needMoreHelp_question": "Need more help?", + "cs_webapp_contactUs_menu_logIn": "Log in for support", + "cs_webapp_contactUs_menu_email": "Continue with email", + "cs_feedbackAndHelp_button_supportTickets": "Support tickets", + "pcWeb_autoScroll_on": "Auto scroll is on", + "pcWeb_autoScroll_off": "Auto scroll is off", + "pcWeb_miniPlayer_linkOpened_toast": "Link opened in browser", + "pcWeb_miniPlayer_backToLogIn_toast": "Go back to the same tab to log in", + "pcWeb_miniPlayer_linkCopied_toast": "Link copied", + "Share": "Share", + "pc_web_keyboard_btn": "Keyboard", + "pcWeb_videoSkipped": "{num, plural, one {The video will be skipped in {num} second.} other {The video will be skipped in {num} seconds.}}", + "pcWeb_NotSupportedFloating": "Current content isn\u2019t supported in Floating Player", + "nonpersonalizedFeeds_LIVEfeed_label_mainString_personalizationOn": "Personalization on", + "nonpersonalizedFeeds_LIVEfeed_label_mainString": "Personalization off", + "pc_web_skip_forward_5_sec": "Skipped forward {number} seconds", + "pc_web_skip_backward_5_sec": "Skipped backward {number} seconds", + "QR CODE Text": "Point your camera at the QR code to download TikTok", + "pc_reflow_download": "Download now", + "browserPush_overlay_turnOnNotice_body": "Click \"Allow\" to turn on notifications.", + "accessibilityLabels_forYou_nav_tiktok_btn": "Go to TikTok For You feed", + "accessibilityLabels_search_suggestions": "Search suggestions", + "accessibilityLabels_search_button": "Search", + "accessibilityLabels_forYou_nav_upload_btn": "Upload a video", + "accessibilityLabels_forYou_nav_messages_btn": "Open messages", + "accessibilityLabels_forYou_btn_inbox": "Inbox\n{number} unread notifications", + "accessibilityLabels_forYou_nav_settings_btn": "Open settings menu", + "accessibilityLabels_nav_effects_btn": "Go to create effects page in a new tab", + "accessibilityLabels_settings_language": "{language} selected. Double-tap to change language", + "accessibilityLabels_settings_darkModeOff": "Turn on dark mode", + "accessibilityLabels_settings_darkModeOn": "Dark mode turned on", + "accessibilityLabels_forYou_nav_language_back_btn": "Back to previous screen", + "accessibilityLabels_home_skipContentFeed": "Skip to content feed", + "accessibilityLabels_login_modal_eyeClosedIcon": "Password hidden. Double-tap to show password", + "accessibilityLabels_login_modal_eyeOpenIcon": "Password shown. Double-tap to hide password", + "accessibilityLabels_signup_form_back": "Back to more signup options", + "accessibilityLabels_login_form_back": "Back to more login options", + "accessibilityLabels_signup_form_placeholder_year": "Year. Double-tap for more options", + "accessibilityLabels_signup_form_placeholder_month": "Month. Double-tap for more options", + "accessibilityLabels_signup_form_placeholder_day": "Day. Double-tap for more options", + "accessibilityLabels_login_form_placeholder_countryCode": "{readPhoneCountryCode} phone country code. Double-tap for more options", + "accessibilityLabels_phoneLogin_form_title": "Log in to TikTok with your phone number", + "accessibilityLabels_emailLogin_form_title": "Log in to TikTok with your email or username", + "accessibilityLabels_phoneSignup_form_title": "Sign up for TikTok with your phone number", + "accessibilityLabels_emailSignup_form_title": "Sign up for TikTok with your email address", + "accessibilityLabels_forYou_btn_like": "Like video\n{number} likes", + "accessibilityLabels_forYou_btn_comment": "Read or add comments\n{number} comments", + "accessibilityLabels_feed_icon_favorite": "Add to Favorites. {number} added to Favorites", + "accessibilityLabels_forYou_btn_share": "Share video\n{number} shares", + "pcWeb_repost_btn": "Repost", + "accessibilityLabels_forYou_videoCard_fullScreen": "Watch in full screen", + "accessibilityLabels_forYou_videoControls_pause_btn": "Pause", + "accessibilityLabels_forYou_videoControls_play_btn": "Play", + "accessibilityLabels_forYou_videoControls_volume_btn": "Volume", + "accessibilityLabels_forYou_videoControls_report_btn": "Report", + "accessibilityLabels_forYou_videoControls_videoProgress": "Video progress", + "accessibilityLabels_forYou_share_moreOptions_btn": "More share options", + "accessibilityLabels_forYou_scroll_btn": "Scroll to the top", + "accessibilityLabels_link_userProfile": "{username}\u2019s profile", + "Home": "Home", + "error_toast": "Something went wrong. Please try again.", + "ca": "Creator Accounts", + "Sorry, something wrong with the server, please try again.": "Sorry, something wrong with the server, please try again.", + "dsa_illegal_appeal_expired_header": "Appeal deadline expired", + "dsa_illegal_appeal_expired_desc": "You can no longer appeal this decision because the appeal deadline has expired.", + "dsa_illegal_appeal_button_ok": "OK", + "dsaCGWebapp_detailPg_sectionCG_body": "Read our %s", + "tcm_tt_ad_policy_link": "TikTok Advertising Policies", + "dsaCGWebapp_appealSubmitted_sectionTitle_header": "Request received", + "vidModAnalytics_inbox_notifAppealSubmitted__xNotifBody": "We\u2019ll send you a notification as soon as we have an update.", + "search_see_more": "See more", + "dsa_illegal_appeal_dropdown_1": "I disagree with the decision and still believe the content is illegal", + "vidModAnalytics_appealReporterDetailpg_sectionSelectReason_sectionBullet1": "I disagree with the decision and still believe the content is a violation", + "dsa_illegal_appeal_dropdown_2": "I have more information about my report", + "dsa_illegal_appeal_dropdown_3": "I want to change the grounds for my report", + "dsaCGWebapp_appealDetailPg_sectionTitle_header": "Request another review", + "dsa_illegal_appeal_desc": "If you disagree with this decision, you may submit an appeal within 180 days.", + "vidModAnalytics_detailPg_sectionDatePosted_sectionLabel": "Posted on %1$s at %2$s", + "dsa_illegal_appeal_report_reason": "Report reason", + "dsa_illegal_appeal_dropdown_title": "Reason for appealing this decision", + "dsa_illegal_appeal_explanation": "Appeal explanation", + "dsa_illegal_appeal_explanation_desc": "Please provide as much detail as possible on why you believe the content violates the relevant law. This allows us to properly assess your appeal.", + "dsa_illegal_appeal_alt_options": "You may have other ways to seek resolution, such as out-of-court dispute settlement processes or in-court proceedings. %s", + "dsa_illegal_placeholder_learnmore": "Learn more", + "webapp_mig_unblocked": "Unblocked", + "webapp_mig_blocked": "Blocked", + "webapp_forYoufeed_videoRemoved_toast": "We have removed this video from your feed", + "number_Views": "{number} Views", + "view_more": "View more", + "V1_toast_DM_Sent": "Message sent", + "displayDmBox_FYP_dmBox_placeholder2": "Message...", + "support_webapp_sharing_chat_page_video_card_3": "This video isn\u2019t available", + "Report": "Report", + "support_webapp_sharing_chat_page_video_card_1": "Video isn\u2019t available because the video is private", + "support_webapp_sharing_chat_page_video_card_2": "Video isn\u2019t available because you\u2019re not mutual friends with the creator", + "photo_post_unavailable_title": "View photos on the TikTok app", + "subVideo_unavailableScreen_title": "This video is only available to subscribers", + "Inbox_Message": "Message", + "requested": "Requested", + "webapp_unblocked_button1": "Unblock", + "Inbox_Follow_back": "Follow back", + "server_error_title": "Something went wrong", + "send_message": "Send message", + "like_message": "liked your message", + "update": "Update", + "refresh": "Refresh", + "profile_personal_no_content_title": "Upload your first video", + "profile_personal_no_content_body": "Your videos will appear here", + "profile_no_content_title": "No content", + "profile_no_content_des": "This user has not published any videos.", + "fc_view_empty_videos_title": "Favorite posts", + "fc_view_fav_empty_videos_desc": "Your favorite posts will appear here.", + "profile_public_nolikes_title": "No liked videos yet", + "profile_self_public_nolikes": "Videos you liked will appear here", + "profile_others_public_nolikes": "Videos liked by %s will appear here ", + "profile_others_blocked_post_body": "You've blocked this user and unable to view this user's videos.", + "profile_others_block_post_body": "You cannot view the videos due to this user's privacy settings.", + "This account is private": "This account is private", + "profile_others_private_body": "Follow this account to see their contents and likes", + "profile_others_like_private_title": "This user's liked videos are private", + "profile_others_like_private_body": "Videos liked by %s are currently hidden", + "IRE_FPblockUnknownAcctsmaxLimit_parent_toast": "The limit of 10k blocked accounts reached", + "IRE_FPblockUnknownAccts_confirmPopup_parentBlock_successToast": "Account blocked for teen", + "unblock": "Unblock", + "IRE_FPblockUnknownAccts_confirmPopup_parentBlock_unblockToast": "Account unblocked", + "IRE_FPblockUnknownAccts_parentActions_teenBlocked": "Teen blocked", + "IRE_FPblockUnknownAccts_parentActions_unblockAccount": "Unblock account", + "IRE_FPblockUnknownAccts_parentActions_blockAccount": "Block account", + "IRE_FPblockUnknownAccts_confirmPopup_parentBlock_headline2": "Block {s_username}?", + "IRE_FPblockUnknownAccts_confirmPopup_parentBlock_body2": "The blocked account and your teen won\u2019t be able to view each other\u2019s posts or send direct messages. The blocked account won\u2019t be able to find your teen in search. They may still see one another in multi-guest LIVE, shared group chats, or the reuse of content from others. They won\u2019t be notified that you blocked them for your teen.", + "FPsettings_requestUnblock_confirmPopup_cancel": "Cancel", + "IRE_FPblockUnknownAccts_confirmPopup_parentBlock_block": "Block", + "user_action_unfollow": "Unfollow", + "profile_page_message_btn": "Message", + "auU16_profile_toast": "Only you can view your photo and bio due to age restrictions in your region.", + "auU16_notif_placeholder_dismiss": "Dismiss", + "auU16_notif_placeholder_viewMore": "View more", + "creatorCenter_content_actions": "Actions", + "No bio yet.": "No bio yet.", + "followers": "followers", + "profile_self_link_unavailable": "Link not available", + "addSuggested_desktop_suggestedAccountsInlineBox_header": "Accounts picked for you", + "addSuggested_desktop_suggestedAccountsInlineBoxCTA_btn": "More", + "friend_big_card_friends_with_1": "Friends with {0}", + "linkLabelRedesign_videos_relationshipLabel_text": "Shared videos with you", + "relationship_label_followed_by_username": "Followed by %s", + "relationship_label_friends_with_username": "Follows %s", + "relationship_label_follows_you": "Follows you", + "linkLabelRedesign_generic_relationshipLabel_text": "People you may know", + "reason_tag_popular_creator": "%s followers", + "relationship_label_from_your_contacts": "From your contacts", + "addSuggested_desktop_suggestedAccountsInlinePill_header": "Accounts picked for you", + "addSuggested_desktop_suggestedAccountsInlinePillCTA_btn": "More", + "find_friends_page_suggested_title": "Suggested accounts", + "addSuggested_desktop_suggestedAccounts_tooltip": "Accounts are suggested based on your interests and connections. Your account may also be suggested to people you may know.", + "addSuggested_desktop_suggestedAccountsView_link": "View all", + "blue_v_change_username_review_modal_desc": "You are requesting to change your username to %s. We\u2019ll contact you within %d hours. You\u2019ll keep your verified badge whether or not your request is approved.", + "blue_v_change_name_review_modal_desc": "You are requesting to change your name to %s. We\u2019ll contact you within %d hours. You\u2019ll keep your verified badge whether or not your request is approved.", + "blue_v_webapp_change_name_review_modal_desc": "You are requesting to change your username to %1s and your name to %2s. We\u2019ll contact you within %d hours. You\u2019ll keep your verified badge whether or not your request is approved.", + "blue_v_change_name_review_modal_title": "Submit request?", + "blue_v_change_name_review_cancel_btn": "Cancel", + "blue_v_change_name_review_submit_btn": "Submit", + "editprofile_editpage_error_photofail_others": "Couldn\u2019t upload photo. Please try again.", + "editprofile_editpage_photo_editphoto": "Edit photo", + "editprofile_editimage_zoom": "Zoom", + "editprofile_cancel": "Cancel", + "editprofile_editpage_photo_apply": "Apply", + "editprofile_editpage_username_confirmtitle": "Set your username?", + "editprofile_editpage_username_confirmtext": "You can change your username once every 30 days.", + "nickname_change_pop_up_title": "Set nickname?", + "nickname_change_pop_up_description": "You can only change your nickname once every %d days", + "nickname_username_change_pop_up_title": "Set username and nickname?", + "nickname_username_change_pop_up_description": "You can only change your username once every 30 days and your nickname once every %d days.", + "nickname_username_change_pop_up_cta_2": "Confirm", + "blue_v_change_username_modal_title": "Submit username change request to stay verified", + "blue_v_change_username_modal_desc": "If you want to keep your verified badge, submit a username change request.", + "blue_v_change_username_modal_desc_2": "You can change your username now, but you\u2019ll lose your verification.", + "blue_v_change_name_modal_title": "Submit name change request to stay verified", + "blue_v_change_name_modal_desc": "If you want to keep your verified badge, submit a name change request.", + "blue_v_change_name_modal_desc_2": "You can change your name now, but you\u2019ll lose your verification.", + "blue_v_change_username_name_modal_title": "Submit name and username change request to stay verified", + "blue_v_webapp_change_name_modal_desc": "If you want to keep your verified badge, submit a request to change your username and name.", + "blue_v_webapp_change_name_modal_desc_2": "You can change your username and name now, but you\u2019ll lose your verification.", + "blue_v_change_name_modal_submit_request_btn": "Submit request", + "blue_v_change_name_modal_change_btn": "Change now", + "blue_v_change_username_lose_badge_modal_title": "Change username to %s?", + "blue_v_change_name_lose_badge_modal_title": "Change name to %s?", + "blue_v_webapp_change_name_lose_badge_modal_title": "Change username to %1s and name to %2s?", + "blue_v_change_name_lose_badge_modal_desc": "You\u2019ll lose your verified badge.", + "blue_v_change_name_lose_badge_confirm_btn": "Change", + "editprofile_editpage_error_row": "Row limit exceeded", + "editprofile_editpage_bio": "Bio", + "editprofile_editpage_error_cantmodify_others": "Your profile cannot be edited while your account is being authenticated.", + "editprofile_editpage_error_cantmodify_review": "Your profile cannot be edited while your account is being reviewed.", + "editprofile_editpage_error_username_cantchange": "Username cannot be changed more than once within 30 days.", + "alert_user_update_profile_limited_toast": "Due to multiple Community Guideline violations, you\u2019re temporarily prevented from updating your profile. See details in your app notifications.", + "account_status_banned": "Your account is permanently banned", + "nickname_change_fail_toast": "You can\u2019t change your nickname because you just changed it in the last %d days.", + "ecom_changename_web": "Visit TikTok Shop Seller Center to change your name", + "editprofile_editpage_error_tryagain": "Something went wrong. Please try again.", + "editprofile_editpage_error_photofail_max": "The image size is over 10 MB. Please select another image.", + "editprofile_editpage_error_image_cantuse": "Couldn\u2019t use photo. Select another and try again.", + "editprofile_editpage_error_namenotavail": "This name isn\u2019t available. Please enter a new one.", + "editprofile_editpage_error_max": "Maximum 30 characters", + "editprofile_editpage_name": "Name", + "nickname_change_1st_time_description": "Your nickname can only be changed once every %d days.", + "nickname_change_description": "Your nickname can only be changed every %d days. You can change it again after %s.", + "editprofile_editpage_error_notavailable": "This username isn\u2019t available. Please enter a new one.", + "editprofile_editpage_error_min2char": "Include at least 2 characters in your username", + "editprofile_editpage_error_username_max": "Maximum 24 characters", + "editprofile_editpage_username": "Username", + "editprofile_editpage_username_subtext1": "Usernames can only contain letters, numbers, underscores, and periods. Changing your username will also change your profile link.", + "editprofile_editpage_username_subtext2": "Your username can be changed once every 30 days. You can change it again after %s.", + "editprofile_editpage_photo": "Profile photo", + "editprofile_save": "Save", + "CL1v3webapp_profile_banner": "Posts that some may find uncomfortable are unavailable. Log in to make the most of your TikTok experience.", + "CL1v3webapp_profile_banner_link": "Log in", + "Login": "Log in", + "Caption": "Caption", + "auU16_forYouPage_halfSheet_okButton": "OK", + "No videos with this hashtag yet": "No videos with this hashtag yet", + "Looking for videos? Try browsing our trending creators, hashtags, and sounds.": "Looking for videos? Try browsing our trending creators, hashtags, and sounds.", + "playlist_webapp_profileview_playlists_numberviews": "{num, plural, one {{number} view} other {{number} views}}", + "views": "views", + "posts": "posts", + "comments": "comments", + "home_error_video_geofencing": "This video isn\u2019t available in your country or region", + "music_detail_unavailable_2": "This sound isn't available in your country or region", + "qapage_webapp_error_subtitle": "Explore more questions and answers from the TikTok community!", + "playlist_invalid_error_code": "Invalid playlist or no copyright", + "photo_post_unavailable_dec": "You can view photos on the app or browse for trending creators, hashtags, and sounds.", + "disable_reuse_soundtrack_unavailable_page_body": "Looking for sounds? Try browsing our trending creators, hashtags, and sounds.", + "poisharing_edgecase_one": "This place is no longer available", + "poistore_detail_text": "Feature unavailable, the feature is currently not supported in your account region", + "acct_geo_block_restriction_error_desc": "This account isn\u2019t available in your country or region.", + "accountAudienceControls_profile_loggedOut_desc": "This creator turned on audience controls. Log in to make the most of your TikTok experience.", + "accountAudienceControls_profile_loggedInAgeUnknown_desc": "This profile contains themes that some may find uncomfortable. Update your info to make the most of your TikTok experience.", + "accountAudienceControls_profile_loggedInU18_desc": "This creator turned on audience controls.", + "audienceControlsOptimization_feed_RMFPVideoMask_audienceControls_desc": "This creator turned on audience controls. Only a parent or guardian can turn off Restricted Mode in Family Pairing.", + "accountAudienceControls_profile_loggedInRM_desc": "This creator turned on audience controls. To view their profile, turn off Restricted Mode in {s_settingsAndPrivacy}.", + "qa_reflow_page_empty_subtitle": "Explore more questions and answers from the TikTok community!", + "ext_share_story_viewmore_btn": "View more videos", + "poisharing_cta_return": "Return to For You", + "Couldn't find this account": "Couldn't find this account", + "Couldn't find this sound": "Couldn't find this sound", + "music_detail_unavailable_1": "This sound isn\u2019t available.", + "disable_reuse_soundtrack_unavailable_mobile_body": "This sound is unavailable", + "embed_err_unavailable": "Video currently unavailable", + "Couldn't find this hashtag": "Couldn't find this hashtag", + "desktop_error_video_geofencing": "Video isn\u2019t available", + "qapage_webapp_error_title": "Question isn\u2019t available", + "qa_page_reflow_page_blank_title": "Question isn't available", + "playlist_unavailable": "This playlist is unavailable", + "acct_geo_block_restriction_error_title": "Account not available", + "accountAudienceControls_profileUnavailable_loggedOut_title": "Log in to TikTok", + "accountAudienceControls_profileUnavailable_title": "Profile restricted by creator", + "accountAudienceControls_profileUnavailableRM_title": "Profile unavailable in Restricted Mode", + "dWebStories_DM_unavail_body": "This Story is unavailable", + "tt2dspWeb_addOneSong_dialog_title": "Add song from TikTok to your music app", + "tt2dspWeb_copyrightIssue_unavailable": "Current song is not available", + "tt2dspWeb_add_dialog_dsp_disclaimer": "This will allow TikTok to link to your music app. You can change your linked app at any time from your mobile device in Settings and privacy > Music.", + "tt2dspWeb_addToDSP_variable": "Add to {s_dspName}", + "tt2dspWeb_sdp_add_btn": "Add to music app", + "No videos with this sound yet": "No videos with this sound yet", + "webApp_effectAnchor_tryEffect": "Try this effect", + "webApp_effectAnchor_scanModal_title": "Scan to try this effect", + "webApp_effectAnchor_scanModal_desc1": "1. Open TikTok on your mobile device", + "webApp_effectAnchor_scanModal_desc2": "2. On Profile, tap the Add Friend icon", + "webApp_effectAnchor_scanModal_desc3": "3. Tap the scan icon [\u2014] to scan the QR code", + "webApp_effectAnchor_createEffect": "Create your effect and get a reward", + "webApp_effectAnchor_createEffect_short": "Create your effect", + "Privacy": "Privacy", + "topic_foryou_topics_toast_unavailable": "This feature is not yet supported in your region.", + "videos": "videos", + "qapage_webapp_askby": "Asked by {username}", + "qapage_empty_title": "No answers yet", + "qapage_empty_desc": "Explore more questions and answers from the TikTok community!", + "dm_stranger_delete_this_message_header": "Delete this message?", + "dm_stranger_delete_this_message_body": "You will no longer receive messages from this account in the future.", + "dm_tcm_request_link_report": "Report this business", + "dm_message_request_report": "Report this user", + "dm_tcm_request_desc_business_wants_send_msg": "If you accept, you can chat with this business immediately. If you delete, this chat will be removed from your message requests. This business can send you up to 3 messages before you accept. {report_this_user} if you receive a suspicious message.", + "dm_message_request": "If you accept, you can chat with this user immediately. If you delete, this chat will be removed from your Message requests. Note that this user may send up to 3 messages total. {report_this_user} if you receive a suspicious message.", + "dm_tcm_request_title_business_wants_send_msg": "{username} wants to send you business messages", + "dm_message_request_title": "{username} wants to send you a message", + "dm_delete": "Delete", + "dm_accept": "Accept", + "webCreation_uploadSingle_formatError_toast": "File format not supported. Try again with a file in a supported format.", + "dm_cam_mediaTooLong_error": "Please unselect media that are longer than 15 seconds", + "dm_cam_videoLimit_error": "Only videos up to {num}MB can be uploaded", + "dm_cam_imageLimit_error": "Only images up to {num}MB can be uploaded", + "dm_cam_select_nine_toast": "Select up to 9 items", + "dm_cam_upload_feature_gen_reminder_msg": "Only share photos and videos with people you trust. Be kind and respectful in your content to help keep our community safe.", + "dm_cam_sendMedia_header": "Send media", + "dm_cam_selectMediaToSend": "Select media to send", + "sticker_create_add_btn": "Add", + "support_webapp_sharing_send_button": "Send", + "dm_riskyGroupChat_groupSuspend_body": "This group chat is temporarily suspended until {s_date_time} due to violations of our Community Guidelines. If you think this was a mistake, you may submit an appeal.", + "dm_riskyGroupChat_groupSuspend_noAppeal_body": "This group is temporarily suspended until {s_date_time} due to violations of our Community Guidelines.", + "dm_riskyGroupChat_groupClosed_header": "Group closed", + "dm_riskyGroupChat_groupClosed_body": "This group chat is closed due to violations of our Community Guidelines. If you think this was a mistake, you may submit an appeal.", + "dm_riskyGroupChat_groupClosed_noAppeal_body": "This group chat is closed due to violations of our Community Guidelines.", + "dm_riskyGroupChat_groupClosed_viewDetail_cta": "View details", + "dm_riskyGroupChat_groupClosed_appeal_cta": "Appeal", + "dm_riskyGroupChat_groupSuspend_header": "Group temporarily suspended", + "webdm_message_not_supported": "This message type isn\u2019t supported. Download TikTok app to view this message.", + "group_chat_76_notice_create_group": "%s created the group", + "group_chat_84_notice_remove_user": "%1$s removed %2$s", + "group_chat_85_notice_become_admin": "%s became group admin", + "group_chat_87_notice_user_left_group": "%s left the group", + "group_chat_77_notice_add_member": "%1$s added %2$s to this group", + "group_chat_more_members": "%1$s and %2$s more members", + "groupChat_chatpage_inline_changedGroupName": "%1$s changed group name to \u201c%2$s\u201d", + "group_chat_81_notice_risk_to_group": "%s is not friends with anyone in this group. Report this user if you receive an inappropriate message (such as fraud, spam, threats, or predatory behavior).", + "groupChatSafety_groupDM_inChatLink_resetGroupDesc": "This group chat name has been reset because the original name violated our Community Guidelines.", + "groupChatSafety_groupDM_inChatLink_reportNoticeDesc": "Your safety is our priority. If you find any inappropriate messages within the group, %s", + "groupChatSafety_groupDM_inChatLink_reportNoticeLink": "submit a report", + "groupchat_groupChat_u18_removed": "%s was removed from the group", + "groupChat_chatpage_inline_creation_2More": "%1$s created this group chat and added %2$s and %3$s", + "groupChat_chatpage_inline_creation_3More": "%1$s created this group chat and added %2$s, %3$s and %4$s", + "groupChat_chatpage_inline_creation_3More_plus": "{num, plural, one {%1$s created this group chat and added %2$s, %3$s and %4$s and %5$d more.} other {%1$s created this group chat and added %2$s, %3$s and %4$s and %5$d more.}}", + "dm_tcm_card_title_business_invitation": "Business invitation", + "dm_deleteMsg_chatpage_inline_youDel": "You deleted a message", + "creatorChatRoom_creators_inline_deletedMessage": "{s_name} deleted a message", + "guided_reply_you_replied_yourselfNilColon": "You replied to yourself", + "guided_reply_you_replied_nickNilColon": "You replied to {s_nickname}", + "guided_reply_quoted_reply_themselvesNilColon": "{s_nickname} replied to themselves", + "guided_reply_quoted_reply_groupNilColon": "{s_nickname} replied to you", + "guided_reply_nick_replied_nickNilColon": "{s_nickname1} replied to {s_nickname2}", + "guided_reply_youReplied": "You replied", + "chat_optimize_repliedToYou": "Replied to you", + "chat_optimize_repliedToThemself": "Replied to themselves", + "im_reply_message_deleted": "Message deleted", + "dm_chatPage_quotedCard_vidUnavailable": "Video unavailable.", + "dm_chatPage_quotedCard_MessageUnavail": "Message unavailable.", + "direct_meaasge_risk_notice": "If you receive an inappropriate message (such as fraud, spam, threats, or predatory behavior), tap {1} so we can review it.", + "webdm_report": "Report", + "direct_meaasge_sending_ban_notice": "This message violated our Community Guidelines. We restrict certain content and actions to protect our community. If you believe this was a mistake, tap {1} to let us know.", + "dm_webappSticker_giveFeedback_feedback": "Feedback", + "direct_meaasge_sending_ban_feedback": "Feedback", + "im_reply": "Reply", + "webdm_report_01_message_selected": "{X} message selected", + "webdm_report_n_message_selected": "{X} messages selected", + "Report_reason": "Report reason", + "subVideo_nonsubs_webToast": "Video not available because you\u2019re not a subscriber to the creator", + "cc_webapp_age_video_details_body": "This content is age-restricted.", + "dWebStories_DM_story_label": "Story", + "dm_web_MessageRemovedCG": "This message was removed because it violates our Community Guidelines.", + "dm_cam_confirmed_violation_msg": "The content is in violation of our policy and has been permanently blocked.", + "dm_web_sensitiveMediaMask": "We care about your safety. Media files can sometimes contain sensitive content.", + "im_quote_you": "You", + "im_quote_sticker": "[sticker]", + "im_quote_story": "[Story]", + "im_quote_video": "[video]", + "im_quote_photo": "[photo]", + "webdm_unblock_this_account": "unblock this account", + "webdm_inputbox_block_note": "To send messages, {webdm_unblock_this_account}.", + "im_hint_reply_msg": "Reply a message...", + "im_hint_send_msg": "Send a message...", + "dm_cam_clickToSendMedia": "Click to send media", + "comment_tray_emoji": "Click to add emojis", + "dm_tcm_banner_from_tcm": "From TikTok Creator Marketplace", + "group_chat_number_of_members": "{num, plural, one {member} other {members}}", + "WBS_inbox_cc_view": "View contact", + "wbs_inbox_msg_cctos_createcontacts": "Create contact", + "webdm_report_type": "What type of {reportreason} issue?", + "webdm_report_why": "Why are you reporting this account?", + "webdm_cancel": "Cancel", + "webdm_next": "Next", + "webdm_report_popup_title": "Thanks for reporting", + "webdm_report_popup_detail": "We\u2019ll review your report and if there is a violation of our Community Guidelines, we\u2019ll take appropriate action.", + "webdm_done": "Done", + "dm_stranger_error_message_header": "Unable to open direct message", + "dm_stranger_error_message_body": "You are not logged into the correct TikTok account. To message this creator, log out and log in using the correct TikTok account.", + "SEO_dm_title": "Messages | TikTok", + "follows": "followers", + "seo_pcWeb_recipe_about_header": "About the dish", + "seo_pcWeb_recipe_ingredient_header": "Ingredients needed", + "seo_pcWeb_recipe_step_header": "Step-by-step", + "seo_pcWeb_recipe_hint_header": "Useful hints", + "seo_internalLink_mayBeInterested": "This might interest you", + "seo_aggre_related_to": "Related to {keyword}", + "ttWeb_loginPopup_scanQR_desc": "Scan QR code from your logged in device", + "ttWeb_loginPopup_phone": "Phone", + "ttWeb_loginPopup_QRcode": "QR code", + "ttWeb_loginPopup_other": "Other", + "ttWeb_loginPopup_otherOptions": "Other login options", + "common_login_panel_title": "Log in to TikTok", + "common_login_panel_copy": "Manage your account, check notifications, comment on videos, and more.", + "common_registration_panel_title": "Sign up for TikTok", + "common_registration_panel_copy": "Create a profile, follow other accounts, make your own videos, and more.", + "webapp_coin_recharge_login": "Log in to get Coins", + "WebApp_coin_recharge_9": "Sign up to get Coins", + "login_to_search": "Log in to search for popular content", + "nonloggedinsearch_popup_header_v1": "Log in to see more search results", + "classifyV1AWeb_webAppDesktop_maskLayer_bodyDesc": "This post may not be comfortable for some audiences. Log in to make the most of your experience.", + "seo_pcweb_logIn_header": "Log in to explore more content", + "phone": "Phone", + "Confirm": "Confirm", + "BA_onboarding_welcome_title": "Business account", + "ttba_switch": "Access marketing tools & exclusive features through your business account to better connect with viewers.", + "ttelite_switch_title": "Switch to Personal Account?", + "ttelite_switch_intro": "If you switch to Personal Account, you will lose access to Business Account features, including business insights and conversion tools.", + "ttelite_switch_action_yes": "Switch anyway", + "ttelite_switch_action_no": "Cancel", + "familyPairingSTEMFeed_manageAccount_contentPrefs": "Content preferences", + "filterKeywordsWeb_contentSettings_title": "Filter keywords", + "filterKeywordsWeb_emptyPage_desc": "When you filter a keyword, you won\u2019t see posts in your selected feeds that contain that word in any titles, descriptions, or stickers. Certain keywords can\u2019t be filtered.", + "AccountSecurity_passkeysOnWeb_manageAccountPage_passkeysSection_modal_updatePasskey_headlineAndButton": "Replace passkey", + "AccountSecurity_passkeysOnWeb_manageAccountPage_passkeysSection_modal_updatePasskey_subtitle": "The existing passkey used to log in to TikTok on this device will be replaced with a new one.", + "AccountSecurity_passkeysOnWeb_manageAccountPage_passkeysSection_modal_updatePasskey_modal_button_secondary": "Cancel", + "AccountSecurity_passkeysOnWeb_manageAccountPage_passkeysSection_button_updatePasskey": "Update passkey", + "AccountSecurity_passkeysOnWeb_manageAccountPage_passkeysSection_button_createPasskey": "Create passkey", + "AccountSecurity_passkeysOnWeb_manageAccountPage_passkeysSection_headline": "Passkey", + "AccountSecurity_passkeysOnWeb_manageAccountPage_passkeysSection_subtitle": "Create a passkey to log in to TikTok with your face, fingerprint, PIN, or a security key. We recommend using passkeys over a password for extra security.", + "manage_account": "Manage account ", + "acc_control": "Account control ", + "delete_acc": "Delete account", + "delete_btn": "Delete ", + "changeRegistrationLocation_account_accountInformation": "Account information", + "changeRegistrationLocation_account_accountInformation_title": "Account region", + "changeRegistrationLocation_account_accountInformation_subtitle": "Your account region is initially set based on the time and place of registration.", + "unifyPublicPrivate_privacyPg_switchModal_header": "Switch to public account?", + "unifyPublicPrivate_generic_switch_button": "Switch", + "unifyPublicPrivate_generic_cancel_button": "Cancel", + "unifyPublicPrivate_privacyPg_switchU18Modal_bullet1": "Anyone will be able to follow you and view your public posts", + "unifyPublicPrivate_privacyPg_switchU18ModalUK_bullet4": "More accounts will be suggested to you when your account is public", + "unifyPublicPrivate_privacyPg_switchU18Modal_bullet2": "{s_who} can reuse your content, such as Duet and Stitch.", + "unifyPublicPrivate_privacyPg_switchU18Modal_bullet2a": "{num, plural, one {%1$d post allows reuse, while %2$s} other {%1$d posts allow reuse, while %2$s}}", + "unifyPublicPrivate_privacyPg_switchU18Modal_bullet2b": "{num, plural, one {%2$d doesn\u2019t} other {%2$d don\u2019t}}", + "unifyPublicPrivate_privacyPg_downloadErrorWho_bullet": "Review who can download your posts", + "unifyPublicPrivate_privacyPg_switchU18Modal_bullet3": "Anyone can download your posts", + "unifyPublicPrivate_privacyPg_switchNoContent_desc": "{s_who} can reuse your content, such as Duet and Stitch, except for posts you don\u2019t allow", + "unifyPublicPrivate_privacyPg_switchErrorWho_bullet": "Review who can reuse your content, such as Duet and Stitch.", + "unifyPublicPrivate_privacyPg_switchAnyone_placeholder": "Anyone", + "unifyPublicPrivate_privacyPg_switchFriends_placeholder": "Friends", + "acct_level_confirm_panel_duet_number_not_returned_anyone": "Anyone can Duet with your videos. Except for videos you don\u2019t allow", + "acct_level_confirm_panel_duet_anyone_2": "{num, plural, one {Anyone can Duet with your videos. %1$d of your videos allows Duet, %2$s} other {Anyone can Duet with your videos. %1$d of your videos allow Duet, %2$s}}", + "acct_level_confirm_panel_duet_anyone_1": "{num, plural, one {while %d doesn\u2019t allow Duet} other {while %d don\u2019t allow Duet}}", + "acct_level_confirm_panel_duet_number_not_returned_friends": "Friends can Duet with your videos. Except for videos you don\u2019t allow", + "acct_level_confirm_panel_duet_friends_2": "{num, plural, one {Friends can Duet with your videos. %1$d of your videos allows Duet, %2$s} other {Friends can Duet with your videos. %1$d of your videos allow Duet, %2$s}}", + "acct_level_confirm_panel_duet_friends_1": "{num, plural, one {while %d doesn\u2019t allow Duet} other {while %d don\u2019t allow Duet}}", + "acct_level_confirm_panel_duet_only_you": "Only you can Duet with your videos", + "acct_level_confirm_panel_duet_num_acct_dime_not_returned": "Review who can Duet with your videos before switching to a public account", + "acct_level_confirm_panel_review_who_can_duet_2": "{num, plural, one {Review who can Duet with your videos. %1$d of your videos allows Duet, %2$s} other {Review who can Duet with your videos. %1$d of your videos allow Duet, %2$s}}", + "acct_level_confirm_panel_review_who_can_duet_1": "{num, plural, one {while %d doesn\u2019t allow Duet} other {while %d don\u2019t allow Duet}}", + "acct_level_confirm_panel_stitch_number_not_returned_anyone": "Anyone can Stitch with your videos. Except for videos you don\u2019t allow", + "acct_level_confirm_panel_stitch_anyone_2": "{num, plural, one {Anyone can Stitch with your videos. %1$d of your videos allows Stitch, %2$s} other {Anyone can Stitch with your videos. %1$d of your videos allow Stitch, %2$s}}", + "acct_level_confirm_panel_stitch_anyone_1": "{num, plural, one {while %d doesn\u2019t allow Stitch} other {while %d don\u2019t allow Stitch}}", + "acct_level_confirm_panel_stitch_number_not_returned_friends": "Friends can Stitch with your videos. Except for videos you don\u2019t allow", + "acct_level_confirm_panel_stitch_friends_2": "{num, plural, one {Friends can Stitch with your videos. %1$d of your videos allows Stitch, %2$s} other {Friends can Stitch with your videos. %1$d of your videos allow Stitch, %2$s}}", + "acct_level_confirm_panel_stitch_friends_1": "{num, plural, one {while %d doesn\u2019t allow Stitch} other {while %d don\u2019t allow Stitch}}", + "acct_level_confirm_panel_stitch_only_you": "Only you can Stitch with your videos", + "acct_level_confirm_panel_stitch_num_acct_dime_not_returned": "Review who can Stitch with your videos before switching to a public account", + "acct_level_confirm_panel_review_who_can_stitch_2": "{num, plural, one {Review who can Stitch with your videos. %1$d of your videos allows Stitch, %2$s} other {Review who can Stitch with your videos. %1$d of your videos allow Stitch, %2$s}}", + "acct_level_confirm_panel_review_who_can_stitch_1": "{num, plural, one {while %d doesn\u2019t allow Stitch} other {while %d don\u2019t allow Stitch}}", + "privacyWeb_settingsPg_comments_subtitle": "Comments", + "privacyWeb_settingsPg_restrictedSettings_desc": "Setting restricted by TikTok to protect your privacy", + "privacyWeb_settingsPg_commentsOthersPosts_desc": "Others can\u2019t comment on the posts you don\u2019t allow in your posts\u2019 privacy settings", + "privacyWeb_settingsPg_switchModal_bullet1": "{num, plural, one {%1$d post allows comments, and %2$s} other {%1$d posts allow comments, and %2$s}}", + "privacyWeb_settingsPg_switchModal_bullet2": "{num, plural, one {%2$d post doesn\u2019t allow comments due to your post\u2019s privacy settings.} other {%2$d posts don\u2019t allow comments due to your posts\u2019 privacy settings.}}", + "privacyWeb_settingsPg_commentsOthersAny_desc": "Others can\u2019t comment on any of your current or future posts", + "privacyWeb_settingsPg_comments_desc": "Who can comment on your posts", + "privacyWeb_settingsPg_option_followers": "Followers", + "privacyWeb_settingsPg_everyone_option": "Everyone", + "privacyWeb_settingsPg_friends_option": "Friends", + "privacyWeb_settingsPg_noOne_option": "No one", + "private_acc_ads": "To switch to a Private Account, turn off ad authorization on the TikTok app in Settings and privacy > Privacy.", + "caba_no_private": "{account_type} can\u2019t be set to private", + "ba": "Business Accounts", + "caba_no_private_desc": "To set your account to private, switch to a Personal Account on the app in Settings and privacy > Manage account.", + "bc_account_private_enable_notice_content": "You\u2019ve shared access permission with a TikTok Business Center account. To change to a private account, first go to %s and remove this permission.", + "bc_account_private_enable_notice_contenturl": "Settings and privacy", + "switch_public_h1": "Switch to public account?", + "switch_public_desc": "If you switch to a public account, anyone can watch your videos. Users may be able to Duet, Stitch, or download your videos depending on what you choose in Settings and privacy. You won\u2019t need to approve followers and all pending follow requests will be automatically approved.", + "disallowSwitchAccount_privacy_popUp_title": "End LIVE and set account to %s?", + "disallowSwitchAccount_privacy_popUp_placeholder2": "public", + "disallowSwitchAccount_privacy_popUp_placeholder": "private", + "disallowSwitchAccount_privacy_popUp_description": "You cannot change privacy settings in the middle of LIVE. To set account to %s, you need to end the LIVE first.", + "disallowSwitchAccount_privacy_popUp_button2": "End LIVE now", + "ok_btn": "OK", + "bc_account_private_enable_notice_title": "Can\u2019t change to private account", + "toast_restricted_fam_pairing": "Setting restricted by Family Pairing", + "settings_updated": "Settings updated ", + "discoverability": "Discoverability ", + "private_acc": "Private account ", + "private_acc_desc": "With a private account, only users you approve can follow you and watch your videos. Your existing followers won\u2019t be affected.", + "privacyWeb_settingsPg_interactions_title": "Interactions", + "privacyWeb_settingsPg_dm_subtitle": "Direct messages", + "privacyWeb_settingsPg_dm_desc": "Who can send you messages", + "privacy_h1": "Privacy", + "feedback_webform_dropdown_tt4b_opt_2": "Private account", + "search_tag_blocked": "Blocked by you", + "webapp_privacy_and_safety_blocked_accounts": "Blocked accounts", + "download_data_entry_point": "Data", + "datadownload_process_download_your_data": "Download your data", + "dyd_desc": "Get a copy of your TikTok data", + "desktop_push_turn_on_tips_text1": "Click on {0} in your browser\u2019s address bar", + "accessibilityLabels_settings_pushNotifs_modal_lockIcon": "View site information", + "desktop_push_turn_on_tips_text2": "Find {0} Notifications and select \u201cAllow\u201d", + "web_inappNotifs_inappNotifs_header": "In-app notifications", + "push_likes": "Likes", + "push_comments": "Comments", + "push_new_followers": "New followers", + "push_mentions": "Mentions and tags", + "pcWeb_repostTab": "Reposts", + "push_notifications": "Push notifications", + "desktop_notifications": "Desktop notifications", + "allow_in_browser": "Allow in browser", + "desktop_push_tips": "Stay on top of notifications for likes, comments, the latest videos, and more on desktop. You can turn them off anytime.", + "desktop_push_turn_on_tips_title": "How to turn on push notifications ", + "push_preferences": "Your preferences", + "push_preferences_tips": "Your preferences will be synced automatically to the TikTok app.", + "interactions": "Interactions", + "push_likes_description": "Likes, comments, new followers, mentions and tags", + "screentimedash_digitalwellbeing_summary_timespent_graph_yaxis_hours_1": "{hours}h", + "screentimedash_digitalwellbeing_summary_timespent_graph_yaxis_minutes_1": "{minutes}m", + "screentimedash_digitalwellbeing_summary_day_label_sun": "Sun", + "screentimedash_digitalwellbeing_summary_day_label_mon": "Mon", + "screentimedash_digitalwellbeing_summary_day_label_tue": "Tue", + "screentimedash_digitalwellbeing_summary_day_label_wed": "Wed", + "screentimedash_digitalwellbeing_summary_day_label_thu": "Thu", + "screentimedash_digitalwellbeing_summary_day_label_fri": "Fri", + "screentimedash_digitalwellbeing_summary_day_label_sat": "Sat", + "screentimedash_digitalwellbeing_summary_month_label_jan": "Jan", + "screentimedash_digitalwellbeing_summary_month_label_feb": "Feb", + "screentimedash_digitalwellbeing_summary_month_label_mar": "Mar", + "screentimedash_digitalwellbeing_summary_month_label_apr": "Apr", + "screentimedash_digitalwellbeing_summary_month_label_may": "May", + "screentimedash_digitalwellbeing_summary_month_label_jun": "Jun", + "screentimedash_digitalwellbeing_summary_month_label_jul": "Jul", + "screentimedash_digitalwellbeing_summary_month_label_aug": "Aug", + "screentimedash_digitalwellbeing_summary_month_label_sep": "Sep", + "screentimedash_digitalwellbeing_summary_month_label_oct": "Oct", + "screentimedash_digitalwellbeing_summary_month_label_nov": "Nov", + "screentimedash_digitalwellbeing_summary_month_label_dec": "Dec", + "screentimedash_digitalwellbeing_summary_appopened_day_1": "{num, plural, one {Day: {num} time} other {Day: {num} times}}", + "screentimedash_digitalwellbeing_summary_appopened_night_1": "{num, plural, one {Night: {num} time} other {Night: {num} times}}", + "screentimedash_digitalwellbeing_summary_timespent_day": "Day:", + "screentimedash_digitalwellbeing_summary_timespent_hours_1": "{hours}h", + "screentimedash_digitalwellbeing_summary_timespent_minutes_1": "{minutes}m", + "screentimedash_digitalwellbeing_summary_timespent_night": "Night:", + "screentimedash_digitalwellbeing_summary_appopened_actionsheet_chooseweek_title": "Select week", + "screentimedash_digitalwellbeing_summary_timespent_tab": "Time spent", + "screentimedash_digitalwellbeing_summary_appopened_tab": "TikTok opened", + "screentimedash_digitalwellbeing_summary_timespent_header_daytime": "Day time", + "screentimedash_digitalwellbeing_summary_daytime_tip_desc": "Day time is between 6 AM\u201310 PM.", + "screentimedash_digitalwellbeing_summary_nighttime_tip_title": "Night time", + "screentimedash_digitalwellbeing_summary_nighttime_tip_desc": "Night time is between 10 PM\u20136 AM.", + "screentimedash_digitalwellbeing_summary_appopened_header_total": "Total", + "FPscheduledBreak_teenDetailPage_offSelection": "Off", + "screentime_settings_dailyscreentime_status_off": "Off", + "screentime_settings_title": "Screen time", + "screenTime_web_infoIcon_desc": "Updates to your settings will also appear on the app", + "screentimedash_digitalwellbeing_dailyscreentime_title": "Daily screen time", + "screentime_settings_screentimebreaks_title": "Screen time breaks", + "screentime_settings_screentimebreaks_desc": "Get reminded to take breaks from scrolling.", + "FPscheduledBreak_teenBreaklimit_headline": "Time away", + "FPscheduledBreak_teenScreentimeDashboard_subContent": "Your time away settings are managed by {s_username}", + "FPscheduledBreak_teenInboxNotif_timeAway_arrowContent": "View time away", + "FPscheduledBreak_teenScreentimeDashboard_actionOn": "On", + "FPscheduledBreak_teenScreentimeDashboard_actionOff": "Off", + "privacy_projectS_sleepHours_settingTitle": "Sleep hours", + "nightscreentimemgmt_screentimesettings_sleepreminders_feature_name": "Sleep reminders", + "privacy_projectS_sleepHours_settingDesc_screenTimeScreen": "Get reminded when you're in your sleep hours.", + "nightscreentimemgmt_screentimesettings_sleepreminders_feature_desc": "Get reminded about your sleep time.", + "screentimedash_digitalwellbeing_weeklyscreentime_title": "Weekly screen time updates", + "screentimedash_digitalwellbeing_weeklyscreentime_desc": "Stay updated on your time from your Inbox.", + "screentimedash_digitalwellbeing_summary_header": "Summary", + "screenTime_summarySection_desc": "Your weekly metrics include your time on the app and on tiktok.com.", + "teenScreenTimeDashboard_familyPairing_header_helpAndResources": "Help and resources", + "teenScreenTimeDashboard_familyPairing_screenTime_link": "Digital well-being tips", + "pa_ads_label": "Ads", + "tt_hc_stopic_fampairing": "Family Pairing", + "webdm_block": "Block", + "customizeSTM_screenTimeLimit_selectTime_minutes": "{minutes}m", + "customizeSTM_screenTimeLimit_selectTimeActionSheet": "{hours}h {minutes}m", + "customizeSTM_screenTimeLimit_selectTime_hours": "{hours}h", + "customizeSTM_dailyScreenTimeOn_header_notified": "Get notified", + "customizeSTM_dailyScreenTimeOn_desc_notified": "If you reach your time, you\u2019ll get notified and you\u2019ll need to enter a passcode from {username} to keep using the app.", + "customizeSTM_dailyScreenTimeOn_header_discuss": "Discuss your settings with your parent or guardian", + "customizeSTM_dailyScreenTimeOn_desc_discuss": "Your daily screen time settings are managed by {username} in Family Pairing.", + "customizeSTM_dailyScreenTimeOn_header_time_minutes": "Your daily screen time is {minutes}m.", + "customizeSTM_dailyScreenTimeOn_header_time_hours": "Your daily screen time is {hours}h.", + "customizeSTM_dailyScreenTimeOn_header_time_hoursMinutes": "Your daily screen time is {hours}h {minutes}m.", + "customizeSTM_teenDailyScreenTimeOn_header": "Your daily screen time is:", + "customizeSTM_dailyScreenTimeOn_title": "Daily screen time: On", + "customizeSTM_dailyScreenTimeOff_title": "Daily screen time: Off", + "dailyscreentime_featurescreen_heading": "Daily screen time", + "privacy_projectS_sleepHours_turnOff_sheet_headline": "Turn off your sleep hours today?", + "privacy_projectS_sleepHours_turnOff_sheet_desc": "If you turn off your sleep hours today, they'll resume tomorrow. You can also turn them off completely.", + "privacy_projectS_sleepHours_turnOff_sheet_btn_completely": "Turn off completely", + "privacy_projectS_sleepHours_turnOff_sheet_btn_today": "Turn off today", + "privacy_projectS_sleepHours_settingDesc_sleepHoursScreen": "To help you sleep, push notifications are muted during your sleep hours. We'll remind you before and after they start.", + "privacy_projectS_sleepHours_settingDesc_setSleepHours_title": "Set your sleep hours", + "start_time": "Start time", + "FPscheduledBreak_parentDetailpage_day_endTime": "End time", + "privacy_projectS_sleepHours_settingDesc_setSleepHours_lastFor_desc": "Sleep hours last for 8 hours after your start time", + "save_settings": "Save", + "privacyWeb_settingsPg_learnMore_placeholder": "Learn more", + "privacyWeb_generic_confirm_button": "Confirm", + "privacyWeb_generic_updateSettings_button": "Update settings", + "privacyWeb_generic_cancel_button": "Cancel", + "privacyWeb_settingsPg_confirmNonEveryone_popupHeader": "This will also turn off requests from everyone", + "privacyWeb_settingsPg_confirmNonRequests_popupBody": "You won't receive requests from everyone on TikTok. Your current group chats and individual chats will be unaffected. Do you want to update settings?", + "privacyWeb_settingsPg_confirmNonPotential_popupHeader": "This will also turn off requests from potential connections", + "privacyWeb_settingsPg_confirmNonPotential_popupBody": "You won't receive requests from potential connections. Your current group chats and individual chats will be unaffected. Do you want to update settings?", + "privacyWeb_settingsPg_confirmNonReceive_popupHeader": "Confirm to not\u2028receive messages?", + "privacyWeb_settingsPg_confirmNonReceive_popupBody": "You won't be able to send or receive messages from people you haven't chatted with before.\u2028Your current group chats and individual chats will be unaffected. Do you want to update settings?", + "privacyWeb_settingsPg_turnOnConfirmFriends_header": "This will also turn on messages from friends", + "privacyWeb_settingsPg_turnOnConfirmFriends_body": "You will receive messages from friends. Do you want to update settings?", + "privacyWeb_settingsPg_turnOnConfirmOthers_header": "This will also apply to others on TikTok", + "privacyWeb_settingsPg_turnOnConfirmOthers_body": "You will receive messages from others on TikTok in your message requests. Do you want to update settings?", + "privacyWeb_settingsPg_turnOffConfirmOthers_header": "This will also turn off requests from others on TikTok", + "privacyWeb_settingsPg_turnOffConfirmOthers_body": "You won't receive requests from others on TikTok. Do you want to update settings?", + "privacyWeb_settingsPg_turnOnConfirmRequests_header": "This will also turn on messages from friends and requests from potential connections", + "privacyWeb_settingsPg_turnOnConfirmRequests_body": "You will receive messages from friends and requests from potential connections. Do you want to update settings?", + "privacyWeb_settingsPg_turnOnConfirmPotential_header": "This will also turn on requests from potential connections", + "privacyWeb_settingsPg_turnOnConfirmPotential_body": "You will receive requests from potential connections. Do you want to update settings?", + "privacyWeb_settingsPg_receiveMsgFollowersInbox_placeholder": "You will receive messages from followers you follow back in your inbox unless you choose not to receive them.", + "privacyWeb_settingsPg_receiveMsgPotential_placeholder2": "Potential connections refer to your followers, people you follow and other people you may know. You will receive messages from your potential connections in your message requests unless you choose not to receive messages at all.", + "privacyWeb_settingsPg_receiveMsgPotential_placeholder": "Potential connections refer to your followers. You will receive messages from your potential connections in your message requests unless you choose not to receive messages at all.", + "privacyWeb_settingsPg_receiveMsgOthers_placeholder": "You will receive message requests from others on TikTok in your message requests unless you choose not to receive them.", + "privacyWeb_settingsPg_receiveMsg_popupHeader": "Receive message in", + "privacyWeb_settingsPg_receiveMsgInbox_option": "Inbox", + "inbox": "Inbox", + "privacyWeb_settingsPg_receiveMsgYes_option": "Requests", + "privacyWeb_settingsPg_receiveMsgNo_option": "Don\u2019t receive", + "privacyWeb_settingsPg_potential_option": "Potential connection", + "privacyWeb_settingsPg_others_option": "Others on TikTok", + "privacyWeb_settingsPg_dm_subheader": "{s_learnMore} about who can send you messages.", + "privacyWeb_settingsPg_dm_body": "Friends (followers you follow back), accounts you follow, and people you may know can message you unless you block them. When anyone else messages you, you can choose to receive it as a message request. {s_learnMore}", + "SEO_setting_title": "Privacy and Settings | TikTok", + "Sub_emote_goback": "Go back", + "privacyWeb_settingsPg_dmFamilyPairing_toast": "Can\u2019t be edited due to Family Pairing settings", + "stitch": "Stitch", + "webapp_block_experience_unblock_popup_header": "Unblock %s (%s)?", + "webapp_block_experience_block_popup_header": "Block %s (%s)?", + "webapp_block_experience_unblock_popup_body": "%s will be able to send you messages, view your posts, and follow you. They will not be notified that you unblocked them.", + "webapp_block_experience_block_popup_body": "They will not be able to send you messages, see your posts, or find your profile. This doesn\u2019t include extended scenarios like multi-host livestreams, duets posted by others, or group chats you both participate in. They will not be notified that you blocked them.", + "webapp_unblocked_button2": "Cancel", + "ttba_ob_switchouterr_title": "Unlink account from the Shopify Merchant ", + "ttba_ob_switchouterr_title_lttfb": "Your account is linked to TikTok for Business", + "ttba_ob_switchouterr_title_lmp": "Your account is linked to multiple platforms", + "ttba_ob_switchouterr_title_seller": "Your account is linked to TikTok Shop Seller Center.", + "ttba_ob_switchouterr_subtext": "To switch your account type, unlink your account from the Shopify Merchant.", + "ttba_ob_switchouterr_subtext_lttfb": "To switch your account type, unlink your TikTok account from TikTok for Business first. ", + "ttba_ob_switchouterr_subtext_lmp": "To switch your account type, unlink your account from the Shopify Merchant and unlink your TikTok account with TikTok for Business first. ", + "ttba_ob_switchouterr_subtext_seller": "To switch your account type, unlink your account with the TikTok Shop Seller Center.", + "switched_to_personal": "Switched to Personal Account", + "feedback_and_help_seo_title": "Feedback and help - TikTok", + "setting_feedback_delete_picture": "To protect your privacy, we only store reported images for 30 days.", + "Couldn't upload image. Please try again": "Couldn't upload image. Please try again", + "setting_feedback_delete_history": "To protect your privacy, we remove report details after 36 months.", + "Expand": "Expand", + "basicPoi_relatedTopics": "Related topics", + "basicPoi_moreRelated": "More related videos", + "pc_web_you_may_like": "You may like", + "pc_web_empty_state_novid_header": "No videos yet", + "pc_web_empty_state_novid_body": "Try browsing other categories for more videos", + "Web_explorePage_dynamicCategories_trendingToday": "Trending today", + "pc_web_explore_meta_title": "Explore - Find your favourite videos on TikTok", + "pc_web_explore_meta_desc": "Discover the latest TikTok videos on our Explore page. Stay up-to-date on the latest trends and explore your interests here!", + "add_windows_store_badge_download_app_stores": "Download from app stores", + "add_windows_store_badge_get_tiktok_app": "Get the TikTok app", + "add_windows_store_badge_scan_qr": "Scan QR code to download TikTok", + "playlist_webapp_toast_deleted": "Playlist deleted", + "playlist_webapp_toast_error_tryagain": "Something went wrong. Try again later.", + "playlist_webapp_profileView_error_header": "No posts in this playlist", + "playlist_webapp_profileView_error_desc": "Posts in playlists will appear here.", + "playlist_webapp_creation_backBtn": "My profile", + "playlist_webapp_profileview_btn_editname": "Edit playlist\u2019s name", + "playlist_webapp_profileview_btn_deleteplaylist": "Delete playlist", + "playlist_webapp_editname_header": "Edit playlist\u2019s name", + "playlist_webapp_deleteplaylist_header": "Delete playlist \u201c{playlist_name}\u201d?", + "playlist_webapp_editname_desc": "Give your playlist a creative name that best describes the posts you\u2019d like to add.", + "playlist_webapp_deleteplaylist_desc": "If you delete this playlist, you won\u2019t be able to recover it. Your posts will still be saved.", + "playlist_webapp_deleteplaylist_btn_cancel": "Cancel", + "playlist_webapp_editname_btn": "Save", + "playlist_webapp_deleteplaylist_btn_delete": "Delete", + "playlist_webapp_profileview_btn_removevid": "Remove posts", + "playlist_webapp_profileview_btn_addvid": "Add posts", + "playlist_webapp_creation_btn_cancel": "Cancel", + "seoOptimization_downloadTikTok_web_h3": "Download the latest official TikTok Lite", + "seoOptimization_downloadTikTok_web_h2Ios": "Download the latest official TikTok app for iOS", + "seoOptimization_downloadTikTok_web_h2Android": "Download the latest official TikTok app for Android", + "web_sharing_downloadlatestTTLite": "Download the latest official TikTok Lite app for Android", + "sharing_m2_downloadPage_header": "Download the new TikTok", + "seoOptimization_downloadTikTok_web_h1": "Download TikTok - Make Your Day", + "seo_longtail_scanCodeDownload": "Scan QR code to download", + "copy_link": "Copy link ", + "web_sharing_TTliteTagline": "TikTok Lite \u2013 Faster TikTok", + "web_sharing_TTLite_smallerFaster": "TikTok Lite is a smaller, faster version of TikTok", + "web_sharing_TTlitelatestVersion": "Latest version: {s_numOfVersion}", + "web_sharing_copyLink2": "Copy link", + "seoOptimization_downloadTikTok_web_keyword": "TikTok", + "seoOptimization_downloadTikTok_web_keyword2": "Download TikTok, TikTok APK, TikTOk app, TikTok Install, TikTok Lite", + "Download TikTok": "Download TikTok", + "seoOptimization_downloadTikTok_web_keyword3": "Android", + "seoOptimization_downloadTikTok_web_keyword4": "iOS", + "seoOptimization_downloadTikTok_web_keyword5": "iPhone", + "seoOptimization_downloadTikTok_web_metaTitle": "Download the TikTok app for Android and iOS - Get official latest version", + "seoOptimization_downloadTikTok_web_metaDescription": "Download the TikTok app for Android and iOS for free. Get and install the official TikTok app, access the latest version, and enjoy exciting new features on your devices.", + "seo_downloader_DownloadVideosFromTikTok": "Download videos from TikTok", + "seo_downloader_openAppToDownload": "Open TikTok and download videos officially within the app, with a wide variety of videos available to choose from - no extra steps or complicated procedures required.", + "seo_downloader_Download": "Download", + "seo_downloader_linkError": "Please use a correct TikTok link", + "seo_downloader_inputBox": "Enter a TikTok URL...", + "seo_downloader_DownloadTikTokVideos": "TikTok Downloader \nDownload TikTok Videos", + "seo_downloader_EnterTheTikTokVideoLink": "Enter the TikTok video link in the search box and click Download. Follow the instructions provided to download and save the video.", + "seo_downloader_AboutDownloadingTikTokVideos": "About downloading TikTok videos without watermark", + "seo_downloader_legal1": "To protect creators' rights, TikTok currently does not support the download of videos without watermarks.", + "seo_downloader_legal2": "Please do not use third-party tools to save or download TikTok users' videos to avoid legal disputes.", + "seo_downloader_legal3": "Respect TikTok creators' rights by using official TikTok channels to download and watch related videos.", + "seo_downloader_DownloadOnTikTok": "Download on TikTok", + "seo_downloader_HowToDownloadVideosFromTikTok": "How to download videos from TikTok", + "seo_downloader_openTikTok": "Open TikTok", + "seo_downloader_InTheTikTokAppGotoTheVideo": "In the TikTok app, go to the video you'd like to download.", + "seo_downloader_tapShare": "Tap Share", + "seo_downloader_TapTheShareButtonOnTheSideOfVideo": "Tap the Share on the side of the video.", + "seo_downloader_saveVideo": "Save video", + "seo_downloader_TapSaveVideo": "Tap Save video. If you don't have the option to save a video, this means the creator doesn't allow it.", + "seo_downloader_metaTitle": "TikTok Downloader - Download TikTok videos | TikTok", + "seo_downloader_metaDesc": "Download TikTok videos effortlessly. Use TikTok Downloader and download TikTok videos without watermarks, as well as save them in MP3 and MP4 formats.", + "seo_downloader_mainMetaKeywords": "Download Video TikTok, TikTok video Download, TikTok MP3, TikTok MP4, TikTok watermark, Save TikTok videos, Save TikTok", + "live_nav_follow": "Following", + "webapp_sideNavbar_suggestedHostBugFix": "Suggested LIVE creators", + "Web_logout_modal_header": "Are you sure you want to log out?", + "Web_logout_modal_body": "You can now log in to multiple accounts", + "Web_loginDropdown_switchAccount": "Switch account", + "Web_removeAccount_modal_header": "Remove account?", + "Web_removeAccount_modal_body": "You will have to enter your log in info next time you use this account.", + "Web_removeAccount_btn": "Remove", + "dm_cam_preview_photo": "[photo]", + "about_this_ad_fallback_description1": "To help you see relevant and useful ads, TikTok may use information that you provided when you set up your TikTok account, device and network connection information collected when you access TikTok, your in-app activity (including your previous interaction with similar ads), and off-app activity and other data from our advertising partners, depending on your ad personalization choices. \n\nLearn more about %s.", + "about_this_ad_fallback_more_info_hyperlink_2": "how TikTok ads work", + "about_this_ad_fallback_adjust_settings": "Change your ad personalization settings", + "Web_buildVideoTranslations_doNotTranslate": "Do not translate", + "Web_buildVideoTranslations_done": "Done", + "claSeeTranslation_fyp_captionsPanel_toggle1": "Show captions", + "claSeeTranslation_fyp_captionsPanelUnavailable_toggle1": "Show captions (unavailable)", + "claSeeTranslation_fyp_captionsPanel_autogeneratedLabelV2": "Captions (auto-generated)", + "claCombineCaptions_Panel_captionsToggleTurnOff_desc": "Turned off by creator", + "claCombineCaptions_Panel_captionsToggleSpeechNotRecog_title": "Speech not recognized", + "claCombineCaptions_Panel_captionsToggleUnsupportedLang_title": "Language not supported", + "claCombineCaptions_Panel_captionsUnsupported_toast": "Captions currently not supported", + "Web_buildVideoTranslations_selectLang": "Select language", + "claSeeTranslation_fyp_longPressPanel_captionsLabelV2": "Captions", + "Web_buildVideoTranslations_alwaysTranslate": "Always translate posts", + "Web_buildVideoTranslations_togglePara": "Translate all posts, unless in languages you don\u2019t want to translate.", + "Web_buildVideoTranslations_translateInto": "Translate into", + "logged_out_content": "Your account was logged out. Try logging in again.", + "logged_out_title": "Account status", + "embed": "Embed", + "embed_success": "Embed code copied", + "AccountSecurity_passkeysOnWeb_upsell_headline": "Create a passkey for an easier login", + "AccountSecurity_passkeysOnWeb_upsell_bulletOne": "Use your face, fingerprint, PIN, or a security key for a quicker and safer login.", + "AccountSecurity_passkeysOnWeb_upsell_bulletTwo": "You won\u2019t have to worry about forgetting or resetting passwords.", + "AccountSecurity_passkeysOnWeb_upsell_bulletThree": "Passkeys are safer than passwords because they can\u2019t be guessed by others.", + "AccountSecurity_passkeysOnWeb_upsell_button_secondary": "Maybe later", + "AccountSecurity_passkeysOnWeb_upsell_button_primary": "Create passkey", + "web_sharing_disable_toast": "This action isn't available for this video", + "Copied": "Copied", + "support_webapp_sharing_option_button": "Send to friends", + "pcWeb_removeRepost_btn": "Remove repost", + "embed_profile_tooltip": "Embed is unavailable for this profile due to creator\u2019s age or privacy settings", + "share_to": "Share to", + "sms": "Send SMS", + "Download": "Download", + "TTweb_fyf_menuDownloadVideo_menuLink": "Download video", + "TTweb_fyf_menuSendtoFriend_menuLink": "Send to friend", + "changeRegistrationLocation_weakWarning_loseFeatures_toast": "Something went wrong. Try again later.", + "TTweb_fyf_menuPictureinPicture_menuLink": "Picture-in-picture", + "nonpersonalizedFeeds_feed_entrypoint_manageFeed": "Manage feeds", + "ls_view_details": "View details", + "webAnalytics_videoDetail_viewPerformance": "View video details", + "dailyscreentime_notifreminder_desc_minutes": "You\u2019ve spent {minutes}m on TikTok today. Close it to stay within your daily time, or enter the passcode 1234 to return to TikTok.", + "familyPairing_dailyScreenTime_intervention_desc_minutes": "You\u2019ve spent {minutes}m on TikTok today. Close it to stay within your daily time, or enter a passcode from {username} to return to TikTok.", + "dailyscreentime_notifreminder_desc_hours": "You\u2019ve spent {hours}h on TikTok today. Close it to stay within your daily time, or enter the passcode 1234 to return to TikTok.", + "familyPairing_dailyScreenTime_intervention_desc_hours": "You\u2019ve spent {hours}h on TikTok today. Close it to stay within your daily time, or enter a passcode from {username} to return to TikTok.", + "dailyscreentime_notifreminder_desc_hoursminutes": "You\u2019ve spent {hours}h {minutes}m on TikTok today. Close it to stay within your daily time, or enter the passcode 1234 to return to TikTok.", + "familyPairing_dailyScreenTime_intervention_desc_hoursMinutes": "You\u2019ve spent {hours}h {minutes}m on TikTok today. Close it to stay within your daily time, or enter a passcode from {username} to return to TikTok.", + "dailyscreentime_notifreminder_toast_incorrectpasscode": "The passcode you entered is incorrect. Please try again later.", + "dailyscreentime_introsheet_minors_heading": "To support your well-being, your daily screen time is set to 1 hour", + "nightscreentimemgmt_sleepreminders_modal_readyforsleep_heading": "Ready for bed?", + "nightscreentimemgmt_sleepreminders_modal_readyforsleep_firstreminder_desc": "You\u2019ve set your sleep time for {string}.", + "nightscreentimemgmt_sleepreminders_modal_readyforsleep_editreminder_link": "Edit reminder", + "nightscreentimemgmt_sleepreminders_modal_readyforsleep_ok_btn": "OK", + "nightscreentimemgmt_sleepreminders_modal_readyforsleep_delay_btn_variantone": "Delay (10m)", + "screentime_breakreminder_modal_timetotakeabreak_title": "Time to take a break?", + "screentime_breakreminder_modal_timetotakeabreak_desc_1": "You\u2019ve had {num} minutes of uninterrupted screen time. Consider taking a break for a while.", + "screentime_breakreminder_modal_editreminder_link": "Edit future reminders", + "screentime_breakreminder_modal_ok_btn": "OK", + "screentime_breakreminder_modal_snooze_link": "Snooze (10m)", + "dailyscreentime_notifreminder_header_ready": "Ready to close TikTok?", + "familyPairing_dailyScreenTime_intervention_headline": "Ready to close TikTok?", + "familyPairing_dailyScreenTime_intervention_returnToTikTok_toast": "You\u2019ve returned to TikTok", + "familyPairing_dailyScreenTime_intervention_incorrectPasscode_error": "The passcode you entered is incorrect. Please try again.", + "dailyscreentime_notifreminder_button_returntotiktok": "Return to TikTok", + "dailyscreentime_introsheet_minors_firstbullet_logoff": "We\u2019ll let you know if your time is up so it\u2019s easier to log off", + "dailyscreentime_introsheet_minors_secondbullet_settingsprivacy": "You can manage your daily screen time in Settings and privacy", + "dailyscreentime_introsheet_minors_firstbutton_gotit": "Got it", + "dailyscreentime_introsheet_minors_secondbutton_manage": "Manage daily screen time", + "privateAccountPrompt_stayPrivate_button": "Stay private", + "privateAccountPrompt_stayPublic_button": "Stay public", + "privateAccountPrompt_manageAccount_privateAccount_button2": "Remind me later", + "privateAccountPrompt_switchPrivate_button": "Switch to private", + "privateAccountPrompt_switchPublic_button": "Switch to public", + "privateAccountPrompt_manageAccount_privateAccount_button3": "Select \u201cPrivate account\u201d", + "privateAccountPrompt_manageAccount_privateAccount_button4": "Select \u201cPublic account\u201d", + "privateAccountPrompt_manageAccount_privateAccount_title": "Private account", + "privateAccountPrompt_account_permission_current_label": "Current", + "privateAccountPrompt_manageAccount_privateAccount_body": "Only approved followers can see your profile and posts. No one will be able to Duet or Stitch your posts.", + "privateAccountPrompt_manageAccount_publicAccount_title": "Public account", + "privateAccountPrompt_manageAccount_publicAccount_body2": "Anyone on or off TikTok can see your profile and posts. You can customize your Duet, Stitch, or other interaction settings individually.", + "UKprivateAccountPrompt_manageAccount_privateAccount_body2": "Only approved followers can see your profile and posts. No one will be able to Duet or Stitch your posts. Accounts suggested to you will be limited.", + "UKprivateAccountPrompt_manageAccount_publicAccount_body2": "Anyone on or off TikTok can see your profile and posts. You can customize your Duet, Stitch, or other interaction settings individually. More accounts will be suggested to you.", + "privateAccountPrompt_manageAccount_privateAccount_placeholder": "Learn more", + "privateAccountPrompt_manageAccount_title": "Manage account privacy", + "privateAccountPrompt_popUp_prompt_title": "Your account is private", + "privateAccountPrompt_welcomePage_title": "Review account permissions", + "privateAccountPrompt_manageAccount_privateAccount_description3": "You can always switch your account to private or public later in the app settings. Your name, username, and profile photo will always be visible to anyone on or off TikTok.%s", + "privateAccountPrompt_popUp_prompt_description": "Your account was set to private because you previously selected \u201cRemind me later\u201d. Choose whether you want to stay private or switch to public. %s", + "privateAccountPrompt_account_permission_disclaimer": "You can always switch your account to private or public later in the app settings. %s", + "privacy_projectS_sleepHours_intervention_headline": "Sleep hours", + "privacy_projectS_sleepHours_body": "Unwind with a breathing exercise for a good night\u2019s sleep.", + "privacy_projectS_sleepHours_v2_editReturnForNow_intervention_return_btn": "Return for now", + "privacy_projectS_sleepHours_manageSleepHours_sheet_skip_option": "Skip for today", + "privacy_projectS_sleepHours_15minsReminder": "Remind me in 15 minutes", + "privacy_projectS_sleepHours_remindYou15Min_confirmation_toast": "We'll remind you about your sleep hours in 15 minutes", + "privacy_projectS_sleepHours_remindYou_confirmation_toast": "We'll remind you again after 1 hour on TikTok", + "privacy_projectS_sleepHours_turnOffToday_confirmation_toast": "Your sleep hours will resume tomorrow at {s_startTime}", + "nightscreentimemgmt_setsleeptime_halfsheet_am_desc": "AM", + "nightscreentimemgmt_setsleeptime_halfsheet_pm_desc": "PM", + "Got it": "Got it", + "FPscheduledBreak_teenBreaklimit_content": "Your parent or guardian scheduled time away for you between {s_startTime}-{s_endTime}.", + "FPscheduledBreak_teenBreaklimit_settingsButton": "View settings", + "report_inbox_status": "Status", + "report_inbox_inreview": "Under review.", + "report_inbox_violation": "Violations found.", + "report_inbox_noviolation": "No violation.", + "showVidStatus_reportInbox_vidStatusDeleted_label": "Deleted", + "showVidStatus_reportInbox_vidStatusIneligible_label": "Ineligible for recommendation", + "oSA_reportSummary_statusMoreInfo_title": "More information required", + "rIC_reportSummary_statusReviewing_desc": "Reviewing report", + "dsa_report_pg_header": "Your report", + "dsa_illegal_report_inbox_resubmit": "Resubmit report", + "tiktok_series_appeal_request_review_series_details_title": "Request another review", + "scm_label_and_appeal_modal_title": "What does state-controlled media mean?", + "scm_label_and_appeal_modal_desc": "The government has control over the account\u2019s editorial content.", + "scm_label_and_appeal_modal_button_dismiss": "Dismiss", + "scm_label_and_appeal_modal_button_learn_more": "Learn more", + "filterKeywordsWeb_fypEntry_modal_desc1": "Your engagement on TikTok reflects what you see. The more you interact, the more personalized your experience will be. You can always adjust recommendations with {s_keywordLink}.", + "filterKeywordsWeb_fypEntry_manageFeeds_popup": "Filter keywords", + "filterKeywordsWeb_fypEntry_modal_desc2": "You can also turn off personalized feeds at any time. This will change some parts of your experience, including changing For You to Popular, but it won\u2019t affect ads personalization. {s_learnLink}", + "nonpersonalizedFeeds_turnOn_modal_toggle_bodyFull": "Your engagement on TikTok helps shape what you see. The more you interact, the more personalized your feeds will be.\n\nYou can turn on personalized feeds at any time. This will change some parts of your experience, including changing Popular to For You, but it won\u2019t affect ads personalization. You can turn personalized feeds back off any time to reverse these changes.", + "personalisedSearch_searchResults_actionSheet_bodyPara1": "Your engagement on TikTok helps shape what you see. The more you interact, the more personalized your search experience will be.\n\nYou can turn personalized search off at any time. This will change some parts of your experience, including suggested search queries, and how search results are ranked. However, it won\u2019t affect search ads personalization. You can turn personalized search back on any time to reverse these changes.", + "personalisedSearch_searchResults_actionSheet_bodyPara1V2": "Your engagement on TikTok helps shape what you see. The more you interact, the more personalized your search experience will be.\n\nYou can turn personalized search on at any time. This will change some parts of your experience, including suggested search queries, and how search results are ranked. However, it won\u2019t affect search ads personalization. You can turn personalized search back off any time to reverse these changes.", + "nonpersonalizedFeeds_turnOn_modal_toggle_headline": "Manage personalized feeds", + "personalisedSearch_searchResults_actionSheet_header": "Manage personalized search", + "nonpersonalizedFeeds_modal_allScenarios_body_learnMore_articleLink": "Learn more", + "personalisedSearch_searchResults_actionSheet_bodyPara2Bold1": "Learn more", + "nonpersonalizedFeeds_settings_contentPreferences_entrypoint": "Personalized feeds", + "personalisedSearch_searchResults_actionSheet_toggle": "Personalized search", + "nonpersonalizedFeeds_turnOn_modal_toggle_CTA": "Done", + "personalisedSearch_searchResults_actionSheet_btn": "Done", + "hide": "Hide", + "Web_report_thanks_for_report": "Thanks for reporting", + "Web_report_hide_video": "To improve your experience, this video has been hidden. We\u2019ll show you fewer videos like this.", + "Web_report_show_video": "Show Video", + "subCommentURL_comments_linkMissing_toast": "Comment not found", + "web_player_TTshopVid_toast": "View TikTok Shop videos in the TikTok app", + "feed": "Feed", + "website": "Visit website", + "fixed_comments": "Comments", + "Promote_web_entrance_video": "Promote video", + "comment_tray_exit_title": "Leave page?", + "comment_tray_exit_des": "You haven\u2019t finished your comment yet. Do you want to leave without finishing? ", + "comment_tray_exit_leave": "Leave", + "comment_tray_exit_stay": "Keep editing", + "delete_confirm": "Are you sure you want to delete this video?", + "cancel_settings": "Cancel", + "setting_disabled_16": "Duet and Stitch settings are restricted by TikTok to protect your privacy", + "duet_stitch_minor": "Duet and Stitch aren't available because access to part of this video is limited", + "hint2": "Duet and Stitch not available for videos over 60s", + "hint1": "Duet and Stitch aren\u2019t available on videos from private accounts", + "public_desc": "Anyone on TikTok", + "who_can_view_followers": "Followers", + "followers_desc_for_private": "People who follow you", + "who_can_view_friends": "Friends", + "followers_desc": "Followers that you follow back", + "video_label_private": "Private", + "private_desc": "Visible to me only", + "commonStrings_privacySettings_option_friends": "Friends", + "commonStrings_privacySettings_optionDescription_friends": "Followers you follow back", + "commonStrings_privacySettings_option_onlyYou": "Only you", + "commonStrings_privacySettings_option_everyone": "Everyone", + "commonStrings_privacySettings_option_onOffTikTok": "Everyone on or off TikTok", + "useAlignedCopies_privacySettings_panel_description": "If your account is private, this option is set to Followers only", + "new_video_status": "Available for ads", + "pull_video_expl_available_for_ads": "Only you, authorized advertisers, and ad teams can view this video.", + "auU16_postSettings_halfSheet_body": "Only you can view this post due to age restrictions in your region.", + "privacy_set": "Privacy settings", + "view_access": "Who can watch this video", + "allow_comment": "Allow comments ", + "provideUnifiedToggle_postDetail_privacySettingsPanel_toggle": "Allow reuse of content", + "provideUnifiedToggle_postDetail_privacySettingsPanel_description": "Duet, Stitch, stickers, and add to Story", + "privacy_settings_done": "Done", + "Friends only": "Friends only", + "pcWeb_detailPage_backTop_btn": "Back to top", + "pc_web_browser_nowPlaying": "Now playing", + "pc_web_browser_tabName_creatorVid": "Creator videos", + "searchquerycomment_feedbackpanel_notinterested": "Not interested", + "searchquerycomment_feedbackpanel_unrelated": "Unrelated content", + "searchquerycomment_feedbackpanel_inappropriate": "Inappropriate content", + "searchquerycomment_feedbackpanel_others": "Others", + "comment_delete_cancel": "Cancel", + "pc_web_more_btn": "more", + "searchquerycomment_feedbackpanel_header": "Feedback", + "comment_delete_btn": "Delete", + "comment_delete_des": "Are you sure you want to delete this comment?", + "comment_delete_confirm": "Delete", + "creator": "Creator", + "following_acc": "Following", + "friends_acc": "Friend", + "WebApp_comment_copyurl_id": "Comment link copied", + "comment_reply_btn": "Reply", + "pcWeb_detailPage_comment_viewNumReply": "{num, plural, one {View {number} reply} other {View {number} replies}}", + "pcWeb_detailPage_comment_viewNumMore": "View {number} more", + "view_more_replies": "View more replies ({num})", + "countsHidden_commentPanel_viewReply": "View reply", + "webapp_share_btn": "Share", + "fixed_likes": "Likes", + "ad_not_support": "Video ads do not support this feature", + "usersToComment_notes_commentsSection_text4": "Start the conversation", + "comment_panel_zero": "Be the first to comment!", + "scheduled_video_comment_unavailable": "Comments available after video is posted", + "comment_off": "Comments are turned off", + "comment_disable_notfollow": "Comments aren\u2019t available because you\u2019re not mutual friends with %@", + "pcWeb_floatingPlayer_on": "Floating Player turned on", + "pcWeb_miniPlayer_turnOff_cta": "Turn off", + "webapp_seekbar_tooltip": "Drag left to rewind and right to fast forward", + "pc_web_browser_creatorVid_exit": "Exit creator videos", + "pc_web_previous_btn": "Go to previous video", + "pc_web_next_btn": "Go to next video", + "photosensitive_skepped_toast": "Video skipped", + "pc_web_volume_btn": "Volume", + "Web_buildVideoTranslations_seeOriginal": "See original", + "Web_buildVideoTranslations_seeTrans": "See translation", + "event_dm_share_message_card": "LIVE Event", + "pc_web_report_btn": "Report", + "webapp_forYoufeed_notInterested_btn": "Not interested", + "about_this_ad_title": "About this ad", + "pcWeb_autoScroll": "Auto scroll", + "resolutionUpgrade_player_qualityMenuItem_label": "Quality", + "resolutionUpgrade_player_qualityMenuItem_selection1": "Auto", + "pcWeb_login_browserMode": "Log in for the full TikTok experience", + "Web_exploreFYFRedirect_opening": "Opening For You feed in...%s", + "Web_exploreFYFRedirect_goToFYF": "Go to For You feed now", + "toast_share_review": "Post is being processed", + "pm_web_fullpage_entry": "Click to watch LIVE", + "author": "author", + "unit_week": "w", + "unit_day": "d", + "unit_hr": "h", + "unit_min": "m", + "unit_sec": "s", + "time_ago": "{num}{unit} ago ", + "collectionsProfilePage_profilePage_section_navBar2": "Favorites", + "embed_profile_popup_title": "Embed profile", + "embed_profile_popup_desc": "Videos from this account will be displayed.", + "embeds_popup_hashtag_header": "Embed hashtag", + "embeds_popup_hashtag_body": "Videos with this hashtag will be displayed.", + "embeds_popup_sound_header": "Embed sound", + "embeds_popup_sound_body": "Videos with this sound will be displayed.", + "Embed video": "Embed video", + "embed_popup_embed_body": "Copy code to embed this video", + "embeds_popup_tns": "By embedding this page, you confirm that you agree to our {Terms of Service} and acknowledge that you have read and understood our {Privacy Policy}.", + "embed_profile_popup_bottom_desc_tos": "Terms of Service", + "embed_profile_card_desc_privacy_policy": "Privacy Policy", + "By embedding this video, you confirm that you agree to our Terms of Use and acknowledge you have read and understood our Privacy Policy.": "By embedding this video, you confirm that you agree to our Terms of Service and acknowledge you have read and understood our Privacy Policy.", + "embed_profile_popup_btn": "Copy code", + "mute_autoplay_unmute_btn": "Unmute", + "oneColumn_feed_scrollMsg_header": "Scroll up to view more", + "oneColumn_feed_scrollMsg_desc": "Enjoy more in feed mode", + "dWebStories_storyTip_numStories_body": "{s_numStories} Stories", + "dsa_illegal_select_region": "Select region", + "pm_mt_live_page_sth_wrong": "Something went wrong", + "pm_mt_live_page_try_again": "Please try again", + "report_inbox_retry_btn": "Retry", + "Please select a scenario": "Please select a scenario", + "dsa_illegal_report_trustedflagger_signout": "As a trusted flagger, your report will be prioritized for moderation. If you wish to sign out, {s_tapHere}", + "dsa_illegal_report_trustedflaggerlink": "click here", + "dsa_illegal_report_trustedflagger": "If you are a designated trusted flagger, %s", + "dsa_illegal_report_trustedflagger_signout_popup": "Sign out?", + "dsa_illegal_report_trustedflagger_signout_popup_desc": "Are you sure you want to sign out as a trusted flagger and continue reporting as a regular user?", + "dsa_illegal_report_trustedflagger_signout_popup_yes": "Yes", + "dsa_illegal_report_trustedflagger_signout_popup_no": "No", + "osa_illegal_detail_reminder": "Knowingly making a false or misleading illegal content report may be punishable under law. If you frequently submit reports that are manifestly unfounded, we reserve our rights to suspend your ability to submit reports or permanently ban your account.", + "dsa_illegal_report_penalty_reminder": "Please note that knowingly making a false or misleading illegal content report may be punishable under law. If you frequently submit reports that are manifestly unfounded, we reserve our rights to suspend your ability to submit reports or permanently ban your account. See our Transparency Center for more information.", + "Web_report_reason_select": "Report reason:", + "dsa_illegal_report_email": "Your email address", + "dsa_illegal_cite_law_optional": "(optional)", + "dsa_illegal_report_fill_email": "Fill in your email address", + "cseReasons_reportPg_emailAddForm_body": "You may submit this report anonymously. However, you won\u2019t be notified of the outcome or have the option to appeal.", + "dsa_illegal_report_trustedflagger_fill_email": "Enter a valid email address", + "dsa_illegal_detail_country": "Legal jurisdiction", + "dsa_illegal_detail_law": "Relevant law", + "dsa_illegal_cite_law_desc": "Please provide details of the law the content allegedly violates. Please be as specific as possible to allow us to properly assess your report.", + "dsa_illegal_detail_explanation": "Report Explanation", + "dsa_illegal_report_explanation_desc": "Please describe how the content violates the relevant law. Reports that do not contain sufficient information may not be considered valid. If relevant, please specify if you are submitting this request for yourself or on behalf of someone else.", + "dsa_illegal_appeal_signature": "Signature", + "dsa_illegal_sign_legal_name": "Sign your legal name here.", + "dsa_illegal_confirm_accuracy": "I confirm my belief that the content of this report is true, accurate and complete.", + "ad_report_detail_placeholder_75_uk": "Please provide details about your experience with this ad to help us take necessary actions. Content that is harmful to children under the UK OSA includes pornography and sexual activities, suicide and self-injury, disordered eating, abuse and hate, violence, bullying, dangerous stunts and challenges, harmful substances, unhealthy body image and depressive content. Please identify a category if you are able.", + "ad_report_detail_placeholder_75_eea_row": "Please provide details about your experience with this ad to help us take necessary actions.", + "ad_report_reason_L1Misinfo_L2aigc_v2_0": "This ad may contain AI-generated or edited content that is misused, unauthorized, or mislabeled. This can include:", + "ad_report_reason_L1Misinfo_L2aigc_v2_1": "AI-generated content that isn't labeled or disclosed. The ad uses AI to create content, but doesn't say so.", + "ad_report_reason_L1Misinfo_L2aigc_v2_2": "Using a real person's likeness, voice, or identity without their permission. The ad shows or sounds like a real person, but that person didn't agree to it (for example, making it seem like they support a political idea or product when they don't).", + "Web_report_description": "Report description (Optional):", + "report_details_toast": "Provide details about your experience with this ad to help us take necessary action.", + "attachment_upload_limit": "Every single file must be less than 20MB", + "report_img_toast": "Upload images of order details and items received.", + "dsa_illegal_select_country_optional": "Legal jurisdiction", + "get_tt_desktop": "Get TikTok for desktop", + "get_tt_app": "Get TikTok app", + "Web_leftNav_getCoins_toolTip": "Save 25% now", + "desktopWeb_dynamicBottom_installTikTok": "Install TikTok", + "desktopWeb_dynamicBottom_installTikTok_desc": "Install the TikTok desktop app for better performance", + "desktopWeb_dynamicBottom_installTikTok_Cta": "Install", + "desktopWeb_dynamicBottom_right_logIn": "Log in", + "webapp_topnav_getapp": "Get App", + "webapp_topnav_pcapp": "PC App", + "webapp_tootip_Viewprofile": "View profile", + "View profile": "View profile", + "projectU_link_logout_button": "Log out", + "personalisedSearch_searchResults_moreOptions_listItem4": "Manage search", + "search_top": "Top", + "search_account": "Accounts", + "pm_main_live_entry_final": "LIVE", + "photomode_sharing_photo": "Photo", + "pcWeb_search_tabName_users": "Users", + "webapp_profile": "Profile", + "editprofile_toast": "Profile has been updated", + "blue_v_change_name_toast_request_submitted": "Request submitted. We\u2019ll contact you within %d hours.", + "podcasts_linkFullEpisodes_publishEpisodePage_confirmationBanner": "We\u2019ll let you know when your episode is published", + "collectionsProfilePage_collectionsPage_topSection_collectionToast": "Collection succesfully created", + "create_new_collection_btn": "Create new collection", + "profile_page_followerList_private_header": "This account\u2019s followers list is private", + "profile_page_followerList_private_body": "{nickname}\u2019s followers list is currently hidden", + "profile_page_profile_follower_tab": "Followers", + "profile_page_profile_follower_view_desc": "When this user has followers, you\u2019ll see them here", + "profile_page_followingList_private_header": "This account\u2019s following list is private", + "profile_page_followingList_private_body": "{nickname}\u2019s following list is currently hidden", + "profile_page_profile_following_tab": "Following", + "profile_page_profile_following_view_desc": "When this user starts following people, you\u2019ll see them here", + "profile_page_profile_follower_desc": "When people follow you, you\u2019ll see them here", + "profile_page_profile_following_desc": "When you follow people, you\u2019ll see them here", + "profile_page_suggested_tab": "Suggested", + "profile_page_profile_friends_desc": "When you have followers that you follow back, you\u2019ll see them here", + "followerFollowingListVis_otherProfileFollowerPage_desc1": "Only {s_userName} can see all Following", + "followerFollowingListVis_otherProfileFollowingPage_desc1": "Only {s_username} can see all Followers", + "followerFollowingListVis_otherProfileFollowerPage_desc2": "Showing {s_numberOfShowingFollowings} of {s_numberOfFollowings} Following", + "followerFollowingListVis_otherProfileFollowersPage_desc2": "Showing {d_numberOfShowingFollowers} of {s_numberOfFollowers} followers", + "profile_page_friends_tab": "Friends", + "editprofile_tooltip_title": "You can now edit your profile", + "editprofile_tooltip_subtitle": "Any changes you make will be reflected on the TikTok app. For more edit options, visit the app.", + "playlist_webapp_profileview_btn_changeorder": "Change playlist order", + "playlist_webapp_profile_entry_create": "Create a playlist", + "playlist_webapp_changeorder_header": "Change playlist order", + "playlist_webapp_upload_nameplaylist_btn": "Done", + "playlist_webapp_profileview_playlists": "Playlists", + "Videos": "Videos", + "collectionsProfilePage_favoritesPage_collectionSection_videoLabelSingular": "1 video", + "collectionsProfilePage_favoritesPage_collectionSection_videoLabelPlural": "{d_numOfVideos} videos", + "collectionsProfilePage_favoritesPage_emptyState_collectionHeader": "Your collections", + "collectionsProfilePage_favoritesPage_emptyState_collectionDesc2": "Create a new collection with your favorite videos. Your collections appear here.", + "collectionsProfilePage_favoritesPage_emptyState_collectionDesc": "Only your favorites can be added to a collection. To create a collection, start by adding videos to Favorites.", + "collectionsProfilePage_favoritesPage_section_postLabel": "Posts {d_numOfVideos}", + "collectionsProfilePage_favoritesPage_section_collectionLabel": "Collections {d_numOfVideos}", + "sortbyvv_profile_tab_text_favorites": "Favorites", + "liked": "Liked", + "ttep_homepage_nav_header_latest": "Latest", + "sortVideos_menu_oldest": "Oldest", + "playlist_webapp_toast_error_cheatPlaylist": "Couldn\u2019t create playlist", + "playlist_webapp_toast_created": "Playlist created", + "playlist_webapp_creation_header_create": "Create a playlist", + "playlist_webapp_creation_desc": "Sort posts into playlists", + "playlist_webapp_upload_dropdown_nameaplaylist": "Name playlist", + "playlist_webapp_upload_addtoplaylist": "Add to playlist", + "playlist_webapp_creation_selectvid_desc": "Select posts to add to your playlist", + "playlist_webapp_creation_btn_create": "Create", + "nonpersonalizedFeeds_profile_suggestedAccounts_info_body": "When personalized feeds are turned on, accounts are suggested based on people you may know, including connections of people you follow. You can change what\u2019s suggested to you in %1$s.\n\nYour account may also be suggested to people you may know. Change your discoverability anytime in your %2$s settings.", + "nonpersonalizedFeeds_profile_suggestedAccounts_info_bodyManagePersonFeedsVariable": "Manage personalized feeds", + "nonpersonalizedFeeds_profile_suggestedAccounts_info_bodyPrivacyVariable": "Privacy", + "Learn more": "Learn more", + "pcWeb_justWatched": "Just watched", + "webLIVE_personalPage_LIVEbanner_title": "{username} is LIVE", + "cover_notice_violation": "Community Guidelines violation", + "web_search_topLiked_label": "Top liked", + "profile_page_pin": "Pinned", + "audienceControlsOptimization_feed_minorVideoMask_title": "Post unavailable", + "audienceControlsOptimization_feed_minorVideoMask_audienceControls_desc": "This creator turned on audience controls.", + "audienceControlsOptimization_feed_minorVideoMask_platformEnforcement_desc": "This post is age-restricted.", + "audienceControlsOptimization_feed_loggedOutVideoMask_title": "Log in to TikTok", + "audienceControlsOptimization_feed_loggedOutVideoMask_audienceControls_desc": "This creator turned on audience controls. Log in to make the most of your TikTok experience.", + "audienceControlsOptimization_feed_loggedOutVideoMask_platformEnforcement_desc": "This post contains themes that some may find uncomfortable. Log in to make the most of your TikTok experience.", + "webapp_shortDrama_login_title": "Log in to continue", + "webapp_shortDrama_login_desc": "To view this post, you need to log in to your TikTok account.", + "classifyV1AWeb_webAppDesktop_maskLayer_button": "Log in", + "dWebStories_story_emptyState_body": "{s_userNames}'s Story is unavailable", + "seo_translatedPage_pageTranslated_label": "This page is translated.", + "seo_translatedPage_seeOriginal_btn": "See original", + "Promote_PC_popup_title": "Visit Promote in TikTok", + "Promote_PC_popup_content": "Scan QR code to visit Promote in TikTok", + "seo_popular_faq": "Frequently asked questions", + "collectionsProfilePage_collectionsPage_topSection_removeToastSingular": "1 video removed", + "collectionsProfilePage_collectionsPage_topSection_removeToastPlural": "{d_numOfVideos} videos removed", + "collectionsProfilePage_collectionsPage_removeModal_headerSingular": "Remove 1 video from {s_collectionName}", + "collectionsProfilePage_collectionsPage_removeModal_headerPlural": "Remove {d_numOfVideos} videos from {s_collectionName}", + "collectionsProfilePage_collectionsPage_topSection_removeBtn": "Remove ({d_numOfVideos})", + "collectionsProfilePage_collectionsPage_topSection_selectBtn": "Select all", + "collectionsProfilePage_collectionsPage_removeModal_descPlural": "Your videos will still be saved in Favorites", + "collectionsProfilePage_collectionsPage_topSection_addBtn": "Add videos", + "collectionsProfilePage_collectionPage_emptyState1_header": "No videos in this collection", + "collectionsProfilePage_collectionPage_emptyState1_desc": "Videos you add from Favorites will appear here", + "collectionsProfilePage_collectionsPage_emptyState2_header": "No videos in collection {s_collectionName}", + "collectionsProfilePage_collectionsPage_emptyState2_desc": "This collection is empty", + "collection_not_availble_error": "This collection isn\u2019t available", + "collectionsProfilePage_collectionsPage_topSection_manageBtn": "Manage videos", + "collectionsProfilePage_collectionsPage_topSection_nameToast": "Collection name changed", + "make_public_toggle": "Make public", + "collectionsProfilePage_collectionsPage_menu_text1": "Change name", + "collectionsProfilePage_collectionsPage_menu_text2": "Delete collection", + "collectionsProfilePage_collectionsPage_deleteModal_desc": "Your videos will still be saved in Favorites", + "collectionsProfilePage_collectionsPage_publicModal_header": "Make this collection public?", + "collectionsProfilePage_collectionsPage_publicModal_desc": "Only public collections can be shared", + "shared_collection_dmcard_desc": "Created by %s", + "no_video_in_collection_error_title": "No videos in collection %1$s", + "no_video_in_collection_error_description": "This collection is empty", + "shared_collection_dmcard_title": "Collection \u00b7 %1$s", + "footnotes_enrolled_title": "Thanks for your interest", + "footnotes_enrolled_desc": "We\u2019ll notify you if you\u2019ve been selected as a contributor.", + "footnotes_enrolled_btn": "Done", + "footnotes_intro_toast": "Something went wrong, please try again", + "footnotes_intro_bullet1_title": "Write footnotes", + "footnotes_intro_bullet1_desc": "See a video that you think needs more info? Write a footnote and give context.", + "footnotes_intro_bullet2_title": "Rate footnotes", + "footnotes_intro_bullet2_desc": "When a footnote gets enough helpful ratings, it becomes visible on TikTok.", + "footnotes_intro_bullet3_title": "Be part of a community", + "footnotes_intro_bullet3_desc": "Join a group of people helping improve TikTok for all.", + "footnotes_intro_title": "Become a Footnotes contributor", + "footnotes_intro_desc": "Help the TikTok community be more informed by writing and rating footnotes.", + "footnotes_feed_modal_btn_notNow": "Not now", + "footnotes_intro_btn": "I\u2019m interested", + "auU16_forYouPage_revisitHalfSheet_gotItBtn": "Got it", + "auU16_forYouPage_halfSheet_headline": "New experience for teens under 16 in Australia", + "auU16_forYouPage_revisitHalfSheet_newUser_header": "Experience for teens under 16 in Australia", + "auU16_forYouPage_halfSheet_profileDescription": "You can continue to discover, watch, and like content you love.", + "auU16_forYouPage_halfSheet_commentsRepostsDescription_new": "Your photo, bio, comments, posts, and Stories are only visible to you. You can't post new comments.", + "auU16_forYouPage_halfSheet_description_placeholder": "Learn more", + "auU16_forYouPage_halfSheet_optOutDesc": "You can also submit an appeal, download your data, or deactivate your account anytime. {0}", + "auU16_forYouPage_halfSheet_commentsRepostsDescription": "Your photo, bio, comments, posts, and Stories are only visible to you. You can't post new comments. {0}", + "auU16_forYouPage_halfSheet_logOutBtn": "Log out", + "auU16_forYouPage_halfSheet_termsPrivacyAgreement_placeholderToS": "Terms of Service", + "auU16_forYouPage_halfSheet_termsPrivacyAgreement_placeholderPolicy": "Privacy Policy", + "auU16_forYouPage_halfSheet_termsPrivacyAgreement": "By continuing, you agree to our {0} and confirm that you have read our {1}.", + "auU16_existingComments_popup_title": "Commenting unavailable", + "auU16_existingComments_popup_body": "You can't comment on posts due to age restrictions in your region. {0}", + "BR_mathGateu13_halfsheet_unregistered_headline": "We need to hit pause", + "BR_mathGateu13_halfsheet_unregistered_graph1": "TikTok is for people aged 13 and older, so we need to ask you a quick question to check if you can resume your current experience.", + "BR_mathGateu13_halfsheet_unregistered_CTA": "Continue", + "seo_popular_disclaimer": "This is an AI-generated summary of the content, and is not intended to provide factual context. If you think it may contain an error, please report at:", + "seo_popular_disclaimer2_btn": "Feedback and help - TikTok", + "comment_at_search": "Searching users\t", + "comment_at_load": "Couldn\u2019t load", + "comment_at_tryagain": "Type to retry", + "mention_privacy_toast_cant_mention": "Can\u2019t mention this person due to their privacy settings", + "no_at_me": "You can\u2019t mention yourself.", + "comment_tray_at": "\u201c@\u201d a user to tag them in your comments", + "comment_tray_btn": "Post", + "comment_post_success": "Comment posted", + "ttlive_webLIVE_LIVEpreview_survey_q1": "How do you feel about the LIVE you just watched?", + "ttlive_webLIVE_LIVEpreview_survey_a1_1": "I like it", + "ttlive_webLIVE_LIVEpreview_survey_a1_2": "I neither like nor dislike it", + "ttlive_webLIVE_LIVEpreview_survey_a1_3": "I don\u2019t like it", + "ttlive_webLIVE_LIVEpreview_survey_q2": "Would you like to watch LIVE in For You feed in the future?", + "ttlive_webLIVE_LIVEpreview_survey_a2_1": "Yes", + "ttlive_webLIVE_LIVEpreview_survey_a2_2": "No", + "ttlive_webLIVE_LIVEpreview_survey_a2_3": "Not sure", + "ttlive_webLIVE_LIVEpreview_surveySubmitted_toast": "Thanks for your feedback", + "pcWeb_survey_popup_header": "Do a quick survey", + "pcWeb_survey_popup_body": "Help us improve the experience on TikTok", + "pcWeb_survey_popup_cta1": "Open", + "pcWeb_survey_popup_cta2": "Not now", + "search_nomoreresults_text": "No more results", + "search_rs_report_not_relevant": "Not relevant", + "others_searched_for": "Others searched for", + "bc_disclosure_tag_ecommerce_us": "Eligible for commission", + "bc_disclosure_tag_ecommerce_uk": "Commission paid", + "bc_new_disclosure": "Paid partnership", + "tcm_closedLoop_commercialContent_brandOrganic_videoTag": "Promotional content", + "asr_transcript_onpc_kebab_menu_ab_transcript_button": "Transcript", + "pc_web_playpause_btn": "Play / Pause", + "pc_web_skip_forward_5_sec_btn": "Skip forward", + "pc_web_skip_back_5_sec_btn": "Skip backward", + "pc_web_muteunmute_btn": "Mute / Unmute", + "pc_web_fullscreen_btn": "Full screen", + "desktop_kb_shortcuts_tooltip_previous": "Go to previous video", + "desktop_kb_shortcuts_tooltip_next": "Go to next video", + "pm_mt_livecard_end_nextVideoCountdown": "Next video in {number}", + "pm_mt_livecard_end_playNow": "Play now", + "ttlive_webCoinEntry_pcModal_title": "Recharge and save around 25% compared to the app", + "ttlive_webCoinEntry_pcModal_desc": "You can enjoy a lower price here on tiktok.com!", + "ttlive_webCoinEntry_pcModal_btn2": "Not now", + "ttlive_webCoinEntry_pcModal_btn1": "Recharge", + "banToWeb_appealPg_emailErrorState_desc": "Enter a valid email address", + "banToWeb_appealPg_submitAppeal_header": "Submit an appeal", + "banToWeb_appealPg_submitAppeal_body": "Our Account Policy and Community Guidelines are the standards that apply to everyone and everything on TikTok. You may submit an appeal if you believe your account was restricted by mistake.", + "banToWeb_appealPg_description_title": "Description", + "banToWeb_appealPg_description_placeholder": "Provide more details for us to evaluate your case.", + "banToWeb_appealPg_email_desc": "Your appeal result will be sent to this email address.", + "banToWeb_appealPg_email_title": "E-mail", + "banToWeb_appealPg_email_placeholder": "example@example.com", + "banToWeb_submit_button": "Submit", + "banToWeb_fyfWeb_appealSubmitted_header": "Appeal submitted", + "banToWeb_fyfWeb_appealSubmitted_body": "We'll notify you by email once your appeal result is available.", + "banToWeb_generic_logout_button": "Log out", + "reactivate_h1": "Reactivate your TikTok account", + "reactivate_btn": "Reactivate", + "common_registration_feedback": "Feedback and help", + "common_registration_panel_entry_1": "Already have an account? %s", + "common_login_panel_entry_1": "Don\u2019t have an account? %s", + "common_registration_panel_entry_2": "Log in", + "common_registration_username_button": "Sign up", + "optimize_web_open_notnow_cta": "Not now", + "optimize_web_open_tiktok_cta": "Open TikTok", + "optimize_web_full_app_header": "Get the full app experience", + "optimize_web_full_app_body": "Enjoy more videos and great features on the app", + "ttlive_enhanceLogin_logInPg_quickLoginBtn": "Quick login with TikTok", + "common_login_panel_button_apple": "Continue with Apple", + "common_registration_panel_button_phoneoremail": "Use phone or email", + "common_login_panel_button_phoneoremail": "Use phone or email", + "common_login_panel_button_phoneoremailorusername": "Use phone / email / username", + "common_login_panel_button_facebook": "Continue with Facebook", + "common_login_panel_button_google": "Continue with Google", + "common_login_panel_button_kakaotalk": "Continue with KakaoTalk", + "common_login_panel_button_line": "Continue with LINE", + "common_login_panel_button_twitter": "Continue with Twitter", + "desktopWeb_dynamicBottom_scanLogIn": "Scan to log in", + "tiktoktv_login_modal_loginscreen_scanqr1": "1. Scan with your mobile device\u2019s camera", + "tiktoktv_login_modal_loginscreen_scanqr2": "2. Confirm login or sign up", + "v2_car_onboarding_loginPageQRScan_body": "Scan this QR code with your phone's camera", + "login_popup_modal_header": "Get more of what you love when you log in to TikTok", + "ttlive_enhanceLogin_logInPg_title": "Log in to get Coins", + "ttlive_enhanceLogin_logInPg_desc": "Log in to your TikTok account to get Coins, check notifications, and more.", + "encouragePreviousLoginPlatform_loginPage_loginBadge_body": "Last login", + "pcWeb_guestLogin_without": "Continue without login", + "guestmode_signup_or": "OR", + "pcWeb_guestLogin_withoutSignup": "Continue without signup", + "common_login_reset_popup_title": "Reset password with:", + "Password": "Password", + "common_registration_password_pc_text": "Your password must have:", + "common_registration_password_pc_1": "8 to 20 characters", + "common_login_switch_phone": "Log in with phone", + "phone_number": "Phone number", + "common_login_reset_email_verify_title": "Enter 6-digit code", + "common_registration_phone_input_button": "Send code", + "common_login_switch_email": "Log in with email or username", + "login_option_password": "Log in with password", + "common_login_sms_unregistered_pc_1": "This phone number isn\u2019t registered yet", + "common_login_sms_unregistered_pc_2": "Create account with this number", + "common_login_password_button": "Log in with code", + "common_registration_email_existing_title": "You\u2019ve already signed up", + "common_registration_email_existing_text": "Enter your password to log in to your account.", + "common_login_panel_button_instagram": "Continue with Instagram", + "common_login_panel_button_vk": "Continue with VK", + "qr_code_login_prompt_popup_header": "Log in for more of what you love", + "tiktok_instant_app_loading_status_header": "It starts on TikTok", + "webapp_orContinueWith": "Or continue with", + "common_login_reset_password_title": "Reset password", + "common_login_reset_email_input_placeholder": "Email address", + "setting_bind_phone_input_title": "Enter phone number", + "forget_password_switch_email": "Reset with email", + "regionOption_selectCountry_list_description": "Current", + "regionOption_selectCountry_list_title": "Select country or region", + "bricFriction_popUp_noPhone_cont": "Continue", + "pcWeb_chooseInterest_skip_btn": "Skip", + "pcWeb_chooseInterest_done_btn": "Done", + "intSelector_new_selectPopUpCTA1_btn": "Continue", + "common_registration_terms_use": "Terms of Service", + "common_registration_privacy_policy": "Privacy Policy", + "common_registration_email_input_agreement": "By continuing, you agree to TikTok\u2019s %1$s and confirm that you have read TikTok\u2019s %2$s.", + "regionOption_signUp_COdisclaimer_description": "By continuing with an account located in %1$s, I accept TikTok\u2019s %2$s, and authorize for my personal data to be collected and processed for the purposes and according to the rights described in its %3$s.", + "regionOption_signUp_disclaimer_description": "By continuing with an account located in %1$s, you agree to our %2$s and acknowledge that you have read our %3$s and %4$s.", + "regionOption_signUp_disclaimer_placeholder": "Cookies Policy", + "regionOption_signUp_nonEUdisclaimer_description": "By continuing with an account located in %1$s, you agree to our %2$s and acknowledge that you have read our %3$s.", + "intSelector_new_selectPopUp_header": "What would you like to watch on TikTok?", + "intSelector_new_selectPopUpLoginMethods_label": "Or log in by", + "pcWeb_chooseInterest_header": "Choose your interests", + "HUToS_signupConsent_halfSheet_headline": "Our Terms and Policies", + "HUToS_signupConsent_halfSheet_par1": "In order to use TikTok, you must accept our {s_termsOfService} and acknowledge that you have read our {s_privacyPolicy} and {s_cookiesPolicy}. ", + "HUToS_signupConsent_halfSheet_par1tos": "Terms of Service", + "HUToS_signupConsent_halfSheet_par1pp": "Privacy Policy", + "HUToS_signupConsent_halfSheet_par1cp": "Cookies Policy", + "HUToS_signupConsent_halfSheet_par2": "You can view a {s_summaryOfOurTerms} and learn more about how we collect, use, and share your data in our {s_privacyHighlights}. ", + "HUToS_signupConsent_halfSheet_par2sot": "summary of our Terms", + "HUToS_signupConsent_halfSheet_par2ph": "privacy highlights", + "HUToS_signupConsent_halfSheet_declineButton": "Decline", + "HUToS_signupConsent_halfSheet_acceptButton": "Accept", + "common_login_panel_entry_2": "Sign up", + "KidsBrazilSignUp_u18account_confirmPermission_content1": "You need to ask your guardian before you can create an account.", + "KidsBrazilSignUp_u18account_confirmPermission_content2": "By tapping \u2018Continue\u2019, you\u2019re letting us know you have permission from your parent or guardian to use TikTok. Tap \u2018Close\u2019 if you need more time.", + "KidsBrazilSignUp_u18account_confirmPermission_close": "Close", + "KidsBrazilSignUp_u18account_confirmPermission_continue": "Continue", + "common_login_sms_popup_option_1": "Create account", + "common_notification_unlogged_button": "Sign up", + "common_registration_username_skip": "Skip", + "common_registration_switch_phone": "Sign up with phone", + "common_registration_switch_email": "Sign up with email", + "Comment": "Comment", + "Hashtag": "Hashtag", + "common_login_sms_popup_option_2": "Go back", + "common_login_sms_popup_text": "This phone number isn\u2019t registered yet. Create account with this number?", + "common_registration_phone_input_agreement": "By continuing, you agree to TikTok\u2019s %1$s and confirm that you have read TikTok\u2019s %2$s. If you sign up with SMS, SMS fees may apply.", + "common_login_reset_email_input_text": "We\u2019ll email you a code to reset your password.", + "title_private_on": "Private account: On", + "descrip_private_on_signup": "Your privacy matters at TikTok, so your account is private. With a private account, only users you approve can follow you and view your videos. You can review and manage your account in your TikTok app settings.", + "link_learn_more_private_accounts_signup": "Learn more about private accounts", + "button_signup_private_on": "OK", + "login_fb_noLonger_LinkEmailAddress": "Link your email address", + "login_fb_noLonger_EmailLoginAlternative": "You can use this email login next time when your other login methods are unavailable", + "login_fb_noLonger_GiveFeedback": "Give feedback", + "login_fb_noLonger_phone_send_cta": "Send code", + "login_fb_noLonger_can'tVerifyEmail": "Can\u2019t verify your email?", + "login_fb_noLonger_can'tVerifyEmail_usePhone": "Use phone", + "login_fb_link_cta": "Link", + "login_fb_noLonger_LinkPhoneReminder": "Link your phone number", + "login_fb_noLonger_LoginWithPhoneNextTime": "You can use this phone number the next time you log in", + "login_fb_noLonger_can'tVerifyPhone": "Can\u2019t verify your phone?", + "login_fb_noLonger_can'tVerifyPhone_useEmail": "Use email", + "login_fb_noLonger_LinkPhoneNumber": "Link phone number", + "login_fb_noLonger_notNow_cta": "Not now", + "regionOption_selectCountry_list_confirmation": "Done", + "login_third_platform_apple": "Apple", + "login_third_platform_line": "LINE", + "login_third_platform_kakao": "KakaoTalk", + "login_third_platform_google": "Google", + "login_third_platform_facebook": "Facebook", + "login_third_platform_noLonger_title": "{s_3rdParty} login is no longer supported", + "login_third_platform_noLonger_body": "Log in with phone number or email.", + "login_fb_noLonger_cta1": "Use phone or email", + "login_fb_noLonger_cta2": "Dismiss", + "projectU_loginVerification_popup_passwordBtn": "Use password", + "projectU_loginVerification_popup_cancelBtn": "Cancel", + "projectU_loginVerification_popup_header": "Code verification temporarily unavailable", + "projectU_loginVerification_popup_body": "We're experiencing more traffic than usual. Log in with your password instead or try again later.", + "effects": "Explore new visual effects and filters.", + "resources": "Resources", + "pcWeb_guestLogin_contToVideo": "Continue to video", + "pcWeb_guestLogin_guest": "Continue as guest", + "TikTok | Make Your Day": "TikTok | Make Your Day", + "serp_following_title": "Watch videos from creators you follow on TikTok", + "serp_following_desc": "Follow your favorite creators and watch their latest videos. Escape into TikTok.", + "engagement": "Engagement", + "pcWeb_reposted_toast": "Reposted", + "pcWeb_repostRemoved_toast": "Repost removed", + "GENERAL": "General", + "TRENDING": "TRENDING", + "discard": "Discard", + "load_error": "Couldn\u2019t load this page. Please try again later.", + "no_results": "No results found", + "Users": "Users", + "comment_turnoff_unlike": "Can\u2019t undo like due to user\u2019s privacy settings ", + "comment_turnoff_like": "Can\u2019t like comments due to user\u2019s privacy settings", + "comment_nointernet_toast": "There was a problem with the internet connection. Try again later.", + "comment_delete_success": "Deleted", + "comment_delete_failed": "Couldn\u2019t delete comment. Try again.", + "region_at": "Austria", + "region_be": "Belgium", + "region_bg": "Bulgaria", + "region_hr": "Croatia", + "region_cy": "Cyprus", + "region_cz": "Czech Republic", + "region_dk": "Denmark", + "region_ee": "Estonia", + "region_fi": "Finland", + "region_fr": "France", + "region_de": "Germany", + "region_gr": "Greece", + "region_hu": "Hungary", + "region_is": "Iceland", + "region_ie": "Ireland", + "region_it": "Italy", + "region_lv": "Latvia", + "region_li": "Liechtenstein", + "region_lt": "Lithuania", + "region_lu": "Luxembourg", + "region_mt": "Malta", + "region_nl": "Netherlands", + "region_no": "Norway", + "region_pl": "Poland", + "region_pt": "Portugal", + "region_ro": "Romania", + "region_sk": "Slovakia", + "region_si": "Slovenia", + "region_es": "Spain", + "region_se": "Sweden", + "report_Prohibited_or_infringing": "Prohibited or infringing", + "report_Right_owner": "I'm the rights holder of this content or a representative of the rights holder.", + "report_Prohibited_or_violence": "Prohibited or dangerous", + "report_Not_right_owner": "I'm not the rights holder of this content.", + "ad_report_reason_L1Misinfo_L2misinfo": "Misleading information", + "ad_report_reason_Offensive_Content": "Offensive content", + "dsa_illegal_report_received_confirm_logout": "We\u2019ll review your report and take action if there is a violation of our Community Guidelines, or if we consider the reported content to be illegal under EU law. You\u2019ll be notified of our decision by email.", + "dsa_illegal_report_received_confirm": "We\u2019ll review your report and take action if there is a violation of our Community Guidelines, or if we consider the reported content to be illegal under European law. You\u2019ll be notified of our decision.", + "pm_mt_live_done": "Done", + "Web_report_report_for_error": "Network Error", + "live_close": "Close", + "Web_report_report_detail": "We\u2019ll review your report and if there is a violation of our Community Guidelines, we\u2019ll take appropriate action.", + "oSA_reportPg_submissionComplete_body": "We'll review your report and take action if there is a violation of our Community Guidelines, or if we consider the reported content to be illegal under the laws of the United Kingdom. You'll be notified of our decision.", + "avia_law_report_received_confirm": "We\u2019ll review your report and take action if there is a violation of French law on online hate speech (LCEN) or our Community Guidelines.", + "comment_reply_success": "Reply sent", + "comment_banned_toast": "Due to multiple Community Guideline violations, you\u2019re temporarily blocked from commenting. View details in your app notifications.", + "comment_post_failed": "Couldn\u2019t post comment. Try again", + "pc_web_login": "Log in", + "pc_web_login_to_comment": "%s to comment", + "llmAssist_web_msg1_body": "Want to see more videos like this? Like this video by logging in", + "llmAssist_web_msg1CTA_btn": "Log in to like", + "llmAssist_web_msg2_body": "Leave a comment and join the conversation", + "llmAssist_web_msg2CTA_btn": "Log in to comment", + "llmAssist_web_msg3_body": "Log in to save this video and watch it later", + "llmAssist_web_msg3CTA_btn": "Log in to save", + "llmAssist_web_msg4_body": "Share this video with your friends!", + "llmAssist_web_msg4CTA_btn": "Log in to share", + "llmAssist_web_msg5_body": "See more videos like this and other personalized content", + "llmAssist_web_msg5CTA_btn": "Log in", + "llmAssist_web_msg6_body": "Discover popular categories on the Explore page", + "llmAssist_web_msg6CTA_btn": "Explore", + "llmAssist_web_msg7_body": "View this creator's profile", + "llmAssist_web_msg7CTA_btn": "View", + "llmAssist_web_msg8_body": "Share this video link anywhere!", + "llmAssist_web_msg8CTA_btn": "Share", + "Public": "Public", + "Web_report_block_who": "Block {username}?", + "Web_report_block_detail": "You and {username} won\u2019t see each other\u2019s content on TikTok.", + "copyright_check_post_popup_cancel": "Cancel", + "km_report_question": "Why do you want to report this video?", + "km_pick_reason": "Pick a reason to report", + "choosepassword_button": "Next", + "Web_report_description_NetzDG": "I believe this content also violates the NetzDG.", + "Signature": "Signature (Required):", + "Sign_here": "Sign here", + "Report_confirmation": "I confirm that the information in this report is true and accurate.", + "avia_law_false_report_warning": "Please be aware that reporting content or an activity as illegal in order to achieve its removal or to stop its distribution, while knowing that it is not illegal, is punishable by 1 year\u2019s imprisonment and a \u20ac 15,000 fine under French law.", + "Web_report_description_tips": "If you know that someone is in immediate physical danger, please contact your local law enforcement right away.", + "teensReport_feed_halfSheet_toast": "Parent or guardian notified", + "teensReport_tech_errorMessage": "Couldn\u2019t save changes. Try again.", + "teensReport_confirmSubmit_halfsheet_viewReportButton": "Notify parent or guardian?", + "teensReport_feed_halfSheet_desc": "Your parent or guardian will receive this message: \u201cYour teen submitted a report on a post or account.\u201d", + "teensReport_confirmSubmit_halfsheet_cancelButton": "Cancel", + "teensReport_confirmSubmit_halfsheet_notifyButton": "Notify", + "teensReport_emailError_errorMessage": "Enter a valid email", + "teensReport_feed_halfSheet_btn_send": "Send", + "teensReport_notifyParents_toggle": "Notify parent or guardian", + "teensReport_confirmSubmit_halfsheet_content": "We won't share the post or account details with your parent or guardian.", + "Web_report_you_can_also": "You can also:", + "hbReportUpdate_selectReportReason_reportHB_sectionDescribe": "Report description", + "hbReportUpdate_selectReportReason_reportHB_sectionPlaceholder": "Provide additional details to help us better understand the problem.", + "rIC_reportPg_attachment_errorMessage": "File upload error. Try again.", + "oSA_reportPg_disclaimer_placeholder": "Knowingly making a false or misleading illegal content report may be punishable under law. If you frequently submit reports that are manifestly unfounded, we reserve our rights to suspend your ability to submit reports or permanently ban your account.", + "rIC_reportPg_disclaimerIllegalContent_desc": "Knowingly making a false or misleading report may be punishable under law. If you frequently submit reports that are manifestly unfounded, we reserve our rights to suspend your ability to submit reports or permanently ban your account. {s_learnMore}", + "rIC_reportPg_disclaimer_placeholder": "Learn more", + "oSAAudio_reportPg_relevantLaw_desc": "Provide details of the law the content allegedly violates. Be as specific as possible to allow us to properly assess your report.", + "oSA_reportPg_reportExplanationLIVE_desc": "Describe how the LIVE content violates the relevant law. Reports that do not contain sufficient information may not be considered valid.", + "oSAAudio_reportPg_reportExplanation_desc": "Describe how the content violates the relevant law. Reports that do not contain sufficient information may not be considered valid.", + "rIC_reportPg_reportExplanationLIVE_desc": "Describe how the LIVE content violates the relevant law. Reports that do not contain sufficient information may not be considered valid.", + "rIC_reportPg_reportExplanation_desc": "Describe how the content violates the relevant law. Reports that do not contain sufficient information may not be considered valid.", + "rIC_reportPg_attachment_title": "Attachments", + "rIC_reportPg_attachmentUpdate_desc": "Reports must be submitted by the rights holder or an authorized representative. Required materials vary by report type, so review the {s_submissionGuidelines} carefully. Incomplete reports or those with prohibited information (e.g., My Number or other sensitive data) may not be accepted. You can upload up to 3 files in JPEG, JPG, or PNG format, no larger than 20MB each. {s_learnMore}", + "rIC_reportPg_submissionGuidelines_placeholder": "submission guidelines", + "dsa_illegal_report_trustedflagger_email": "Email address", + "oSA_reporting_emailAdd_title": "Enter email address", + "oSA_reporting_emailAddField_placeholder": "example@example.com", + "oSA_generic_email_errorState": "Enter a valid email address", + "oSA_reporting_anonymousReport_placeholder": "You may submit this report anonymously, but you won't be notified of the outcome.", + "ttpa_reportPg_reasonOtherPoliticalBCL3_placeholder": "Branded Content policy", + "hbReportUpdate_selectReportReason_reportHB_sectionSearch": "Search account", + "hbReportUpdate_selectUser_friendStatus_label": "Friend", + "hbReportUpdate_selectReportReason_reportHB_sectionAddName": "Provide the person's account name", + "eCommerceReporting_reportPg_addDesc_title": "Report description", + "eCommerceReporting_reportPg_addDesc_placeholder": "Provide details to help us understand the problem", + "Web_report_account_impersonated_search": "Search for user name", + "Web_report_account_impersonated": "Impersonated user", + "Web_report_account_impersonated_description": "Include the user name of the person being impersonated", + "deleted": "Deleted", + "video_unavailable_deleted": "Video unavailable because it was deleted", + "tt2dspWeb_addedToast_v2": "Added to playlist: Liked Songs", + "tt2dspWeb_addedToast_v1": "Added to playlist: TikTok Songs", + "tt2dspWeb_linkedDSPOnly_spotify": "Linked to Spotify", + "tt2dspWeb_linkedDSPOnly_appleMusic": "Linked to Apple Music", + "tt2dspWeb_failedToAdd_toast": "Something went wrong. Try again.", + "tt2dspWeb_allowPopUp": "The login page may be blocked by your browser or extensions. Try adjusting your browser settings or allowing pop-ups for this site.", + "masklayer_general_title": "Sensitive content", + "photosensitive_masklayer_title": "Photosensitive warning", + "photosensitive_masklayer_removed": "Photosensitive videos removed", + "masklayer_general_body": "Some people may find this video to be disturbing.", + "photosensitive_masklayer_body1": "This video contains flashes of light that could trigger seizures for people with visual sensitivities.", + "photosensitive_masklayer_body2": "If you skip this video, we\u2019ll also remove other photosensitive videos.", + "photosensitive_masklayer_removed_body1": "You chose to skip videos using effects that may trigger photosensitive seizures.", + "photosensitive_masklayer_removed_body3": "Update your settings anytime on the TikTok app in \u201cSettings and privacy\u201d > \u201cAccessibility\u201d.", + "masklayer_general_skip": "Skip video", + "photosensitive_masklayer_watch": "Watch video", + "masklayer_general_watch": "Watch anyway", + "photosensitive_masklayer_skipall": "Skip all", + "bc_likes": "Likes", + "bc_comments": "Comments", + "bc_shares": "Shares", + "seo_aggre_transcript_header": "Transcript", + "seo_aggre_see_more": "See more", + "webapp_enterMDP_count": "{num, plural, one {{s_num} sound page visit} other {{s_num} sound page visits}}", + "seo_user_video_cover": "{videoText} created by {videoAuthor} with {musicAuthor}\u2019s {musicName}", + "official_tag": "Official", + "original_tag": "Original", + "accountAudienceControls_profile_loggedInRM_desc_placeholder": "Settings and privacy", + "inbox_all_activity": "All activity", + "system_notifications_inbox_channel_name_accountupdates": "Account Updates", + "system_notifications_inbox_channel_name_tiktok": "TikTok", + "system_notifications_inbox_channel_name_creatormonetization": "Creator Monetization", + "system_notifications_inbox_channel_name_adssupport": "Ads Support", + "system_notifications_inbox_channel_name_businessaccount": "Business Account", + "promote_title": "Promotions", + "TTweb_inbox_systemNotificationchannel_brandActivity_name": "Brand Activity", + "TTweb_inbox_systemNotificationchannel_tiktokPlatform_name": "TikTok Platform", + "TTweb_inbox_systemNotificationchannel_adsFeedback_name": "Ads Feedback", + "TTweb_inbox_systemNotificationchannel_missions_name": "Missions", + "system_notifications_inbox_channel_name_transactionassistant": "Transaction Assistant", + "TTweb_inbox_systemNotificationchannel_creatorProgram_name": "Creator Program", + "system_notifications_inbox_channel_name_live": "LIVE", + "TTweb_inbox_systemNotificationchannel_screenTime_name": "Screen time", + "TTweb_inbox_systemNotificationchannel_mlbb_name": "MLBB", + "TTweb_inbox_systemNotificationchannel_series_name": "Series", + "TTweb_inbox_systemNotificationchannel_creatorMarketplace_name": "Creator Marketplace", + "TTweb_inbox_systemNotificationchannel_effects_name": "Effects", + "Inbox_replied_to_your_comment": "%s replied to your comment", + "Inbox_commented": "%s commented: %@", + "inbox_videoreply": "replied to your comment with a video.", + "Inbox_is_following_you": "%s is following you", + "web_inappNotifs_startedFollowing": "{s_nickname} started following you.", + "photomode_inbox_liked": "{num, plural, one {liked your photo.} other {liked your photos.}}", + "Inbox_liked_your_video": "%s liked your video", + "Inbox_liked_your_comment": "%s liked your comment", + "in_app_push_mention_in_photo": "{num, plural, one {mentioned you in a photo.} other {mentioned you in photos.}}", + "Inbox_mentioned_you_in_a_video": "%# mentioned you in a video", + "Inbox_mentioned_you_in_a_comment": "%# mentioned you in a comment:%@", + "pcWeb_inbox_repostedSame": "reposted the same video.", + "pcWeb_inbox_likedRepost": "liked a video you reposted.", + "pcWeb_inbox_repostedYour": "reposted your video.", + "Inbox_and": "and", + "Inbox_others": "%d others", + "Inbox_approved_your_follow_request": "%s approved your follow request", + "inbox_request_accept": "Accept", + "web_inappNotifs_followRequest": "{s_nickname} requested to follow you.", + "web_popup_notifyMe_btn": "Notify me", + "web_popup_getNotified_title": "Get notified of new updates and interactions", + "dWebStories_notif_loggedIn_body": "You can now view TikTok Stories on the Following page", + "dWebStories_notif_loggedOut_body": "You can now view TikTok Stories in your browser! Log in to start watching", + "inbox_filter_channelname_system_notifications": "System Notifications", + "TTSweb_notif_inAppAnnounce_header": "TikTok Shop is now available on web!", + "TTSweb_notif_inAppAnnounce_body": "Browse your favorite items.", + "cs_webapp_notif_title_tiktokSupport": "TikTok Support", + "cs_webapp_notif_newReply": "New reply on your ticket", + "cs_webapp_notif_view": "View", + "cs_webapp_notif_ticketClosed": "Ticket closed. Rate your experience.", + "web_inappNotifs_Notification_header": "Notification", + "direct_meaasge_sending_ban_feedback_again": "Feedback submitted", + "Webapp_unsupport_browser_info_title": "Your browser is out of date", + "Webapp_unsupport_browser_info_content": "Upgrade or change to continue", + "Webapp_player_error_info": "We're having trouble playing this video. Please refresh and try again.", + "Webapp_player_error_CTA": "Learn more", + "sticker_create_main_setinfo_last": "Last updated", + "webLIVE_personalPage_LIVEbanner_numViewerDesc": "Watch now with {num} viewers ", + "Webapp_tooltips_Pause": "Pause", + "Webapp_tooltips_play": "play", + "pm_web_fullpage_error_button": "Retry", + "subLiveShare_webLivePage_chatTextfield_subOnlyNote": "Subscriber-only", + "scheduled_for": "Scheduled for:", + "pgc_aiComments_commentCategories_all": "All", + "pgc_aiComments_analyticsPage_commentsCount": "{num, plural, one {{num} comment} other {{num} comments}}", + "pgc_aiComments_analyticsPage_infoPopup_topicsTitle": "Topics", + "pgc_aiComments_commentCategories_insufficientComments": "AI-summarized topics will be available when there are more comments.", + "pgc_aiComments_commentCategories_emptyState": "No comments match this category.", + "pc_web_less_btn": "less", + "collectionsProfilePage_favoritesPage_newModal_errorMessage": "Character limit exceeded", + "pcWeb_add_reply": "Add a reply...", + "comment_tray_default": "Add comment...", + "ttlive_previewSubtitle_tag_highlight": "Highlight", + "weblive_following_btn": "Following", + "pm_mt_liveWeb_friend_tag": "Friend", + "ttlive_AIsummary_tag": "Summary", + "common_registration_phone_input_error": "Enter a valid phone number", + "common_login_email_error": "Incorrect account or password", + "common_login_reset_phone_input_error": "Phone number isn't registered yet", + "common_login_reset_email_input_error": "Email address isn't registered yet", + "common_registration_password_error": "Use 8-20 characters from at least 2 categories: letters, numbers, special characters.", + "incorrect_code": "Incorrect code. Please try again.", + "err_service": "Internal server error. Please try again later.", + "pc_web_speed_btn": "Speed", + "pcWeb_UpNextMoreVidsFromCreator_title": "Up Next: More videos by this creator", + "pcWeb_moreVidsFromCreator_title": "More videos by this creator", + "pcWeb_seeAllVids": "See all videos", + "web_visitExplorePage_upNext_exploreNow": "Explore now", + "web_visitExplorePage_upNext_moreTrending": "Up next: More trending videos", + "web_visitExplorePage_upNext_moreCategoryVids": "Up next: More trending {category} videos", + "vid_mod_analytics_penalty_reason_minor_title": "Minor safety", + "vid_mod_analytics_penalty_reason_minor_desc": "To provide teens with additional room for identity exploration and expression in digital spaces, content uploaded by users under 16 is not eligible for recommendation. The promotion of cosmetic surgery to minors may lead to higher rates of body dissatisfaction. Accordingly, such content - including before-and-after videos, videos of surgical procedures, and messages discussing elective cosmetic surgery without warning of risks - is ineligible for the For You feed of all users under 18.", + "vid_mod_analytics_penalty_reason_unoriginal_title": "Unoriginal, low-quality, and QR code content", + "vid_mod_analytics_penalty_reason_unoriginal_desc": "To keep TikTok positive and enjoyable for our users, content that is unoriginal or low quality is ineligible for recommendation. Unoriginal content includes videos that are just imported or uploaded from other sources (like other platforms, TV shows, movies, or webcasts) without any new, creative edits. We can tell if a video is unoriginal if it has a watermark or a superimposed logo on it. Low quality content includes very short videos, static images, and videos made only of GIFs. Content that includes QR codes is usually ineligible for the For You feed because it can lead users to harmful websites or apps, even though we make exceptions in circumstances where the risk is low (for example, for e-commerce).", + "vid_mod_analytics_nr_vid_penalty_reason_unoriginal_title": "Unoriginal, low-quality, and QR code content", + "vid_mod_analytics_nr_vid_penalty_reason_unoriginal_desc": "To maintain the positive experience our users expect from the TikTok platform, unoriginal and low-quality content is ineligible for recommendation. Unoriginal content is content that is just imported or copied from other sources without any new, creative edits. A video may be unoriginal if it has a watermark or logo on it. Low quality content includes very short videos, static images, and videos made only of GIFs.", + "vid_mod_analytics_nr_acct_penalty_reason_unoriginal_title": "Reproduced account", + "vid_mod_analytics_nr_acct_penalty_reason_unoriginal_desc": "Your account contains posts that are not original and ineligible for the For You feed. For more information, review our Community Guidelines > Not Suitable for the For You feed > Unoriginal, low-quality, and QR code content", + "vid_mod_analytics_penalty_reason_spam_title": "Spam, inauthentic, or misleading content", + "vid_mod_analytics_penalty_reason_spam_desc": "Content that tries to trick or manipulate users to get more followers, likes, views or other engagement metrics on the platform is not eligible for the For You feed. This includes content that encourages users to follow or like each other, or content that tricks users into clicking like or share buttons. Additionally, content that promotes conspiracy theories and spreads false or harmful information about current events and events where details are still developing are also ineligible for the For You feed.", + "vid_mod_analytics_penalty_reason_sexual_title": "Overtly sexualized content", + "vid_mod_analytics_penalty_reason_sexual_desc": "To help maintain a comfortable experience, content that is overtly sexually suggestive may not be eligible for recommendation. This includes content that depicts implied nudity, sexualizes body parts, or is blatantly erotic or sensual (i.e. strip teases).", + "vid_mod_analytics_penalty_reason_tobacco_title": "Tobacco and alcohol products", + "vid_mod_analytics_penalty_reason_tobacco_desc": "Content promoting, mentioning, or depicting alcohol products consumed by persons of legal drinking age but done so in a dangerous fashion may not be eligible for recommendation. Content depicting the use of tobacco products by adults or mentioning controlled substances is not eligible for recommendation.", + "vid_mod_analytics_penalty_reason_stunts_title": "Dangerous stunts and sports", + "vid_mod_analytics_penalty_reason_stunts_desc": "When replicated without safety precautions, certain activities can be risky or dangerous, which could lead to physical harm. Content that includes dangerous stunts, or extreme sports performed by non-professionals, may be ineligible.", + "vid_mod_analytics_penalty_reason_graphic_title": "Violent and graphic content", + "vid_mod_analytics_penalty_reason_graphic_desc": "Content that causes viewers discomfort, shock, or disgust may be ineligible for the For You Feed, including scary effects, jump scares, make-up that realistically recreates gory wounds, and depictions of bodily functions. Most violent and graphic content is not allowed on TikTok. However, we may allow certain types of content, such as graphic images of death, accidents, or fighting, when it serves as documentation of real-world events and is considered to be of public interest. Because this content may not be comfortable for all audiences, it will not be eligible for recommendation, and the content will have an \u201copt-in\u201d screen or warning.", + "vid_mod_analytics_penalty_reason_fyf_title": "Ineligible for the For You feed", + "vid_mod_analytics_penalty_reason_fyf_desc": "Your video didn\u2019t meet our eligibility standards for the For You feed. Review TikTok Community Guidelines for more information > Ineligible for the For You feed", + "vidModAnalytics_detailPg_sectionHumanMod_sectionBody": "Users and 3rd-parties can report policy violations to us. We have detected this policy violation based on a report that the content violated our Community Guidelines.", + "vidModAnalytics_detailPg_sectionVideoDetails_sectionLabel": "Video details", + "vid_mod_analytics_appeal_detailpg_reason_title": "Violation reason", + "vid_mod_analytics_detail_pg_title": "Video not eligible", + "vid_mod_analytics_detail_pg_desc": "This video is not eligible for the For You feed because it violates our Community Guidelines.", + "vidModAnalytics_detailPg_sectionSuccess_header": "Appeal approved", + "vid_mod_analytics_appeal_success_detail_pg_desc": "We\u2019ve reviewed your appeal and restored your video. We apologize for any inconvenience this may have caused. Thank you for being a part of the TikTok community!", + "vid_mod_analytics_appeal_detail_pg_title": "Video removed", + "vid_mod_analytics_appeal_detail_pg_desc": "This video violates our Community Guidelines.", + "vidModAnalytics_appealSubmitted_sectionTitle_header": "Request received", + "vid_mod_analytics_appeal_rcv_detail_pg_desc": "We\u2019ve received your request and will notify you once your appeal result is available.", + "rIC_detailPg_violationReason_title": "Violation reason", + "dsaCGWebapp_detailPg_sectionCG_link": "Community Guidelines", + "dsaCGWebapp_appealExpired_emptyState_body": "You can no longer appeal this decision because the appeal deadline has expired.", + "appeal_btn_new": "Appeal", + "reasonForAppeal_appealPg_appealReasonCard_title": "Reason for appealing the decision", + "oSA_appealPg_appealExplain_title": "Appeal explanation", + "rIC_appealPg_appealExplain_title": "Appeal explanation", + "oSA_appealPg_appealExplain_desc": "Provide as much detail as possible on why you disagree with the decision. This allows us to properly assess your appeal.", + "rIC_appealPg_appealExplain_desc": "Provide as much detail as possible on why you disagree with the restriction. This allows us to properly assess your appeal.", + "dsa_illegal_uploader_vio_appeal_exp_desc": "Please provide as much detail as possible on why you disagree with the restriction in order to allow us to properly assess your appeal.", + "pc_web_playing_now": "Now playing", + "syntheticMedia_feed_bottomBanner_AIGCLabel": "Creator labeled as AI-generated", + "aigcInfoPanel_feed_label": "Contains AI-generated media", + "common_registration_email_input_error": "Enter a valid email address", + "common_registration_username_error_format": "Only letters, numbers, underscores, or periods are allowed", + "common_registration_username_error_short": "Include at least 2 characters in your username", + "common_registration_username_error_long": "Your username can have up to 24 characters", + "common_registration_username_error_period": "Usernames can't end with a period", + "common_registration_username_error_number": "Usernames can't contain numbers only", + "common_registration_username_error_occupied": "This username isn\u2019t available. Try a suggested username, or enter a new one.", + "subVideo_viewing_lable": "Subscribers only", + "pcWeb_youReposted_label": "You reposted", + "pcWeb_nickReposted_label": "{s_nickname} reposted", + "subCommentURL_comments_linkCopied_toast": "Comment link copied", + "web_comments_watchLive_desc": "Comments are turned off. Watch LIVE to chat with other viewers.", + "web_comments_watchLive_btn": "Watch LIVE", + "ad_comment_close_des": "The advertiser has turned off comments", + "video_details_page_comment_header": "{num, plural, one {{Count} comment} other {{Count} comments}}", + "err_video": "Visit TikTok to discover videos!", + "err_sticker": "Visit TikTok to discover effects!", + "err_profile": "Visit TikTok to discover profiles!", + "err_hashtag": "Visit TikTok to discover hashtags!", + "err_music": "Visit TikTok to discover sounds!", + "err_desc_body": "Watch, follow, and discover more trending content.", + "pm_mt_multiguest_enlarge_host_tag": "LIVE creator", + "video_details_page_morevideos_btn": "More videos", + "save_collection_btn": "Save", + "favorites_collection_toast_manage": "Manage", + "fc_add_toast_added_to_fav": "Added to Favorites", + "desktopWeb_collectionsP2_collectionName": "Added to {collectionName}", + "desktopWeb_collectionsP2_removedFrom": "Removed from {collectionName}", + "desktopWeb_collectionsP2_noCollectionsCreated": "No collections created", + "yproject_playlist_name_toast": "This name is inappropriate. Try again.", + "collectionsProfilePage_favoritesPage_newModal_header": "New collection", + "collection_name_header": "Name", + "collection_name_description": "Enter collection name", + "make_public_toggle_description": "Collections made public will be shown on your profile and can be shared with friends.", + "pcWeb_Floating": "Floating Player", + "seo_kep_numSold": "{num, plural, one {{num} sold} other {{num} sold}}", + "view_more_products": "view more products", + "search_Submission_Failed_tips": "Couldn\u2019t submit. Please try again.", + "sug_report_relevant": "Mark as irrelevant", + "view_all_results": "View all results for \u201c{keyword}\u201d", + "ttlive_webPC_LIVEviewercount_desc": "{num} watching", + "embed_music_card_see_more": "See more", + "web_search_clear_btn": "Clear all", + "personalisedSearch_searchResults_searchBlankPage_manageSearchLabel": "Manage search", + "web_search_recent_header": "Recent searches", + "search_feedback_success_tips1": "Thanks for your feedback!", + "search_videosearchbar_recommended_generic_1": "Find related content", + "please_input_search_keyword": "Search", + "live_ending_title": "LIVE has ended", + "pm_mt_livecard_end_subtitle_1": "Next video in... %ds", + "pm_web_fullpage_guide_title": "Explore LIVE streams", + "pm_web_fyp_homePage_entry": "Go to profile", + "live_error_network_title": "Server error", + "live_error_network_body": "Something is wrong on our end. We apologize for any inconvenience and should be back soon.", + "live_error_network_button": "Retry", + "live_watching_toast_host_away": "The host is away and will be back soon.", + "ttlive_web_previewLIVE_desc": "Join my LIVE to interact with others in real time", + "ttlive_web_previewLIVE_watchNow_btn": "Watch LIVE", + "ttlive_web_previewLIVE_notNow_btn": "Not now", + "support_webapp_sharing_error_message": "Something went wrong. Please try again.", + "support_webapp_sharing_sent_toast_1": "Sent to {username}", + "support_webapp_sharing_sent_toast_2": "Sent to {username} and {username2}", + "support_webapp_sharing_sent_toast_3": "Sent to {username} and {number} others", + "support_webapp_sharing_write_a_message": "Write a message...", + "support_webapp_sharing_toast_2": "This video is for followers only. Accounts who follow {username} can watch it.", + "support_webapp_sharing_toast_1": "This video is for friends only. Accounts who are friends with {username} can watch it.", + "subVideo_share_note": "This video is for subscribers only. Users who are subscribers to {username} can watch it.", + "support_webapp_sharing_searchbar_ghosttext": "Search", + "support_webapp_sharing_search_results": "No results found", + "support_webapp_sharing_recent": "Recent", + "support_webapp_sharing_following": "Following", + "desktop_kb_shortcuts_tooltip_like_vid": "Like video ", + "desktop_kb_shortcuts_tooltip_mute_unmute_vid": "Mute / unmute video ", + "desktop_kb_shortcuts_modal": "Keyboard shortcuts", + "desktop_kb_shortcuts_menu": "Keyboard shortcuts", + "desktop_kb_shortcuts_tooltip_title": "Introducing keyboard shortcuts!", + "AccountSecurity_passkeysOnWeb_toast_created": "Passkey created", + "pm_mt_obs_revoke_desc": "Your access to Go LIVE with PC or Mac has been revoked for repeatedly violating our Community Guidelines.", + "pm_mt_revoke_duration": "{num, plural, one {Access will be restored in %s day.} other {Access will be restored in %s days.}}", + "pm_mt_modal_revoke_confirm_btn": "OK", + "wbs_goto_bc_modal_feature3_title": "Label management", + "wbs_goto_bc_modal_feature3_content": "Enable label dialogues and filter capabilities to manage dialogues more efficiently.", + "wbs_goto_bc_modal_feature1_title": "Multiple user collaboration", + "wbs_goto_bc_modal_feature1_content": "Enable multiple members to access and manage direct messages from your Business Account.", + "wbs_goto_bc_modal_title": "Manage direct messages on Business Center", + "wbs_goto_bc_modal_btn": "Go to Business Center", + "dsa_illegal_more_options_link": "More options", + "report_inbox_video": "%s\u2019s video", + "report_inbox_comment": "%s\u2019s comment", + "report_inbox_account": "%s\u2019s account", + "report_inbox_live": "%s\u2019s LIVE", + "report_inbox_livecomment": "%s\u2019s comment in LIVE", + "report_inbox_directmessage": "%s\u2019s direct message", + "report_inbox_sound": "%s", + "report_inbox_hashtag": "%s", + "shoutouts_detail_comment_report_title": "%s\u2019s review in Shoutouts", + "tns_intro_reporter_title": "%s\u2019s TikTok Shoutouts video", + "qareport_question": "Question", + "profile_page_events_list": "%s's LIVE Events", + "webReport_inbox_photoReport_header": "%s's photo", + "report_inbox_title": "Reports", + "inbox_default_text": "Notifications about your account will appear here.", + "Inbox_Comments_on_your_videos": "Comments on your videos", + "Inbox_When_someone_comments_on__one_of_your_videos_you_ll_see_it_here": "When someone comments on one of your videos, you\u2019ll see it here", + "Inbox_New_followers": "New followers", + "Inbox_When_someone_new_follows_you_you_ll_see_it_here": "When someone new follows you, you\u2019ll see it here", + "Inbox_Likes_on_your_videos": "Likes on your videos", + "Inbox_When_someone_likes_one_of_your_videos_you_ll_see_it_here": "When someone likes one of your videos, you\u2019ll see it here", + "Inbox_Mentions_of_You": "Mentions of You", + "Inbox_When_someone_mentions_you_you_ll_see_it_here": "When someone mentions you, you\u2019ll see it here", + "Inbox_created_a_duet_with_you": "%# created a duet with you", + "system_notifications_inbox_header": "System Notifications", + "UKOSA_followingFollowersList_halfsheet_button": "Got it", + "UKOSA_followingFollowersList_halfsheet_headline": "About your followers", + "UKOSA_followingFollowersList_halfsheet_subhead1": "Your followers can:", + "UKOSA_followingFollowersList_halfsheet_subcontent1_1315": "View your posts, bio, likes, and followers", + "UKOSA_followingFollowersList_halfsheet_subcontent1": "View your posts, bio, likes, followers, and send you direct messages", + "UKOSA_followingFollowersList_halfsheet_headline2": "You can always:", + "UKOSA_followingFollowersList_halfsheet_subcontent2": "Remove, block, or mute followers at any time. Learn how you can manage {0}", + "UKOSA_followingFollowersList_halfsheet_linkText": "your interactions on TikTok", + "Inbox_Follow_requests": "Follow requests", + "Inbox_Today": "Today", + "Inbox_Yesterday": "Yesterday", + "Inbox_This_Week": "This week", + "Inbox_This_Month": "This Month", + "Inbox_Previous": "Previous", + "Inbox_All": "All activity", + "Inbox_Likes": "Likes", + "Inbox_Comments": "Comments", + "Inbox_Mentions": "Mentions and tags", + "system_notifications_details_button": "For more details, open the TikTok app", + "dsa_bi_illegal_more_options_link": "More options", + "dsa_illegal_report_again_link": "Report again", + "Web_switchAccount_modal_manageAccount": "Manage accounts", + "Web_switchAccount_modal_addAccount": "Add account", + "Web_removeAccount_doneEditing_btn": "Done editing", + "Adv_settings_warning_text": "Confirm that you want to hide ads from %s", + "Adv_settings_warning_description": "You will not see ads from this advertiser for 28 days. This setting only applies to TikTok ads, and you may continue to see this advertiser\u2019s ads on other ad networks.\n", + "Adv_settings_page_help_text": "You can hide the ads from an advertiser who has recently shown you ads on TikTok. You will not see ads from this advertiser for 28 days. This setting only applies to TikTok ads, and you may continue to see this advertiser\u2019s ads on other ad networks.", + "Adv_settings_page_hide_adv_title": "Advertisers you have hidden", + "bc_sort_like": "Most likes", + "expansion_SEO_hot": "Hot", + "seo_kep_groupName_newsMedia": "Media", + "seo_kep_groupName_fromFYP": "Creators", + "seo_kep_groupName_fromComments": "Discussion", + "seo_kep_relatedSearchToKeyword": "Related searches to {s_keyword}", + "seo_kep_peopleSearchFor": "People also search for", + "seo_kep_tiktok_mainHeader": "TikTok", + "seo_breadcrumb_web_TikTokShop": "TikTok Shop", + "seo_kep_relatedtagToKeyword": "Related to {s_keyword}", + "seo_aggre_description_header": "Description", + "buildLinkReflow_webapp_video_sharer": "This video is shared by", + "sticker_consume_sticker_unavail": "Sticker is unavailable", + "dm_web_baLabel_filter": "Filter", + "dm_web_baLabel_emptyLabel_state": "Your labels will appear here", + "dm_web_baLabel_apply_btn": "Apply", + "dm_web_baLabel_unreadOnly_checkbox": "Unread only", + "message_request_inbox": "Message requests", + "webdm_chatlist_head_messages": "Messages", + "reaction_preview_v2_react_group": "{0} reacted {6} to your message", + "reaction_preview_v2_react_private": "reacted {6} to your message", + "chatPreview_DeletedMessage": "Deleted a message", + "support_webapp_sharing_chat_page_status_2": "You shared a video", + "support_webapp_sharing_chat_page_status_1": "Shared a video", + "dWebStories_DM_react5_label": "You shared a Story", + "dWebStories_DM_react6_label": "Shared a Story", + "dm_cam_preview_chatlist_you_backend": "You sent a \ud83d\udcf7", + "dm_cam_preview_nonick_backend": "sent a \ud83d\udcf7", + "aimoji_inbox_youSent": "You sent an AI-moji", + "aimoji_outapp_private": "sent an AI-moji", + "avatars_in_dm_notif_sender_side": "You sent a sticker", + "avatars_in_dm_notif_recipient_side": "sent a sticker", + "group_chat_83_notice_rename": "%1$s named this group to \u201c%2$s\u201d", + "dm_left_swipe_unmute": "Unmute", + "dm_left_swipe_mute": "Mute", + "no_top": "Unpin", + "webdm_pin_to_top": "Pin to top", + "dm_tcm_label_business": "Business", + "Message_req_optimize_chatList_body": "{num, plural, one {You have %d request} other {You have %d requests}}", + "dm_web_baLabel_noChatFound_header": "No chats found", + "dm_web_baLabel_noChatFound_body": "Chats with the checked filters will appear here", + "im_message_list_empty": "No messages yet", + "dWebStories_DM_react4_label": "Reacted to your Story", + "dWebStories_DM_react1_label": "You reacted to this Story", + "dWebStories_DM_react3_label": "Replied to your Story", + "dWebStories_DM_react2_label": "You replied to this Story", + "no_results_for": "No results found for \u201c{keyword}\u201d", + "no_results_desc": "Check your spelling or try a different search.", + "sms_NGO": "Text \"%s\" to %s", + "dailyscreentime_featurescreen_desc_balanceyourday": "We\u2019ll let you know if you reach your daily time to help you balance your day.", + "dailyscreentime_featurescreen_firstbullet_settime": "Set your daily time", + "dailyscreentime_featurescreen_firstbullet_settime_desc_choose": "Choose how long to spend on TikTok", + "dailyscreentime_featurescreen_secondbullet_getnotified": "Get notified", + "dailyscreentime_featurescreen_secondbullet_getnotified_desc_close": "Close TikTok to stay within your daily time, or enter a passcode to return to it", + "screenTime_web_dailyscreentime_mainSetting_toggle_desc": "Set daily screen time", + "customizeSTM_screenTimeLimit_option_sameLimit": "Set the same limit every day", + "screenTime_web_setting_customTime_option": "Custom", + "customizeSTM_screenTimeLimit_option_customLimit": "Set a custom limit per day", + "screenTime_web_dailyscreentime_manageTime_modal_done_btn": "Done", + "nightscreentimemgmt_sleepreminders_sleeptime_on_secondline_teens": "{sleeptimestart}\u2013{sleeptimeend}, 8 hours", + "nightscreentimemgmt_sleepreminders_sleeptime_on_secondline_adults": "{sleeptimestart}\u2013{sleeptimeend}, 7 hours", + "nightscreentimemgmt_sleepreminders_defaultscreen_desc": "Sleep reminders on TikTok can help you get ready for bed and stay asleep.", + "nightscreentimemgmt_sleepreminders_defaultscreen_setsleeptimebullet_title": "Set your sleep time", + "nightscreentimemgmt_sleepreminders_defaultscreen_setsleeptimebullet_desc": "You\u2019ll get reminded if you reach your sleep time", + "nightscreentimemgmt_sleepreminders_defaultscreen_pushnotifsbullet_title": "Push notifications are muted", + "nightscreentimemgmt_sleepreminders_defaultscreen_pushnotifsbullet_teens_desc": "To reduce distractions, push notifications are muted until 8:00 AM", + "nightscreentimemgmt_sleepreminders_defaultscreen_pushnotifsbullet_adults_desc": "To reduce distractions, push notifications are muted for 7 hours after your sleep time", + "screenTime_web_sleepReminders_mainSetting_toggle_desc": "Set up sleep reminders", + "screentime_settings_screentimebreaks_intro_desc": "Break reminders help you feel more mindful and balanced on TikTok.", + "screentime_settings_screentimebreaks_intro_schedulebreaks_heading": "Schedule a break", + "screentime_settings_screentimebreaks_actionsheet_desc_returninguser": "Get reminded to take a break from TikTok after a period of uninterrupted screen time.", + "screentime_settings_screentimebreaks_intro_tailoryourexp_heading": "Tailor your experience", + "screentime_settings_screentimebreaks_intro_tailoryourexp_desc": "Snooze to get reminded again or edit future reminders", + "screenTime_web_screenTimeBreaks_mainSetting_toggle_desc": "Schedule screen time breaks", + "seo_related_seeMore": "See more", + "reactivate_toast": "Welcome back. It may take a few moments before your account is fully activated ", + "login_fb_phoneLinked_toast": "Phone number linked", + "login_fb_emailLinked_toast": "Email linked", + "dailyscreentime_featurescreen_toast_editedtime": "You\u2019ve edited your daily screen time", + "screenTime_screenTimeBreaks_manageTime_editBreak_toast": "You\u2019ve edited your screen time break", + "privacy_projectS_sleepHours_turnOff_confirmation_toast": "You turned off your sleep hours", + "screenTime_sleepReminders_setSleepTime_toast": "You\u2019ve set your sleep time", + "nightscreentimemgmt_sleepreminders_toast_editsleeptime": "You\u2019ve edited your sleep time", + "family_safety_mode_locked_mode_indicator": "Locked", + "screentimedash_digitalwellbeing_dailyscreentime_desc": "Get notified if you reach your time on TikTok.", + "FPscheduledBreak_parentDetailpage_monday": "Monday", + "FPscheduledBreak_parentDetailpage_tuesday": "Tuesday", + "FPscheduledBreak_parentDetailpage_wednesday": "Wednesday", + "FPscheduledBreak_parentDetailpage_thursday": "Thursday", + "FPscheduledBreak_parentDetailpage_friday": "Friday", + "FPscheduledBreak_parentDetailpage_saturday": "Saturday", + "FPscheduledBreak_parentDetailpage_sunday": "Sunday", + "playlist_webapp_creation_namePlaylist_characterCount_limit": "You can add up to 25 characters", + "playlist_webapp_upload_nameplaylist_header": "Playlist name", + "playlist_webapp_toast_error_vidlimit": "You can select up to {number} posts at a time", + "playlist_webapp_selectvid_error_header": "No public posts available", + "playlist_webapp_selectvid_error_desc": "Only public posts can be added to playlists. You can make a post public in your post\u2019s privacy settings.", + "playlist_webapp_selectvid_header": "Select posts", + "playlist_webapp_selectvid_desc": "Only public posts can be added to playlists. Each post can only be in 1 playlist at a time.", + "playlist_webapp_selectvid_toast_alreadyadded": "This post has been added to another playlist", + "playlist_webapp_toast_error_cheatPlaylistCannotAdd": "Couldn\u2019t add post to playlist", + "playlist_webapp_profileview_toast_vidremoved": "{num, plural, one {{number} post has been removed from your playlist} other {{number} posts have been removed from your playlist}}", + "comment_tray_reply_default": "Reply to @{username}", + "collectionsProfilePage_collectionPage_emptyModal_header": "No favorite videos to add", + "collectionsProfilePage_collectionPage_emptyModal_desc": "All your favorite videos are already in collections", + "live_done": "Done", + "collectionsProfilePage_favoritesPage_selectVideosModal_btn2": "Add videos ({d_numOfVideos})", + "collectionsProfilePage_favoritesPage_selectVideosModal_header": "Select videos", + "collectionsProfilePage_collectionsPage_topSection_addToastSingular": "1 video added", + "collectionsProfilePage_collectionsPage_topSection_addToastPlural": "{d_numOfVideos} videos added" + } + }, + "seo.abtest": { + "canonical": "https://www.tiktok.com/search", + "pageId": "1040201255773882197", + "vidList": [], + "parameters": {} + }, + "webapp.a-b": { + "b_c": "0" + } + } +} \ No newline at end of file diff --git a/start_app.bat b/start_app.bat new file mode 100644 index 0000000..fcf4231 --- /dev/null +++ b/start_app.bat @@ -0,0 +1,3 @@ +@echo off +cd /d "%~dp0" +powershell -ExecutionPolicy Bypass -File manage_app.ps1 start diff --git a/stop_app.bat b/stop_app.bat new file mode 100644 index 0000000..1f01464 --- /dev/null +++ b/stop_app.bat @@ -0,0 +1,4 @@ +@echo off +cd /d "%~dp0" +powershell -ExecutionPolicy Bypass -File manage_app.ps1 stop +pause diff --git a/test_stealth.py b/test_stealth.py new file mode 100644 index 0000000..e157ad4 --- /dev/null +++ b/test_stealth.py @@ -0,0 +1,12 @@ +import sys +print(f"Python: {sys.executable}") +print(f"Path: {sys.path}") +try: + import playwright_stealth + print(f"Module: {playwright_stealth}") + from playwright_stealth import stealth_async + print("Import successful!") +except ImportError as e: + print(f"Import failed: {e}") +except Exception as e: + print(f"Error: {e}") diff --git a/tests/debug_search.py b/tests/debug_search.py new file mode 100644 index 0000000..addcf3b --- /dev/null +++ b/tests/debug_search.py @@ -0,0 +1,41 @@ +import json +import urllib.request +import urllib.parse +import os +import sys + +def debug_search(): + base_url = "http://localhost:8002/api/user/search" + query = "hot trend" + params = urllib.parse.urlencode({"query": query, "limit": 10}) + url = f"{base_url}?{params}" + + print(f"Testing search for: '{query}'") + print(f"URL: {url}") + + try: + req = urllib.request.Request(url) + with urllib.request.urlopen(req, timeout=60) as response: + status_code = response.getcode() + print(f"Status Code: {status_code}") + + if status_code == 200: + data = json.loads(response.read().decode('utf-8')) + print(f"Source: {data.get('source')}") + print(f"Count: {data.get('count')}") + videos = data.get("videos", []) + if not videos: + print("ERROR: No videos returned!") + else: + print(f"First video: {videos[0].get('id')} - {videos[0].get('desc', 'No desc')}") + else: + print(f"Error: Status {status_code}") + + except urllib.error.HTTPError as e: + print(f"HTTP Error: {e.code} - {e.reason}") + print(e.read().decode('utf-8')) + except Exception as e: + print(f"Request failed: {e}") + +if __name__ == "__main__": + debug_search() diff --git a/tests/inspect_html.py b/tests/inspect_html.py new file mode 100644 index 0000000..50ade8f --- /dev/null +++ b/tests/inspect_html.py @@ -0,0 +1,29 @@ +from bs4 import BeautifulSoup +import re + +with open("debug_search_page.html", "r", encoding="utf-8") as f: + html = f.read() + +soup = BeautifulSoup(html, "html.parser") + +# Inspect text occurrences +print("\n--- Searching for 'trend' text ---") +text_matches = soup.find_all(string=re.compile("trend", re.IGNORECASE)) +print(f"Found {len(text_matches)} text matches.") + +unique_parents = set() +for text in text_matches: + parent = text.parent + if parent and parent.name != "script" and parent.name != "style": + # Get up to 3 levels of parents + chain = [] + curr = parent + for _ in range(3): + if curr: + chain.append(f"<{curr.name} class='{'.'.join(curr.get('class', []))}'>") + curr = curr.parent + unique_parents.add(" -> ".join(chain)) + +for p in list(unique_parents)[:10]: + print(p) + diff --git a/tests/parse_ssr_data.py b/tests/parse_ssr_data.py new file mode 100644 index 0000000..5ce1b8d --- /dev/null +++ b/tests/parse_ssr_data.py @@ -0,0 +1,45 @@ +from bs4 import BeautifulSoup +import json + +with open("debug_search_page.html", "r", encoding="utf-8") as f: + html = f.read() + +soup = BeautifulSoup(html, "html.parser") +script = soup.find("script", id="__UNIVERSAL_DATA_FOR_REHYDRATION__") + +if script: + try: + data = json.loads(script.string) + print("Found SSR Data!") + + # Save pretty printed + with open("ssr_data.json", "w", encoding="utf-8") as f: + json.dump(data, f, indent=2) + + # Search for video list + # Look in __DEFAULT_SCOPE__ -> webapp.search-video -> searchVideoList (guessing keys) + # or just traverse and print keys + + def find_keys(obj, target_key, path=""): + if isinstance(obj, dict): + for k, v in obj.items(): + current_path = f"{path}.{k}" + if target_key.lower() in k.lower(): + print(f"Found key '{k}' at {current_path}") + find_keys(v, target_key, current_path) + elif isinstance(obj, list): + for i, item in enumerate(obj): + find_keys(item, target_key, f"{path}[{i}]") + + print("\nSearching for 'item' or 'list' keys...") + find_keys(data, "item") + find_keys(data, "list") + + # Check specific known paths + default_scope = data.get("__DEFAULT_SCOPE__", {}) + print(f"\nTop level keys: {list(default_scope.keys())}") + + except json.JSONDecodeError as e: + print(f"JSON Error: {e}") +else: + print("Script tag not found.") diff --git a/simple_test.py b/tests/simple_test.py similarity index 96% rename from simple_test.py rename to tests/simple_test.py index f988fc4..2d7b105 100644 --- a/simple_test.py +++ b/tests/simple_test.py @@ -1,30 +1,30 @@ -import urllib.request -import json - -try: - print("Testing /health...") - with urllib.request.urlopen("http://localhost:8002/health", timeout=5) as r: - print(f"Health: {r.status}") - - print("Testing /api/feed...") - with open("temp_cookies.json", "r") as f: - data = json.load(f) - - # Ensure list format - if isinstance(data, dict) and "credentials" in data: - data = data["credentials"] - - # Prepare body as dict for safety with new Union type - body = {"credentials": data} - - req = urllib.request.Request( - "http://localhost:8002/api/feed", - data=json.dumps(body).encode('utf-8'), - headers={'Content-Type': 'application/json'} - ) - with urllib.request.urlopen(req, timeout=30) as r: - print(f"Feed: {r.status}") - print(r.read().decode('utf-8')[:100]) - -except Exception as e: - print(f"Error: {e}") +import urllib.request +import json + +try: + print("Testing /health...") + with urllib.request.urlopen("http://localhost:8002/health", timeout=5) as r: + print(f"Health: {r.status}") + + print("Testing /api/feed...") + with open("temp_cookies.json", "r") as f: + data = json.load(f) + + # Ensure list format + if isinstance(data, dict) and "credentials" in data: + data = data["credentials"] + + # Prepare body as dict for safety with new Union type + body = {"credentials": data} + + req = urllib.request.Request( + "http://localhost:8002/api/feed", + data=json.dumps(body).encode('utf-8'), + headers={'Content-Type': 'application/json'} + ) + with urllib.request.urlopen(req, timeout=30) as r: + print(f"Feed: {r.status}") + print(r.read().decode('utf-8')[:100]) + +except Exception as e: + print(f"Error: {e}") diff --git a/tests/test_crawl.py b/tests/test_crawl.py new file mode 100644 index 0000000..2f3ba60 --- /dev/null +++ b/tests/test_crawl.py @@ -0,0 +1,42 @@ +import asyncio +import base64 +from crawl4ai import AsyncWebCrawler + +async def main(): + print("Starting Crawl4AI test...") + async with AsyncWebCrawler(verbose=True) as crawler: + url = "https://www.tiktok.com/search?q=hot+trend" + print(f"Crawling: {url}") + + # Browser config + run_conf = { + "url": url, + "wait_for": "css:[data-e2e='search_video_item']", + "css_selector": "[data-e2e='search_video_item']", + "screenshot": True, + "magic": True + } + + print(f"Crawling with config: {run_conf}") + result = await crawler.arun(**run_conf) + + if result.success: + print("Crawl successful!") + print(f"HTML length: {len(result.html)}") + + if result.screenshot: + with open("crawl_screenshot.png", "wb") as f: + f.write(base64.b64decode(result.screenshot)) + print("Saved screenshot to crawl_screenshot.png") + + # Save for inspection + with open("crawl_debug.html", "w", encoding="utf-8") as f: + f.write(result.html) + with open("crawl_debug.md", "w", encoding="utf-8") as f: + f.write(result.markdown) + + else: + print(f"Crawl failed: {result.error_message}") + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/test_login.py b/tests/test_login.py similarity index 96% rename from test_login.py rename to tests/test_login.py index faff657..0f13e21 100644 --- a/test_login.py +++ b/tests/test_login.py @@ -1,16 +1,16 @@ -import requests -import time - -URL = "http://localhost:8002/api/auth/admin-login" - -def test_login(): - print("Testing Admin Login...") - try: - res = requests.post(URL, json={"password": "admin123"}) - print(f"Status: {res.status_code}") - print(f"Response: {res.text}") - except Exception as e: - print(f"Error: {e}") - -if __name__ == "__main__": - test_login() +import requests +import time + +URL = "http://localhost:8002/api/auth/admin-login" + +def test_login(): + print("Testing Admin Login...") + try: + res = requests.post(URL, json={"password": "admin123"}) + print(f"Status: {res.status_code}") + print(f"Response: {res.text}") + except Exception as e: + print(f"Error: {e}") + +if __name__ == "__main__": + test_login() diff --git a/test_request.py b/tests/test_request.py similarity index 96% rename from test_request.py rename to tests/test_request.py index c78e9f1..0986255 100644 --- a/test_request.py +++ b/tests/test_request.py @@ -1,30 +1,30 @@ -import urllib.request -import json -import os - -with open("temp_cookies.json", "r") as f: - data = json.load(f) - -# Ensure data is in the expected dict format for the request body -if isinstance(data, list): - # If temp_cookies is just the list, wrap it - body = {"credentials": data} -elif "credentials" not in data: - body = {"credentials": data} -else: - body = data - -req = urllib.request.Request( - "http://localhost:8002/api/feed", - data=json.dumps(body).encode('utf-8'), - headers={'Content-Type': 'application/json'} -) - -try: - with urllib.request.urlopen(req) as response: - print(response.read().decode('utf-8')) -except urllib.error.HTTPError as e: - print(f"HTTP Error: {e.code}") - print(e.read().decode('utf-8')) -except Exception as e: - print(f"Error: {e}") +import urllib.request +import json +import os + +with open("temp_cookies.json", "r") as f: + data = json.load(f) + +# Ensure data is in the expected dict format for the request body +if isinstance(data, list): + # If temp_cookies is just the list, wrap it + body = {"credentials": data} +elif "credentials" not in data: + body = {"credentials": data} +else: + body = data + +req = urllib.request.Request( + "http://localhost:8002/api/feed", + data=json.dumps(body).encode('utf-8'), + headers={'Content-Type': 'application/json'} +) + +try: + with urllib.request.urlopen(req) as response: + print(response.read().decode('utf-8')) +except urllib.error.HTTPError as e: + print(f"HTTP Error: {e.code}") + print(e.read().decode('utf-8')) +except Exception as e: + print(f"Error: {e}") diff --git a/test_search.py b/tests/test_search.py similarity index 96% rename from test_search.py rename to tests/test_search.py index 606d94e..be54400 100644 --- a/test_search.py +++ b/tests/test_search.py @@ -1,35 +1,35 @@ -import requests -import json -import time - -BASE_URL = "http://localhost:8002/api/user/search" - -def test_search(): - print("Testing Search API...") - try: - # Simple query - params = { - "query": "dance", - "limit": 50, - "cursor": 0 - } - start = time.time() - res = requests.get(BASE_URL, params=params) - duration = time.time() - start - - print(f"Status Code: {res.status_code}") - print(f"Duration: {duration:.2f}s") - - if res.status_code == 200: - data = res.json() - print(f"Videos Found: {len(data.get('videos', []))}") - # print(json.dumps(data, indent=2)) - else: - print("Error Response:") - print(res.text) - - except Exception as e: - print(f"Request Failed: {e}") - -if __name__ == "__main__": - test_search() +import requests +import json +import time + +BASE_URL = "http://localhost:8002/api/user/search" + +def test_search(): + print("Testing Search API...") + try: + # Simple query + params = { + "query": "dance", + "limit": 50, + "cursor": 0 + } + start = time.time() + res = requests.get(BASE_URL, params=params) + duration = time.time() - start + + print(f"Status Code: {res.status_code}") + print(f"Duration: {duration:.2f}s") + + if res.status_code == 200: + data = res.json() + print(f"Videos Found: {len(data.get('videos', []))}") + # print(json.dumps(data, indent=2)) + else: + print("Error Response:") + print(res.text) + + except Exception as e: + print(f"Request Failed: {e}") + +if __name__ == "__main__": + test_search()