Skip to content

v1.5.3

Choose a tag to compare

@JeanExtreme002 JeanExtreme002 released this 13 Aug 04:08
· 15 commits to main since this release
86f2d70

Restores getAirports(), which had been answering with an empty list since FR24
rebuilt its per-country airport pages as a client-rendered app.

Fixed

  • getAirports() / get_airports() returning nothing (#117) — FR24 replaced
    /data/airports/<country> with an Inertia.js page, so the <tbody> the parser
    scraped is gone. Rebuilding the scrape was not an option either: for large
    countries the page no longer carries the airport list at all, only links to
    per-state pages, and the new payload dropped latitude and longitude entirely.

    Both ports now read _json/airports.php, which returns every airport in one
    response with exactly the fields the Airport entity needs. Brazil + United
    States yields 2032 airports, where the scrape had been returning 0.

  • getCountryFlag(airport.country) / get_country_flag(airport.country) —
    the feed spells four countries with parentheses (Myanmar (Burma),
    Cocos (Keeling) Islands, Falkland Islands (Malvinas),
    Timor-Leste (East Timor)), which used to reach the flag URL verbatim and
    404. The flag slug is built with the same slugifier as the feed now, so
    chaining the two calls works.

  • An airport with one unusable coordinate no longer keeps the other. Half a
    position read as "located" to any caller gating on latitude.

Added

  • getAirports() / get_airports() with no argument returns every airport
    (6745 at the time of writing), which the per-country scrape could not do.

  • Countries may be passed as a single value or as any iterable — a string, a
    Countries member, a list, a set, a generator. Countries members are now
    accepted by getCountryFlag() / get_country_flag() too.

Changed

  • airport.country carries FR24's own spelling, so the four names above read
    with their parentheses. Code that matches on that string may need updating.

  • TypeScript: Airport.latitude and Airport.longitude are declared
    number | null, matching what the parser has always been able to return.
    Reading either field under strictNullChecks now needs a null check.

Internal

  • Numeric coercion is identical across the ports: ASCII decimals only, overflow
    rejected, unusable values null/None rather than 0. Verified with a
    1651-case differential fuzz run through both.

  • Coordinate complaints are summarised in a single log line instead of one per
    row, which matters now that one request carries every airport.

  • A live test pins every Countries value to a country the feed still names:
    the enum holds FR24's URL slugs while the feed carries display names, and a
    rename on either side would silently empty that country's filter.

  • Offline suites grew to 61 cases (Node) and 43 (Python), covering the parser
    with no network access.

Install: npm install flightradarapi@1.5.3 · pip install FlightRadarAPI==1.5.3