Torandi
Medlem
Jag letade nyligen efter en award resa med eurobonus till Japan i business, och kom ganska snabbt fram till att få tag i en biljett med sas skulle vara en rätt hopplös uppgift (speciellt som jag ville vara borta 3 veckor), och SAS verktyg för att hitta StarAlliance flighter är ju inte direkt bäst.
Visserligen hade man säkert kunnat använda någon av de andra bolagens verktyg, men jag bestämde mig för att skriva ett verktyg med hjälp av det bibliotek @LSH skrev för att interagera med sas api.
Jag presenterar härmed: Star Alliance Search.
Det är ett konsolprogram (för windows, kan posta ett linuxbygge om någon är intresserad), för att söka businessflights.
Exempel:
Den stödjer också att söka flera destinationer på en gång (säg att jag vill till Japan), och att svartlista vissa bolag (typ Air China). Man kan även be den att lista en översättning av alla koder efter resultatet:
Övriga argument är dessa (alla är case insensitive)
Om man önskar göra samma fråga ofta kan man lägga sina argument i en textfil med ett argument per rad.
För att använda config filen anger man sökvägen till den med argumentet "-config".
Jag tänker släppa koden så småningom, måste bara städa upp lite i projektstrukturen, och komma fram till hur jag ska hantera beroendet till @LSH 's flysasclient.
Om ni hittar några buggar, rapportera dem gärna här, så kollar jag på dem.
Den enda kända "buggen" just nu är att den spottar ur sig sas felmeddelanden direkt om man får dem, men är nog inget jag direkt tänker åtgärda.
Värt att veta är att alla requests sker parallellt (något som jag så småningom tänkte lägga in en begränsing för), men det kan leda till att om man söker i ett span av 30 dagar, blir apiet lite ledset ibland, och ignorerar ens frågor om man söker för ofta.
Visserligen hade man säkert kunnat använda någon av de andra bolagens verktyg, men jag bestämde mig för att skriva ett verktyg med hjälp av det bibliotek @LSH skrev för att interagera med sas api.
Jag presenterar härmed: Star Alliance Search.
Det är ett konsolprogram (för windows, kan posta ett linuxbygge om någon är intresserad), för att söka businessflights.
Exempel:
Kod:
>dotnet.exe StarAllianceSearch.dll -from ARN -to LAX -out 2019-12-01 -in
2020-01-12
Searching for ARN to LAX
Searching for dates 2019-12-01 - 2020-01-12 (search range 7 days)
Searching to LAX...
Results to LAX
***** Out-bound *****
01/12 18:20 -> 02/12 11:20 | ARN (CA) -> PEK PEK (CA) -> LAX TIME 1:2:00:00
03/12 10:00 -> 03/12 16:20 | ARN (LX) -> ZRH ZRH (LX) -> LAX TIME 15:20:00
03/12 07:55 -> 03/12 14:25 | ARN (LO[EE]) -> WAW WAW (LO) -> LAX TIME 15:30:00
04/12 10:00 -> 04/12 16:20 | ARN (LX) -> ZRH ZRH (LX) -> LAX TIME 15:20:00
04/12 07:20 -> 04/12 16:20 | ARN (SK) -> ZRH ZRH (LX) -> LAX TIME 18:00:00
05/12 10:00 -> 05/12 16:20 | ARN (LX) -> ZRH ZRH (LX) -> LAX TIME 15:20:00
06/12 10:00 -> 06/12 16:20 | ARN (LX) -> ZRH ZRH (LX) -> LAX TIME 15:20:00
06/12 07:20 -> 06/12 16:20 | ARN (SK) -> ZRH ZRH (LX) -> LAX TIME 18:00:00
06/12 10:25 -> 06/12 20:20 | ARN (LO[EE]) -> WAW WAW (LO) -> LAX TIME 18:55:00
07/12 10:00 -> 07/12 16:20 | ARN (LX) -> ZRH ZRH (LX) -> LAX TIME 15:20:00
07/12 07:55 -> 07/12 14:25 | ARN (LO[EE]) -> WAW WAW (LO) -> LAX TIME 15:30:00
***** In-bound *****
13/01 19:20 -> 14/01 18:55 | LAX (LX) -> ZRH ZRH (LX) -> ARN TIME 14:35:00
13/01 19:20 -> 14/01 21:55 | LAX (LX) -> ZRH ZRH (SK) -> ARN TIME 17:35:00
14/01 19:20 -> 15/01 18:55 | LAX (LX) -> ZRH ZRH (LX) -> ARN TIME 14:35:00
14/01 16:20 -> 15/01 18:50 | LAX (LO) -> WAW WAW (LO[EE]) -> ARN TIME 17:30:00
14/01 19:20 -> 15/01 21:55 | LAX (LX) -> ZRH ZRH (SK) -> ARN TIME 17:35:00
15/01 19:20 -> 16/01 18:55 | LAX (LX) -> ZRH ZRH (LX) -> ARN TIME 14:35:00
15/01 19:20 -> 16/01 21:55 | LAX (LX) -> ZRH ZRH (SK) -> ARN TIME 17:35:00
----------------------------------------------
Den stödjer också att söka flera destinationer på en gång (säg att jag vill till Japan), och att svartlista vissa bolag (typ Air China). Man kan även be den att lista en översättning av alla koder efter resultatet:
Kod:
>dotnet.exe StarAllianceSearch.dll -from ARN -to KIX,NRT -out 2019-12-01 -in 2020-01-12 -BannedCarriers CA,LO -translatecodes
Searching for ARN to KIX, NRT
Searching for dates 2019-12-01 - 2020-01-12 (search range 7 days)
Searching to KIX...
Results to KIX
***** Out-bound *****
05/12 07:55 -> 06/12 07:20 | ARN (LH) -> MUC MUC (LH) -> KIX TIME 15:25:00
05/12 06:50 -> 06/12 07:20 | ARN (LH) -> FRA FRA (LH) -> MUC MUC (LH) -> KIX TIME 16:30:00
06/12 08:35 -> 07/12 07:20 | ARN (SK) -> MUC MUC (LH) -> KIX TIME 14:45:00
06/12 07:50 -> 07/12 07:20 | ARN (LH) -> MUC MUC (LH) -> KIX TIME 15:30:00
06/12 06:50 -> 07/12 07:20 | ARN (LH) -> FRA FRA (LH) -> MUC MUC (LH) -> KIX TIME 16:30:00
07/12 07:55 -> 08/12 07:20 | ARN (LH) -> MUC MUC (LH) -> KIX TIME 15:25:00
07/12 06:50 -> 08/12 07:20 | ARN (LH) -> FRA FRA (LH) -> MUC MUC (LH) -> KIX TIME 16:30:00
07/12 13:55 -> 08/12 17:10 | ARN (LH) -> FRA FRA (LH) -> PEK PEK (ZH) -> KIX TIME 19:15:00
07/12 13:55 -> 08/12 19:30 | ARN (LH) -> FRA FRA (OZ) -> ICN GMP (OZ) -> KIX TIME 21:35:00
***** In-bound *****
12/01 10:00 -> 12/01 17:45 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 15:45:00
12/01 10:00 -> 12/01 23:10 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 21:10:00
12/01 10:00 -> 12/01 22:00 | KIX (LH) -> MUC MUC (LH) -> CPH CPH (SK) -> ARN TIME 20:00:00
12/01 10:00 -> 12/01 22:00 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (SK) -> ARN TIME 20:00:00
12/01 10:00 -> 12/01 23:40 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:40:00
12/01 10:00 -> 12/01 23:40 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:40:00
12/01 10:00 -> 12/01 23:40 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:40:00
13/01 10:00 -> 13/01 17:45 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 15:45:00
14/01 10:00 -> 14/01 17:45 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 15:45:00
14/01 10:00 -> 14/01 23:10 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 21:10:00
14/01 10:00 -> 14/01 23:40 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:40:00
14/01 10:00 -> 14/01 23:40 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:40:00
14/01 10:00 -> 14/01 23:40 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:40:00
15/01 10:00 -> 15/01 17:45 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 15:45:00
15/01 10:00 -> 15/01 23:10 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 21:10:00
15/01 10:00 -> 15/01 23:30 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:30:00
15/01 10:00 -> 15/01 23:30 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:30:00
16/01 10:00 -> 16/01 17:45 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 15:45:00
16/01 10:00 -> 16/01 23:10 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 21:10:00
16/01 10:50 -> 16/01 22:00 | KIX (OZ) -> ICN ICN (LH) -> FRA FRA (SK) -> ARN TIME 19:10:00
16/01 09:10 -> 16/01 22:00 | KIX (OZ) -> ICN ICN (LH) -> FRA FRA (SK) -> ARN TIME 20:50:00
16/01 10:50 -> 16/01 23:40 | KIX (OZ) -> ICN ICN (LH) -> FRA FRA (LH) -> ARN TIME 20:50:00
17/01 10:00 -> 17/01 17:45 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 15:45:00
18/01 10:00 -> 18/01 17:45 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 15:45:00
18/01 10:00 -> 18/01 23:10 | KIX (LH) -> MUC MUC (LH) -> ARN TIME 21:10:00
18/01 10:00 -> 18/01 23:40 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:40:00
18/01 10:00 -> 18/01 23:40 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:40:00
18/01 10:00 -> 18/01 23:40 | KIX (LH) -> MUC MUC (LH) -> FRA FRA (LH) -> ARN TIME 21:40:00
----------------------------------------------
Searching to NRT...
Results to NRT
***** Out-bound *****
01/12 08:50 -> 02/12 08:55 | ARN (LX) -> ZRH ZRH (LX) -> NRT TIME 16:05:00
02/12 17:10 -> 03/12 15:25 | ARN (SK) -> DUS DUS (NH) -> NRT TIME 14:15:00
03/12 11:15 -> 04/12 17:20 | ARN (SK) -> CPH CPH (LH) -> FRA FRA (OZ) -> ICN ICN (OZ) -> NRT TIME 22:05:00
03/12 11:15 -> 04/12 17:20 | ARN (SK) -> CPH CPH (SK) -> FRA FRA (LH) -> ICN ICN (OZ) -> NRT TIME 22:05:00
03/12 11:15 -> 04/12 17:20 | ARN (SK) -> CPH CPH (SK) -> FRA FRA (OZ) -> ICN ICN (OZ) -> NRT TIME 22:05:00
03/12 11:15 -> 04/12 17:20 | ARN (SK) -> CPH CPH (LH) -> FRA FRA (LH) -> ICN ICN (OZ) -> NRT TIME 22:05:00
04/12 07:20 -> 05/12 08:55 | ARN (SK) -> ZRH ZRH (LX) -> NRT TIME 17:35:00
06/12 07:20 -> 07/12 08:55 | ARN (SK) -> ZRH ZRH (LX) -> NRT TIME 17:35:00
07/12 13:55 -> 08/12 17:20 | ARN (LH) -> FRA FRA (OZ) -> ICN ICN (OZ) -> NRT TIME 19:25:00
07/12 13:55 -> 08/12 19:40 | ARN (LH) -> FRA FRA (OZ) -> ICN ICN (ET) -> NRT TIME 21:45:00
07/12 13:55 -> 08/12 19:40 | ARN (LH) -> FRA FRA (OZ) -> ICN ICN (ET) -> NRT TIME 21:45:00
***** In-bound *****
13/01 10:40 -> 13/01 19:35 | NRT (LX) -> ZRH ZRH (LX) -> ARN TIME 16:55:00
13/01 11:00 -> 13/01 20:15 | NRT (NH) -> BRU BRU (SK) -> ARN TIME 17:15:00
13/01 10:40 -> 13/01 21:55 | NRT (LX) -> ZRH ZRH (SK) -> ARN TIME 19:15:00
13/01 11:00 -> 13/01 22:00 | NRT (NH) -> BRU BRU (LH) -> FRA FRA (SK) -> ARN TIME 19:00:00
13/01 11:00 -> 13/01 23:30 | NRT (NH) -> BRU BRU (LH) -> FRA FRA (LH) -> ARN TIME 20:30:00
13/01 11:00 -> 13/01 23:30 | NRT (NH) -> BRU BRU (LH) -> FRA FRA (LH) -> ARN TIME 20:30:00
13/01 10:55 -> 13/01 23:30 | NRT (NH) -> DUS DUS (LH) -> FRA FRA (LH) -> ARN TIME 20:35:00
13/01 09:00 -> 13/01 22:00 | NRT (OZ) -> ICN ICN (LH) -> FRA FRA (SK) -> ARN TIME 21:00:00
13/01 09:00 -> 13/01 21:10 | NRT (OZ) -> ICN ICN (OZ) -> PEK PEK (SK) -> CPH CPH (SK) -> ARN TIME 20:10:00
14/01 10:40 -> 14/01 18:55 | NRT (LX) -> ZRH ZRH (LX) -> ARN TIME 16:15:00
14/01 10:40 -> 14/01 21:55 | NRT (LX) -> ZRH ZRH (SK) -> ARN TIME 19:15:00
14/01 10:40 -> 14/01 22:00 | NRT (LX) -> ZRH ZRH (LH) -> FRA FRA (SK) -> ARN TIME 19:20:00
15/01 09:00 -> 15/01 22:00 | NRT (OZ) -> ICN ICN (LH) -> FRA FRA (SK) -> ARN TIME 21:00:00
15/01 09:00 -> 15/01 23:30 | NRT (OZ) -> ICN ICN (LH) -> FRA FRA (LH) -> ARN TIME 22:30:00
15/01 09:00 -> 15/01 23:30 | NRT (OZ) -> ICN ICN (LH) -> FRA FRA (LH) -> ARN TIME 22:30:00
17/01 10:40 -> 17/01 18:55 | NRT (LX) -> ZRH ZRH (LX) -> ARN TIME 16:15:00
17/01 10:40 -> 17/01 21:55 | NRT (LX) -> ZRH ZRH (SK) -> ARN TIME 19:15:00
----------------------------------------------
Airline and Airport Codes
ARN Arlanda
BRU Brussels
CPH Kastrup
DUS Düsseldorf
ET Ethiopian Airlines
FRA Frankfurt
GMP Gimpo
ICN Incheon
KIX Kansai
LH Lufthansa
LX SWISS International Air Lines
MUC Franz Josef Strauss
NH All Nippon Airways
NRT Narita
OZ Asiana Airlines
PEK Capital
SK SAS
ZH Shenzhen Airlines
Övriga argument är dessa (alla är case insensitive)
Kod:
STAR ALLIANCE BUSINESS CLASS SEARCH
Arguments: (default value in parethesis)
-From (required) Originating airport (code).
-To (required) Destination airport (code).
-Out (required) The first day to start searching out trips from (format YYYY-MM-DD).
-In (required) The first day to start searching return trips from (format YYYY-MM-DD).
-SearchSpan (7) Number of days to search in (each results in a new query).
-BannedCarriers A comma separated list of carrier codes to filter out.
-MaxStops (-1) Maximum numbers of stops to allow for the trip (-1 = no limit).
-MaxTransitStops (0) Maximum number of transit stops (stop without changing airplane). -1 = no limit).
-Config Config file to read options from. One option per line, format is argument=value. (Lines starting with # is ignored).
-TranslateCodes Write a table after all trips with translations for all codes.
-Help Print this help message.
Om man önskar göra samma fråga ofta kan man lägga sina argument i en textfil med ett argument per rad.
Kod:
From=ARN
To=KIX,NRT
Out= 2020-01-20
In=2020-02-14
SearchSpan=14
BannedCarriers=CA,OZ,LO,EE
#MaxStops=2 (lines starting with # is ignored)
För att använda config filen anger man sökvägen till den med argumentet "-config".
Jag tänker släppa koden så småningom, måste bara städa upp lite i projektstrukturen, och komma fram till hur jag ska hantera beroendet till @LSH 's flysasclient.
Om ni hittar några buggar, rapportera dem gärna här, så kollar jag på dem.
Den enda kända "buggen" just nu är att den spottar ur sig sas felmeddelanden direkt om man får dem, men är nog inget jag direkt tänker åtgärda.
Värt att veta är att alla requests sker parallellt (något som jag så småningom tänkte lägga in en begränsing för), men det kan leda till att om man söker i ett span av 30 dagar, blir apiet lite ledset ibland, och ignorerar ens frågor om man söker för ofta.