- name
- ahtv-pk-to-xunlei
- description
- Find 安徽网络电视台《快乐无敌大PK》 full-episode pages from a user-provided date expression, extract each episode's real video URL, and save the episodes into 迅雷云盘. Use this skill when the user asks for one or more 快乐无敌大PK episodes by date, date list, closed date range, or open range such as “3月5日之后”, and the task includes deduping existing 迅雷云盘 files, naming each episode as 快乐无敌大PK.2026.S02E{MMDD}.mp4, and using sms-login-dom-first for 迅雷云盘 SMS login.
AHTV PK To Xunlei
Use this skill only for 《快乐无敌大PK》 on 安徽网络电视台. Treat all unspecified years as 2026.
Quick Start
- Run the date parser first.
Windows:
python "{baseDir}\scripts\parse_date_expr.py" --date-expr "<date_expr>"If python is unavailable, retry with:
py -3 "{baseDir}\scripts\parse_date_expr.py" --date-expr "<date_expr>"- Run the resolver on the same expression.
python "{baseDir}\scripts\
esolve_episodes.py" --date-expr "<date_expr>"- Use the resolver JSON as the source of truth for
expanded_dates,episode_url,video_url, andtarget_filename.
Supported Date Expressions
- Single date:
3月5日,2026-03-05 - Multi-date list:
3月5、6、7、8日,3月5日,3月6日,3月7日 - Closed range:
3月5-10日,3月5日至3月10日,2026-03-05~2026-03-10 - Open range:
3月5日之后,3月5日以后
Interpretation rules:
- Default missing years to
2026 - For
3月5、6、7、8日, inherit month and year from the first date - For
3月5-10日, inherit month and year for the end date from the start date - For
3月5日之后and3月5日以后, exclude the day itself and start from2026-03-06 - For open ranges, stop at the latest currently discoverable 快乐无敌大PK episode date on 安徽网络电视台
Reject these requests as unsupported instead of guessing:
起,以来,前后,本周,最近几天- Cross-year shorthand without an explicit year
- Requests that mix 快乐无敌大PK with a different program
Resolution Workflow
Run the resolver before opening 迅雷云盘. The resolver already does the deterministic parts:
- Search
https://www.ahtv.cn/searchfor快乐无敌大PK - Filter candidates to
https://www.ahtv.cn/pindao/ahzh/pk/split/... - Match by the episode date embedded in the title, not by the search result publish time
- Prefer titles containing
整期 - Cross-check ambiguous dates against
https://www.ahtv.cn/pindao/ahzh/pkand its paginated index pages - Extract the real media URL from the single-episode page hidden input
#m3u8
Treat the resolver output like this:
status=ready: proceed to 迅雷云盘status=not-found: record the failure and continue with the next datestatus=ambiguous: record the failure and continue with the next datestatus=video-url-missing: record the failure and continue with the next datestatus=error: record the failure and continue with the next date
迅雷云盘 Workflow
Process dates one by one and continue even if one date fails.
For every resolver item with status=ready:
- Open
https://pan.xunlei.com/. - If the user is not logged in, use
$sms-login-dom-firstto complete 迅雷云盘 login with phone number plus SMS code, then return to the cloud drive page. - Search the whole cloud drive for the exact
target_filename. - If an exact same file already exists anywhere in 迅雷云盘, mark the item as
skipped-existingand do not add it again. - If it does not exist, ensure the folder path
/快乐无敌大PK/2026exists. - Use 迅雷云盘's link-based add flow. UI labels can vary, so look for controls such as
链接添加,添加链接,云添加,添加任务, or a plus menu with a chain/link icon. - Paste the resolver
video_urlexactly as returned. - Save into
/快乐无敌大PK/2026if the dialog lets you choose the destination. If it saves elsewhere first, move it into/快乐无敌大PK/2026immediately after creation. - Wait until the file becomes visible in the target folder.
- If 迅雷 keeps the source file name, rename it to
target_filename.
Do not download to local disk as a fallback in v1. Only use 迅雷云盘 link add / cloud add.
Naming Rules
- Basename format:
快乐无敌大PK.2026.S02E{MMDD} - Final filename format:
快乐无敌大PK.2026.S02E{MMDD}.mp4 - Example:
快乐无敌大PK.2026.S02E0315.mp4
Use the resolver's target_filename directly. Do not invent an alternate naming scheme.
Final Output Format
Return one compact JSON-like summary in Markdown. Include these top-level fields:
input_exprexpanded_datessummaryitems
summary must include:
totaladdedskipped_existingnot_foundfailed
Each item must include:
datestatusepisode_urlvideo_urltarget_filenamexunlei_pathmessage
Status values for the final answer:
added-and-renamedskipped-existingnot-foundadd-failed
Map resolver failures into the final response like this:
not-foundstaysnot-foundambiguous,video-url-missing, anderrorbecomeadd-failed
Notes
- Prefer the resolver scripts over ad-hoc parsing in the model.
- Treat the site structure as authoritative as of the current run. If the resolver fails because the site changed, report the failure clearly instead of fabricating URLs.
- Keep the browser workflow deterministic: exact filename search first, then add, then rename if needed.