Install
openclaw skills install @volumexxx/ahtv-pk-to-xunleiFind 安徽网络电视台《快乐无敌大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.
openclaw skills install @volumexxx/ahtv-pk-to-xunleiUse this skill only for 《快乐无敌大PK》 on 安徽网络电视台. Treat all unspecified years as 2026.
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>"
python "{baseDir}\scripts\resolve_episodes.py" --date-expr "<date_expr>"
expanded_dates, episode_url, video_url, and target_filename.3月5日, 2026-03-053月5、6、7、8日, 3月5日,3月6日,3月7日3月5-10日, 3月5日至3月10日, 2026-03-05~2026-03-103月5日之后, 3月5日以后Interpretation rules:
20263月5、6、7、8日, inherit month and year from the first date3月5-10日, inherit month and year for the end date from the start date3月5日之后 and 3月5日以后, exclude the day itself and start from 2026-03-06Reject these requests as unsupported instead of guessing:
起, 以来, 前后, 本周, 最近几天Run the resolver before opening 迅雷云盘. The resolver already does the deterministic parts:
https://www.ahtv.cn/search for 快乐无敌大PKhttps://www.ahtv.cn/pindao/ahzh/pk/split/...整期https://www.ahtv.cn/pindao/ahzh/pk and its paginated index pages#m3u8Treat 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 dateProcess dates one by one and continue even if one date fails.
For every resolver item with status=ready:
https://pan.xunlei.com/.$sms-login-dom-first to complete 迅雷云盘 login with phone number plus SMS code, then return to the cloud drive page.target_filename.skipped-existing and do not add it again./快乐无敌大PK/2026 exists.链接添加, 添加链接, 云添加, 添加任务, or a plus menu with a chain/link icon.video_url exactly as returned./快乐无敌大PK/2026 if the dialog lets you choose the destination. If it saves elsewhere first, move it into /快乐无敌大PK/2026 immediately after creation.target_filename.Do not download to local disk as a fallback in v1. Only use 迅雷云盘 link add / cloud add.
快乐无敌大PK.2026.S02E{MMDD}快乐无敌大PK.2026.S02E{MMDD}.mp4快乐无敌大PK.2026.S02E0315.mp4Use the resolver's target_filename directly. Do not invent an alternate naming scheme.
Return one compact JSON-like summary in Markdown. Include these top-level fields:
input_exprexpanded_datessummaryitemssummary must include:
totaladdedskipped_existingnot_foundfailedEach item must include:
datestatusepisode_urlvideo_urltarget_filenamexunlei_pathmessageStatus values for the final answer:
added-and-renamedskipped-existingnot-foundadd-failedMap resolver failures into the final response like this:
not-found stays not-foundambiguous, video-url-missing, and error become add-failed