Repository navigation
v1.5.3
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 theAirportentity 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 onlatitude.
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
Countriesmember, a list, a set, a generator.Countriesmembers are now
accepted bygetCountryFlag()/get_country_flag()too.
Changed
-
airport.countrycarries FR24's own spelling, so the four names above read
with their parentheses. Code that matches on that string may need updating. -
TypeScript:
Airport.latitudeandAirport.longitudeare declared
number | null, matching what the parser has always been able to return.
Reading either field understrictNullChecksnow needs a null check.
Internal
-
Numeric coercion is identical across the ports: ASCII decimals only, overflow
rejected, unusable valuesnull/Nonerather than0. 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
Countriesvalue 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