Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/windows_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:

jobs:
version:
if: github.event_name == 'push'
runs-on: ubuntu-latest
permissions:
contents: write
Expand Down Expand Up @@ -42,14 +43,15 @@ jobs:

build:
needs: version
if: always()
runs-on: windows-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ needs.version.outputs.new_version }}
ref: ${{ needs.version.outputs.new_version || github.ref }}

- name: Set up Python
uses: actions/setup-python@v5
Expand All @@ -74,6 +76,7 @@ jobs:
retention-days: 5

- name: Create Release
if: github.event_name == 'push' && needs.version.result == 'success' && needs.version.outputs.new_version != ''
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.version.outputs.new_version }}
Expand Down
8 changes: 4 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,22 @@ python test_downloads.py # Run standalone test suite
python test_detection_standalone.py # Run download detection test
python tests/test_config_edge_cases.py # Config tests
python tests/test_integration.py # Integration tests
python tests/test_scheduler.py # Scheduler tests
python tests/test_sources.py # URL validation tests
python tests/test_browser_manager.py # Browser manager tests
python tests/test_weekend_in_the_country.py # WITC rename/promo tests
```

No test framework installed — tests are plain Python scripts run directly. No lint/typecheck configured.

## Architecture

- **Entry point**: `main.py` — 3 modes: GUI (tkinter), CLI download-all, CLI single-source
- **Sources**: `sources/` — 4 downloader implementations using factory via `create_downloader(name, browser_mgr, config)`
- **Windows batch scripts**: `download_global_features.bat` (Thu 11PM), `download_promos.bat` (Tue 11PM)
- **Sources**: `sources/` — 6 downloader implementations using factory via `create_downloader(name, browser_mgr, config)`
- **Base class**: `sources/base.py` — `BaseDownloader` with `download()` abstract method
- **Browser**: Firefox only (uses `webdriver-manager` for GeckoDriver auto-install)
- **Config**: `download_config.json` (gitignored, contains credentials) — auto-created with defaults on first run
- **GUI**: tkinter with dark theme in `gui.py`
- **GUI**: tkinter dark theme in `gui.py`

## Key Directories

Expand Down Expand Up @@ -65,7 +66,6 @@ GitHub Actions (`.github/workflows/windows_build.yml`): builds Windows exe on pu
- **`cow_password`**: Clear Out West password
- **`urls`**: Real Dropbox shared links per source (defaults are `YOUR_LINK_HERE` placeholders)
- **`output_dir`**: Base output directory (defaults to `downloads/`). All source folders are created under this.
- **`scheduled_downloads`**: Controls automated download timing (enabled, schedule_type, time, days)

To update config programmatically, use `ConfigManager`:
```python
Expand Down
4 changes: 2 additions & 2 deletions AudioDownloader.spec
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ a = Analysis(
'config',
'browser_manager',
'download_utils',
'scheduler',
'sources',
'sources.base',
'sources.melinda_myers',
'sources.northwest_outdoors',
'sources.whittler',
'sources.clear_out_west',
'sources.weekend_in_the_country',
'cryptography',
'OpenSSL',
'h2',
Expand Down Expand Up @@ -62,7 +62,7 @@ exe = EXE(
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
Expand Down
Loading
Loading