Home | News | aimsgui


This is a simple, open source, cross-platform tool that converts a downloaded easyJet AIMS detailed roster (in HTML format) into either a CSV format suitable for importing/pasting into spreadsheets/databases or an iCal format suitable for importing into calendar programs.

Your AIMS credentials are not required, so it is fully compatible with easyJet's acceptable use policies.

You will need to have Version 3.7 or later of the Python interpreter installed on your system (instructions below). The aimsgui tool itself does not require installation — just download the file from hursts.org.uk, place it somewhere convenient and run it as you would any executable file (e.g. on Windows, place it on your Desktop and double click it). To remove it from your system just delete the downloaded file.

Installation of Python interpreter


If you do not already have an up to date Python interpreter installed, go to https://www.python.org/downloads/ where you can download a standard Windows installer.


If you are running a reasonably up to date distro, you will almost certainly already have Python 3.7 or later preinstalled. If your distro packages it separately, you may need to install the Python3 tkinter package, which will be available in your distro's repositories: on Debian/Ubuntu this is the python3-tk package.

If you are using a very old distro, a quick google will provide multiple ways of installing an up to date version of Python and running it alongside the pre-installed one.


The version of Python preinstalled on MacOS is badly out of date (version 2), so if you have not already done so download and run a Python 3.7 or later installer from https://www.python.org/downloads/. This install coexists peacefully with the preinstalled version.

Starting aimsgui


The Python installer associates the .pyw file extension with the Python interpreter, so you just need to double click the aimsgui.pyw file to run it.

Linux and Mac

In the first instance, open a terminal window and:

     $ cd /path/to/where/you/put/downloaded/file
     $ python3 aimsgui.pyw

If you set the executable bit on the file, it can also be run directly, i.e:

     $ cd /path/to/where/you/put/downloaded/file
     $ ./aimsgui.pyw

And if you put it somewhere in your PATH:

     $ aimsgui.pyw

If you want a desktop/dock launcher it should be straightforward to use whatever method your desktop environment provides to create one.

How to use

  1. Download an AIMS detailed roster from ecrew in HTML format:

    Select "Crew Schedule - Detailed" from the main eCrew page. On the "Crew Schedule - Detailed" page that opens, set the start date, the number of days you require and select view times in UTC. Rosters that are downloaded with local times can still be processed, but the airframe lookup feature will be unavailable and the night flying calculation, which assumes UTC times, will produce erroneous results. Click "Show Schedule" and a detailed roster will eventually appear. Above this roster you will see:

    aims link

    Right click on the highlighted link to get the HTML version.

  2. Choose either Logbook output, which produces a CSV format text file, or Roster output, which produces an iCal file. If you choose the CSV file, set your flight deck role to get the correct data in the "Captain" and "Role" fields. FOs will need to manually change the "Role" from p1s to p2 where appropriate as this information is not available from AIMS. Registration and Type data are available when processing rosters from 2019 onwards.

  3. Click the "Import" button and select the downloaded roster. The file with the output type you chose will appear in the text window. You can edit it here if you wish. You can also select a part of it for copying to the clipboard.

  4. Click either the "Copy All/Selected" or the "Save" button as required.


I have tested against three years worth of my detailed rosters, so hopefully I have seen most of the weirdness that rostering and crewing can insert into your roster. There is, however, still a reasonable chance that there will be something odd in one of your rosters that I have not come across yet. If this happens, please send a copy of the offending roster to me at hursts.org+badroster@gmail.com and I will fix the code to handle that particular weirdness. In the meantime, if there is something that is obviously odd on your roster, you can download two shorter rosters that don't include the offending item and fill in the problem item manually.

One particular problem associated with using the detailed roster as a source of logbook and rostering data is that there may be incomplete entries at the start and end of the roster caused by a duty extending over midnight. Where this has happened the associated output data will be incomplete or spurious. This can generally be solved either by downloading a roster that covers both sides of the duty or by manually editing the affected duties.

Using the output

CSV text format

The CSV file is designed to be used with spreadsheets or databases. In particular, the "Off Blocks" and "On Blocks" fields are in a format that spreadsheets recognise and automatically translate into their internal datetime representation. This internal representation is actually a simple floating point number, to which you apply date and/or time number styles to achieve whatever representation you desire. This means that you can easily calculate the total duration of a set of off/on pairs by subtracting the sum of the off blocks times from the sum of the on blocks times; you can then apply a duration number style to this result to get an hours:minutes representation. You can grab a copy of an example spreadsheet based logbook I whipped up here.

As of Version 0.9.5, the final column is a night multiplier, a number between 0 and 1 that when multiplied by the duration of the flight will give you the duration of regulatory night flying (i.e flying between 30 minutes after sunset and 30 minutes before sunrise). This calculation uses an assumed great circle routing to assess the day/night status at the aircraft's current position throughout the flight, and thus is far more accurate than using the values for origin or destination.

The calculation of great circle routing uses a built in database of airfield positions. This data is a processed version of that found at openflights.org. This source seems to be of very high quality, with the data being released under an MIT open source licence. If you experience records without a night multiplier, it is likely that the cause is that one of the airfields on your route is not in the database; please contact me with the details, and I will get everything suitably updated.

I have done the majority of my testing with Google Sheets, which has the benefit of being free and having Google take care of your backup strategy. The easiest way to get the data into this is to paste it where you want it then click the popup clipboard icon which gives you the option of splitting the data into columns.

iCal format

I have mainly tested with Google Calendar, although I have confirmed that import to the company supplied Outlook 365 also works correctly. After import, the duty appears on the calendar as a route, and clicking the entry will show you the sectors in the event description.

A unique ID is generated for each duty on the detailed roster by appending the route to the scheduled duty start time. This means that if you reprocess a detailed roster after receiving changes, the duties that have not changed will retain the same ID. Uploading subsequent iterations should not, therefore, cause duplicate entries. For each change you will, however, need to manually remove the original duty; luckily on Google Calendar this is a two click operation.