-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.yaml
More file actions
86 lines (77 loc) · 4.43 KB
/
Copy pathconfig.yaml
File metadata and controls
86 lines (77 loc) · 4.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# ── WeekendWander config ──────────────────────────────────────────────
# Secrets (tokens) do NOT go here — set them in .env (see .env.example).
provider: google # flight price source: travelpayouts | google | amadeus
# Settings for `provider: google` (Google Flights via the fast-flights scraper).
# No token needed, but scraping is slow/brittle — point it at an explicit
# `destinations` list with a small window_weeks. Ignored by other providers.
google:
pairs_per_month: 1 # weekend date-pairs per dest per month. Keep at 1:
# ~48 dests x ~3 months x 1 = ~140 scrapes/run
# (several minutes; expect ⚠ failures). Shrink
# window_weeks or the list if it drags. For wide
# + reliable searches, use provider: amadeus.
pause: 1.0 # seconds between Google queries (be gentle)
# Settings for `provider: amadeus` (Amadeus Self-Service — real fares, free
# monthly quota). Needs AMADEUS_CLIENT_ID / AMADEUS_CLIENT_SECRET in .env.
# Like google, it prices an explicit `destinations` list date-pair by date-pair.
amadeus:
environment: test # test | production (separate credentials each)
max_results: 5 # offers to fetch per query (cheapest is kept)
pairs_per_month: 2 # weekend date-pairs per dest per month. Mind your
# free quota: dests x months x pairs calls/run.
pause: 0.2 # seconds between API calls
# --- Where you fly from / who you are ---
origin: RUH # your home airport (IATA). RUH = Riyadh
nationality: SAU # ⚠️ CHANGE THIS to YOUR passport (ISO3 code).
# Visa results are wrong if this is wrong.
# e.g. SAU, YEM, EGY, IND, PAK, GBR, USA ...
currency: sar
market: sa
# --- What counts as a deal ---
max_price: 2500 # only notify on round-trips at/under this (SAR)
direct_only: false # true = non-stop flights only
easy_visa_only: false # true = only visa-free / visa-on-arrival places
# --- How far you'll fly ---
max_hours: 6 # target flight time (great-circle proxy, ~800km/h).
# ~6h from RUH ≈ Europe, N/E Africa, much of Asia.
max_distance_km: 6000 # used only if max_hours is unset
max_destinations: 50 # cap on destinations checked per run (API budget!)
include_countries: [] # always include these ISO3
exclude_countries: [] # never include these ISO3
# Listed destinations are ALWAYS checked, even beyond max_hours.
# AUTO-SWEEP mode: set `destinations: []` and the provider checks the nearest
# airports within reach automatically (raise max_destinations for more). On
# Google keep it modest — it's slow + flaky; sweeping hundreds isn't practical.
# A broad explorer set (~48 hubs across Europe/Asia/Africa):
destinations: [DXB, AUH, SHJ, DOH, BAH, KWI, MCT, JED, DMM, # Gulf + Saudi
IST, SAW, AYT, ESB, TBS, GYD, EVN, # Türkiye + Caucasus
AMM, BEY, # Levant
CAI, HRG, SSH, ADD, NBO, KRT, DAR, ZNZ, # Africa
ATH, SKG, FCO, MXP, VCE, VIE, MUC, ZRH, BUD, OTP, SOF, BEG, PRG, # Europe
DEL, BOM, KHI, ISB, LHE, CMB, MLE, KTM, DAC] # South Asia
# --- Weekend pattern (Thu / Fri out, Sat / Sun back) ---
weekend:
depart_days: [thu, fri]
return_days: [sat, sun]
min_nights: 1
max_nights: 3
window_weeks: 8 # how far ahead to scan
# --- Run cadence (used with --loop) ---
interval_seconds: 21600 # 6 hours
state_file: weekendwander_state.db
notify_header: "Weekend flight deals from Riyadh"
# --- Notifications (toggle channels; creds via .env or here) ---
notify:
console: true
telegram:
enabled: true
# bot_token + chat_id come from .env (TG_BOT_TOKEN / TG_CHAT_ID)
email:
enabled: false
smtp_host: smtp.gmail.com
smtp_port: 587
username: you@example.com
password: "app-password-here"
from_addr: you@example.com
to_addr: you@example.com
subject: "Weekend flight deals"