Verktyg för att söka StarAlliance award flighter

torandi

New member
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.
 
Alltid kul med nya projekt men ger inte denna samma resultat som Awardfares redan gör? //emoji.tapatalk-cdn.com/emoji848.png
 
Brandten skrev:Alltid kul med nya projekt men ger inte denna samma resultat som Awardfares redan gör?Klicka för att utvidga...
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 data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7



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å.
 
Torandi skrev: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 hemsidaOch verkar som att gratisversionen av awardfares bara ger 30 dagar framåt? Det här verktyget söker betydligt längre fram än så.Klicka för att utvidga...


Fick inte med någon .exe i zipfilen, bara dll:er
 
Canadien skrev:Fick inte med någon .exe i zipfilen, bara dll:erKlicka för att utvidga...
Det stämmer, det är ett dotnet program. Du kan köra det genom att skriva dotnet StarAllianceSearch.dll



Insåg dock nu att jag nog kan publisera om det och gör en exe av den, kollar på det ikväll.
 
Uppdatering: En uppdaterad version av programmet kan hittas på github (tillsammans med koden): Release Star Alliance Search 0.2 · torandi/StarAllianceSearch · GitHub




KennethL skrev:Tar tacksamt emot ett linuxbygge!Klicka för att utvidga...
Har nu publiserat ett linuxbygge data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7




Canadien skrev:Fick inte med någon .exe i zipfilen, bara dll:erKlicka för att utvidga...
Fixat, nu är det en "selfcontained" release, som innehåller en exe också.




Kimmen00 skrev:Kan man välja antal platser? Exempel 2 passagerare eller 4 passagerare?Klicka för att utvidga...
Fixat! La till flaggan -Pax
 
Bra för det sitter jag på Android idag och varken Linux eller Windows... får testa lite senare, bra initiativ!
 
Kul grej, skall leka lite på macen sen. Finns det nåt speciellt du känner att du skulle vilja vidareutveckla om man tittar in i koden så kanske man kan hjälpa till om andan faller på?
 
jonaseriksson84 skrev:Kul grej, skall leka lite på macen sen. Finns det nåt speciellt du känner att du skulle vilja vidareutveckla om man tittar in i koden så kanske man kan hjälpa till om andan faller på?Klicka för att utvidga...
Nästa grej som nog vore bra är att lägga till möjligheten att begränsa antalet parallella requests, just nu skickar den iväg alla på en gång.

Tänker speciellt om man vill köra det på en server och maila sig själv resultatet så är det förmodligen bättre att minska lasten på APIt - mindre risk att de blockerar ens ip data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
 
Inte meningen att hijacka tråden men jag har en generell fråga om detta med flygbolag och APIs.



Har nyligen hittat Google Flights vilket enligt mig ger en bra översikt över det jag är intresserad av för tillfället - hitta flighter till intressanta destinationer som ger bra värde om man ser till pris / miles. T.ex ser jag att Malaga är en bra destination generellt om man vill tjäna miles till ett bra pris.



Min fråga är alltså - är det möjligt att skapa nått verktyg som tar fram information och skapar alerts när det dyker upp förmånliga resor som ger många miles till lågt pris? Är ingen utvecklare så vet inte om det är lätt eller svårt, om det redan finns sådana verktyg eller ej. Vet att det går för specifika datum och destinationer men om man är helt flexibel sett till resmål och datum så hittar jag inget sätt att få alerts.
 
Detta underbara forum! data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7 Fullt både dag, kväll och helg denna vecka men ska kika på detta när jag lite mer tid till övers data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7



Härligt initiativ!
 
Back
Top