Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #
- # tracker.py
- #
- # kevinabrandon@gmail.com
- #
- import sys
- from time import sleep
- from twitter import *
- import flightdata
- import screenshot
- from configparser import ConfigParser
- from string import Template
- import geomath
- # Read the configuration file for this application.
- parser = ConfigParser()
- parser.read('config.ini')
- # Assign AboveTustin variables.
- abovetustin_distance_alarm = int(parser.get('abovetustin', 'distance_alarm')) # The alarm distance in miles.
- abovetustin_elevation_alarm = int(parser.get('abovetustin', 'elevation_alarm')) # The angle in degrees that indicates if the airplane is overhead or not.
- abovetustin_wait_x_updates = int(parser.get('abovetustin', 'wait_x_updates')) # Number of updates to wait after the airplane has left the alarm zone before tweeting.
- abovetustin_sleep_time = float(parser.get('abovetustin', 'sleep_time')) # Time between each loop.
- # Assign Twitter variables.
- twitter_consumer_key = parser.get('twitter', 'consumer_key')
- twitter_consumer_secret = parser.get('twitter', 'consumer_secret')
- twitter_access_token = parser.get('twitter', 'access_token')
- twitter_access_token_secret = parser.get('twitter', 'access_token_secret')
- # Login to twitter.
- twit = Twitter(auth=(OAuth(twitter_access_token, twitter_access_token_secret, twitter_consumer_key, twitter_consumer_secret)))
- # Given an aircraft 'a' tweet.
- # If we have a screenshot, upload it to twitter with the tweet.
- def Tweet(a, havescreenshot):
- # compile the template arguments
- templateArgs = dict()
- templateArgs['flight'] = a.flight
- if templateArgs['flight'] == 'N/A':
- templateArgs['flight'] = a.hex
- templateArgs['flight'] = templateArgs['flight'].replace(" ", "")
- templateArgs['icao'] = a.hex
- templateArgs['icao'] = templateArgs['icao'].replace(" ", "")
- templateArgs['dist'] = "%.1f" % a.distance
- templateArgs['alt'] = a.altitude
- templateArgs['el'] = "%.1f" % a.el
- templateArgs['az'] = "%.1f" % a.az
- templateArgs['heading'] = geomath.HeadingStr(a.track)
- templateArgs['speed'] = "%.1f" % a.speed
- templateArgs['time'] = a.time.strftime('%H:%M:%S')
- templateArgs['squawk'] = a.squawk
- templateArgs['vert_rate'] = a.vert_rate
- templateArgs['rssi'] = a.rssi
- tweet = Template(parser.get('tweet', 'tweet_template')).substitute(templateArgs)
- #conditional hashtags:
- hashtags = []
- flights_to_hashtags = {
- '!': " #Inconnu",
- '@FlightAwareADSB:': " #Inconnu",
- '~180a9f': " #Inconnu",
- '~217dbb': " #Inconnu",
- '~2a45b8': " #Inconnu",
- '~7ec161': " #Inconnu",
- '~84e522': " #Inconnu",
- '~8b403d': " #Inconnu",
- '~9365d6': " #Inconnu",
- '~ac7d3d': " #Inconnu",
- '~de755e': " #Inconnu",
- '02a041': " #Inconnu",
- '3911d3': " #Inconnu",
- '39470b': " #Inconnu",
- '39810000': " #Inconnu",
- '39ad12': " #Inconnu",
- '3AMGA': " #Inconnu",
- '3c5cac': " #Inconnu",
- '3cd950': " #Inconnu",
- '400796': " #Inconnu",
- '43ea86': " #Inconnu",
- '44ccd8': " #Inconnu",
- '45acc5': " #Inconnu",
- '484acc': " #Inconnu",
- '484c1b': " #Inconnu",
- '49523a': " #Inconnu",
- '4ca4f5': " #Inconnu",
- '4ca624': " #Inconnu",
- '4ca99c': " #Inconnu",
- '4d029e': " #Inconnu",
- '7TVNM': " #Inconnu",
- '9HSMI': " #Inconnu",
- 'a': " #Inconnu",
- 'AAB099': " #Inconnu",
- 'AAB103': " #Inconnu",
- 'AAB123': " #Inconnu",
- 'AAB266': " #Inconnu",
- 'AAB767': " #Inconnu",
- 'AAB816': " #Inconnu",
- 'AAB854': " #Inconnu",
- 'AAB872': " #Inconnu",
- 'AAB991': " #Inconnu",
- 'ABR431': " #InconnuDublinChambery",
- 'ADN16A': " #Inconnu",
- 'AEA433': " #EUROPABarcelonaTel-aviv",
- 'AEA841': " #EUROPA",
- 'AEA857': " #EUROPAPalmadeMallorcaBorlange",
- 'AEA882': " #EUROPA",
- 'AEA934': " #EUROPASevillaVienna",
- 'AEA945': " #EUROPA",
- 'AEE2BR': " #AEGEANAthensBrussels",
- 'AEE623': " #AEGEANBrusselsAthens",
- 'AFR1336': " #AIRFRANSStrasbourgAmsterdam",
- 'AFR487': " #AIRFRANSAmmanParis",
- 'AHO007X': " #AirHamburg",
- 'AHO318Q': " #AirHamburg",
- 'AHO494D': " #AirHamburg",
- 'AHO495V': " #AirHamburg",
- 'AHO577E': " #AirHamburg",
- 'AHO714W': " #AirHamburg",
- 'AHO724W': " #AirHamburg",
- 'AHO767B': " #AirHamburg",
- 'airtelis': " #AIRLIFT",
- 'AMC3422': " #AIRMALTA",
- 'AMC3426': " #AIRMALTAMaltaLuxemburg",
- 'AMC394': " #AIRMALTAMaltaAmsterdam",
- 'AMC394A': " #AIRMALTAMaltaAmsterdam",
- 'AMC420': " #AIRMALTAMaltaBrussels",
- 'AMC421': " #AIRMALTABrusselsMalta",
- 'AMC422': " #AIRMALTAMaltaBrussels",
- 'ANA1952': " #ALLNIPPONGenevaFukuoka",
- 'AOJ48L': " #Inconnu",
- 'AOJ75C': " #Inconnu",
- 'APX1C': " #Inconnu",
- 'ASJ725': " #Inconnu",
- 'ATL8F': " #Inconnu",
- 'ATV017G': " #Inconnu",
- 'ATV031G': " #Inconnu",
- 'ATV202G': " #Inconnu",
- 'AUA418G': " #AUSTRIANParisVienna",
- 'avarie?': " #S.A.",
- 'AWC171': " #InconnuLondonCalvi",
- 'AWC201Y': " #Inconnu",
- 'AWU928': " #SYLT-AIR",
- 'AXY2710': " #Inconnu",
- 'AYY102': " #Inconnu",
- 'AYY151': " #Inconnu",
- 'AZA108': " #ALITALIARomeAmsterdam",
- 'AZA11Y': " #ALITALIAMilanAmsterdam",
- 'AZA120': " #ALITALIAMilanAmsterdam",
- 'AZA132': " #ALITALIARomeAmsterdam",
- 'AZA148': " #ALITALIAMilanBrussels",
- 'AZA150': " #ALITALIAMilanBrussels",
- 'AZA154': " #ALITALIAMilanBrussels",
- 'AZA156': " #ALITALIARomeBrussels",
- 'AZA211': " #ALITALIALondonRome",
- 'AZA215': " #ALITALIALondonMilan",
- 'AZA217': " #ALITALIALondonMilan",
- 'AZA219': " #ALITALIALondonMilan",
- 'AZA59E': " #ALITALIABrusselsRome",
- 'AZA70Y': " #ALITALIATorinoAmsterdam",
- 'AZA72B': " #ALITALIALondonMilan",
- 'AZA74F': " #ALITALIARomeAmsterdam",
- 'AZA82J': " #ALITALIALondonMilan",
- 'AZA88Z': " #ALITALIARomeBrussels",
- 'BAF211': " #Inconnu",
- 'BAF212': " #Inconnu",
- 'BAF617': " #Inconnu",
- 'BAW14R': " #SPEEDBIRDLondonZurich",
- 'BAW16GM': " #SPEEDBIRDLondonMilan",
- 'BAW2649': " #SPEEDBIRDTiranaLondon",
- 'BAW364': " #SPEEDBIRDLondonLyon",
- 'BAW568': " #SPEEDBIRDLondonMilan",
- 'BAW62G': " #SPEEDBIRDLondonMulhouse",
- 'BAW64G': " #SPEEDBIRDLondonMulhouse",
- 'BAW710': " #SPEEDBIRDLondonZurich",
- 'BAW712': " #SPEEDBIRDLondonZurich",
- 'BAW714T': " #SPEEDBIRDLondonZurich",
- 'BAW718': " #SPEEDBIRDLondonZurich",
- 'BAW720T': " #SPEEDBIRDLondonZurich",
- 'BAW748': " #SPEEDBIRDLondonMulhouse",
- 'BAW756': " #SPEEDBIRDLondonMulhouse",
- 'BCS1730': " #InconnuBrusselsLyon",
- 'BCS2109': " #InconnuLondonLeipzig",
- 'BCS308': " #InconnuBrusselsBergamo",
- 'BCS4908': " #InconnuMulhouseBrussels",
- 'BCY061P': " #CITY-IRELAND",
- 'BCY80A': " #CITY-IRELANDFlorenceLondon",
- 'BEL10D': " #BrusselsAirlinesMilanBrussels",
- 'BEL12F': " #BrusselsAirlinesMilanBrussels",
- 'BEL13C': " #BrusselsAirlinesCataniaBrussels",
- 'BEL13P': " #BrusselsAirlinesPalermoBrussels",
- 'BEL14Q': " #BrusselsAirlinesFlorenceBrussels",
- 'BEL18N': " #BrusselsAirlinesNiceBrussels",
- 'BEL19T': " #BrusselsAirlines",
- 'BEL1GV': " #BrusselsAirlinesBrusselsCatania",
- 'BEL1LY': " #BrusselsAirlinesBrusselsGeneva",
- 'BEL1TA': " #BrusselsAirlinesBrusselsCatania",
- 'BEL20B': " #BrusselsAirlinesMilanBrussels",
- 'BEL22N': " #BrusselsAirlinesNiceBrussels",
- 'BEL24N': " #BrusselsAirlinesNiceBrussels",
- 'BEL2GV': " #BrusselsAirlinesBrusselsGeneva",
- 'BEL2NB': " #BrusselsAirlines",
- 'BEL2WA': " #BrusselsAirlinesBrusselsMulhouse",
- 'BEL3107': " #BrusselsAirlinesBrusselsOlbia",
- 'BEL3108': " #BrusselsAirlinesOlbiaBrussels",
- 'BEL3183': " #BrusselsAirlinesBrusselsRome",
- 'BEL3184': " #BrusselsAirlinesRomeBrussels",
- 'BEL31P': " #BrusselsAirlinesNaplesBrussels",
- 'BEL3213': " #BrusselsAirlines",
- 'BEL3214': " #BrusselsAirlines",
- 'BEL352': " #BrusselsAirlinesKinshasaDouala",
- 'BEL357': " #BrusselsAirlinesBrusselsKinshasa",
- 'BEL3578': " #BrusselsAirlinesAjaccioBrussels",
- 'BEL358': " #BrusselsAirlinesKinshasaBrussels",
- 'BEL3580': " #BrusselsAirlinesBastiaBrussels",
- 'BEL3581': " #BrusselsAirlines",
- 'BEL359': " #BrusselsAirlinesBrusselsLuanda",
- 'BEL35C': " #BrusselsAirlinesColumbusBrussels",
- 'BEL3615': " #BrusselsAirlinesBrusselsNice",
- 'BEL3616': " #BrusselsAirlinesNiceBrussels",
- 'BEL36V': " #BrusselsAirlinesVeniceBrussels",
- 'BEL371': " #BrusselsAirlinesBrusselsDouala",
- 'BEL372': " #BrusselsAirlinesYaoundeDouala",
- 'BEL3GV': " #BrusselsAirlinesBrusselsGeneva",
- 'BEL3LY': " #BrusselsAirlinesBrusselsLyon",
- 'BEL3MR': " #BrusselsAirlinesBrusselsMarseille",
- 'BEL469': " #BrusselsAirlinesBrusselsEntebbe",
- 'BEL49U': " #BrusselsAirlinesAlicanteBrussels",
- 'BEL4FC': " #BrusselsAirlinesBrusselsRome",
- 'BEL4GV': " #BrusselsAirlinesBrusselsGeneva",
- 'BEL4SM': " #BrusselsAirlinesBrusselsMulhouse",
- 'BEL56L': " #BrusselsAirlinesMilanoBrussels",
- 'BEL579': " #BrusselsAirlinesBrusselsBastia",
- 'BEL58M': " #BrusselsAirlinesMilanoBrussels",
- 'BEL58R': " #BrusselsAirlinesHeraklionBrussels",
- 'BEL5FC': " #BrusselsAirlinesBrusselsRome",
- 'BEL5HR': " #BrusselsAirlinesBrusselsNice",
- 'BEL5RN': " #BrusselsAirlinesBrusselsTorino",
- 'BEL67K': " #BrusselsAirlines",
- 'BEL6CE': " #BrusselsAirlinesBrusselsNice",
- 'BEL6DR': " #BrusselsAirlinesBrusselsMilano",
- 'BEL6GV': " #BrusselsAirlinesBrusselsGeneva",
- 'BEL6Q': " #BrusselsAirlinesBolognaBrussels",
- 'BEL706': " #BrusselsAirlinesMulhouseBrussels",
- 'BEL712': " #BrusselsAirlinesGenevaBrussels",
- 'BEL716': " #BrusselsAirlinesGenevaBrussels",
- 'BEL720': " #BrusselsAirlinesGenevaBrussels",
- 'BEL722': " #BrusselsAirlinesGenevaBrussels",
- 'BEL72L': " #BrusselsAirlinesMulhouseBrussels",
- 'BEL74C': " #BrusselsAirlinesBarcelonaBrussels",
- 'BEL76F': " #BrusselsAirlinesRomeBrussels",
- 'BEL77B': " #BrusselsAirlinesMilanoBrussels",
- 'BEL7LY': " #BrusselsAirlinesBrusselsLyon",
- 'BEL7MR': " #BrusselsAirlinesBrusselsMarseille",
- 'BEL82F': " #BrusselsAirlinesRomeBrussels",
- 'BEL88F': " #BrusselsAirlinesRomeBrussels",
- 'BEL88L': " #BrusselsAirlinesLyonBrussels",
- 'BEL8FC': " #BrusselsAirlinesBrusselsRome",
- 'BEL8GL': " #BrusselsAirlinesMarseilleGenoa",
- 'BEL92L': " #BrusselsAirlinesLyonBrussels",
- 'BEL94L': " #BrusselsAirlinesBastiaBrussels",
- 'BEL9902': " #BrusselsAirlinesNewYorkBrussels",
- 'BEL9908': " #BrusselsAirlinesPragueBrussels",
- 'BEL9GV': " #BrusselsAirlinesBrusselsGeneva",
- 'BEL9LR': " #BrusselsAirlinesBrusselsFlorence",
- 'BER100P': " #AIRBERLINStuttgartHamburg",
- 'BER1HE': " #AIRBERLINGenevaDuesseldorf",
- 'BER1ZN': " #AIRBERLINBarcelonaDuesseldorf",
- 'BER302U': " #AIRBERLINFlorenceDuesseldorf",
- 'BER34D': " #AIRBERLIN",
- 'BER425W': " #AIRBERLIN",
- 'BER4AA': " #AIRBERLINBarcelonaDuesseldorf",
- 'BER585E': " #AIRBERLINOlbiaDuesseldorf",
- 'BER5KE': " #AIRBERLINMilanDuesseldorf",
- 'BER5SC': " #AIRBERLIN",
- 'BER5YA': " #AIRBERLINDuesseldorfBarcelona",
- 'BER668E': " #AIRBERLINFlorenceDuesseldorf",
- 'BER6M': " #AIRBERLINBarcelonaDuesseldorf",
- 'BER6SQ': " #AIRBERLINGenevaDuesseldorf",
- 'BER8331': " #AIRBERLINViennaHamburg",
- 'BER8622': " #AIRBERLINDuesseldorfGeneva",
- 'BER8626': " #AIRBERLINNuernbergBrindisi",
- 'BER8940': " #AIRBERLINHamburgHelsinki",
- 'BER8946': " #AIRBERLINDuesseldorfBarcelona",
- 'BER9RH': " #AIRBERLIN",
- 'BFD06K': " #Inconnu",
- 'BFD11T': " #Inconnu",
- 'BFG209': " #Inconnu",
- 'BFG216': " #Inconnu",
- 'BGA131F': " #InconnuHamburgToulouse",
- 'BKK11K': " #Inconnu",
- 'BLJ54S': " #Inconnu",
- 'BPA8376': " #BLUEPANOROMA",
- 'BZE06B': " #BRAZILAIR",
- 'CAJ1508': " #Inconnu",
- 'CAZ501': " #Inconnu",
- 'CCM790P': " #CORSICA",
- 'CCM791P': " #CORSICA",
- 'CCM792B': " #CORSICA",
- 'CCM793B': " #CORSICA",
- 'CEF549': " #Inconnu",
- 'CFE1AX': " #FLYER",
- 'CFE3DW': " #FLYERLondonFlorence",
- 'CFE45J': " #FLYERLondonZurich",
- 'CFE5EF': " #FLYER",
- 'CFE7307': " #FLYERLondonMilan",
- 'CFE7309': " #FLYERLondonMilan",
- 'CFE8KH': " #FLYER",
- 'CFE8TR': " #FLYERLondonFlorence",
- 'CFE94C': " #FLYERLondonZurich",
- 'CFG1ML': " #CONDORStuttgartSantaCruzDeLaPalma",
- 'CFG1MY': " #CONDORDuesseldorfPalmadeMallorca",
- 'CFG1PW': " #CONDORPalmadeMallorcaDuesseldorf",
- 'CFG1TK': " #CONDORPalmadeMallorcaDuesseldorf",
- 'CFG2CH': " #CONDORStuttgartGranCanaria",
- 'CFG2FA': " #CONDORTenerifeLeipzig",
- 'CFG2HD': " #CONDORDuesseldorfIbiza",
- 'CFG2KE': " #CONDOR",
- 'CFG2LV': " #CONDORPalmadeMallorcaHannover",
- 'CFG2MW': " #CONDORStuttgartFuerteventura",
- 'CFG2PL': " #CONDORPalmadeMallorcaBerlin",
- 'CFG3AP': " #CONDORPalmadeMallorcaDuesseldorf",
- 'CFG3CE': " #CONDORMunichGranCanaria",
- 'CFG3LK': " #CONDORStuttgartFunchal",
- 'CFG3MV': " #CONDORDuesseldorfBerlin",
- 'CFG3ZY': " #CONDORHeraklionLeipzig",
- 'CFG4ED': " #CONDOR",
- 'CFG4PK': " #CONDORHeraklionDuesseldorf",
- 'CFG5CK': " #CONDORStuttgartRhodos",
- 'CFG5VF': " #CONDORDuesseldorfPalmadeMallorca",
- 'CFG5WP': " #CONDORPalmadeMallorcaDuesseldorf",
- 'CFG6AF': " #CONDORDuesseldorfPalmadeMallorca",
- 'CFG6CE': " #CONDORPalmadeMallorcaDuesseldorf",
- 'CFG6LY': " #CONDORPalmadeMallorcaDuesseldorf",
- 'CFG8LC': " #CONDORPalmadeMallorcaHamburg",
- 'CFG8LD': " #CONDORDuesseldorfPalmadeMallorca",
- 'CFG8ME': " #CONDORFrankfurtTenerife",
- 'CFG8TA': " #CONDORFuerteventuraBerlin",
- 'CFG9KX': " #CONDORPalmadeMallorcaHannover",
- 'CLS502': " #Inconnu",
- 'CLS604': " #Inconnu",
- 'CND216': " #InconnuOhridAntalya",
- 'D6132': " #Inconnu",
- 'DAH2062': " #AIRALGERIEAlgierBrussels",
- 'DAH2063': " #AIRALGERIEBrusselsAlgier",
- 'DAL407': " #DELTANewYorkZurich",
- 'DAL419': " #DELTAMilanoNewYork",
- 'DBEAR': " #Inconnu",
- 'DBJKP': " #Inconnu",
- 'DBONN': " #Inconnu",
- 'DCAWX': " #Inconnu",
- 'DCBCT': " #Inconnu",
- 'DCEER': " #Inconnu",
- 'DCEUS': " #Inconnu",
- 'DCHMS': " #Inconnu",
- 'DCIFM': " #Inconnu",
- 'DCPOS': " #Inconnu",
- 'de': " #Inconnu",
- 'DE1814T': " #Inconnu",
- 'DEEZU': " #Inconnu",
- 'DELAO': " #Inconnu",
- 'DELZC': " #Inconnu",
- 'DESEX': " #Inconnu",
- 'DFSSS': " #Inconnu",
- 'DGBFS': " #Inconnu",
- 'DHK082': " #Inconnu",
- 'DHK308': " #Inconnu",
- 'DIDPL': " #Inconnu",
- 'DIDWC': " #Inconnu",
- 'DIMAH': " #Inconnu",
- 'DIOBO': " #Inconnu",
- 'DIPVD': " #Inconnu",
- 'DISAR': " #Inconnu",
- 'DITAN': " #Inconnu",
- 'DITIM': " #Inconnu",
- 'DIVIV': " #Inconnu",
- 'DLH2F': " #LUFTHANSAMunichToulouse",
- 'DLH51P': " #LUFTHANSAFrankfurtMadrid",
- 'DLH54U': " #LUFTHANSAMarseilleFrankfurt",
- 'DLH5K': " #LUFTHANSAGenevaFrankfurt",
- 'DLH66A': " #LUFTHANSALyonFrankfurt",
- 'DLH72T': " #LUFTHANSABarcelonaFrankfurt",
- 'DLH83U': " #LUFTHANSAFrankfurtBarcelona",
- 'DLH84U': " #LUFTHANSAMunichParis",
- 'DLH9K': " #LUFTHANSAGenevaFrankfurt",
- 'DTR431': " #DANISH",
- 'DTR635': " #DANISH",
- 'DUK3AMB': " #Inconnu",
- 'DUK7AMB': " #Inconnu",
- 'ECA111': " #EUROCYPRIA",
- 'ECA333': " #EUROCYPRIA",
- 'ECA456': " #EUROCYPRIA",
- 'ECA555': " #EUROCYPRIA",
- 'ECA777': " #EUROCYPRIA",
- 'EFD555': " #Inconnu",
- 'EOA001': " #Inconnu",
- 'et': " #Inconnu",
- 'ETH3717': " #ETHIOPIANLiegeLagos",
- 'ETH3721': " #ETHIOPIANLiegeAddisAbaba",
- 'ETH3725': " #ETHIOPIANLiegeLagos",
- 'ETH701': " #ETHIOPIANLondonAddisAbaba",
- 'ETH704': " #ETHIOPIANAddisAbabaParis",
- 'ETH734': " #ETHIOPIANMilanoBrussels",
- 'ETI821Z': " #Inconnu",
- 'EWG16K': " #EUROWINGS",
- 'EWG1KB': " #EUROWINGSGenevaDuesseldorf",
- 'EWG1U': " #EUROWINGSColognePalmadeMallorca",
- 'EWG1UY': " #EUROWINGSMilanoDuesseldorf",
- 'EWG1VC': " #EUROWINGSMalagaDuesseldorf",
- 'EWG1WN': " #EUROWINGS",
- 'EWG1XA': " #EUROWINGSPalmadeMallorcaHamburg",
- 'EWG1XP': " #EUROWINGS",
- 'EWG20A': " #EUROWINGSParisDuesseldorf",
- 'EWG2A': " #EUROWINGS",
- 'EWG2AN': " #EUROWINGSPalmadeMallorcaHamburg",
- 'EWG2K': " #EUROWINGSPalmadeMallorcaDuesseldorf",
- 'EWG2PN': " #EUROWINGS",
- 'EWG31Z': " #EUROWINGSDuesseldorfMilano",
- 'EWG3CH': " #EUROWINGSBarcelonaCologne",
- 'EWG3FE': " #EUROWINGSBilbaoDuesseldorf",
- 'EWG3NK': " #EUROWINGSDuesseldorfIbiza",
- 'EWG3TL': " #EUROWINGSMunsterPalmadeMallorca",
- 'EWG3VA': " #EUROWINGSMilanoDuesseldorf",
- 'EWG3YT': " #EUROWINGS",
- 'EWG441': " #EUROWINGS",
- 'EWG44G': " #EUROWINGS",
- 'EWG4AK': " #EUROWINGSDuesseldorfLyon",
- 'EWG4BB': " #EUROWINGS",
- 'EWG4CP': " #EUROWINGS",
- 'EWG4CW': " #EUROWINGSNiceHamburg",
- 'EWG4HT': " #EUROWINGSPalmadeMallorcaDuesseldorf",
- 'EWG4JN': " #EUROWINGSLyonDuesseldorf",
- 'EWG4ZG': " #EUROWINGSIbizaDuesseldorf",
- 'EWG50C': " #EUROWINGSLyonDuesseldorf",
- 'EWG50Z': " #EUROWINGS",
- 'EWG526': " #EUROWINGSCologneBarcelona",
- 'EWG53Z': " #EUROWINGSIbizaCologne",
- 'EWG547': " #EUROWINGS",
- 'EWG5612': " #EUROWINGS",
- 'EWG5613': " #EUROWINGS",
- 'EWG586': " #EUROWINGSColognePalmadeMallorca",
- 'EWG587': " #EUROWINGSPalmadeMallorcaCologne",
- 'EWG589': " #EUROWINGSPalmadeMallorcaCologne",
- 'EWG591': " #EUROWINGS",
- 'EWG5KM': " #EUROWINGSCologneIbiza",
- 'EWG5T': " #EUROWINGSDuesseldorfPalmadeMallorca",
- 'EWG5WP': " #EUROWINGSRomeDuesseldorf",
- 'EWG6806': " #EUROWINGSPalmadeMallorcaMunster",
- 'EWG6808': " #EUROWINGSPalmadeMallorcaPaderborn",
- 'EWG6809': " #EUROWINGSPaderbornPalmadeMallorca",
- 'EWG6812': " #EUROWINGSPalmadeMallorcaDortmund",
- 'EWG6826': " #EUROWINGS",
- 'EWG6906': " #EUROWINGS",
- 'EWG6BA': " #EUROWINGS",
- 'EWG6LR': " #EUROWINGSNuernbergHamburg",
- 'EWG6MZ': " #EUROWINGSPalmadeMallorcaDuesseldorf",
- 'EWG6PV': " #EUROWINGSIbizaHamburg",
- 'EWG6UX': " #EUROWINGS",
- 'EWG71N': " #EUROWINGS",
- 'EWG77C': " #EUROWINGSDuesseldorfPalmadeMallorca",
- 'EWG7EV': " #EUROWINGSDuesseldorfValencia",
- 'EWG7FR': " #EUROWINGSAlicanteDuesseldorf",
- 'EWG7G': " #EUROWINGSPalmadeMallorcaDuesseldorf",
- 'EWG7LZ': " #EUROWINGSGenevaDuesseldorf",
- 'EWG7UH': " #EUROWINGS",
- 'EWG7WZ': " #EUROWINGSDuesseldorfPalmadeMallorca",
- 'EWG7XV': " #EUROWINGS",
- 'EWG7ZK': " #EUROWINGS",
- 'EWG7ZU': " #EUROWINGSPalmadeMallorcaDuesseldorf",
- 'EWG83G': " #EUROWINGSManchesterDuesseldorf",
- 'EWG83T': " #EUROWINGS",
- 'EWG84R': " #EUROWINGS",
- 'EWG8GP': " #EUROWINGS",
- 'EWG8HG': " #EUROWINGSDuesseldorfPalmadeMallorca",
- 'EWG8KW': " #EUROWINGSMarseilleDuesseldorf",
- 'EWG8WY': " #EUROWINGSNiceDuesseldorf",
- 'EWG9412': " #EUROWINGSDuesseldorfLyon",
- 'EWG9420': " #EUROWINGS",
- 'EWG9591': " #EUROWINGS",
- 'EWG9592': " #EUROWINGS",
- 'EWG9743': " #EUROWINGSGenevaDuesseldorf",
- 'EWG9823': " #EUROWINGS",
- 'EWG9869': " #EUROWINGS",
- 'EWG9KY': " #EUROWINGS",
- 'EWG9MP': " #EUROWINGSPalmadeMallorcaVienna",
- 'EWG9NW': " #EUROWINGSBarcelonaDuesseldorf",
- 'EWG9PC': " #EUROWINGSPalmadeMallorcaCologne",
- 'EWG9XE': " #EUROWINGSColognePalmadeMallorca",
- 'EXS17W': " #CHANNEXLondonPula",
- 'EXS75K': " #CHANNEXNewcastlePisa",
- 'EZS1041': " #EasyJetMulhouseAmsterdam",
- 'EZS1047': " #EasyJetMulhouseAmsterdam",
- 'EZS1352': " #EasyJet",
- 'EZS1537': " #EasyJetGenevaBrussels",
- 'EZS17LE': " #EasyJetGenevaCopenhagen",
- 'EZS17QL': " #EasyJetBrusselsGeneva",
- 'EZS27NE': " #EasyJetBrusselsGeneva",
- 'EZS38VL': " #EasyJetAmsterdamGeneva",
- 'EZS56FJ': " #EasyJetBrusselsGeneva",
- 'EZS61DJ': " #EasyJetGenevaAmsterdam",
- 'EZS64WZ': " #EasyJetEdinburghMulhouse",
- 'EZS72BA': " #EasyJetMulhouseBrussels",
- 'EZS76ZW': " #EasyJetGenevaCopenhagen",
- 'EZS83LA': " #EasyJetGenevaStockholm",
- 'EZS85LY': " #EasyJet",
- 'EZY12YJ': " #EasyJetGenevaHamburg",
- 'EZY1358': " #EasyJetAmsterdamGeneva",
- 'EZY13XF': " #EasyJetBrusselsNice",
- 'EZY147G': " #EasyJetNiceAmsterdam",
- 'EZY14YQ': " #EasyJetMilanoAmsterdam",
- 'EZY1538': " #EasyJetBrusselsGeneva",
- 'EZY15BX': " #EasyJetLondonRome",
- 'EZY15DJ': " #EasyJetLondonMilan",
- 'EZY17PB': " #EasyJetLondonCagliari",
- 'EZY19DU': " #EasyJetLondonZurich",
- 'EZY19MZ': " #EasyJetStuttgartLondon",
- 'EZY21MU': " #EasyJetPalmadeMallorcaHamburg",
- 'EZY23EZ': " #EasyJetLondonZurich",
- 'EZY23PR': " #EasyJetPaphosLondon",
- 'EZY24KP': " #EasyJetEdinburghLondon",
- 'EZY25TK': " #EasyJetMulhouseAmsterdam",
- 'EZY27TL': " #EasyJetHeraklionLondon",
- 'EZY29BZ': " #EasyJetAmsterdamMulhouse",
- 'EZY32CR': " #EasyJetAmsterdamLondon",
- 'EZY41ER': " #EasyJetLondonMulhouse",
- 'EZY41UB': " #EasyJet",
- 'EZY46BL': " #EasyJetStuttgartLondon",
- 'EZY49MP': " #EasyJetLondonMilano",
- 'EZY49PB': " #EasyJetRomeAmsterdam",
- 'EZY51CF': " #EasyJetRomeBristol",
- 'EZY53CN': " #EasyJetMilanoAmsterdam",
- 'EZY53GT': " #EasyJetLondonZurich",
- 'EZY56ZB': " #EasyJetNaplesBrussels",
- 'EZY58WZ': " #EasyJetAmsterdamLyon",
- 'EZY59DT': " #EasyJet",
- 'EZY59NJ': " #EasyJetSalzburgLiverpool",
- 'EZY61ET': " #EasyJet",
- 'EZY61FV': " #EasyJetPalmadeMallorcaBristol",
- 'EZY627F': " #EasyJetManchesterMilano",
- 'EZY63WJ': " #EasyJetCataniaAmsterdam",
- 'EZY67MB': " #EasyJetLondonZurich",
- 'EZY68ZV': " #EasyJetChaniaLondon",
- 'EZY71YG': " #EasyJetAlicanteLondon",
- 'EZY729L': " #EasyJetLondonPalermo",
- 'EZY72XM': " #EasyJetAmsterdamGeneva",
- 'EZY73QW': " #EasyJetEdinburghGeneva",
- 'EZY74PY': " #EasyJetAmsterdamNice",
- 'EZY75YB': " #EasyJetLondonMilan",
- 'EZY76ZA': " #EasyJet",
- 'EZY78UA': " #EasyJet",
- 'EZY79PB': " #EasyJetLarnacaLondon",
- 'EZY8369': " #EasyJetLondonPreveza",
- 'EZY86QV': " #EasyJetAmsterdamGeneva",
- 'EZY87RG': " #EasyJetNewcastleGeneva",
- 'EZY94MY': " #EasyJetMulhouseAmsterdam",
- 'EZY95KC': " #EasyJetBerlinLisbon",
- 'EZY95RE': " #EasyJetMilanAmsterdam",
- 'EZY96FN': " #EasyJetManchesterMulhouse",
- 'EZY96LR': " #EasyJetNaplesLondon",
- 'EZY97QA': " #EasyJetGenevaAmsterdam",
- 'EZY98MA': " #EasyJetLondonDalaman",
- 'EZY98YG': " #EasyJetKosLondon",
- 'FCIDD': " #Inconnu",
- 'FHGAC': " #Inconnu",
- 'FHGIO': " #Inconnu",
- 'FHJAV': " #Inconnu",
- 'FHLPN': " #Inconnu",
- 'FHRCA': " #Inconnu",
- 'FHTRY': " #Inconnu",
- 'FJBNG': " #Inconnu",
- 'FJSMX': " #Inconnu",
- 'FJUEV': " #Inconnu",
- 'FPO601C': " #Inconnu",
- 'FPO651C': " #Inconnu",
- 'FPO661C': " #Inconnu",
- 'FXR18G': " #Inconnu",
- 'FYG02F': " #Inconnu",
- 'FYG36K': " #Inconnu",
- 'GAC020B': " #GeneralAviationCenter",
- 'GAC069A': " #GeneralAviationCenter",
- 'GAC113A': " #GeneralAviationCenter",
- 'GAC174I': " #GeneralAviationCenter",
- 'GAC182A': " #GeneralAviationCenter",
- 'GAC193B': " #GeneralAviationCenter",
- 'GAC632A': " #GeneralAviationCenter",
- 'GAC818A': " #GeneralAviationCenter",
- 'GAC848A': " #GeneralAviationCenter",
- 'GAC917I': " #GeneralAviationCenter",
- 'GAF028': " #Inconnu",
- 'GAF689': " #Inconnu",
- 'GAFE12A': " #Inconnu",
- 'GAFE13': " #Inconnu",
- 'GAFE14A': " #Inconnu",
- 'GAFK31B': " #Inconnu",
- 'GBAGB': " #GULFBAHRAIN",
- 'GCERT': " #Inconnu",
- 'GCIRU': " #Inconnu",
- 'GCKAZ': " #Inconnu",
- 'GMI1031': " #GERMANIA",
- 'GMI1368': " #GERMANIA",
- 'GMI1369': " #GERMANIA",
- 'GMI1602': " #GERMANIADresdenFunchal",
- 'GMI1881': " #GERMANIAHamburgToulouse",
- 'GMI2797': " #GERMANIAMunichCologne",
- 'GMI2886': " #GERMANIAToulouseHamburg",
- 'GMI3872': " #GERMANIAMunsterPalmadeMallorca",
- 'GMI3873': " #GERMANIAPalmadeMallorcaMunster",
- 'GMI4570': " #GERMANIABremenPalmadeMallorca",
- 'GMI4571': " #GERMANIAPalmadeMallorcaBremen",
- 'GMI5729': " #GERMANIAPalmadeMallorcaMunster",
- 'GMI8625': " #GERMANIAPalmadeMallorcaBremen",
- 'GWI16K': " #GERMANWINGSHamburgPalmadeMallorca",
- 'GWI1KB': " #GERMANWINGS",
- 'GWI1WN': " #GERMANWINGSBarcelonaHamburg",
- 'GWI1XA': " #GERMANWINGS",
- 'GWI1XP': " #GERMANWINGSPalmadeMallorcaDortmund",
- 'GWI2AN': " #GERMANWINGSPalmadeMallorcaHamburg",
- 'GWI2JV': " #GERMANWINGSGenevaHamburg",
- 'GWI2V': " #GERMANWINGSHamburgHeraklion",
- 'GWI34U': " #GERMANWINGSCataniaDuesseldorf",
- 'GWI383': " #GERMANWINGSTunisCologne",
- 'GWI47L': " #GERMANWINGSPalmadeMallorcaDortmund",
- 'GWI4CW': " #GERMANWINGS",
- 'GWI53Z': " #GERMANWINGSIbizaCologne",
- 'GWI5440': " #GERMANWINGS",
- 'GWI5441': " #GERMANWINGS",
- 'GWI5605': " #GERMANWINGS",
- 'GWI589': " #GERMANWINGSPalmadeMallorcaCologne",
- 'GWI595': " #GERMANWINGSPalmadeMallorcaCologne",
- 'GWI7J': " #GERMANWINGSNiceCologne",
- 'GWI7LZ': " #GERMANWINGSGenevaDuesseldorf",
- 'GWI7YK': " #GERMANWINGSBarcelonaHannover",
- 'GWI84R': " #GERMANWINGS",
- 'GWI8KW': " #GERMANWINGSMarseilleDuesseldorf",
- 'GWI8MB': " #GERMANWINGS",
- 'GWI8PM': " #GERMANWINGS",
- 'GWI8WY': " #GERMANWINGSNiceDuesseldorf",
- 'GWI9743': " #GERMANWINGS",
- 'GWI9BC': " #GERMANWINGSIbizaHannover",
- 'HAKAR': " #Inconnu",
- 'HBIGV': " #Inconnu",
- 'HBJGQ': " #Inconnu",
- 'HBLUT': " #Inconnu",
- 'HBVPO': " #Inconnu",
- 'HBVYS': " #Inconnu",
- 'HBYKG': " #Inconnu",
- 'HHN101': " #Inconnu",
- 'HKY301': " #Inconnu",
- 'HOP30QB': " #HOPAirfrance",
- 'HOP316M': " #HOPAirfranceLyonMetz",
- 'HOP31LN': " #HOPAirfranceStrasbourgLille",
- 'HOP36QB': " #HOPAirfrance",
- 'HOP37LN': " #HOPAirfrance",
- 'HOP4306': " #HOPAirfranceLyonGothenborg",
- 'HOP4311': " #HOPAirfranceBrusselsLyon",
- 'HOP4313': " #HOPAirfranceBrusselsLyon",
- 'HOP431T': " #HOPAirfranceBrusselsLyon",
- 'HOP8201': " #HOPAirfranceParisCologne",
- 'IAM1496': " #ItalianAirforce",
- 'IAM3120': " #ItalianAirforce",
- 'IAM3126': " #ItalianAirforce",
- 'IAM3128': " #ItalianAirforce",
- 'IAM9002': " #ItalianAirforce",
- 'IBE32AW': " #IBERIA",
- 'IBE32CM': " #IBERIA",
- 'IBK2525': " #NORTRANSKeffalliniaLondon",
- 'IBK5404': " #NORTRANSMadridLondon",
- 'IBK5602': " #NORTRANSHelsinkiOulu",
- 'IBK5952': " #NORTRANS",
- 'IBK5EG': " #NORTRANSMadridOslo",
- 'IBK6508': " #NORTRANS",
- 'IBK6514': " #NORTRANS",
- 'IBK6696': " #NORTRANS",
- 'IBK9457': " #NORTRANSKeffalliniaLondon",
- 'ICV007': " #Inconnu",
- 'IGA751': " #Inconnu",
- 'IJM005': " #Inconnu",
- 'IJM329': " #Inconnu",
- 'ISS3520': " #MERAIRMilanoLaRomana",
- 'JAF13X': " #BEAUTYAjaccioBrussels",
- 'JAF16K': " #BEAUTY",
- 'JAF19X': " #BEAUTY",
- 'JAF1KP': " #BEAUTYPalermoBrussels",
- 'JAF1LG': " #BEAUTYParisOujda",
- 'JAF29W': " #BEAUTY",
- 'JAF38Y': " #BEAUTY",
- 'JAF3JT': " #BEAUTY",
- 'JAF3YE': " #BEAUTY",
- 'JAF41P': " #BEAUTY",
- 'JAF42M': " #BEAUTY",
- 'JAF43B': " #BEAUTY",
- 'JAF4AV': " #BEAUTY",
- 'JAF4GE': " #BEAUTY",
- 'JAF5401': " #BEAUTY",
- 'JAF5402': " #BEAUTY",
- 'JAF57M': " #BEAUTY",
- 'JAF58G': " #BEAUTYOstendTenerife",
- 'JAF5BV': " #BEAUTY",
- 'JAF5KD': " #BEAUTYKosOstend",
- 'JAF60G': " #BEAUTY",
- 'JAF68D': " #BEAUTYPalmadeMallorcaLiege",
- 'JAF6991': " #BEAUTY",
- 'JAF6DE': " #BEAUTYAntwerpIbiza",
- 'JAF6MT': " #BEAUTY",
- 'JAF6YP': " #BEAUTY",
- 'JAF7PH': " #BEAUTY",
- 'JAF80X': " #BEAUTY",
- 'JAF8LV': " #BEAUTYAlicanteCharleroi",
- 'JDI30C': " #Inconnu",
- 'JFA08A': " #Inconnu",
- 'JKH322': " #Inconnu",
- 'JSY210C': " #Inconnu",
- 'JTG570': " #Inconnu",
- 'JTR1': " #Inconnu",
- 'KLM1039': " #KLM",
- 'KLM1260': " #KLMNiceAmsterdam",
- 'KLM1413': " #KLMAmsterdamLyon",
- 'KLM1415': " #KLMAmsterdamLyon",
- 'KLM1417': " #KLMAmsterdamLyon",
- 'KLM1523': " #KLMAmsterdamManston",
- 'KLM1555': " #KLMAmsterdamTorino",
- 'KLM1556': " #KLMTorinoAmsterdam",
- 'KLM1566': " #KLMGenoaAmsterdam",
- 'KLM1598': " #KLMRomeAmsterdam",
- 'KLM1602': " #KLMRomeAmsterdam",
- 'KLM1620': " #KLMMilanAmsterdam",
- 'KLM1628': " #KLMMilanoAmsterdam",
- 'KLM1630': " #KLMMilanoAmsterdam",
- 'KLM1632': " #KLMMilanoAmsterdam",
- 'KLM1634': " #KLMMilanoAmsterdam",
- 'KLM1638': " #KLMFlorenceAmsterdam",
- 'KLM1640': " #KLMFlorenceAmsterdam",
- 'KLM1642': " #KLMFlorenceAmsterdam",
- 'KLM1964': " #KLMZurichAmsterdam",
- 'KLM1986': " #KLMMulhouseAmsterdam",
- 'KLM1988': " #KLMMulhouseAmsterdam",
- 'KLM1989': " #KLMAmsterdamMulhouse",
- 'KLM1990': " #KLMMulhouseAmsterdam",
- 'KLM22V': " #KLMNiceAmsterdam",
- 'KLM37A': " #KLMAmsterdamLyon",
- 'KLM393': " #KLMAmsterdamCapeTown",
- 'KLM394': " #KLMCapeTownAmsterdam",
- 'KLM41M': " #KLMAmsterdamNice",
- 'KLM41T': " #KLMAmsterdamNice",
- 'KLM42N': " #KLMNiceAmsterdam",
- 'KLM48B': " #KLMZurichAmsterdam",
- 'KLM48Y': " #KLMGenovaAmsterdam"
- 'KLM50G': " #KLMZurichAmsterdam",
- 'KLM50L': " #KLMZurichAmsterdam",
- 'KLM50V': " #KLMGenevaAmsterdam",
- 'KLM51Y': " #KLMAmsterdamGeneva",
- 'KLM54J': " #KLMGenevaAmsterdam",
- 'KLM56L': " #KLMZurichAmsterdam",
- 'KLM575': " #KLMAmsterdamAbidjan",
- 'KLM57W': " #KLMAmsterdamGeneva",
- 'KLM589': " #KLMAmsterdamAccra",
- 'KLM58C': " #KLMZurichAmsterdam",
- 'KLM591': " #KLMAmsterdamJohannesburg",
- 'KLM592': " #KLMJohannesburgAmsterdam",
- 'KLM68Z': " #KLMRomeAmsterdam",
- 'KLM72R': " #KLMTorinoAmsterdam",
- 'KLM84A': " #KLMRomeAmsterdam",
- 'KLM84X': " #KLMMulhouseAmsterdam",
- 'KLM89F': " #KLMAmsterdamMulhouse",
- 'KLM91H': " #KLMAmsterdamNice",
- 'KLM98M': " #KLMFlorenceAmsterdam",
- 'KLM98N': " #KLMFlorenceAmsterdam",
- 'KLM98R': " #KLMFlorenceAmsterdam",
- 'KQA101': " #KENYALondonNairobi",
- 'LAV5318': " #AlbaStar",
- 'LBT2022': " #NOUVELAIRLondonDjerba",
- 'LBT214': " #NOUVELAIR",
- 'LBT2640': " #NOUVELAIRDjerbaDuesseldorf",
- 'LGL206': " #LUXAIRDjerbaLuxemburg",
- 'LGL3838': " #LUXAIRMadridLuxemburg",
- 'LGL608': " #LUXAIRPalmadeMallorcaLuxemburg",
- 'LGL62P': " #LUXAIRPalmadeMallorcaLuxemburg",
- 'LGL64L': " #LUXAIR",
- 'LGL65R': " #LUXAIR",
- 'LGL6996': " #LUXAIRMilanoLuxemburg",
- 'LGL807': " #LUXAIR",
- 'LGL8256': " #LUXAIRNiceLuxemburg",
- 'LGL8364': " #LUXAIRGenevaLuxemburg",
- 'LGL8368': " #LUXAIRGenevaLuxemburg",
- 'LGL885': " #LUXAIRLuxemburgHeraklion",
- 'LHB1': " #Inconnu",
- 'LLX5922': " #SmallPlanetAirlinesGermany",
- 'LLX5932': " #SmallPlanetAirlinesGermany",
- 'LLX5941': " #SmallPlanetAirlinesGermany",
- 'LLX5942': " #SmallPlanetAirlinesGermany",
- 'LLX5944': " #SmallPlanetAirlinesGermanyPalmadeMallorcaBerlin",
- 'LLX5952': " #SmallPlanetAirlinesGermany",
- 'LLX5954': " #SmallPlanetAirlinesGermany",
- 'LLX5961': " #SmallPlanetAirlinesGermany",
- 'LLX5962': " #SmallPlanetAirlinesGermanyPalmadeMallorcaPaderborn",
- 'LLX5972': " #SmallPlanetAirlinesGermany",
- 'LLX5976': " #SmallPlanetAirlinesGermany",
- 'LLZ5931': " #SmallPlanetAirlinesGermany",
- 'LMJ026R': " #Inconnu",
- 'LNX10RL': " #Inconnu",
- 'location': " #LOCAIR",
- 'LXA5E': " #Inconnu",
- 'LXAIE': " #Inconnu",
- 'LXDIN': " #Inconnu",
- 'LXG33S': " #Inconnu",
- 'LXG44W': " #Inconnu",
- 'LXG55GA': " #Inconnu",
- 'LXG55JE': " #Inconnu",
- 'LXGCA': " #Inconnu",
- 'LXJFR': " #Inconnu",
- 'LXMIK': " #Inconnu",
- 'MABGV': " #Inconnu",
- 'MABJA': " #Inconnu",
- 'MAC223': " #MALTACHARTERElArouiParis",
- 'MAMAN': " #Inconnu",
- 'MBHBH': " #Inconnu",
- 'MCRAO': " #Inconnu",
- 'MIPHS': " #Inconnu",
- 'MJF279': " #Inconnu",
- 'MLEYS': " #Inconnu",
- 'MMD6377': " #Inconnu",
- 'MMD6421': " #Inconnu",
- 'MNTOS': " #Inconnu",
- 'MON207': " #MONARCHAntalyaLondon",
- 'MON715': " #MONARCHLarnacaLondon",
- 'MORAD': " #Inconnu",
- 'MPH8321': " #MARTINAIRAmsterdamJohannesburg",
- 'MPH8341': " #MARTINAIRAmsterdamJohannesburg",
- 'MPH8371': " #MARTINAIRAmsterdamJohannesburg",
- 'MPH8561': " #MARTINAIRAmsterdamJohannesburg",
- 'MPRVT': " #Inconnu",
- 'MTL108B': " #Inconnu",
- 'MWIND': " #MWI",
- 'MYSIX': " #Inconnu",
- 'N101FK': " #Inconnu",
- 'N101FU': " #Inconnu",
- 'N169TA': " #Inconnu",
- 'N194ER': " #Inconnu",
- 'N202QS': " #Inconnu",
- 'N209PB': " #Inconnu",
- 'N273SW': " #Inconnu",
- 'N344RS': " #Inconnu",
- 'N38945': " #Inconnu",
- 'N450D': " #Inconnu",
- 'N50SQ': " #Inconnu",
- 'N53M': " #Inconnu",
- 'N550F': " #Inconnu",
- 'N577EA': " #Inconnu",
- 'N588LQ': " #Inconnu",
- 'N604GF': " #Inconnu",
- 'N755RA': " #Inconnu",
- 'N770BB': " #AllSpain",
- 'N821CC': " #Inconnu",
- 'N829TD': " #Inconnu",
- 'N900HG': " #Inconnu",
- 'NATO40': " #Inconnu",
- 'NAX1409': " #NORSHUTTLENiceOslo",
- 'NAX3LB': " #NORSHUTTLEGenevaOslo",
- 'NAX47E': " #NORSHUTTLENiceStockholm",
- 'NAX9463': " #NORSHUTTLEPalmadeMallorcaTrondheim",
- 'NAX94BP': " #NORSHUTTLEOsloAlicante",
- 'NJE036B': " #NetJets",
- 'NJE070D': " #NetJets",
- 'NJE097L': " #NetJets",
- 'NJE140C': " #NetJets",
- 'NJE323U': " #NetJets",
- 'NJE328D': " #NetJets",
- 'NJE342E': " #NetJets",
- 'NJE345F': " #NetJets",
- 'NJE348R': " #NetJets",
- 'NJE386E': " #NetJets",
- 'NJE3HF': " #NetJets",
- 'NJE3NX': " #NetJets",
- 'NJE405W': " #NetJets",
- 'NJE433G': " #NetJets",
- 'NJE512G': " #NetJets",
- 'NJE578G': " #NetJets",
- 'NJE622G': " #NetJets",
- 'NJE668L': " #NetJets",
- 'NJE676E': " #NetJets",
- 'NJE6KY': " #NetJets",
- 'NJE7JD': " #NetJets",
- 'NJE837C': " #NetJets",
- 'NLY115P': " #FLYNIKI",
- 'NLY1K': " #FLYNIKIColognePalmadeMallorca",
- 'NLY1NQ': " #FLYNIKIDuesseldorfIbiza",
- 'NLY1VD': " #FLYNIKIPalmadeMallorcaCologne",
- 'NLY2149': " #FLYNIKIIbizaCologne",
- 'NLY2279': " #FLYNIKIPalmadeMallorcaCologne",
- 'NLY2477': " #FLYNIKIPalmadeMallorcaCologne",
- 'NLY25SJ': " #FLYNIKIPalmadeMallorcaHamburg",
- 'NLY26DU': " #FLYNIKIDuesseldorfPalmadeMallorca",
- 'NLY3029': " #FLYNIKI",
- 'NLY3046': " #FLYNIKI",
- 'NLY3047': " #FLYNIKI",
- 'NLY3056': " #FLYNIKI",
- 'NLY3080': " #FLYNIKIDuesseldorfPalmadeMallorca",
- 'NLY30KV': " #FLYNIKIHamburgIbiza",
- 'NLY3286': " #FLYNIKIDuesseldorfPalmadeMallorca",
- 'NLY3287': " #FLYNIKI",
- 'NLY3360': " #FLYNIKIDuesseldorfIbiza",
- 'NLY3361': " #FLYNIKIIbizaDuesseldorf",
- 'NLY3575': " #FLYNIKIPalmadeMallorcaDuesseldorf",
- 'NLY36SU': " #FLYNIKI",
- 'NLY39ME': " #FLYNIKIPalmadeMallorcaDuesseldorf",
- 'NLY3EK': " #FLYNIKIRomeVienna",
- 'NLY3JC': " #FLYNIKIPalmadeMallorcaCologne",
- 'NLY3QR': " #FLYNIKIDuesseldorfPalmadeMallorca",
- 'NLY414H': " #FLYNIKIIbizaHamburg",
- 'NLY44DM': " #FLYNIKIAlicanteDuesseldorf",
- 'NLY45DR': " #FLYNIKI",
- 'NLY46EA': " #FLYNIKI",
- 'NLY51NV': " #FLYNIKIPalmadeMallorcaPaderborn",
- 'NLY5YN': " #FLYNIKIPalmadeMallorcaDuesseldorf",
- 'NLY62WK': " #FLYNIKIColognePalmadeMallorca",
- 'NLY636Z': " #FLYNIKIPalmadeMallorcaCologne",
- 'NLY6A': " #FLYNIKIPalmadeMallorcaDuesseldorf",
- 'NLY6WD': " #FLYNIKIPalmadeMallorcaDuesseldorf",
- 'NLY7515': " #FLYNIKI",
- 'NLY75CZ': " #FLYNIKI",
- 'NLY7611': " #FLYNIKIPalmadeMallorcaCologne",
- 'NLY7623': " #FLYNIKI",
- 'NLY7641': " #FLYNIKIPalmadeMallorcaPaderborn",
- 'NLY7783': " #FLYNIKIPalmadeMallorcaMunster",
- 'NLY788D': " #FLYNIKIPalmadeMallorcaDuesseldorf",
- 'NLY791W': " #FLYNIKIPalmadeMallorcaFrankfurt",
- 'NLY7HN': " #FLYNIKIPalmadeMallorcaHamburg",
- 'NLY7W': " #FLYNIKIDuesseldorfPalmadeMallorca",
- 'NLY82G': " #FLYNIKIBilbaoPalmadeMallorca",
- 'NLY879R': " #FLYNIKIPalmadeMallorcaHamburg",
- 'NLY89J': " #FLYNIKIPalmadeMallorcaCologne",
- 'NLY8HE': " #FLYNIKIDuesseldorfPalmadeMallorca",
- 'NLY915P': " #FLYNIKI",
- 'NLY9ZR': " #FLYNIKIPalmadeMallorcaMunster",
- 'NPT770P': " #Inconnu",
- 'OAV304': " #Inconnu",
- 'OEFLG': " #Inconnu",
- 'OEGES': " #Inconnu",
- 'OEGGG': " #Inconnu",
- 'OMBJB': " #Inconnu",
- 'OOACC': " #Inconnu",
- 'OOAMR': " #Inconnu",
- 'OOCEH': " #Inconnu",
- 'OOCEJ': " #Inconnu",
- 'OOIDE': " #Inconnu",
- 'OOKDA': " #Inconnu",
- 'OONEY': " #Inconnu",
- 'OONLT': " #Inconnu",
- 'OOPCJ': " #Inconnu",
- 'OOPKX': " #Inconnu",
- 'OYAPM': " #Inconnu",
- 'OYGSA': " #Inconnu",
- 'PHDIX': " #Inconnu",
- 'PHFJK': " #Inconnu",
- 'PHHGT': " #Inconnu",
- 'PHJFS': " #Inconnu",
- 'PHMDG': " #Inconnu",
- 'PHRLG': " #Inconnu",
- 'PHTXA': " #Inconnu",
- 'piper': " #Inconnu",
- 'PJS701': " #Inconnu",
- 'PJS702': " #Inconnu",
- 'PRI414': " #Inconnu",
- 'PRI476': " #InconnuPalmadeMallorcaBillund",
- 'PRI480': " #InconnuNiceBillund",
- 'PRI482': " #InconnuChaniaBillund",
- 'PRI492': " #Inconnu",
- 'PRW366': " #InconnuPalmadeMallorcaGothenborg",
- 'PRW778': " #InconnuPalmadeMallorcaStockholm",
- 'QAJ811': " #Inconnu",
- 'QGA121G': " #Inconnu",
- 'QGA607G': " #Inconnu",
- 'QTR8286': " #QATARIMulhouseDoha",
- 'QTR8750': " #QATARIEntebbeBrussels",
- 'QTR8781': " #QATARIAccraLondon",
- 'RAM352': " #ROYALAIRMAROCCasablancaBrussels",
- 'RAM356': " #ROYALAIRMAROC",
- 'RAM810D': " #ROYALAIRMAROCBerlinCasablanca",
- 'RKS2': " #Inconnu",
- 'RYR116X': " #RYANAIRGeronaMaastricht",
- 'RYR12Y': " #RYANAIRBeauvaisMalaga",
- 'RYR13DV': " #RYANAIRValenciaCologne",
- 'RYR17UH': " #RYANAIRLondonRome",
- 'RYR187P': " #RYANAIR",
- 'RYR18ZB': " #RYANAIR",
- 'RYR1AM': " #RYANAIRBerlinManchester",
- 'RYR1JG': " #RYANAIRCologneBarcelona",
- 'RYR1YH': " #RYANAIRMilanoLondon",
- 'RYR20HJ': " #RYANAIR",
- 'RYR20VP': " #RYANAIRLondonPerugia",
- 'RYR22KP': " #RYANAIR",
- 'RYR242W': " #RYANAIR",
- 'RYR25KD': " #RYANAIRBolognaWeeze",
- 'RYR25XF': " #RYANAIRFaroBristol",
- 'RYR2963': " #RYANAIRBrusselsMilano",
- 'RYR2976': " #RYANAIRRyggeBologna",
- 'RYR2BE': " #RYANAIRMalagaBirmingham",
- 'RYR2CB': " #RYANAIR",
- 'RYR2LF': " #RYANAIR",
- 'RYR2SK': " #RYANAIRRomeEindhoven",
- 'RYR307G': " #RYANAIRRomeLondon",
- 'RYR3343': " #RYANAIRMontpellierHahn",
- 'RYR33D': " #RYANAIR",
- 'RYR353F': " #RYANAIR",
- 'RYR3746': " #RYANAIRPisaCharleroi",
- 'RYR3748': " #RYANAIRPisaCharleroi",
- 'RYR37ER': " #RYANAIRLondonRome",
- 'RYR37FB': " #RYANAIRRomeLondon",
- 'RYR38FE': " #RYANAIRLameziaBologna",
- 'RYR3KV': " #RYANAIRMaltaEindhoven",
- 'RYR3MW': " #RYANAIRGeronaBremen",
- 'RYR3NK': " #RYANAIR",
- 'RYR3QX': " #RYANAIRWeezePalmadeMallorca",
- 'RYR3VG': " #RYANAIRPisaEindhoven",
- 'RYR40WM': " #RYANAIRTrapaniEindhoven",
- 'RYR413A': " #RYANAIRMilanoBrussels",
- 'RYR41BQ': " #RYANAIRLondonBergamo",
- 'RYR41NJ': " #RYANAIRLondonPalermo",
- 'RYR41SE': " #RYANAIR",
- 'RYR41XK': " #RYANAIRCharleroiManchester",
- 'RYR427E': " #RYANAIRBristolPoznan",
- 'RYR42JZ': " #RYANAIRPalmadeMallorcaDortmund",
- 'RYR4522': " #RYANAIRCharleroiBergamo",
- 'RYR45KW': " #RYANAIROujdaWeeze",
- 'RYR46LG': " #RYANAIRLondonLamezia",
- 'RYR47QB': " #RYANAIRCagliariWeeze",
- 'RYR4865': " #RYANAIRTorinoCharleroi",
- 'RYR4868': " #RYANAIR",
- 'RYR4922': " #RYANAIRHahnIbiza",
- 'RYR49GN': " #RYANAIRMulhouseLondon",
- 'RYR4FD': " #RYANAIRBremenPalmadeMallorca",
- 'RYR4KW': " #RYANAIR",
- 'RYR4VM': " #RYANAIRBudapestLondon",
- 'RYR4WA': " #RYANAIR",
- 'RYR50JK': " #RYANAIRKarlsruhe/Baden-BadenLondon",
- 'RYR50NC': " #RYANAIRAlicanteWeeze",
- 'RYR52CK': " #RYANAIR",
- 'RYR53BY': " #RYANAIRPalermoDublin",
- 'RYR575F': " #RYANAIRRomeBrussels",
- 'RYR596W': " #RYANAIRLondonGranCanaria",
- 'RYR59DB': " #RYANAIRWarsawBristol",
- 'RYR5PW': " #RYANAIREindhovenMalta",
- 'RYR5SK': " #RYANAIR",
- 'RYR5TE': " #RYANAIRGeronaKrakow",
- 'RYR5UB': " #RYANAIRCorkVilnius",
- 'RYR5XV': " #RYANAIRBristolAlicante",
- 'RYR5YB': " #RYANAIRLondonBologna",
- 'RYR5ZT': " #RYANAIRLondonVillafranca",
- 'RYR6105': " #RYANAIRCharleroiRome",
- 'RYR6408': " #RYANAIRBeziersWeeze",
- 'RYR64FF': " #RYANAIRLondonBergamo",
- 'RYR64JF': " #RYANAIRLondonPisa",
- 'RYR64TA': " #RYANAIRMalagaDublin",
- 'RYR65CZ': " #RYANAIRLondonMalta",
- 'RYR671Z': " #RYANAIRAlicanteFrankfurt",
- 'RYR6AK': " #RYANAIREdinburghFaro",
- 'RYR6DB': " #RYANAIRMarseilleEindhoven",
- 'RYR6LN': " #RYANAIRBerlinPalermo",
- 'RYR6PA': " #RYANAIRGeronaWeeze",
- 'RYR6TV': " #RYANAIRLameziaLondon",
- 'RYR6XB': " #RYANAIRShannonLondon",
- 'RYR71DU': " #RYANAIRPalmadeMallorcaHamburg",
- 'RYR7211': " #RYANAIRPalmadeMallorcaCologne",
- 'RYR722R': " #RYANAIR",
- 'RYR72A': " #RYANAIRBordeauxEdinburgh",
- 'RYR74RE': " #RYANAIRMaltaBrussels",
- 'RYR74ZA': " #RYANAIRLondonTreviso",
- 'RYR76TF': " #RYANAIR",
- 'RYR77TY': " #RYANAIRLondonMulhouse",
- 'RYR78CN': " #RYANAIRWeezeIbiza",
- 'RYR7AX': " #RYANAIR",
- 'RYR7HE': " #RYANAIRLondonGenoa",
- 'RYR7JV': " #RYANAIRBergamoBeauvais",
- 'RYR7LQ': " #RYANAIRRzeszowManchester",
- 'RYR7TH': " #RYANAIRAlgheroBergamo",
- 'RYR7UG': " #RYANAIRArrecifeLeeds",
- 'RYR7YR': " #RYANAIRPoznanDublin",
- 'RYR7ZX': " #RYANAIRLondonRome",
- 'RYR825K': " #RYANAIR",
- 'RYR828G': " #RYANAIR",
- 'RYR84LW': " #RYANAIRLondonPisa",
- 'RYR863Y': " #RYANAIRManchesterBarcelona",
- 'RYR8737': " #RYANAIRMilanoLondon",
- 'RYR885M': " #RYANAIRAlgheroEindhoven",
- 'RYR8KE': " #RYANAIRRabatRome",
- 'RYR8PF': " #RYANAIRPalmadeMallorcaHamburg",
- 'RYR8XC': " #RYANAIRDublinSalzburg",
- 'RYR9232': " #RYANAIREindhovenAlghero",
- 'RYR93ZM': " #RYANAIRBolognaKrakow",
- 'RYR95FH': " #RYANAIRPalmadeMallorcaFrankfurt",
- 'RYR95XH': " #RYANAIRPalmadeMallorcaEindhoven",
- 'RYR98P': " #RYANAIRAlicanteMaastricht",
- 'RYR98UE': " #RYANAIRValenciaHamburg",
- 'RYR9925': " #RYANAIRPisaEindhoven",
- 'RYR995E': " #RYANAIRComisoWeeze",
- 'RYR9AD': " #RYANAIRMalagaWeeze",
- 'RYR9EP': " #RYANAIRGenoaLondon",
- 'RYR9JL': " #RYANAIRIbizaEindhoven",
- 'RYR9NQ': " #RYANAIRNaplesEindhoven",
- 'RYR9NZ': " #RYANAIRLondonPisa",
- 'RYR9UM': " #RYANAIRKrakowShannon",
- 'RYR9XH': " #RYANAIRPalmadeMallorcaHahn",
- 'SAS1610': " #SCANDINAVIANGenevaCopenhagen",
- 'SAS1830': " #SCANDINAVIANNiceStockholm",
- 'SAS1886': " #SCANDINAVIANNiceGothenborg",
- 'SAS2588': " #SCANDINAVIANPalmadeMallorcaCopenhagen",
- 'SAS2616': " #SCANDINAVIANGenevaStockholm",
- 'SAS28K': " #SCANDINAVIANGenevaCopenhagen",
- 'SAS4692': " #SCANDINAVIANPalmadeMallorcaOslo",
- 'SAS4700': " #SCANDINAVIANNiceOslo",
- 'SAS4704': " #SCANDINAVIANNiceOslo",
- 'SAS4706': " #SCANDINAVIANNiceOslo",
- 'SAS4736': " #SCANDINAVIANNiceStavanger",
- 'SAS52L': " #SCANDINAVIANPalmadeMallorcaCopenhagen",
- 'SAS7368': " #SCANDINAVIANRiminiBergen",
- 'SAS7710': " #SCANDINAVIANMonastirCopenhagen",
- 'SAS80D': " #SCANDINAVIANNiceStockholm",
- 'SAS86L': " #SCANDINAVIAN",
- 'SAZ71': " #InconnuZurichPalmadeMallorca",
- 'SCR378': " #Inconnu",
- 'SNM922': " #Inconnu",
- 'SPG145': " #Inconnu",
- 'SPG378': " #Inconnu",
- 'SRK30E': " #InconnuBernAmsterdam",
- 'SRK4CE': " #InconnuBernCologne",
- 'SRK53L': " #Inconnu",
- 'SRR6373': " #InconnuToulouseLyon",
- 'SRR6381': " #InconnuBordeauxMarseille",
- 'STC877A': " #Inconnu",
- 'STC949A': " #Inconnu",
- 'STQ33B': " #Inconnu",
- 'SUA743': " #Inconnu",
- 'SVA106': " #SAUDIALondonRiyadh",
- 'SVA116': " #SAUDIALondonJeddah",
- 'SVA118': " #SAUDIALondonRiyadh",
- 'SVB420': " #Inconnu",
- 'SWR101A': " #SWISSZurichDuesseldorf",
- 'SWR107C': " #SWISSZurichDuesseldorf",
- 'SWR108L': " #SWISSZurichDuesseldorf",
- 'SWR30K': " #SWISSLondonZurich",
- 'SWR325': " #SWISSLondonZurich",
- 'SWR327': " #SWISSLondonZurich",
- 'SWR32V': " #SWISSLondonZurich",
- 'SWR339': " #SWISSLondonZurich",
- 'SWR33J': " #SWISSZurichLondon",
- 'SWR345': " #SWISSLondonZurich",
- 'SWR381': " #SWISSManchesterZurich",
- 'SWR40C': " #SWISSLondonZurich",
- 'SWR425': " #SWISSBirminghamZurich",
- 'SWR43K': " #SWISSLondonZurich",
- 'SWR46J': " #SWISSLondonGeneva",
- 'SWR47A': " #SWISSLondonZurich",
- 'SWR47F': " #SWISSLondonZurich",
- 'SWR5211': " #SWISS",
- 'SWR71P': " #SWISS",
- 'SWR724': " #SWISSZurichAmsterdam",
- 'SWR734': " #SWISSZurichAmsterdam",
- 'SWR736': " #SWISSZurichAmsterdam",
- 'SWR73G': " #SWISSZurichAmsterdam",
- 'SWR755': " #SWISSLuxemburgZurich",
- 'SWR76T': " #SWISSZurichBrussels",
- 'SWR770': " #SWISSZurichBrussels",
- 'SWR77P': " #SWISSBrusselsZurich",
- 'SWR786': " #SWISSZurichBrussels",
- 'SWR787': " #SWISSBrusselsZurich",
- 'SWR789': " #SWISSBrusselsZurich",
- 'SWR78W': " #SWISSBrusselsZurich",
- 'SWR79N': " #SWISSZurichBrussels",
- 'SWR79R': " #SWISSZurichBrussels",
- 'SWR7M': " #SWISS",
- 'SXD4598': " #Inconnu",
- 'SXD7ZF': " #Inconnu",
- 'T7PBL': " #Inconnu",
- 'TAR526': " #TUNAIRTunisDuesseldorf",
- 'TAR538': " #TUNAIRDjerbaDuesseldorf",
- 'TAR539': " #TUNAIRDuesseldorfDjerba",
- 'TAR540': " #TUNAIRDjerbaMonastir",
- 'TAR668': " #TUNAIRMonastirBrussels",
- 'TAR669': " #TUNAIR",
- 'TAR788': " #TUNAIRTunisBrussels",
- 'TAR789': " #TUNAIRBrusselsTunis",
- 'TAR8304': " #TUNAIRMonastirZurich",
- 'TAR880': " #TUNAIRTunisAmsterdam",
- 'TAY035R': " #Inconnu",
- 'TAY057Y': " #Inconnu",
- 'TAY072L': " #Inconnu",
- 'TAY078W': " #Inconnu",
- 'TAY135R': " #Inconnu",
- 'TAY217V': " #InconnuZaragozaBarcelona",
- 'TAY515M': " #Inconnu",
- 'TAY616B': " #Inconnu",
- 'TAY857': " #InconnuMaltaLiege",
- 'TCW1DC': " #THOMASCOOKKosBrussels",
- 'TCW1PW': " #THOMASCOOK",
- 'TCW1TX': " #THOMASCOOK",
- 'TCW2VZ': " #THOMASCOOK",
- 'TCW378': " #THOMASCOOK",
- 'TCW379': " #THOMASCOOK",
- 'TCW3LM': " #THOMASCOOK",
- 'TCW5CD': " #THOMASCOOK",
- 'TCW5CH': " #THOMASCOOK",
- 'TCW8CV': " #THOMASCOOK",
- 'TCW9PD': " #THOMASCOOK",
- 'TCX105': " #KESTRELDalamanLondon",
- 'TCX35PJ': " #KESTRELEastMidlandsZakynthos",
- 'TCX431': " #KESTRELAntalyaLondon",
- 'TCX525': " #KESTRELAntalyaLondon",
- 'TCX56HW': " #KESTRELBirminghamPaphos",
- 'TCX61XS': " #KESTRELLarnacaLondon",
- 'TFL188': " #ARKEFLY",
- 'THY1MY': " #TURKAIRIstanbulBrussels",
- 'THY800': " #TURKAIRIstanbulBogota",
- 'TJT002A': " #TWINJET",
- 'TJT97RJ': " #TWINJET",
- 'TOM10B': " #TOMSONManchesterNaples",
- 'TOM399': " #TOMSONAntalyaLondon",
- 'TOM3AP': " #TOMSONPalmadeMallorcaCardiff",
- 'TOM45P': " #TOMSONRovaniemiLondon",
- 'TOM593': " #TOMSONAntalyaLondon",
- 'TOM5QD': " #TOMSONManchesterPalmadeMallorca",
- 'TOM66A': " #TOMSONLarnacaLondon",
- 'TOM92W': " #TOMSONManchesterKerkyra/corfu",
- 'TRA091': " #TRANSAVIA",
- 'TRA106N': " #TRANSAVIAValenciaEindhoven",
- 'TRA10F': " #TRANSAVIA",
- 'TRA132K': " #TRANSAVIABarcelonaAmsterdam",
- 'TRA25W': " #TRANSAVIAEindhovenIbiza",
- 'TRA25X': " #TRANSAVIAIbizaAmsterdam",
- 'TRA26T': " #TRANSAVIAGranCanariaRotterdam",
- 'TRA27Y': " #TRANSAVIAPalmadeMallorcaEindhoven",
- 'TRA30B': " #TRANSAVIABarcelonaRotterdam",
- 'TRA32N': " #TRANSAVIAPortoAmsterdam",
- 'TRA36G': " #TRANSAVIARomeRotterdam",
- 'TRA37J': " #TRANSAVIAEindhovenNice",
- 'TRA38R': " #TRANSAVIAIbizaEindhoven",
- 'TRA41K': " #TRANSAVIAEindhovenValencia",
- 'TRA42G': " #TRANSAVIAAlicanteEindhoven",
- 'TRA42T': " #TRANSAVIAAmsterdamGerona",
- 'TRA47W': " #TRANSAVIANiceEindhoven",
- 'TRA51T': " #TRANSAVIABolognaEindhoven",
- 'TRA547Q': " #TRANSAVIA",
- 'TRA651B': " #TRANSAVIAIbizaEindhoven",
- 'TRA6624': " #TRANSAVIAAlicanteEindhoven",
- 'TRA680P': " #TRANSAVIAAjaccioAmsterdam",
- 'TRA6915': " #TRANSAVIA",
- 'TRA6918': " #TRANSAVIAOlbiaAmsterdam",
- 'TRA78A': " #TRANSAVIABarcelonaEindhoven",
- 'TRA7C': " #TRANSAVIAMalagaAmsterdam",
- 'TRA805M': " #TRANSAVIA",
- 'TRA81N': " #TRANSAVIAAmsterdamNice",
- 'TRA8P': " #TRANSAVIAPisaAmsterdam",
- 'TRA917G': " #TRANSAVIAAmsterdamOlbia",
- 'TRA97N': " #TRANSAVIAEindhovenMunich",
- 'TUI19Y': " #TuninterColognePalmadeMallorca",
- 'TUI1FX': " #TuninterPalmadeMallorcaDuesseldorf",
- 'TUI23E': " #TuninterPalmadeMallorcaCologne",
- 'TUI2FC': " #Tuninter",
- 'TUI3KL': " #TuninterHannoverPalmadeMallorca",
- 'TUI48G': " #TuninterIbizaDuesseldorf",
- 'TUI70D': " #TuninterDuesseldorfIbiza",
- 'TUI84E': " #TuninterMenorcaDuesseldorf",
- 'TUI8MD': " #TuninterPalmadeMallorcaHamburg",
- 'TUI9AG': " #Tuninter",
- 'TUI9XE': " #TuninterDuesseldorfPalmadeMallorca",
- 'TVS2422': " #SKYTRAVEL",
- 'TVS2426': " #SKYTRAVELNantesPrague",
- 'TVS4357': " #SKYTRAVEL",
- 'TVS4359': " #SKYTRAVEL",
- 'UAL52': " #UNITEDWashingtonZurich",
- 'UAL90': " #UNITEDNewarkTel-aviv",
- 'UPS242': " #UPSCologneBarcelona",
- 'UPS243': " #UPSBarcelonaCologne",
- 'VJT001': " #Inconnu",
- 'VJT570': " #Inconnu",
- 'VJT762': " #Inconnu",
- 'VKG1139': " #InconnuPalmadeMallorcaCopenhagen",
- 'VKG1247': " #InconnuPalmadeMallorcaBillund",
- 'VKG1275': " #Inconnu",
- 'VKG1531': " #Inconnu",
- 'VKG1565': " #Inconnu",
- 'VKG1581': " #Inconnu",
- 'VKG1859': " #Inconnu",
- 'VLG12GC': " #VUELINGBarcelonaStockholm",
- 'VLG1898': " #VUELINGBarcelonaDuesseldorf",
- 'VLG1899': " #VUELINGDuesseldorfBarcelona",
- 'VLG18HA': " #VUELINGBarcelonaCopenhagen",
- 'VLG20N': " #VUELINGBarcelonaLondon",
- 'VLG56RH': " #VUELINGLondonFlorence",
- 'VLG6206': " #VUELINGFlorenceLondon",
- 'VLG6227': " #VUELINGLondonRome",
- 'VLG6237': " #VUELINGRomeValencia",
- 'VLG6292': " #VUELINGRomeBerlin",
- 'VLG6814': " #VUELINGFlorenceAmsterdam",
- 'VLG8394': " #VUELINGBarcelonaEindhoven",
- 'VLG83LY': " #VUELINGAmsterdamBarcelona",
- 'VLG8502': " #VUELINGBarcelonaAalborg",
- 'VLG8526': " #VUELINGBarcelonaGothenborg",
- 'VLG85CC': " #VUELINGBarcelonaBergen",
- 'VLG8970': " #VUELINGBarcelonaLuxemburg",
- 'VLG8971': " #VUELINGLuxemburgBarcelona",
- 'VLG8988': " #VUELINGBarcelonaBrussels",
- 'VLG8989': " #VUELINGBrusselsBarcelona",
- 'VLG8990': " #VUELINGBarcelonaBrussels",
- 'VLG8992': " #VUELINGBarcelonaBrussels",
- 'VLG89HH': " #VUELING",
- 'VLG91QL': " #VUELING",
- 'VLZ194': " #Inconnu",
- 'VMP932': " #Inconnu",
- 'VND4185': " #Inconnu",
- 'VPBEH': " #Inconnu",
- 'VPCBF': " #Inconnu",
- 'VPCPF': " #Inconnu",
- 'VPCUA': " #Inconnu",
- 'VVV461': " #Inconnu",
- 'WGT73M': " #Inconnu",
- 'XGO6AW': " #Inconnu",
- 'XRO295': " #Inconnu",
- 'XRO350': " #Inconnu",
- 'XRO357': " #Inconnu",
- 'XRO370': " #Inconnu",
- 'XRO437': " #Inconnu",
- }
- if flight in flights_to_hashtags:
- # if the flight is in our hash, append its hashtag to the hashtags list
- hashtags.append(flights_to_hashtags[flight])
- # add the conditional hashtags as long as there is room in 140 chars
- for hash in hashtags:
- if len(tweet) + len(hash) <= 140:
- tweet += hash
- # add the default hashtags as long as there is room
- for hash in parser.get('tweet', 'default_hashtags').split(' '):
- if len(tweet) + len(hash) <= 139:
- tweet += " " + hash
- # send tweet to twitter!
- if havescreenshot:
- with open('tweet.png', "rb") as imagefile:
- imagedata = imagefile.read()
- params = {"media[]": imagedata, "status": tweet}
- twit.statuses.update_with_media(**params)
- else:
- twit.statuses.update(status=tweet)
- # send the tweet to stdout while we're at it
- print(tweet)
- if __name__ == "__main__":
- browser = screenshot.loadmap()
- if browser == None:
- print("unable to load browser!")
- else:
- print("browser loaded!")
- alarms = dict() # dictonary of all aircraft that have triggered the alarm
- # Indexed by it's hex code, each entry contains a tuple of
- # the aircraft data at the closest position so far, and a
- # counter. Once the airplane is out of the alarm zone,
- # the counter is incremented until we hit [abovetustin_wait_x_updates]
- # (defined above), at which point we then Tweet
- fd = flightdata.FlightData()
- lastTime = fd.time
- while True:
- sleep(abovetustin_sleep_time)
- fd.refresh()
- if fd.time == lastTime:
- continue
- lastTime = fd.time
- print("Now: {}".format(fd.time))
- current = dict() # current aircraft inside alarm zone
- # loop on all the aircarft in the receiver
- for a in fd.aircraft:
- # if they don't have lat/lon or a heading skip them
- if a.lat == None or a.lon == None or a.track == None:
- continue
- # check to see if it's in the alarm zone:
- if a.distance < abovetustin_distance_alarm or a.el > abovetustin_elevation_alarm:
- # add it to the current dictionary
- current[a.hex] = a
- print("{}/{}: {}mi, {}az, {}el, {}alt, {}dB, {}seen".format(
- a.hex, a.flight, "%.1f" % a.distance, "%.1f" % a.az, "%.1f" % a.el,
- a.altitude, "%0.1f" % a.rssi, "%.1f" % a.seen))
- if a.hex in alarms:
- #if it's already in the alarms dict, check to see if we're closer
- if a.distance < alarms[a.hex][0].distance:
- #if we're closer than the one already there, then overwrite it
- alarms[a.hex] = (a, 0)
- else:
- #add it to the alarms
- alarms[a.hex] = (a, 0)
- finishedalarms = []
- # loop on all the aircraft in the alarms dict
- for h, a in alarms.items():
- found = False
- # check to see if it's in the current set of aircraft
- for h2, a2 in current.items():
- if h2 == h:
- print("{} not yet, dist, elv: {}, {}".format(h, "%.1f" % a[0].distance, "%.1f" % a[0].el))
- found = True
- break
- # if it wasn't in the current set of aircraft, that means it's time to tweet!
- if not found:
- if a[1] < abovetustin_wait_x_updates:
- alarms[h] = (a[0], a[1]+1)
- else:
- havescreenshot = False
- if browser != None:
- print("time to create screenshot:")
- hexcode = a[0].hex
- hexcode = hexcode.replace(" ", "")
- hexcode = hexcode.replace("~", "")
- havescreenshot = screenshot.clickOnAirplane(browser, hexcode)
- print("time to tweet!!!!!")
- Tweet(a[0], havescreenshot)
- finishedalarms.append(a[0].hex)
- # for each alarm that is finished, delete it from the dictionary
- for h in finishedalarms:
- del(alarms[h])
- # flush output for following in log file
- sys.stdout.flush()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement