import os
import requests
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
def generate_urls(data_type: str, start_date: str, end_date: str) -> list:
"""
Generate a list of URLs for flight lists, flight events, or measurements.
Args:
data_type (str): Type of data ("flight_list", "flight_events", "measurements").
start_date (str): The start date in the format YYYYMM or YYYYMMDD.
end_date (str): The end date in the format YYYYMM or YYYYMMDD.
Returns:
list: List of generated URLs.
"""
base_url = f"https://www.eurocontrol.int/performance/data/download/OPDI/v002/{data_type}/{data_type}_"
urls = []
if data_type == "flight_list": # Monthly intervals
start_dt = datetime.strptime(start_date, "%Y%m")
end_dt = datetime.strptime(end_date, "%Y%m")
delta = relativedelta(months=1)
else: # Flight events & Measurements: 10-day intervals
start_dt = datetime.strptime(start_date, "%Y%m%d")
end_dt = datetime.strptime(end_date, "%Y%m%d")
delta = timedelta(days=10)
current_dt = start_dt
while current_dt <= end_dt:
if data_type == "flight_list":
url = f"{base_url}{current_dt.strftime('%Y%m')}.parquet"
else:
next_dt = current_dt + delta
url = f"{base_url}{current_dt.strftime('%Y%m%d')}_{next_dt.strftime('%Y%m%d')}.parquet"
urls.append(url)
current_dt += delta
return urls
def download_files(urls: list, save_folder: str):
"""
Download files from the generated URLs and save them in the specified folder.
Args:
urls (list): List of URLs to download.
save_folder (str): Folder to save downloaded files.
"""
os.makedirs(save_folder, exist_ok=True)
for url in urls:
file_name = url.split("/")[-1]
save_path = os.path.join(save_folder, file_name)
if os.path.exists(save_path):
print(f"Skipping {file_name}, already exists.")
continue
print(f"Downloading {url}...")
try:
response = requests.get(url, stream=True)
response.raise_for_status()
with open(save_path, "wb") as file:
for chunk in response.iter_content(chunk_size=1024):
file.write(chunk)
print(f"Saved to {save_path}")
except requests.exceptions.RequestException as e:
print(f"Failed to download {url}: {e}")
if __name__ == "__main__":
datasets = {
#"flight_list": ("`r format(cfg$coverage$start, "%Y%m")`", "`r format(cfg$coverage$end, "%Y%m")`"),
"flight_events": ("`r format(start_date, "%Y%m%d")`", "`r format(end_date, "%Y%m%d")`")#,
#"measurements": ("`r format(cfg$coverage$start, "%Y%m%d")`", "`r format(cfg$coverage$end, "%Y%m%d")`")
}
for data_type, (start_date, end_date) in datasets.items():
urls = generate_urls(data_type, start_date, end_date)
download_files(urls, f"./data/{data_type}")Download Flight Events v0.0.2 Datasets
Coverage: January 01, 2022 - April 30, 2026 | Version: v0.0.2
Below you will find links to download flight events v0.0.2 data files from January 01, 2022 to April 30, 2026. Each file is in Parquet format, providing a highly efficient way to store and manage large datasets. The datasets are separated into 10-day intervals. Please note that each dataset covers data up to, but not including, the last day listed in its name.
Automated Download
If you want to automate your downloads, you can generate the link for downloading using the following format where YYYYMMDD is the start date of the 10-day period. Note that the first date to start generating intervals for is January 01, 2022.
https://www.eurocontrol.int/performance/data/download/OPDI/v002/flight_events/flight_events_{YYYYMMDD}_{YYYYMMDD_next10}.parquet
library(httr)
library(lubridate)
library(fs)
generate_urls <- function(data_type, start_date, end_date) {
# Generates a list of URLs for flight lists, flight events, or measurements.
#
# Args:
# data_type (character): Type of data ("flight_list", "flight_events", "measurements").
# start_date (character): The start date in format YYYYMM or YYYYMMDD.
# end_date (character): The end date in format YYYYMM or YYYYMMDD.
#
# Returns:
# A vector of URLs.
base_url <- paste0("https://www.eurocontrol.int/performance/data/download/OPDI/v002/", data_type, "/", data_type, "_")
urls <- c()
if (data_type == "flight_list") {
start_dt <- ymd(paste0(start_date, "01"))
end_dt <- ymd(paste0(end_date, "01"))
delta <- months(1)
} else {
start_dt <- ymd(start_date)
end_dt <- ymd(end_date)
delta <- days(10)
}
current_dt <- start_dt
while (current_dt <= end_dt) {
if (data_type == "flight_list") {
url <- paste0(base_url, format(current_dt, "%Y%m"), ".parquet")
} else {
next_dt <- current_dt + delta
url <- paste0(base_url, format(current_dt, "%Y%m%d"), "_", format(next_dt, "%Y%m%d"), ".parquet")
}
urls <- c(urls, url)
current_dt <- current_dt + delta
}
return(urls)
}
download_files <- function(urls, save_folder) {
# Downloads files from the generated URLs and saves them in the specified folder.
# Skips files that already exist.
#
# Args:
# urls (character vector): List of URLs to download.
# save_folder (character): Folder to save downloaded files.
if (!dir_exists(save_folder)) {
dir_create(save_folder)
}
for (url in urls) {
file_name <- basename(url)
save_path <- file.path(save_folder, file_name)
if (file_exists(save_path)) {
message("Skipping ", file_name, ", already exists.")
next
}
message("Downloading ", url, "...")
tryCatch({
response <- GET(url, write_disk(save_path, overwrite = TRUE))
if (http_error(response)) {
warning("Failed to download ", url, ": HTTP error ", status_code(response))
} else {
message("Saved to ", save_path)
}
}, error = function(e) {
warning("Failed to download ", url, ": ", e$message)
})
}
}
# Example usage
datasets <- list(
#"flight_list" = c("`r format(cfg$coverage$start, "%Y%m")`", "`r format(cfg$coverage$end, "%Y%m")`"),
"flight_events" = c("`r format(start_date, "%Y%m%d")`", "`r format(end_date, "%Y%m%d")`")#,
#"measurements" = c("`r format(cfg$coverage$start, "%Y%m%d")`", "`r format(cfg$coverage$end, "%Y%m%d")`")
)
for (data_type in names(datasets)) {
dates <- datasets[[data_type]]
urls <- generate_urls(data_type, dates[1], dates[2])
download_files(urls, paste0("./data/", data_type))
}Download Available Datasets
Each dataset corresponds to a specific 10-day period and is listed below for easy access.
- January 01, 2022 - January 11, 2022
Download flight_events_20220101_20220111.parquet - January 11, 2022 - January 21, 2022
Download flight_events_20220111_20220121.parquet - January 21, 2022 - January 31, 2022
Download flight_events_20220121_20220131.parquet - January 31, 2022 - February 10, 2022
Download flight_events_20220131_20220210.parquet - February 10, 2022 - February 20, 2022
Download flight_events_20220210_20220220.parquet - February 20, 2022 - March 02, 2022
Download flight_events_20220220_20220302.parquet - March 02, 2022 - March 12, 2022
Download flight_events_20220302_20220312.parquet - March 12, 2022 - March 22, 2022
Download flight_events_20220312_20220322.parquet - March 22, 2022 - April 01, 2022
Download flight_events_20220322_20220401.parquet - April 01, 2022 - April 11, 2022
Download flight_events_20220401_20220411.parquet - April 11, 2022 - April 21, 2022
Download flight_events_20220411_20220421.parquet - April 21, 2022 - May 01, 2022
Download flight_events_20220421_20220501.parquet - May 01, 2022 - May 11, 2022
Download flight_events_20220501_20220511.parquet - May 11, 2022 - May 21, 2022
Download flight_events_20220511_20220521.parquet - May 21, 2022 - May 31, 2022
Download flight_events_20220521_20220531.parquet - May 31, 2022 - June 10, 2022
Download flight_events_20220531_20220610.parquet - June 10, 2022 - June 20, 2022
Download flight_events_20220610_20220620.parquet - June 20, 2022 - June 30, 2022
Download flight_events_20220620_20220630.parquet - June 30, 2022 - July 10, 2022
Download flight_events_20220630_20220710.parquet - July 10, 2022 - July 20, 2022
Download flight_events_20220710_20220720.parquet - July 20, 2022 - July 30, 2022
Download flight_events_20220720_20220730.parquet - July 30, 2022 - August 09, 2022
Download flight_events_20220730_20220809.parquet - August 09, 2022 - August 19, 2022
Download flight_events_20220809_20220819.parquet - August 19, 2022 - August 29, 2022
Download flight_events_20220819_20220829.parquet - August 29, 2022 - September 08, 2022
Download flight_events_20220829_20220908.parquet - September 08, 2022 - September 18, 2022
Download flight_events_20220908_20220918.parquet - September 18, 2022 - September 28, 2022
Download flight_events_20220918_20220928.parquet - September 28, 2022 - October 08, 2022
Download flight_events_20220928_20221008.parquet - October 08, 2022 - October 18, 2022
Download flight_events_20221008_20221018.parquet - October 18, 2022 - October 28, 2022
Download flight_events_20221018_20221028.parquet - October 28, 2022 - November 07, 2022
Download flight_events_20221028_20221107.parquet - November 07, 2022 - November 17, 2022
Download flight_events_20221107_20221117.parquet - November 17, 2022 - November 27, 2022
Download flight_events_20221117_20221127.parquet - November 27, 2022 - December 07, 2022
Download flight_events_20221127_20221207.parquet - December 07, 2022 - December 17, 2022
Download flight_events_20221207_20221217.parquet - December 17, 2022 - December 27, 2022
Download flight_events_20221217_20221227.parquet - December 27, 2022 - January 06, 2023
Download flight_events_20221227_20230106.parquet - January 06, 2023 - January 16, 2023
Download flight_events_20230106_20230116.parquet - January 16, 2023 - January 26, 2023
Download flight_events_20230116_20230126.parquet - January 26, 2023 - February 05, 2023
Download flight_events_20230126_20230205.parquet - February 05, 2023 - February 15, 2023
Download flight_events_20230205_20230215.parquet - February 15, 2023 - February 25, 2023
Download flight_events_20230215_20230225.parquet - February 25, 2023 - March 07, 2023
Download flight_events_20230225_20230307.parquet - March 07, 2023 - March 17, 2023
Download flight_events_20230307_20230317.parquet - March 17, 2023 - March 27, 2023
Download flight_events_20230317_20230327.parquet - March 27, 2023 - April 06, 2023
Download flight_events_20230327_20230406.parquet - April 06, 2023 - April 16, 2023
Download flight_events_20230406_20230416.parquet - April 16, 2023 - April 26, 2023
Download flight_events_20230416_20230426.parquet - April 26, 2023 - May 06, 2023
Download flight_events_20230426_20230506.parquet - May 06, 2023 - May 16, 2023
Download flight_events_20230506_20230516.parquet - May 16, 2023 - May 26, 2023
Download flight_events_20230516_20230526.parquet - May 26, 2023 - June 05, 2023
Download flight_events_20230526_20230605.parquet - June 05, 2023 - June 15, 2023
Download flight_events_20230605_20230615.parquet - June 15, 2023 - June 25, 2023
Download flight_events_20230615_20230625.parquet - June 25, 2023 - July 05, 2023
Download flight_events_20230625_20230705.parquet - July 05, 2023 - July 15, 2023
Download flight_events_20230705_20230715.parquet - July 15, 2023 - July 25, 2023
Download flight_events_20230715_20230725.parquet - July 25, 2023 - August 04, 2023
Download flight_events_20230725_20230804.parquet - August 04, 2023 - August 14, 2023
Download flight_events_20230804_20230814.parquet - August 14, 2023 - August 24, 2023
Download flight_events_20230814_20230824.parquet - August 24, 2023 - September 03, 2023
Download flight_events_20230824_20230903.parquet - September 03, 2023 - September 13, 2023
Download flight_events_20230903_20230913.parquet - September 13, 2023 - September 23, 2023
Download flight_events_20230913_20230923.parquet - September 23, 2023 - October 03, 2023
Download flight_events_20230923_20231003.parquet - October 03, 2023 - October 13, 2023
Download flight_events_20231003_20231013.parquet - October 13, 2023 - October 23, 2023
Download flight_events_20231013_20231023.parquet - October 23, 2023 - November 02, 2023
Download flight_events_20231023_20231102.parquet - November 02, 2023 - November 12, 2023
Download flight_events_20231102_20231112.parquet - November 12, 2023 - November 22, 2023
Download flight_events_20231112_20231122.parquet - November 22, 2023 - December 02, 2023
Download flight_events_20231122_20231202.parquet - December 02, 2023 - December 12, 2023
Download flight_events_20231202_20231212.parquet - December 12, 2023 - December 22, 2023
Download flight_events_20231212_20231222.parquet - December 22, 2023 - January 01, 2024
Download flight_events_20231222_20240101.parquet - January 01, 2024 - January 11, 2024
Download flight_events_20240101_20240111.parquet - January 11, 2024 - January 21, 2024
Download flight_events_20240111_20240121.parquet - January 21, 2024 - January 31, 2024
Download flight_events_20240121_20240131.parquet - January 31, 2024 - February 10, 2024
Download flight_events_20240131_20240210.parquet - February 10, 2024 - February 20, 2024
Download flight_events_20240210_20240220.parquet - February 20, 2024 - March 01, 2024
Download flight_events_20240220_20240301.parquet - March 01, 2024 - March 11, 2024
Download flight_events_20240301_20240311.parquet - March 11, 2024 - March 21, 2024
Download flight_events_20240311_20240321.parquet - March 21, 2024 - March 31, 2024
Download flight_events_20240321_20240331.parquet - March 31, 2024 - April 10, 2024
Download flight_events_20240331_20240410.parquet - April 10, 2024 - April 20, 2024
Download flight_events_20240410_20240420.parquet - April 20, 2024 - April 30, 2024
Download flight_events_20240420_20240430.parquet - April 30, 2024 - May 10, 2024
Download flight_events_20240430_20240510.parquet - May 10, 2024 - May 20, 2024
Download flight_events_20240510_20240520.parquet - May 20, 2024 - May 30, 2024
Download flight_events_20240520_20240530.parquet - May 30, 2024 - June 09, 2024
Download flight_events_20240530_20240609.parquet - June 09, 2024 - June 19, 2024
Download flight_events_20240609_20240619.parquet - June 19, 2024 - June 29, 2024
Download flight_events_20240619_20240629.parquet - June 29, 2024 - July 09, 2024
Download flight_events_20240629_20240709.parquet - July 09, 2024 - July 19, 2024
Download flight_events_20240709_20240719.parquet - July 19, 2024 - July 29, 2024
Download flight_events_20240719_20240729.parquet - July 29, 2024 - August 08, 2024
Download flight_events_20240729_20240808.parquet - August 08, 2024 - August 18, 2024
Download flight_events_20240808_20240818.parquet - August 18, 2024 - August 28, 2024
Download flight_events_20240818_20240828.parquet - August 28, 2024 - September 07, 2024
Download flight_events_20240828_20240907.parquet - September 07, 2024 - September 17, 2024
Download flight_events_20240907_20240917.parquet - September 17, 2024 - September 27, 2024
Download flight_events_20240917_20240927.parquet - September 27, 2024 - October 07, 2024
Download flight_events_20240927_20241007.parquet - October 07, 2024 - October 17, 2024
Download flight_events_20241007_20241017.parquet - October 17, 2024 - October 27, 2024
Download flight_events_20241017_20241027.parquet - October 27, 2024 - November 06, 2024
Download flight_events_20241027_20241106.parquet - November 06, 2024 - November 16, 2024
Download flight_events_20241106_20241116.parquet - November 16, 2024 - November 26, 2024
Download flight_events_20241116_20241126.parquet - November 26, 2024 - December 06, 2024
Download flight_events_20241126_20241206.parquet - December 06, 2024 - December 16, 2024
Download flight_events_20241206_20241216.parquet - December 16, 2024 - December 26, 2024
Download flight_events_20241216_20241226.parquet - December 26, 2024 - January 05, 2025
Download flight_events_20241226_20250105.parquet - January 05, 2025 - January 15, 2025
Download flight_events_20250105_20250115.parquet - January 15, 2025 - January 25, 2025
Download flight_events_20250115_20250125.parquet - January 25, 2025 - February 04, 2025
Download flight_events_20250125_20250204.parquet - February 04, 2025 - February 14, 2025
Download flight_events_20250204_20250214.parquet - February 14, 2025 - February 24, 2025
Download flight_events_20250214_20250224.parquet - February 24, 2025 - March 06, 2025
Download flight_events_20250224_20250306.parquet - March 06, 2025 - March 16, 2025
Download flight_events_20250306_20250316.parquet - March 16, 2025 - March 26, 2025
Download flight_events_20250316_20250326.parquet - March 26, 2025 - April 05, 2025
Download flight_events_20250326_20250405.parquet - April 05, 2025 - April 15, 2025
Download flight_events_20250405_20250415.parquet - April 15, 2025 - April 25, 2025
Download flight_events_20250415_20250425.parquet - April 25, 2025 - May 05, 2025
Download flight_events_20250425_20250505.parquet - May 05, 2025 - May 15, 2025
Download flight_events_20250505_20250515.parquet - May 15, 2025 - May 25, 2025
Download flight_events_20250515_20250525.parquet - May 25, 2025 - June 04, 2025
Download flight_events_20250525_20250604.parquet - June 04, 2025 - June 14, 2025
Download flight_events_20250604_20250614.parquet - June 14, 2025 - June 24, 2025
Download flight_events_20250614_20250624.parquet - June 24, 2025 - July 04, 2025
Download flight_events_20250624_20250704.parquet - July 04, 2025 - July 14, 2025
Download flight_events_20250704_20250714.parquet - July 14, 2025 - July 24, 2025
Download flight_events_20250714_20250724.parquet - July 24, 2025 - August 03, 2025
Download flight_events_20250724_20250803.parquet - August 03, 2025 - August 13, 2025
Download flight_events_20250803_20250813.parquet - August 13, 2025 - August 23, 2025
Download flight_events_20250813_20250823.parquet - August 23, 2025 - September 02, 2025
Download flight_events_20250823_20250902.parquet - September 02, 2025 - September 12, 2025
Download flight_events_20250902_20250912.parquet - September 12, 2025 - September 22, 2025
Download flight_events_20250912_20250922.parquet - September 22, 2025 - October 02, 2025
Download flight_events_20250922_20251002.parquet - October 02, 2025 - October 12, 2025
Download flight_events_20251002_20251012.parquet - October 12, 2025 - October 22, 2025
Download flight_events_20251012_20251022.parquet - October 22, 2025 - November 01, 2025
Download flight_events_20251022_20251101.parquet - November 01, 2025 - November 11, 2025
Download flight_events_20251101_20251111.parquet - November 11, 2025 - November 21, 2025
Download flight_events_20251111_20251121.parquet - November 21, 2025 - December 01, 2025
Download flight_events_20251121_20251201.parquet - December 01, 2025 - December 11, 2025
Download flight_events_20251201_20251211.parquet - December 11, 2025 - December 21, 2025
Download flight_events_20251211_20251221.parquet - December 21, 2025 - December 31, 2025
Download flight_events_20251221_20251231.parquet - December 31, 2025 - January 10, 2026
Download flight_events_20251231_20260110.parquet - January 10, 2026 - January 20, 2026
Download flight_events_20260110_20260120.parquet - January 20, 2026 - January 30, 2026
Download flight_events_20260120_20260130.parquet - January 30, 2026 - February 09, 2026
Download flight_events_20260130_20260209.parquet - February 09, 2026 - February 19, 2026
Download flight_events_20260209_20260219.parquet - February 19, 2026 - March 01, 2026
Download flight_events_20260219_20260301.parquet - March 01, 2026 - March 11, 2026
Download flight_events_20260301_20260311.parquet - March 11, 2026 - March 21, 2026
Download flight_events_20260311_20260321.parquet - March 21, 2026 - March 31, 2026
Download flight_events_20260321_20260331.parquet - March 31, 2026 - April 10, 2026
Download flight_events_20260331_20260410.parquet - April 10, 2026 - April 20, 2026
Download flight_events_20260410_20260420.parquet - April 20, 2026 - April 30, 2026
Download flight_events_20260420_20260430.parquet
We hope you find these datasets useful for your analysis and research. If you have any questions or require further assistance, please contact us at [email protected].