Skip to content

Commit 7008913

Browse files
Remove Google Flights provider from OSS distribution
- Delete _vendor/google_flights.py (TLS fingerprint scraper) - Delete providers/google.py and skyroute re-exports - Delete test_vendor.py (Google-specific tests) - Remove curl-cffi dependency and google-flights keyword - Rewrite demo command to use pre-converted fixture data - Update all test mocks from google to duffel/amadeus - Update README: two providers (Duffel, Amadeus) - Rename _google_flights_url to _flight_compare_url in API - 99/99 tests passing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 244518f commit 7008913

17 files changed

Lines changed: 2349 additions & 7619 deletions

README.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# opensky
22

3-
`opensky` is an open-source flight search CLI that aggregates Google Flights, Duffel, and Amadeus results, then flags itineraries that transit through risky airports, land in risky countries, or appear to overfly whole-country conflict zones on regional segments.
3+
`opensky` is an open-source flight search CLI that aggregates Duffel and Amadeus results, then flags itineraries that transit through risky airports, land in risky countries, or appear to overfly whole-country conflict zones on regional segments.
44

55
## What The Engine Evaluates Today
66

@@ -38,7 +38,7 @@ python -m venv .venv && source .venv/bin/activate
3838
pip install -e .
3939
```
4040

41-
Copy `.env.example` to `.env` and fill in any API keys you have. Google Flights works without any keys.
41+
Copy `.env.example` to `.env` and fill in your API keys (Duffel token, Amadeus key + secret).
4242

4343
`skyroute` remains available as a compatibility command for now, but `opensky` is the canonical CLI.
4444

@@ -55,11 +55,10 @@ opensky demo --show-risky
5555

5656
## Providers
5757

58-
`opensky` supports three providers. Google Flights is always available. Duffel and Amadeus activate automatically when their env vars are set.
58+
`opensky` supports two providers. They activate automatically when their env vars are set.
5959

6060
| Provider | Env vars | Notes |
6161
|----------|----------|-------|
62-
| Google Flights | none (default) | Scrapes Google Flights. Needs a residential IP. |
6362
| [Duffel](https://duffel.com) | `OPENSKY_DUFFEL_TOKEN` | Fallback: `SKYROUTE_DUFFEL_TOKEN`. |
6463
| [Amadeus](https://developers.amadeus.com) | `OPENSKY_AMADEUS_KEY` + `OPENSKY_AMADEUS_SECRET` | Fallback: legacy `SKYROUTE_AMADEUS_KEY` + `SKYROUTE_AMADEUS_SECRET`. |
6564

@@ -163,7 +162,6 @@ This is informational only. Always check official NOTAMs and airline advisories
163162

164163
## Limitations
165164

166-
- Google Flights often requires a residential IP. Use `--proxy` if you are running searches from a server.
167165
- Prices can differ from airline and OTA checkout pages.
168166
- The conflict-zone database is a best-effort dataset and can be incomplete or stale.
169167
- Overflight screening uses a regional great-circle proxy, not filed flight plans or live ATC reroutes.

api/main.py

Lines changed: 1891 additions & 0 deletions
Large diffs are not rendered by default.

pyproject.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ requires-python = ">=3.11"
1212
authors = [
1313
{ name = "Federico De Ponte" },
1414
]
15-
keywords = ["flights", "travel", "safety", "conflict-zones", "google-flights"]
15+
keywords = ["flights", "travel", "safety", "conflict-zones"]
1616
classifiers = [
1717
"Development Status :: 4 - Beta",
1818
"Environment :: Console",
@@ -22,7 +22,6 @@ classifiers = [
2222
"Topic :: Internet",
2323
]
2424
dependencies = [
25-
"curl-cffi>=0.7",
2625
"typer>=0.15",
2726
"rich>=13.0",
2827
"pydantic>=2.10",

0 commit comments

Comments
 (0)