Flightstats API:到着スコアボードをボーイングとエアバスで書く

はじめに


この投稿を読んでいる皆さん、こんにちは。
航空は私の趣味です、私はすでにそれについて書きました。 私は何時間も立って飛行機の写真を撮り、それらについてのビデオを見て、 エアマンのブログを読んで、 fr24.comで交通を監視する準備ができています。 また、航空では、ECAM、CDA、ACES、APUなどの略語が1つしかありません。 一般的に、魔法。 しかし、私の環境のほとんどすべての人は航空に無関心です。「まあ、飛行機、飛行機のように。 いいですね なに? ボーイング777-300ER? まあ、明らかに、明らかに...」。 しかし、何もする必要はありません。すべてのマーカーの味と色は異なります。
断食のアイデアはどのように思いついたのですか? シェレメーチエヴォ国際空港から車で20分ほどの場所に住んでいました。 どういうわけか私は自由な時間を過ごし、小さな写真を撮るようになりました。 私がそこにいる間に、約10機が私を通り過ぎました。 ほとんどすべてがアエロフロートです。 私は主張しません、アエロフロートには興味深い側面があります。 たとえば、 ドブロレットまたはホフロマ 。 しかし、その日私は幸運ではなかった、私はそのようなものを見ていませんでした。 そして、そのような旅行を計画することは非常に有用だと思いました。 そして、断食のアイデアが生まれました。 次の機能が必要でした:出発表-選択した空港の到着、興味深いボットとあまりボットではないものの両方の色の強調表示、pdfへのエクスポート。

さあ始めましょう!

したがって、最初に行う必要があるのは、 https://developer.flightstats.comにアクセスして登録し、ダッシュボードに移動して、[新しいアプリケーションを作成]ボタンをクリックすることです。 これは、多数のAppId + AppKeyを取得するために必要です。これがないと、APIにアクセスできません。 一般に、それは支払われますが、無料の料金プランもあります-「 評価プラン 」、私たちのニーズに対するその能力は完全に十分でしょう。 その後、「 Get Started 」->「 Flex API Reference 」->「 Flight Status&Track API 」->「 Flight Status&Track by Airport 」に大胆に進みます 。 ページの下部に「 対話型ドキュメント 」セクションがあり、「 空港の状態(出発) 」を選択します。 このリクエストには7つの必須フィールドがあり、次のように入力する必要があります。
appIdappKey空港hourOfDay
あなたのappIdあなたのappKeySVO201312710


数秒後、答えが表示されます。

つまり、2014年12月7日にシェレメーチエヴォ空港から10時間後に出発するフライトについての情報を求めました。 はい、SVO-シェレメチェボ。 また、UUEE-シェレメチェボ。 覚えておいて、私は略語について少しだけ話したのですか? ここで、最初に出くわしました。

空港コード。 IATA vs. ICAO


IATA-国際航空運送協会、 IATA (英語国際航空運送協会)国際非政府組織。 協会はコーディネーターとして行動し、航空安全、飛行操作、関税政策、保守、航空安全、ICAOと連携した国際標準の開発などの分野における航空輸送業界の利益を代表しています。

ICAO-国際民間航空機関は国連の専門機関であり、民間航空の国際基準を設定し、安全性と効率性を高めるために開発を調整しています。

IATAとICAOの両方に独自の空港コードがあります。 IATAコードは空港の名前に合わせて選択され、ICAOコードは空港の場所に基づいているため、これらは異なります。 それが、シェレメーチエヴォがIATAコードSVOとICAO-UUEEを持っている理由です。プルコボの場合、たとえばそれぞれLEDとULLIです。 唯一の例外は、米国の空港(IATAコードに「K」を追加:ロサンゼルス-LAX-KLAX)およびカナダ(「C」を追加:トロント-YYZ-CYYZ)です。

フライト統計に回答する


このリクエストでは、レスポンスの構造は次のとおりです。
{   } "appendix": { "airlines": {...} "airports": {...} "equipments": {...} "flightStatuses": {...} } 

航空会社空港 、および機器のセクションには、flightStatusesセクションにある航空会社、空港、および航空機の種類の説明が含まれています。
航空会社のセクションは非常にシンプルです:
 "airlines": [ { "fs": "SU", "iata": "SU", "icao": "AFL", "name": "Aeroflot", "active": true }, ... 

「fs」フィールドには、flightStatsデータベースの航空会社コードが含まれています。 ほとんどの場合、IATAコードと一致します。

空港セクションはより複雑です。
 "airports": [ { "fs": "BUD", "iata": "BUD", "icao": "LHBP", "name": "Liszt Ferenc International Airport", "city": "Budapest", "cityCode": "BUD", "countryCode": "HU", "countryName": "Hungary", "regionName": "Europe", "timeZoneRegionName": "Europe/Budapest", "localTime": "2013-12-06T20:51:56.974", "utcOffsetHours": 1, "latitude": 47.433037, "longitude": 19.261621, "elevationFeet": 495, "classification": 2, "active": true, "delayIndexUrl": "https://api.flightstats.com/flex/delayindex/rest/v1/json/airports/BUD?codeType=fs", "weatherUrl": "https://api.flightstats.com/flex/weather/rest/v1/json/all/BUD?codeType=fs" }, ... 

天気と遅延係数を除き、必要なすべての情報が含まれています。これらは別途要求する必要があります。

セクション「機器」。
 "equipments": [ { "iata": "319", "name": "Airbus Industrie A319", "turboProp": false, "jet": true, "widebody": false, "regional": false }, ... 

航空機の基本的な特性を説明します。

APIから再び脱線しましょう。

航空機の種類を区別することを学ぶ


これはまったく難しいことではありません。 空の車の世界を簡単にナビゲートするのに役立つ小さな図(クリック可能)を用意しました。 Rasckoからの追加ガイド

そして今、私の言葉の確認:
エアバスA380対 ボーイング747


IL-96対 エアバスA340


ボーイング737対 エアバスA320


ボーイング757対 ボーイング767


エアバスA330対 ボーイング777


ヤク42対 Tu-154対 マクドネルダグラスMD-11



フライトの解析


flightStatusの内容。 長いので非表示
 { "flightId": 317846653, "carrierFsCode": "SU", "flightNumber": "2030", "departureAirportFsCode": "SVO", "arrivalAirportFsCode": "BUD", "departureDate": { "dateLocal": "2013-12-07T10:50:00.000", "dateUtc": "2013-12-07T06:50:00.000Z" }, "arrivalDate": { "dateLocal": "2013-12-07T10:35:00.000", "dateUtc": "2013-12-07T09:35:00.000Z" }, "status": "L", "schedule": { "flightType": "J", "serviceClasses": "RJY", "restrictions": "" }, "operationalTimes": { "publishedDeparture": { "dateLocal": "2013-12-07T10:50:00.000", "dateUtc": "2013-12-07T06:50:00.000Z" }, "publishedArrival": { "dateLocal": "2013-12-07T10:35:00.000", "dateUtc": "2013-12-07T09:35:00.000Z" }, "scheduledGateDeparture": { "dateLocal": "2013-12-07T10:50:00.000", "dateUtc": "2013-12-07T06:50:00.000Z" }, "estimatedGateDeparture": { "dateLocal": "2013-12-07T10:50:00.000", "dateUtc": "2013-12-07T06:50:00.000Z" }, "actualGateDeparture": { "dateLocal": "2013-12-07T11:27:00.000", "dateUtc": "2013-12-07T07:27:00.000Z" }, "scheduledGateArrival": { "dateLocal": "2013-12-07T10:35:00.000", "dateUtc": "2013-12-07T09:35:00.000Z" }, "estimatedGateArrival": { "dateLocal": "2013-12-07T11:12:00.000", "dateUtc": "2013-12-07T10:12:00.000Z" }, "actualGateArrival": { "dateLocal": "2013-12-07T10:43:00.000", "dateUtc": "2013-12-07T09:43:00.000Z" } }, "delays": { "departureGateDelayMinutes": 37, "arrivalGateDelayMinutes": 8 }, "flightDurations": { "scheduledBlockMinutes": 165, "blockMinutes": 136 }, "airportResources": { "departureTerminal": "D", "departureGate": "28", "arrivalTerminal": "2" }, "flightEquipment": { "scheduledEquipmentIataCode": "320", "actualEquipmentIataCode": "A320", "tailNumber": "VP-BWI" } }, ... 


ほとんどの場合、フィールドの目的は明らかです。 内容が完全に明らかではないものについてのみ詳細に説明します。 なんで? そうです、カットだからです。
答えのこの部分は次のとおりです。
 "status": "L", "schedule": { "flightType": "J", "serviceClasses": "RJY", "restrictions": "" }, 

フィールド説明
状態現在のフライト状況
A-アクティブ
C-キャンセル済み
D-迂回-目的地の変更が行われた(たとえば、気象条件に応じて)
DN-データソースが必要-ステータス情報を取得する場所がありません
L-着陸
いいえ -操作不可
R-リダイレクトされました
S-スケジュール済み
U-不明
flightTypeフライトのタイプ。 合計で23個あります。 例えば
J-定期旅客-定期旅客
M-定期貨物/郵便(MailOnly)-貨物、ただし手紙のみ。
W-軍事-軍事
serviceClassesIATAフライトで提供されるサービスオプション。 詳細はこちら-http://en.wikipedia.org/wiki/IATA_class_codes
制限事項IATA分類の制限。 詳細-http ://www.flyerguide.com/wiki/index.php/Traffic_Restriction_Codes_(AA)


プログラミング


今は、Python 2.7、urllib2、simplejsonを使用しています。

最初に行うことは、必要なライブラリを接続し、変数を初期化することです。
 import urllib2 import simplejson appId = " appId " appKey = " appKey " #  .        flightstats,     ICAO  IATA requestedAirport = "SVO" #    . arr - , dep -  flightsType = "arr" #  requestedDate = "2013/12/7" # ,        requestedHour = "15" #  ,      requestedNumHours = "6" 


次のステップでは、これらの変数をURLにパックし、リクエストを送信して、応答を待ちます。
 #    url = "https://api.flightstats.com/flex/flightstatus/rest/v2/json/" \ "airport/status/%s/%s/%s/%s?appId=%s&appKey=%s&utc=false&numHours=%s" #      url = url %(requestedAirport, flightsType, requestedDate, requestedHour, appId, appKey, requestedNumHours) #     JSON- req = urllib2.Request(url, None) opener = urllib2.build_opener() f = opener.open(req) response = simplejson.load(f) 


次に、補助フィールドを解析します。 リスト内の航空機と飛行機の詳細な名前を置き換えるためにそれらが必要です。
 #     airports = response["appendix"]["airports"] #        (dictionary) airportsDict = dict() #      [ flightstats]:[] for airport in airports: airportsDict[airport["fs"]] = airport["name"] #     ... equipments = response["appendix"]["equipments"] equipmentsDict = dict() for equipment in equipments: equipmentsDict[equipment["iata"]] = equipment["name"], equipment["iata"] #...    airlines = response["appendix"]["airlines"] airlinesDict = dict() for airline in airlines: airlinesDict[airline["fs"]] = airline["name"] 


コードの結果は、次のような表になります。
フライト運送業者装備品登録からSTDATDSTASTD
XQ114SunExpressボーイング737-800の乗客D-asxaアンタルヤ15:00:00.000---Cgn17:55:00.000---


データをHTMLで出力します。
 #    webPage = "<html><body><table border=\"1\"> \ <tr><th>Flight</th><th>Carrier</th><th>Equipment</th><th>Registration</th><th>From</th><th>STD</th> \ <th>ATD</th><th>To</th><th>STA</th><th>ETA</th></tr>" #     templateRow = "<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td> \ <td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>" f = open("./list.html", "w") 


次に、補助関数を作成する必要があります。
必要な値は異なる深さにあります。 たとえば、深さ0のcarrierFsCode 、空港コード。 実際の出発時間を取得するには、2番目の深さ( operationalTimes --> actualGateDeparture --> dateLocal"必要があります。これを行うには、最初の補助関数が必要です。
 def getProperty(status, propertyNames): #     try: #     propertyNames for propertyName in propertyNames: #   status = status[propertyName] #   ! return status except #   ,    return "---" 


ここで最も興味深いのは、トラフィックに最も関心のあるものを選択する必要があることです。 次の3つの配列に含まれています。
 interestingCarriers = ["RU", # AirBridgeCargo "CU", # Cubana de Aviacion "ME", # China Eastern Airlines "KE", # Korean Air Lines ] interestingEquipments = ["SU9"] # Sukhoi Superjet 100 interestingTailNumbers = ["VP-BGB"] #   Boeing 777-300ER   


そして今、実際には、パーサー:
 for flightStatus in flightStatuses: newRow = templateRow %(getProperty(flightStatus, ["carrierFsCode"]) + getProperty(flightStatus, ["flightNumber"]), airlinesDict[getProperty(flightStatus, ["carrierFsCode"])], getProperty(flightStatus, ["flightEquipment", "scheduledEquipmentIataCode"]), getProperty(flightStatus, ["flightEquipment", "tailNumber"]), str(airportsDict[getProperty(flightStatus, ["departureAirportFsCode"])]).replace("Airport", ""), str(getProperty(flightStatus, ["departureDate", "dateLocal"])).split("T")[-1], str(getProperty(flightStatus, ["operationalTimes", "actualGateDeparture", "dateLocal"])).split("T")[-1], str(airportsDict[getProperty(flightStatus, ["arrivalAirportFsCode"])]).replace("Airport", "") str(getProperty(flightStatus, ["arrivalDate", "dateLocal"])).split("T")[-1], str(getProperty(flightStatus, ["operationalTimes", "estimatedGateArrival", "dateLocal"])).split("T")[-1]) #    if (getProperty(flightStatus, ["carrierFsCode"]) in interestingCarriers) or \ (getProperty(flightStatus, ["flightEquipment", "scheduledEquipmentIataCode"]) in interestingEquipments) or \ (getProperty(flightStatus, ["flightEquipment", "tailNumber"]) in interestingTailNumbers): newRow = newRow.replace("<tr>", "<tr bgcolor=\"#FF0000\">") #     webPage += newRow 


最後の仕上げ-ページの最後にタグを追加し、ファイルを閉じます。
 webPage = webPage + "</table></body></html>" f.write(webPage) f.close() 

作業結果

フライト運送業者装備品登録からSTDATDSTAえた
SU155アエロフロート332VQ-BBEカンクン国際午後12時30分13:17:00.000シェレメーチエヴォ国際空港10:30:00.00011:03:00.000
DL466デルタ航空76W---ジョン・F・ケネディ・インターナショナル16:15:00.00016:14:00.000シェレメーチエヴォ国際空港10:50:00.00010:12:00.000
SU111アエロフロート332VP-BLXマイアミインターナショナル17:35:00.00018:35:00.000シェレメーチエヴォ国際空港13:45:00.00013:46:00.000
SU103アエロフロート333VP-BDEジョン・F・ケネディ・インターナショナル19:05:00.000---シェレメーチエヴォ国際空港13:25:00.00013:34:00.000
UN576Transaero Airlines744EI-XLJプンタカナ国際19:55:00.00021:18:00.000シェレメーチエヴォ国際空港14:50:00.00015:35:00.000
RU566AirBridgeCargo74年---フランクフルト・アム・マイン04:45:00.000---シェレメーチエヴォ国際空港11:00:00.000---
RU498AirBridgeCargo74N---上海浦東国際05:00:00.000---シェレメーチエヴォ国際空港10:45:00.000---
SU233アエロフロート332---インディラガンジーインターナショナル05:05:00.00005:26:00.000シェレメーチエヴォ国際空港10:10:00.00010:13:00.000
RU506AirBridgeCargo74N---ミラノ・マルペンサ05:30:00.000---シェレメーチエヴォ国際空港12:00:00.000---
SU1827アエロフロート320Vq-bazシンフェロポリ06:00:00.00006:25:00.000シェレメーチエヴォ国際空港10:15:00.00010:40:00.000
SU2437アエロフロート320VP-BLHデュッセルドルフ国際06:05:00.00006:27:00.000シェレメーチエヴォ国際空港12:25:00.00012:24:00.000
RU440AirBridgeCargo74NVP-BIM香港インターナショナル06:15:00.00006:15:00.000シェレメーチエヴォ国際空港12:25:00.000---
KE529大韓航空74年Hl7466仁川インターナショナル06:25:00.00007:07:00.000シェレメーチエヴォ国際空港10:40:00.000---
JU650ジェットエアウェイズ733---ベオグラード・ニコラ・テスラ06:45:00.00006:45:00.000シェレメーチエヴォ国際空港12:35:00.00012:39:00.000
PS561UIA73Nウルギャップキエフ/キエフ-ボリスポル07:00:00.00007:00:00.000シェレメーチエヴォ国際空港10:35:00.00010:35:00.000
SU1009アエロフロート321VQ-BEDカリーニングラード07:10:00.00007:36:00.000シェレメーチエヴォ国際空港10:00:00.00010:26:00.000
AF1644エールフランス319F-GRHLシャルルドゴール07:15:00.00007:13:00.000シェレメーチエヴォ国際空港13:55:00.00013:52:00.000
SU1867アエロフロート320VP-BQPズヴァルトノッツインターナショナル08:10:00.00008:21:00.000シェレメーチエヴォ国際空港11:00:00.00011:11:00.000
5N502ノルダビアリージョナル航空735---スィクティフカル08:20:00.00008:27:00.000シェレメーチエヴォ国際空港10:15:00.00010:11:00.000
Kc893エアアスタナ320P4-kbcアスタナ08:40:00.00008:36:00.000シェレメーチエヴォ国際空港10:20:00.00010:49:00.000
SU3アエロフロート321VP-BWOプルコヴォ08:55:00.00009:04:00.000シェレメーチエヴォ国際空港10:20:00.00010:29:00.000
SU1513アエロフロート319VP-BWAスルグート09:00:00.00008:59:00.000シェレメーチエヴォ国際空港10:35:00.00010:34:00.000
SU1293アエロフロート320VQ-BIVカザン09:00:00.00009:27:00.000シェレメーチエヴォ国際空港10:30:00.00010:50:00.000
SU1229アエロフロート320VP-BDKニジニ・ノヴゴロド09:05:00.00009:21:00.000シェレメーチエヴォ国際空港10:25:00.00010:41:00.000
SU1309アエロフロート319VP-BDOサマラ09:15:00.00009:20:00.000シェレメーチエヴォ国際空港10:55:00.00011:00:00.000
AY153フィンエアー319OH-LVIヘルシンキ・ヴァンター09:25:00.00009:29:00.000シェレメーチエヴォ国際空港13:05:00.00012:57:00.000
OK892CSA319---ヴァーツラフハヴェルプラハ09:30:00.00009:31:00.000シェレメーチエヴォ国際空港15:10:00.00015:05:00.000
SU2005アエロフロート320VP-BWIJ.ポールIIインターナショナルクラクフバリス09:35:00.00009:56:00.000シェレメーチエヴォ国際空港14:40:00.00014:49:00.000
SU1121アエロフロート320VP-BTIアドラー/ソチ09:50:00.00009:55:00.000シェレメーチエヴォ国際空港12:20:00.00012:25:00.000
SU2685アエロフロート320VQ-BCMシェーネフェルト09:50:00.00010:44:00.000シェレメーチエヴォ国際空港15:25:00.00016:15:00.000
SU5アエロフロート320VQ-BAXプルコヴォ09:55:00.00010:20:00.000シェレメーチエヴォ国際空港11:15:00.00011:40:00.000
SU1839アエロフロートSU9RA-89010ハリコフ09:55:00.00010:10:00.000シェレメーチエヴォ国際空港13:30:30.00013:20:00.000
SU2321アエロフロート320VQ-BHLフランツ・ヨーゼフ・シュトラウス10:00:00.00010:16:00.000シェレメーチエヴォ国際空港16:00:00.00016:16:00.000
SU1001アエロフロート320VP-BLLカリーニングラード10:05:00.00010:25:00.000シェレメーチエヴォ国際空港12:55:00.00013:15:00.000
R25807オレネア738---バルナウル10:10:00.00010:15:00.000シェレメーチエヴォ国際空港11:30:00.00011:35:00.000
SU1307アエロフロート320VP-BKXトルマチョーボ10:15:00.00010:19:00.000シェレメーチエヴォ国際空港11:25:00.00011:29:00.000
SU1701アエロフロート333VQ-BNSウラジオストック国際10:20:00.00010:24:00.000シェレメーチエヴォ国際空港12:25:00.00012:29:00.000
SU1805アエロフロート321VP-BOEキエフ/キエフ-ボリスポル10:20:00.00011:00:00.000シェレメーチエヴォ国際空港13:50:00.00014:30:00.000
SU2137アエロフロート321VQ-BHKイスタンブールアタチュルク10:20:00.00011:03:00.000シェレメーチエヴォ国際空港15:15:00.00015:26:00.000
SK734SAS320オイカップコペンハーゲン10:20:00.00010:46:00.000シェレメーチエヴォ国際空港15:45:00.00016:02:00.000
SU7アエロフロート320---プルコヴォ10:25:00.00010:43:00.000シェレメーチエヴォ国際空港11:45:00.00012:03:00.000
SU1813アエロフロート320VP-BRXドネツク10:30:00.00010:31:00.000シェレメーチエヴォ国際空港14:25:00.00014:26:00.000
SU1831アエロフロート320---ミンスクインターナショナル210:50:00.00011:40:00.000シェレメーチエヴォ国際空港13:15:00.00014:05:00.000
SU2107アエロフロート320VP-BZSタリン10:50:00.00010:54:00.000シェレメーチエヴォ国際空港14:30:00.00014:18:00.000
SU1479アエロフロート319VP-BDMアバカン10:55:00.00010:55:00.000シェレメーチエヴォ国際空港11:55:00.00011:55:00.000
SU1483アエロフロート77WVP-BGBクラスノヤルスク11:00:00.00011:13:00.000シェレメーチエヴォ国際空港11:35:00.00011:48:00.000
SU2683アエロフロート319VQ-BCOリガ11:00:00.00011:24:00.000シェレメーチエヴォ国際空港14:35:00.00014:44:00.000
D95399ドナビア319VP-BNNスタブロポリ11:15:00.00011:17:00.000シェレメーチエヴォ国際空港13:30:30.00013:32:00.000
SU2035アエロフロートSU9RA-89008オトペニインターナショナル11:15:00.00011:28:00.000シェレメーチエヴォ国際空港15:35:00.00015:33:00.000
SU11アエロフロート320---プルコヴォ11:30:00.00011:49:00.000シェレメーチエヴォ国際空港12:45:00.00013:04:00.000
SU1139アエロフロート321VQ-BKUアドラー/ソチ11:35:00.00011:55:00.000シェレメーチエヴォ国際空港14:00:00.00014:20:00.000
SU1211アエロフロート320VQ-BITサマラ11:40:00.00012:13:00.000シェレメーチエヴォ国際空港13:25:00.00013:42:00.000
SU1759アエロフロートSU9VP-BZQヴォルゴグラード11:45:00.00011:53:00.000シェレメーチエヴォ国際空港13:35:00.00013:43:00.000
SU1255アエロフロート319VP-BDNベギシェボ11:50:00.00012:03:00.000シェレメーチエヴォ国際空港13:40:00.00013:53:00.000
SU1643アエロフロート320VQ-BIWアストラハン11:50:00.00011:55:00.000シェレメーチエヴォ国際空港14:10:00.00014:15:00.000
SU1305アエロフロート320VP-BLPミネラルニエボディ11:50:00.00012:08:00.000シェレメーチエヴォ国際空港14:15:00.00014:33:00.000
SU1761アエロフロート738VP-BRH知多11:55:00.00012:00 10:00シェレメーチエヴォ国際空港12:45:00.00013:00:00.000
SU1221アエロフロート320VP-BMFニジニ・ノヴゴロド12:05 p.m.12:12:00.000シェレメーチエヴォ国際空港13:10:00.00013:17:00.000
SU1743アエロフロート333VQ-BQXユジノサハリンスク12:00 10:0012:20:00.000シェレメーチエヴォ国際空港14:05:00.00014:15:00.000
D95301ドナビア734VQ-BCSロストフ12:15:00.00012:28:00.000シェレメーチエヴォ国際空港14:15:00.00014:28:00.000
SU13アエロフロート319---プルコヴォ12:20:00.00012:50:00.000シェレメーチエヴォ国際空港13:35:00.00014:05:00.000
5N117ノルダビアリージョナル航空735---アルハンゲリスク12:20:00.00012:25:00.000シェレメーチエヴォ国際空港14:05:00.00014:10:00.000
SU1191アエロフロート320VQ-BEAカザン12:25:00.00013:04:00.000シェレメーチエヴォ国際空港13:55:00.00014:34:00.000
SU1751アエロフロート738VP-BRFヤクーツク午後12時30分12:58:00.000シェレメーチエヴォ国際空港13:15:00.00013:43:00.000
SU1547アエロフロートSU9---アナパ午後12時30分12:50:00.000シェレメーチエヴォ国際空港14:45:00.00015:05:00.000
D95377ドナビア319---ミネラルニエボディ12:45:00.00013:03:00.000シェレメーチエヴォ国際空港15:10:00.00015:28:00.000
D95363ドナビア319VP-BQKロストフ13:05:00.00013:20:00.000シェレメーチエヴォ国際空港15:05:00.00015:20:00.000
SU1411アエロフロート321VQ-BOIコルツォヴォ国際13:15:00.00013:43:00.000シェレメーチエヴォ国際空港13:40:00.00014:08:00.000
SU1731アエロフロート333VQ-BCQペトロパブロフスク・カムチャツキー13:30:30.00013:44:00.000シェレメーチエヴォ国際空港14:30:00.00014:44:00.000
SU15アエロフロート320---プルコヴォ13:30:30.00013:39:00.000シェレメーチエヴォ国際空港14:45:00.00014:52:00.000
SU1231アエロフロート320VP-BLRウファ13:55:00.00014:19:00.000シェレメーチエヴォ国際空港14:00:00.00014:24:00.000
SU1421アエロフロート320VP-BNLチェリャビンスク13:55:00.00013:56:00.000シェレメーチエヴォ国際空港14:20:00.00014:21:00.000
R25803オレネア738---イルクーツク14:05:00.00014:30:00.000シェレメーチエヴォ国際空港14:50:00.00015:15:00.000
SU1201アエロフロートSU9---パーマ14:10:00.000---シェレメーチエヴォ国際空港14:25:00.00014:25:00.000
5N9134ノルダビアリージョナル航空------カザン14:10:00.00015:07:00.000シェレメーチエヴォ国際空港15:30:00.000---
SU17アエロフロート320---プルコヴォ14:25:00.00014:56:00.000シェレメーチエヴォ国際空港15:40:00.00016:11:00.000


今後の仕事


Source: https://habr.com/ru/post/J205210/


All Articles