-
Notifications
You must be signed in to change notification settings - Fork 1
/
extract.py
executable file
·98 lines (77 loc) · 2.68 KB
/
extract.py
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
#!/usr/bin/env python
import os, json, xml, getopt, sys, re
from xml.dom.minidom import parse, parseString
def parse(file):
results = []
i = 0
for line in open(file,'r').readlines():
# determine valid flight or not
boolean = valid_flight(line)
if(boolean == True):
flight = {}
flight['segments'] = []
flight['fares'] = []
xml = parseString(line)
#print line
# parse segments
segments = xml.getElementsByTagName("FlightSegment")
for segment in segments:
segment_array = {}
segment_array['Origin'] = segment.getAttribute("Origin")
segment_array['Destination'] = segment.getAttribute("Destination")
segment_array['CarrierCode'] = segment.getAttribute("CarrierCode")
segment_array['FlightNumber'] = segment.getAttribute("FlightNumber")
segment_array['DepartureDateTime'] = segment.getAttribute("DepartureDateTime")
segment_array['ArrivalDateTime'] = segment.getAttribute("ArrivalDateTime")
segment_array['BookingCode'] = segment.getAttribute("BookingCode")
segment_array['CabinClass'] = segment.getAttribute("CabinClass")
segment_array['SeatsRemaining'] = segment.getAttribute("SeatsRemaining")
flight['segments'].append(segment_array)
# parse fares
fares = xml.getElementsByTagName("Fare")
for fare in fares:
fare_array = {}
fare_array['PassengerCode'] = fare.getAttribute("PassengerCode")
fare_array['BaseAmount'] = fare.getAttribute("BaseAmount")
fare_array['TaxAmount'] = fare.getAttribute("TaxAmount")
fare_array['Currency'] = fare.getAttribute("Currency")
fare_array['Refundable'] = fare.getAttribute("Refundable")
fare_array['ETicketable'] = fare.getAttribute("ETicketable")
flight['fares'].append(fare_array)
results.append(flight)
# first 20 flights
if i > 20:
print results
sys.exit(0)
else:
i = i + 1
return results
def valid_flight(line):
if "AirItinerary" in line:
return True
else:
return None
def usage():
print "./extract.py -f <target> -n <number> -h]"
print " -f|--file <file to parse>"
print " -n|--number <number of results>"
print " -h|--help Shows this help\n"
def main(argv):
try:
opts, args = getopt.getopt(argv, "hf:n:", ["help", "file=", "number="])
except getopt.GetoptError:
usage()
sys.exit(-1)
file = None
for o, a in opts:
if o in ("-h", "--help"):
usage()
sys.exit(0)
if o in ("f", "--file"):
file = a
if file == None:
usage()
sys.exit(-1)
results = parse(file)
if __name__ == "__main__":
main(sys.argv[1:])