[2026-04-27T06:24:13.461Z] Start processing request [2026-04-27T06:24:13.461Z] Fetching mail from https://12306mail.aken.cc ... [2026-04-27T06:24:15.954Z] Mail fetch status: 200 [2026-04-27T06:24:15.954Z] Mail text length: 498 [2026-04-27T06:24:15.954Z] Extracting ticket lines with regex /^谢宁宁[^ ]*/gm [2026-04-27T06:24:15.954Z] Found 7 raw ticket lines [2026-04-27T06:24:15.954Z] Today (Beijing) YMD: 20260427 -> 20260427 [2026-04-27T06:24:15.954Z] --- Processing ticket #1 raw: 谢宁宁,2026年04月28日18:02开,湖州东站-上海松江站,C3796次列车,1车9D号,二等座,成人票,票价51.0元,检票口一层检票口, [2026-04-27T06:24:15.954Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T06:24:15.954Z] Parsed fields -> from: "湖州东" to: "上海松江" train: "C3796" date: 2026-04-28 18:02 seat: "1车9D号" gate: "一层" [2026-04-27T06:24:15.954Z] Event title: "湖州东C3796上海松江一层" [2026-04-27T06:24:15.954Z] Ticket YMD num: 20260428 [2026-04-27T06:24:15.954Z] Fetching schedule: https://checi.aken.cc/?keyword=C3796&date=20260428 [2026-04-27T06:24:16.627Z] Schedule fetch status: 200 [2026-04-27T06:24:16.627Z] Schedule data length: 10 [2026-04-27T06:24:16.627Z] Matched end station?: true (上海松江) [2026-04-27T06:24:16.627Z] DTEND from schedule: 20260428T104000Z (arrive_time=18:40) [2026-04-27T06:24:16.627Z] DTSTART (from ticket): 20260428T100200Z [2026-04-27T06:24:16.627Z] EVENT generated for ticket #1 [2026-04-27T06:24:16.627Z] --- Processing ticket #2 raw: 谢宁宁,2026年04月29日17:07开,上海虹桥站-郑州东站,G1940次列车,6车无座,二等座,成人票,票价470.0元,检票口7A7B, [2026-04-27T06:24:16.627Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T06:24:16.627Z] Parsed fields -> from: "上海虹桥" to: "郑州东" train: "G1940" date: 2026-04-29 17:07 seat: "6车无座" gate: "7A7B" [2026-04-27T06:24:16.627Z] Event title: "上海虹桥G1940郑州东7A7B" [2026-04-27T06:24:16.627Z] Ticket YMD num: 20260429 [2026-04-27T06:24:16.627Z] Fetching schedule: https://checi.aken.cc/?keyword=G1940&date=20260429 [2026-04-27T06:24:18.033Z] Schedule fetch status: 200 [2026-04-27T06:24:18.033Z] Schedule data length: 9 [2026-04-27T06:24:18.033Z] Matched end station?: true (郑州东) [2026-04-27T06:24:18.033Z] DTEND from schedule: 20260429T132200Z (arrive_time=21:22) [2026-04-27T06:24:18.033Z] DTSTART (from ticket): 20260429T090700Z [2026-04-27T06:24:18.033Z] EVENT generated for ticket #2 [2026-04-27T06:24:18.033Z] --- Processing ticket #3 raw: 谢宁宁,2026年04月27日17:11开,南京南站-溧阳站,G823次列车,10车3D号,二等座,成人票,票价54.0元,检票口A2, [2026-04-27T06:24:18.033Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T06:24:18.033Z] Parsed fields -> from: "南京南" to: "溧阳" train: "G823" date: 2026-04-27 17:11 seat: "10车3D号" gate: "A2" [2026-04-27T06:24:18.033Z] Event title: "南京南G823溧阳A2" [2026-04-27T06:24:18.033Z] Ticket YMD num: 20260427 [2026-04-27T06:24:18.033Z] Fetching schedule: https://checi.aken.cc/?keyword=G823&date=20260427 [2026-04-27T06:24:18.832Z] Schedule fetch status: 200 [2026-04-27T06:24:18.832Z] Schedule data length: 20 [2026-04-27T06:24:18.832Z] Matched end station?: true (溧阳) [2026-04-27T06:24:18.832Z] DTEND from schedule: 20260427T094500Z (arrive_time=17:45) [2026-04-27T06:24:18.832Z] DTSTART (from ticket): 20260427T091100Z [2026-04-27T06:24:18.832Z] EVENT generated for ticket #3 [2026-04-27T06:24:18.832Z] --- Processing ticket #4 raw: 谢宁宁,2026年04月27日15:51开,无锡东站-南京南站,G798次列车,7车6D号,二等座,成人票,票价93.0元,检票口无锡东A1, [2026-04-27T06:24:18.832Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T06:24:18.832Z] Parsed fields -> from: "无锡东" to: "南京南" train: "G798" date: 2026-04-27 15:51 seat: "7车6D号" gate: "无锡东A1" [2026-04-27T06:24:18.832Z] Event title: "无锡东G798南京南无锡东A1" [2026-04-27T06:24:18.832Z] Ticket YMD num: 20260427 [2026-04-27T06:24:18.832Z] Fetching schedule: https://checi.aken.cc/?keyword=G798&date=20260427 [2026-04-27T06:24:19.512Z] Schedule fetch status: 200 [2026-04-27T06:24:19.512Z] Schedule data length: 10 [2026-04-27T06:24:19.512Z] Matched end station?: true (南京南) [2026-04-27T06:24:19.512Z] DTEND from schedule: 20260427T083500Z (arrive_time=16:35) [2026-04-27T06:24:19.512Z] DTSTART (from ticket): 20260427T075100Z [2026-04-27T06:24:19.512Z] EVENT generated for ticket #4 [2026-04-27T06:24:19.512Z] --- Processing ticket #5 raw: 谢宁宁,2026年04月27日18:11开,南京南站-溧阳站,G829次列车,12车15F号,二等座,成人票,票价54.0元,检票口A1, [2026-04-27T06:24:19.512Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T06:24:19.512Z] Parsed fields -> from: "南京南" to: "溧阳" train: "G829" date: 2026-04-27 18:11 seat: "12车15F号" gate: "A1" [2026-04-27T06:24:19.512Z] Event title: "南京南G829溧阳A1" [2026-04-27T06:24:19.512Z] Ticket YMD num: 20260427 [2026-04-27T06:24:19.512Z] Fetching schedule: https://checi.aken.cc/?keyword=G829&date=20260427 [2026-04-27T06:24:20.676Z] Schedule fetch status: 200 [2026-04-27T06:24:20.676Z] Schedule data length: 15 [2026-04-27T06:24:20.676Z] Matched end station?: true (溧阳) [2026-04-27T06:24:20.676Z] DTEND from schedule: 20260427T104500Z (arrive_time=18:45) [2026-04-27T06:24:20.676Z] DTSTART (from ticket): 20260427T101100Z [2026-04-27T06:24:20.676Z] EVENT generated for ticket #5 [2026-04-27T06:24:20.676Z] --- Processing ticket #6 raw: 谢宁宁,2026年04月27日14:40开,郑州东站-南京南站,G82次列车,12车16D号,二等座,成人票,票价347.0元,检票口21B, [2026-04-27T06:24:20.676Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T06:24:20.676Z] Parsed fields -> from: "郑州东" to: "南京南" train: "G82" date: 2026-04-27 14:40 seat: "12车16D号" gate: "21B" [2026-04-27T06:24:20.676Z] Event title: "郑州东G82南京南21B" [2026-04-27T06:24:20.676Z] Ticket YMD num: 20260427 [2026-04-27T06:24:20.676Z] Fetching schedule: https://checi.aken.cc/?keyword=G82&date=20260427 [2026-04-27T06:24:21.248Z] Schedule fetch status: 200 [2026-04-27T06:24:21.248Z] Schedule data length: 6 [2026-04-27T06:24:21.248Z] Matched end station?: true (南京南) [2026-04-27T06:24:21.248Z] DTEND from schedule: 20260427T092600Z (arrive_time=17:26) [2026-04-27T06:24:21.248Z] DTSTART (from ticket): 20260427T064000Z [2026-04-27T06:24:21.248Z] EVENT generated for ticket #6 [2026-04-27T06:24:21.248Z] --- Processing ticket #7 raw: 谢宁宁,2026年04月28日16:48开,溧阳站-湖州东站,C3005次列车,2车3D号,二等座,成人票,票价54.0元, [2026-04-27T06:24:21.248Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T06:24:21.248Z] Parsed fields -> from: "溧阳" to: "湖州东" train: "C3005" date: 2026-04-28 16:48 seat: "2车3D号" gate: "" [2026-04-27T06:24:21.248Z] Event title: "溧阳C3005湖州东" [2026-04-27T06:24:21.248Z] Ticket YMD num: 20260428 [2026-04-27T06:24:21.248Z] Fetching schedule: https://checi.aken.cc/?keyword=C3005&date=20260428 [2026-04-27T06:24:21.905Z] Schedule fetch status: 200 [2026-04-27T06:24:21.905Z] Schedule data length: 8 [2026-04-27T06:24:21.905Z] Matched end station?: true (湖州东) [2026-04-27T06:24:21.905Z] DTEND from schedule: 20260428T092700Z (arrive_time=17:27) [2026-04-27T06:24:21.905Z] DTSTART (from ticket): 20260428T084800Z [2026-04-27T06:24:21.905Z] EVENT generated for ticket #7 [2026-04-27T06:24:21.905Z] Total events generated: 7 [2026-04-27T06:24:21.905Z] ICS content generated (length: 3089) [2026-04-27T06:24:22.156Z] Upload to R2 (chepiao) succeeded. ==== ICS CONTENT ==== BEGIN:VCALENDAR VERSION:2.0 PRODID:-//aken.cc//12306 ICS Generator//EN CALSCALE:GREGORIAN METHOD:PUBLISH BEGIN:VEVENT UID:5850a226-b506-45f6-b8f0-6f4fb8c71e49 SUMMARY:湖州东C3796上海松江一层 DTSTART:20260428T100200Z DTEND:20260428T104000Z LOCATION:一层,1车9D号 DESCRIPTION:湖州东 到-- 开18:02\n盛泽 到18:16 开18:18\n上海松江 到18:40 开18:42\n上海虹桥 到19:01 开19:08\n常熟 到19:53 开19:55\n南通西 到20:17 开20:19\n如皋南 到20:32 开20:34\n海安 到20:44 开20:46\n盐城 到21:16 开21:18\n连云港 到22:28 开22:28 STATUS:CONFIRMED SEQUENCE:0 TRANSP:OPAQUE END:VEVENT BEGIN:VEVENT UID:4a02ecb7-c959-4a75-a4b8-6211016d39a4 SUMMARY:上海虹桥G1940郑州东7A7B DTSTART:20260429T090700Z DTEND:20260429T132200Z LOCATION:7A7B,6车无座 DESCRIPTION:上海虹桥 到-- 开17:07\n常州北 到17:48 开17:50\n南京南 到18:21 开18:23\n徐州东 到19:37 开19:44\n商丘 到20:30 开20:32\n郑州东 到21:22 开21:29\n巩义南 到21:56 开21:58\n渑池南 到22:26 开22:32\n西安北 到23:33 开23:33 STATUS:CONFIRMED SEQUENCE:0 TRANSP:OPAQUE END:VEVENT BEGIN:VEVENT UID:5f05270c-a358-4656-8bc0-ea6f51c3fd86 SUMMARY:南京南G823溧阳A2 DTSTART:20260427T091100Z DTEND:20260427T094500Z LOCATION:A2,10车3D号 DESCRIPTION:北京南 到-- 开12:43\n天津南 到13:17 开13:22\n沧州西 到13:44 开13:57\n济南西 到14:43 开14:46\n枣庄 到15:36 开15:38\n徐州东 到15:56 开15:58\n南京南 到17:07 开17:11\n溧水 到17:28 开17:30\n溧阳 到17:45 开17:47\n湖州 到18:10 开18:12\n杭州东 到18:33 开18:37\n余姚北 到19:08 开19:10\n宁波 到19:30 开19:33\n奉化 到19:50 开19:52\n三门县 到20:18 开20:20\n临海 到20:31 开20:33\n台州西 到20:45 开20:47\n温岭 到20:58 开21:00\n乐清 到21:24 开21:27\n温州南 到21:45 开21:45 STATUS:CONFIRMED SEQUENCE:0 TRANSP:OPAQUE END:VEVENT BEGIN:VEVENT UID:3ca3fe6e-dcf1-41ce-bda4-7e5aa4c8208d SUMMARY:无锡东G798南京南无锡东A1 DTSTART:20260427T075100Z DTEND:20260427T083500Z LOCATION:无锡东A1,7车6D号 DESCRIPTION:上海虹桥 到-- 开15:21\n无锡东 到15:49 开15:51\n南京南 到16:35 开16:38\n蚌埠南 到17:20 开17:24\n徐州东 到18:01 开18:05\n枣庄 到18:23 开18:29\n济南西 到19:22 开19:24\n德州东 到19:48 开19:50\n廊坊 到20:47 开20:49\n北京南 到21:10 开21:10 STATUS:CONFIRMED SEQUENCE:0 TRANSP:OPAQUE END:VEVENT BEGIN:VEVENT UID:bce51aef-aad6-4c54-a800-0127424f9e46 SUMMARY:南京南G829溧阳A1 DTSTART:20260427T101100Z DTEND:20260427T104500Z LOCATION:A1,12车15F号 DESCRIPTION:北京南 到-- 开13:42\n天津南 到14:16 开14:18\n沧州西 到14:40 开14:45\n济南西 到15:32 开15:36\n枣庄 到16:26 开16:28\n徐州东 到16:46 开16:48\n蚌埠南 到17:25 开17:27\n南京南 到18:08 开18:11\n溧水 到18:28 开18:30\n溧阳 到18:45 开18:47\n长兴 到19:06 开19:10\n杭州东 到19:36 开19:56\n余姚北 到20:28 开20:30\n宁波 到20:50 开20:55\n台州西 到21:49 开21:49 STATUS:CONFIRMED SEQUENCE:0 TRANSP:OPAQUE END:VEVENT BEGIN:VEVENT UID:4d6b8d5f-6774-4ccb-8e24-d160fb8fa3ad SUMMARY:郑州东G82南京南21B DTSTART:20260427T064000Z DTEND:20260427T092600Z LOCATION:21B,12车16D号 DESCRIPTION:郑州东 到-- 开14:40\n商丘 到15:29 开15:31\n徐州东 到16:17 开16:20\n南京南 到17:26 开17:28\n苏州北 到18:13 开18:19\n上海虹桥 到18:43 开18:43 STATUS:CONFIRMED SEQUENCE:0 TRANSP:OPAQUE END:VEVENT BEGIN:VEVENT UID:c17c8b2b-dcd9-42c1-b6bd-54c7b7574282 SUMMARY:溧阳C3005湖州东 DTSTART:20260428T084800Z DTEND:20260428T092700Z LOCATION:2车3D号 DESCRIPTION:南京南 到-- 开16:17\n溧阳 到16:43 开16:48\n宜兴 到17:01 开17:03\n湖州东 到17:27 开17:30\n湖州南浔 到17:40 开17:42\n盛泽 到17:51 开17:53\n苏州南 到18:04 开18:06\n上海南 到18:31 开18:31 STATUS:CONFIRMED SEQUENCE:0 TRANSP:OPAQUE END:VEVENT END:VCALENDAR