mirror of
https://github.com/PlaneQuery/OpenAirframes.git
synced 2026-06-27 14:59:56 +02:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a35d26c7ec | |||
| 92188109a1 | |||
| 3b8a14a4b9 | |||
| e5f124428f | |||
| d5039fb766 |
@@ -74,6 +74,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
START_DATE: ${{ matrix.chunk.start_date }}
|
START_DATE: ${{ matrix.chunk.start_date }}
|
||||||
END_DATE: ${{ matrix.chunk.end_date }}
|
END_DATE: ${{ matrix.chunk.end_date }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
python -m src.adsb.download_and_list_icaos --start-date "$START_DATE" --end-date "$END_DATE"
|
python -m src.adsb.download_and_list_icaos --start-date "$START_DATE" --end-date "$END_DATE"
|
||||||
ls -lah data/output/
|
ls -lah data/output/
|
||||||
|
|||||||
@@ -5,6 +5,11 @@ on:
|
|||||||
# 6:00pm UTC every day - runs on default branch, triggers both
|
# 6:00pm UTC every day - runs on default branch, triggers both
|
||||||
- cron: "0 06 * * *"
|
- cron: "0 06 * * *"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
date:
|
||||||
|
description: 'Date to process (YYYY-MM-DD format, default: yesterday)'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@@ -58,7 +63,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Run FAA release script
|
- name: Run FAA release script
|
||||||
run: |
|
run: |
|
||||||
python src/create_daily_faa_release.py
|
python src/create_daily_faa_release.py ${{ inputs.date && format('--date {0}', inputs.date) || '' }}
|
||||||
ls -lah data/faa_releasable
|
ls -lah data/faa_releasable
|
||||||
ls -lah data/openairframes
|
ls -lah data/openairframes
|
||||||
|
|
||||||
@@ -93,8 +98,10 @@ jobs:
|
|||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
- name: Download and extract ADS-B data
|
- name: Download and extract ADS-B data
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
python -m src.adsb.download_and_list_icaos
|
python -m src.adsb.download_and_list_icaos ${{ inputs.date && format('--date {0}', inputs.date) || '' }}
|
||||||
ls -lah data/output/
|
ls -lah data/output/
|
||||||
|
|
||||||
- name: Check manifest exists
|
- name: Check manifest exists
|
||||||
@@ -164,7 +171,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Process chunk ${{ matrix.chunk }}
|
- name: Process chunk ${{ matrix.chunk }}
|
||||||
run: |
|
run: |
|
||||||
python -m src.adsb.process_icao_chunk --chunk-id ${{ matrix.chunk }} --total-chunks 4
|
python -m src.adsb.process_icao_chunk --chunk-id ${{ matrix.chunk }} --total-chunks 4 ${{ inputs.date && format('--date {0}', inputs.date) || '' }}
|
||||||
mkdir -p data/output/adsb_chunks
|
mkdir -p data/output/adsb_chunks
|
||||||
ls -lah data/output/adsb_chunks/ || echo "No chunks created"
|
ls -lah data/output/adsb_chunks/ || echo "No chunks created"
|
||||||
|
|
||||||
@@ -213,7 +220,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mkdir -p data/output/adsb_chunks
|
mkdir -p data/output/adsb_chunks
|
||||||
ls -lah data/output/adsb_chunks/ || echo "Directory empty or does not exist"
|
ls -lah data/output/adsb_chunks/ || echo "Directory empty or does not exist"
|
||||||
python -m src.adsb.combine_chunks_to_csv --chunks-dir data/output/adsb_chunks
|
python -m src.adsb.combine_chunks_to_csv --chunks-dir data/output/adsb_chunks ${{ inputs.date && format('--date {0}', inputs.date) || '' }}
|
||||||
ls -lah data/openairframes/
|
ls -lah data/openairframes/
|
||||||
|
|
||||||
- name: Upload ADS-B artifacts
|
- name: Upload ADS-B artifacts
|
||||||
@@ -300,13 +307,35 @@ jobs:
|
|||||||
TAG="openairframes-${DATE}${BRANCH_SUFFIX}"
|
TAG="openairframes-${DATE}${BRANCH_SUFFIX}"
|
||||||
|
|
||||||
# Find files from artifacts using find (handles nested structures)
|
# Find files from artifacts using find (handles nested structures)
|
||||||
CSV_FILE_FAA=$(find artifacts/faa -name "openairframes_faa_*.csv" | head -1)
|
CSV_FILE_FAA=$(find artifacts/faa -name "openairframes_faa_*.csv" -type f 2>/dev/null | head -1)
|
||||||
|
CSV_FILE_ADSB=$(find artifacts/adsb -name "openairframes_adsb_*.csv" -type f 2>/dev/null | head -1)
|
||||||
|
CSV_FILE_COMMUNITY=$(find artifacts/community -name "openairframes_community_*.csv" -type f 2>/dev/null | head -1)
|
||||||
|
ZIP_FILE=$(find artifacts/faa -name "ReleasableAircraft_*.zip" -type f 2>/dev/null | head -1)
|
||||||
|
|
||||||
|
# Validate required files exist
|
||||||
|
MISSING_FILES=""
|
||||||
|
if [ -z "$CSV_FILE_FAA" ] || [ ! -f "$CSV_FILE_FAA" ]; then
|
||||||
|
MISSING_FILES="$MISSING_FILES FAA_CSV"
|
||||||
|
fi
|
||||||
|
if [ -z "$CSV_FILE_ADSB" ] || [ ! -f "$CSV_FILE_ADSB" ]; then
|
||||||
|
MISSING_FILES="$MISSING_FILES ADSB_CSV"
|
||||||
|
fi
|
||||||
|
if [ -z "$ZIP_FILE" ] || [ ! -f "$ZIP_FILE" ]; then
|
||||||
|
MISSING_FILES="$MISSING_FILES FAA_ZIP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$MISSING_FILES" ]; then
|
||||||
|
echo "ERROR: Missing required release files:$MISSING_FILES"
|
||||||
|
echo "FAA CSV: $CSV_FILE_FAA"
|
||||||
|
echo "ADSB CSV: $CSV_FILE_ADSB"
|
||||||
|
echo "ZIP: $ZIP_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get basenames for display
|
||||||
CSV_BASENAME_FAA=$(basename "$CSV_FILE_FAA")
|
CSV_BASENAME_FAA=$(basename "$CSV_FILE_FAA")
|
||||||
CSV_FILE_ADSB=$(find artifacts/adsb -name "openairframes_adsb_*.csv" | head -1)
|
|
||||||
CSV_BASENAME_ADSB=$(basename "$CSV_FILE_ADSB")
|
CSV_BASENAME_ADSB=$(basename "$CSV_FILE_ADSB")
|
||||||
CSV_FILE_COMMUNITY=$(find artifacts/community -name "openairframes_community_*.csv" 2>/dev/null | head -1 || echo "")
|
|
||||||
CSV_BASENAME_COMMUNITY=$(basename "$CSV_FILE_COMMUNITY" 2>/dev/null || echo "")
|
CSV_BASENAME_COMMUNITY=$(basename "$CSV_FILE_COMMUNITY" 2>/dev/null || echo "")
|
||||||
ZIP_FILE=$(find artifacts/faa -name "ReleasableAircraft_*.zip" | head -1)
|
|
||||||
ZIP_BASENAME=$(basename "$ZIP_FILE")
|
ZIP_BASENAME=$(basename "$ZIP_FILE")
|
||||||
|
|
||||||
echo "date=$DATE" >> "$GITHUB_OUTPUT"
|
echo "date=$DATE" >> "$GITHUB_OUTPUT"
|
||||||
@@ -320,6 +349,12 @@ jobs:
|
|||||||
echo "zip_file=$ZIP_FILE" >> "$GITHUB_OUTPUT"
|
echo "zip_file=$ZIP_FILE" >> "$GITHUB_OUTPUT"
|
||||||
echo "zip_basename=$ZIP_BASENAME" >> "$GITHUB_OUTPUT"
|
echo "zip_basename=$ZIP_BASENAME" >> "$GITHUB_OUTPUT"
|
||||||
echo "name=OpenAirframes snapshot ($DATE)${BRANCH_SUFFIX}" >> "$GITHUB_OUTPUT"
|
echo "name=OpenAirframes snapshot ($DATE)${BRANCH_SUFFIX}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
echo "Found files:"
|
||||||
|
echo " FAA CSV: $CSV_FILE_FAA"
|
||||||
|
echo " ADSB CSV: $CSV_FILE_ADSB"
|
||||||
|
echo " Community CSV: $CSV_FILE_COMMUNITY"
|
||||||
|
echo " ZIP: $ZIP_FILE"
|
||||||
|
|
||||||
- name: Checkout for gh CLI
|
- name: Checkout for gh CLI
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -336,6 +371,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.meta.outputs.tag }}
|
tag_name: ${{ steps.meta.outputs.tag }}
|
||||||
name: ${{ steps.meta.outputs.name }}
|
name: ${{ steps.meta.outputs.name }}
|
||||||
|
fail_on_unmatched_files: true
|
||||||
body: |
|
body: |
|
||||||
Automated daily snapshot generated at 06:00 UTC for ${{ steps.meta.outputs.date }}.
|
Automated daily snapshot generated at 06:00 UTC for ${{ steps.meta.outputs.date }}.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"contributor_name": "applesauce123",
|
||||||
|
"contributor_uuid": "2981c3ee-8712-5f96-84bf-732eda515a3f",
|
||||||
|
"creation_timestamp": "2026-02-13T00:19:10.249287+00:00",
|
||||||
|
"registration_number": "N12345",
|
||||||
|
"tags": {
|
||||||
|
"internet": "starlink"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"contributor_name": "applesauce123",
|
||||||
|
"contributor_uuid": "2981c3ee-8712-5f96-84bf-732eda515a3f",
|
||||||
|
"creation_timestamp": "2026-02-13T00:19:10.249287+00:00",
|
||||||
|
"tags": {
|
||||||
|
"internet": "viasat",
|
||||||
|
"owner": "John Doe"
|
||||||
|
},
|
||||||
|
"transponder_code_hex": "ABC123"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -54,7 +54,14 @@
|
|||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
"$ref": "#/$defs/tagValue"
|
"$ref": "#/$defs/tagValue"
|
||||||
},
|
},
|
||||||
"properties": {}
|
"properties": {
|
||||||
|
"internet": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"owner": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"allOf": [
|
"allOf": [
|
||||||
|
|||||||
@@ -1,6 +1,15 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone, timedelta
|
||||||
date_str = datetime.now(timezone.utc).strftime("%Y-%m-%d")
|
import argparse
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description="Create daily FAA release")
|
||||||
|
parser.add_argument("--date", type=str, help="Date to process (YYYY-MM-DD format, default: today)")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.date:
|
||||||
|
date_str = args.date
|
||||||
|
else:
|
||||||
|
date_str = datetime.now(timezone.utc).strftime("%Y-%m-%d")
|
||||||
|
|
||||||
out_dir = Path("data/faa_releasable")
|
out_dir = Path("data/faa_releasable")
|
||||||
out_dir.mkdir(parents=True, exist_ok=True)
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user