- Removed 3 empty directories (
Bird - Western Meadow Lark,Veteran Geyser,Mountain Lion). - Merged 12 pairs of duplicate folders caused by NPS site listing the same sound under two titles (e.g.
American CootsandBird - American Coots). - Deleted invalid / truncated media files discovered during merge (0-byte or corrupt downloads).
- Replaced the bloated
change_log.txt(1,160 lines of automatedgit statusnoise) with this changelog.
- Updated all Python dependencies to latest stable versions:
requests2.26.0 → 2.33.1urllib31.26.6 → 2.6.3beautifulsoup44.9.3 → 4.14.3tqdm4.66.1 → 4.67.3idna3.2 → 3.13- plus transitive dependencies (
certifi,chardet,charset-normalizer,six,soupsieve)
- Fixes 13 known CVEs including proxy credential leakage, DoS via urllib3 redirects, and insecure temp-file reuse.
- Disabled the weekly scheduled cron job — the NPS sound library is essentially static, so automatic runs only produced empty commits.
- Retained
workflow_dispatchso the spider can still be triggered manually when needed. - Upgraded Action runtime to Python 3.12.
- Added
concurrencycontrol,timeout-minutes: 15, andfetch-depth: 1for faster, safer runs.
- Unified HTTP client: replaced mixed
urllib.request.urlopen+requestsusage with a singlerequests.Session(). - URL-level deduplication: the crawler now tracks processed URLs, preventing duplicate folders when the NPS site lists the same page under multiple titles.
- Directory name normalization: new downloads prefer short names and reuse existing folders with suffix variants (e.g.
Old Faithful Geyser). - Improved error handling, type hints, and logging consistency.
- Added 13 unit tests covering directory resolution, MD5 hashing, and duplicate removal logic.
- Added linting & formatting toolchain:
black,flake8,mypy,pytest,pre-commit. - Added
Makefile,pyproject.toml,.pre-commit-config.yaml, and.github/dependabot.yml. - Added
requirements-dev.txtfor reproducible development dependencies.
- Added
--dry-runCLI flag to preview downloads without writing files. - Auto-disable tqdm progress bars in non-TTY / CI environments.
- Added executable permission to
spider.py.
- Rewrote README with clearer copyright notices, compliance statement, and CI badges.
- Added explicit robots.txt compliance and public domain attribution guidance.
- Fixed LICENSE copyright holder name.
- Bumped dev dependencies to patched versions:
pytest8.3.5 → 9.0.3,black24.10.0 → 26.3.1. - Removed unused runtime dependencies (
python-utils,six) fromrequirements.txtto reduce attack surface. - Aligned
pre-commitblack version withrequirements-dev.txtto prevent formatting mismatches. - Pinned pytest version in CI (
pytest==9.0.3) for reproducible builds. - Unified flake8 scope in CI with Makefile (
spider.py tests/). - Added Dependabot grouping (
runtime-deps,dev-deps,actions) to reduce PR noise. - Simplified duplicate-removal logging in
spider.py— removed 12 lines of redundant branch logic.