summaryrefslogtreecommitdiffstats
path: root/util/railway_wrapper.pl
blob: b6885173a6edb5bcaa25e14b3b10cd8f70350be7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/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 ' ', <STDIN>;
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,
    );
}