Senaste nytt

Verktyg för att söka StarAlliance award flighter

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:
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.
 

Attachments

  • StarAllianceSearch 0.1.zip
    {memory} MB · Visningar: 311

Torandi

Medlem
Alltid kul med nya projekt men ger inte denna samma resultat som Awardfares redan gör?
Jo, det stämmer nog. Har inte provat awardfares faktiskt. Som utvecklare var det mer naturligt att hacka mot ett API än att hitta en hemsida :p

Och verkar som att gratisversionen av awardfares bara ger 30 dagar framåt? Det här verktyget söker betydligt längre fram än så.
 

Canadien

Medlem
Jo, det stämmer nog. Har inte provat awardfares faktiskt. Som utvecklare var det mer naturligt att hacka mot ett API än att hitta en hemsida :p

Och verkar som att gratisversionen av awardfares bara ger 30 dagar framåt? Det här verktyget söker betydligt längre fram än så.

Fick inte med någon .exe i zipfilen, bara dll:er
 

Torandi

Medlem
Uppdatering: En uppdaterad version av programmet kan hittas på github (tillsammans med koden): Release Star Alliance Search 0.2 · torandi/StarAllianceSearch · GitHub

Tar tacksamt emot ett linuxbygge!
Har nu publiserat ett linuxbygge :)

Fick inte med någon .exe i zipfilen, bara dll:er
Fixat, nu är det en "selfcontained" release, som innehåller en exe också.

Kan man välja antal platser? Exempel 2 passagerare eller 4 passagerare?
Fixat! La till flaggan -Pax
 
Toppen