#!/usr/bin/perl # # 您可以使用這個檔案應付鐵路局網址的異動 # 或是以擅於字串處理的 perl 修正以下程式碼 :) # #VictorHsieh 2003.02.11 use lib '/home/bbs/bin'; use LocalVars; use vars qw/ %opt %station_num @arg $command $addr/; use strict; $addr = "http://passenger.tra.gov.tw/ap/index.asp"; @arg = split ' ', ; map { /(.+)=(.+)/ and $opt{$1} = $2 } grep /.+=.+/, @arg; station_init(); translate(); $command = "MIval=Train_Time&encode=Big5&action=on"; map { $command .= "&$_=$opt{$_}"} keys %opt; exec "$LYNX -dump -assume_charset=big5 -nolist \"$addr?$command\""; # 將 page.c 中的格式轉為鐵路局所使用的格式 sub translate{ change_opt('from-station', 'Station1'); change_opt('to-station', 'Station2'); change_opt('from-time', 'From_Time'); change_opt('to-time', 'To_Time'); change_opt('type', 'Type'); change_opt('tt', 'Time'); change_opt('date','Departure_Date'); change_opt('path', 'line'); } # 轉換參數的表示法 sub change_opt{ my ($old, $new) = @_; if(defined $opt{$old}){ if( $old =~ /station/ ){ $opt{$old} = $station_num{$opt{$old}}; } elsif( $old =~ /type/ ){ $opt{$old} = ($opt{$old} eq 'fast')? 'F' : 'S'; } elsif( $old =~ /tt/ ){ $opt{$old} = ($opt{$old} eq 'start')? 'D' : 'A'; } elsif( $old =~ /date/ ){ my ($sec, $min, $hour, $mday, $mon, $year) = gmtime; $mday = $mday + $opt{$old}; $mon++; $opt{$old} = join '/', ($year+1900, ($mon>9)? $mon : "0$mon", ($mday>9)? $mday : "0$mday"); } elsif( $old =~ /path/ ){ my @line = qw/ mainwest maineast mainsouth pin innerbay gg/; $opt{$old} = $line[$opt{$old}-1]; } $opt{$new} = $opt{$old} and delete $opt{$old}; } } # 各站代碼對應 sub station_init{ %station_num = ( "基隆" => 1001, "八堵" => 1002, "七堵" => 1003, "五堵" => 1004, "汐止" => 1005, "南港" => 1006, "松山" => 1007, "台北" => 1008, "萬華" => 1009, "板橋" => 1011, "樹林" => 1012, "山佳" => 1013, "鶯歌" => 1014, "桃園" => 1015, "內壢" => 1016, "中壢" => 1017, "埔心" => 1018, "楊梅" => 1019, "富岡" => 1020, "湖口" => 1021, "新豐" => 1022, "竹北" => 1023, "新竹" => 1025, "香山" => 1026, "崎頂" => 1027, "竹南" => 1028, "談文" => 1102, "大山" => 1104, "後龍" => 1105, "龍港" => 1106, "白沙屯" => 1107, "新埔" => 1108, "通霄" => 1109, "苑裡" => 1110, "日南" => 1111, "大甲" => 1112, "臺中港" => 1113, "清水" => 1114, "沙鹿" => 1115, "龍井" => 1116, "大肚" => 1117, "追分" => 1118, "彰化" => 1120, "花壇" => 1202, "員林" => 1203, "永靖" => 1204, "社頭" => 1205, "田中" => 1206, "二水" => 1207, "林內" => 1208, "石榴" => 1209, "斗六" => 1210, "斗南" => 1211, "石龜" => 1212, "大林" => 1213, "民雄" => 1214, "嘉義" => 1215, "水上" => 1217, "南靖" => 1218, "後壁" => 1219, "新營" => 1220, "柳營" => 1221, "林鳳營" => 1222, "隆田" => 1223, "拔林" => 1224, "善化" => 1225, "新市" => 1226, "永康" => 1227, "台南" => 1228, "保安" => 1229, "中洲" => 1230, "大湖" => 1231, "路竹" => 1232, "岡山" => 1233, "橋頭" => 1234, "楠梓" => 1235, "左營" => 1236, "高雄" => 1238, "大橋" => 1239, "造橋" => 1302, "豐富" => 1304, "苗栗" => 1305, "南勢" => 1307, "銅鑼" => 1308, "三義" => 1310, "泰安" => 1314, "后里" => 1315, "豐原" => 1317, "潭子" => 1318, "台中" => 1319, "烏日" => 1320, "成功\" => 1321, "大慶" => 1322, "太原" => 1323, "鳳山" => 1402, "後庄" => 1403, "九曲堂" => 1404, "六塊厝" => 1405, "屏東" => 1406, "吉安" => 1602, "志學" => 1604, "平和" => 1605, "壽豐" => 1606, "豐田" => 1607, "溪口" => 1608, "南平" => 1609, "鳳林" => 1610, "萬榮" => 1611, "光復" => 1612, "大富" => 1613, "富源" => 1614, "瑞北" => 1615, "瑞穗" => 1616, "三民" => 1617, "玉里" => 1619, "安通" => 1620, "東里" => 1621, "東竹" => 1622, "富里" => 1623, "池上" => 1624, "海瑞" => 1625, "關山" => 1626, "月美" => 1627, "瑞和" => 1628, "瑞源" => 1629, "鹿野" => 1630, "山里" => 1631, "台東" => 1632, "永樂" => 1703, "東澳" => 1704, "南澳" => 1705, "武塔" => 1706, "漢本" => 1708, "和平" => 1709, "和仁" => 1710, "崇德" => 1711, "新城" => 1712, "景美" => 1713, "北埔" => 1714, "花蓮" => 1715, "暖暖" => 1802, "四腳亭" => 1803, "瑞芳" => 1804, "侯硐" => 1805, "三貂嶺" => 1806, "牡丹" => 1807, "雙溪" => 1808, "貢寮" => 1809, "福隆" => 1810, "石城" => 1811, "大里" => 1812, "大溪" => 1813, "龜山" => 1814, "外澳" => 1815, "頭城" => 1816, "頂埔" => 1817, "礁溪" => 1818, "四城" => 1819, "宜蘭" => 1820, "二結" => 1821, "中里" => 1822, "羅東" => 1823, "冬山" => 1824, "新馬" => 1825, "蘇澳新站" => 1826, "蘇澳" => 1827, "大華" => 1903, "十分" => 1904, "望古" => 1905, "嶺腳" => 1906, "平溪" => 1907, "菁桐 " => 1908, "竹中" => 2203, "上員" => 2204, "竹東" => 2205, "橫山" => 2206, "九讚頭" => 2207, "合興" => 2208, "南河" => 2209, "內灣" => 2210, "榮華" => 2211, "源泉" => 2702, "濁水" => 2703, "龍泉" => 2704, "集集" => 2705, "水里" => 2706, "車埕" => 2707, ); }