[2026-04-27T03:33:04.166Z] Start processing request [2026-04-27T03:33:04.166Z] Fetching mail from https://12306mail.aken.cc ... [2026-04-27T03:33:06.285Z] Mail fetch status: 200 [2026-04-27T03:33:06.285Z] Mail text length: 498 [2026-04-27T03:33:06.285Z] Extracting ticket lines with regex /^谢宁宁[^ ]*/gm [2026-04-27T03:33:06.285Z] Found 7 raw ticket lines [2026-04-27T03:33:06.285Z] Today (Beijing) YMD: 20260427 -> 20260427 [2026-04-27T03:33:06.285Z] --- Processing ticket #1 raw: 谢宁宁,2026年04月28日18:02开,湖州东站-上海松江站,C3796次列车,1车9D号,二等座,成人票,票价51.0元,检票口一层检票口, [2026-04-27T03:33:06.285Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T03:33:06.285Z] Parsed fields -> from: "湖州东" to: "上海松江" train: "C3796" date: 2026-04-28 18:02 seat: "1车9D号" gate: "一层" [2026-04-27T03:33:06.285Z] Event title: "湖州东C3796上海松江一层" [2026-04-27T03:33:06.285Z] Ticket YMD num: 20260428 [2026-04-27T03:33:06.285Z] Fetching schedule: https://checi.aken.cc/?keyword=C3796&date=20260428 [2026-04-27T03:33:06.944Z] Schedule fetch status: 200 [2026-04-27T03:33:06.944Z] Schedule data length: 10 [2026-04-27T03:33:06.944Z] Matched end station?: true (上海松江) [2026-04-27T03:33:06.944Z] DTEND from schedule: 20260428T104000Z (arrive_time=18:40) [2026-04-27T03:33:06.944Z] DTSTART (from ticket): 20260428T100200Z [2026-04-27T03:33:06.944Z] EVENT generated for ticket #1 [2026-04-27T03:33:06.944Z] --- Processing ticket #2 raw: 谢宁宁,2026年04月29日17:07开,上海虹桥站-郑州东站,G1940次列车,6车无座,二等座,成人票,票价470.0元,检票口7A7B, [2026-04-27T03:33:06.944Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T03:33:06.944Z] Parsed fields -> from: "上海虹桥" to: "郑州东" train: "G1940" date: 2026-04-29 17:07 seat: "6车无座" gate: "7A7B" [2026-04-27T03:33:06.944Z] Event title: "上海虹桥G1940郑州东7A7B" [2026-04-27T03:33:06.944Z] Ticket YMD num: 20260429 [2026-04-27T03:33:06.944Z] Fetching schedule: https://checi.aken.cc/?keyword=G1940&date=20260429 [2026-04-27T03:33:07.591Z] Schedule fetch status: 200 [2026-04-27T03:33:07.591Z] Schedule data length: 9 [2026-04-27T03:33:07.591Z] Matched end station?: true (郑州东) [2026-04-27T03:33:07.591Z] DTEND from schedule: 20260429T132200Z (arrive_time=21:22) [2026-04-27T03:33:07.591Z] DTSTART (from ticket): 20260429T090700Z [2026-04-27T03:33:07.591Z] EVENT generated for ticket #2 [2026-04-27T03:33:07.591Z] --- Processing ticket #3 raw: 谢宁宁,2026年04月27日17:11开,南京南站-溧阳站,G823次列车,10车3D号,二等座,成人票,票价54.0元,检票口A2, [2026-04-27T03:33:07.591Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T03:33:07.591Z] Parsed fields -> from: "南京南" to: "溧阳" train: "G823" date: 2026-04-27 17:11 seat: "10车3D号" gate: "A2" [2026-04-27T03:33:07.591Z] Event title: "南京南G823溧阳A2" [2026-04-27T03:33:07.591Z] Ticket YMD num: 20260427 [2026-04-27T03:33:07.591Z] Fetching schedule: https://checi.aken.cc/?keyword=G823&date=20260427 [2026-04-27T03:33:08.957Z] Schedule fetch status: 200 [2026-04-27T03:33:08.957Z] Schedule data length: 20 [2026-04-27T03:33:08.957Z] Matched end station?: true (溧阳) [2026-04-27T03:33:08.957Z] DTEND from schedule: 20260427T094500Z (arrive_time=17:45) [2026-04-27T03:33:08.957Z] DTSTART (from ticket): 20260427T091100Z [2026-04-27T03:33:08.957Z] EVENT generated for ticket #3 [2026-04-27T03:33:08.957Z] --- Processing ticket #4 raw: 谢宁宁,2026年04月27日15:51开,无锡东站-南京南站,G798次列车,7车6D号,二等座,成人票,票价93.0元,检票口无锡东A1, [2026-04-27T03:33:08.957Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T03:33:08.957Z] Parsed fields -> from: "无锡东" to: "南京南" train: "G798" date: 2026-04-27 15:51 seat: "7车6D号" gate: "无锡东A1" [2026-04-27T03:33:08.957Z] Event title: "无锡东G798南京南无锡东A1" [2026-04-27T03:33:08.957Z] Ticket YMD num: 20260427 [2026-04-27T03:33:08.957Z] Fetching schedule: https://checi.aken.cc/?keyword=G798&date=20260427 [2026-04-27T03:33:09.630Z] Schedule fetch status: 200 [2026-04-27T03:33:09.630Z] Schedule data length: 10 [2026-04-27T03:33:09.630Z] Matched end station?: true (南京南) [2026-04-27T03:33:09.630Z] DTEND from schedule: 20260427T083500Z (arrive_time=16:35) [2026-04-27T03:33:09.630Z] DTSTART (from ticket): 20260427T075100Z [2026-04-27T03:33:09.630Z] EVENT generated for ticket #4 [2026-04-27T03:33:09.630Z] --- Processing ticket #5 raw: 谢宁宁,2026年04月27日18:11开,南京南站-溧阳站,G829次列车,12车15F号,二等座,成人票,票价54.0元,检票口A1, [2026-04-27T03:33:09.630Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T03:33:09.630Z] Parsed fields -> from: "南京南" to: "溧阳" train: "G829" date: 2026-04-27 18:11 seat: "12车15F号" gate: "A1" [2026-04-27T03:33:09.630Z] Event title: "南京南G829溧阳A1" [2026-04-27T03:33:09.630Z] Ticket YMD num: 20260427 [2026-04-27T03:33:09.630Z] Fetching schedule: https://checi.aken.cc/?keyword=G829&date=20260427 [2026-04-27T03:33:10.329Z] Schedule fetch status: 200 [2026-04-27T03:33:10.329Z] Schedule data length: 15 [2026-04-27T03:33:10.329Z] Matched end station?: true (溧阳) [2026-04-27T03:33:10.329Z] DTEND from schedule: 20260427T104500Z (arrive_time=18:45) [2026-04-27T03:33:10.329Z] DTSTART (from ticket): 20260427T101100Z [2026-04-27T03:33:10.329Z] EVENT generated for ticket #5 [2026-04-27T03:33:10.329Z] --- Processing ticket #6 raw: 谢宁宁,2026年04月27日14:40开,郑州东站-南京南站,G82次列车,12车16D号,二等座,成人票,票价347.0元,检票口21B, [2026-04-27T03:33:10.329Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T03:33:10.329Z] Parsed fields -> from: "郑州东" to: "南京南" train: "G82" date: 2026-04-27 14:40 seat: "12车16D号" gate: "21B" [2026-04-27T03:33:10.329Z] Event title: "郑州东G82南京南21B" [2026-04-27T03:33:10.329Z] Ticket YMD num: 20260427 [2026-04-27T03:33:10.329Z] Fetching schedule: https://checi.aken.cc/?keyword=G82&date=20260427 [2026-04-27T03:33:12.267Z] Schedule fetch status: 200 [2026-04-27T03:33:12.267Z] Schedule data length: 6 [2026-04-27T03:33:12.267Z] Matched end station?: true (南京南) [2026-04-27T03:33:12.267Z] DTEND from schedule: 20260427T092600Z (arrive_time=17:26) [2026-04-27T03:33:12.267Z] DTSTART (from ticket): 20260427T064000Z [2026-04-27T03:33:12.267Z] EVENT generated for ticket #6 [2026-04-27T03:33:12.267Z] --- Processing ticket #7 raw: 谢宁宁,2026年04月28日16:48开,溧阳站-湖州东站,C3005次列车,2车3D号,二等座,成人票,票价54.0元, [2026-04-27T03:33:12.267Z] Parsed REGEX matches => date:true route:true train:true seat:true gate:true [2026-04-27T03:33:12.267Z] Parsed fields -> from: "溧阳" to: "湖州东" train: "C3005" date: 2026-04-28 16:48 seat: "2车3D号" gate: "" [2026-04-27T03:33:12.267Z] Event title: "溧阳C3005湖州东" [2026-04-27T03:33:12.267Z] Ticket YMD num: 20260428 [2026-04-27T03:33:12.267Z] Fetching schedule: https://checi.aken.cc/?keyword=C3005&date=20260428 [2026-04-27T03:33:12.934Z] Schedule fetch status: 200 [2026-04-27T03:33:12.934Z] Schedule data length: 8 [2026-04-27T03:33:12.934Z] Matched end station?: true (湖州东) [2026-04-27T03:33:12.934Z] DTEND from schedule: 20260428T092700Z (arrive_time=17:27) [2026-04-27T03:33:12.934Z] DTSTART (from ticket): 20260428T084800Z [2026-04-27T03:33:12.934Z] EVENT generated for ticket #7 [2026-04-27T03:33:12.934Z] Total events generated: 7 [2026-04-27T03:33:12.934Z] ICS content generated (length: 3089) [2026-04-27T03:33:13.162Z] 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:822593f1-319b-4dcb-8d8d-e41b3cc64d2b 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:7d54f946-9d06-4097-aec5-7e36f3766984 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:256628de-dbb1-4438-ba16-69cc72b6d02a 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:7a6830c4-4041-4fe8-9cfc-0782bb8bb3f6 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:ce140300-3906-455e-870d-a12ca7a5483b 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:9fe582c6-d9fb-4bff-8421-73c97bcad9a4 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:cc59629f-f3c0-4c6e-bcd7-8115bb28851b 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