What's Changed
Added
- New end to end file download and conversion pipeline to allow extensibility and composition of the file processing, while maintaining backwards comptability with previous Node and File classes
- Adds ResourceNode class that allows simply passing in a file path and associated metadata, and letting the file pipeline auto infer kind, file presets etc.
- Adds support for GoogleDrive download based on file URLs on Google Drive
- WebM video compression support
- Bloom format file uploads
- PDF validation in file pipeline
- Audio/video stream validation utility
- Python 3.11, 3.12, 3.13 support
- Optional Sentry integration
- Optional Slack notifications for channel uploads
- Ensure DOWNLOAD headers set a proper useragent
Changed
- The
jiroCLI has been removed, as it was broadly unused, and broken. - Dropped support for unsupported Python versions (3.7, 3.8)
- Replaced le-utils pycountry dependency with langcodes
- Default learning_activity now set based on node kind
Fixed
- Graphie processing - to make sure that non-English language data is included in Graphie files
- More robust download failure handling
Included PRs
New Features
- Download css background images by @jredrejo in #477
- Set default learning_activity based on node kind in TreeNode by @nucleogenesis in #496
- Allow uploading of bloom format files by @nikkuAg in #517
- added insufficient storage exception by @the-ivii in #567
- Add webm support to compress_video. Add tests. Raise error if webm passed to faststart. by @rtibbles in #566
- Add utility to validate stream of audio and video media files. by @rtibbles in #570
- feat: Add PDF validation to file pipeline by @rtibbles in #610
- Add optional Sentry integration by @rtibbles in #618
- Add optional Slack integration for channel upload notifications by @rtibbles in #619
- feat: Handle subtitle exceptions in SubtitleConversionHandler by @rtibbles in #624
- Google Drive handler integration by @rtibbles in #577
- Allow ContentNode class to take a uri argument for its default file by @rtibbles in #593
- Add try/finally handling for yield block, ensures that files still get checked even when caught exceptions occur. by @rtibbles in #608
- Do more robust handling of download failures. by @rtibbles in #631
Bug Fixes
- Use the right object to get the error information by @jredrejo in #469
- Use blacklisted urls in the static assets by @jredrejo in #476
- Fix name in reference to auto-thumbnail-generation argument by @jamalex in #489
- Fix placement of exception class to avoid breaking the channel manager. by @rtibbles in #583
- Revert "Allow for chefs to explicitly set a channel ID." by @rtibbles in #582
- Fix macos tests. by @rtibbles in #585
- Fix header set for the DOWNLOAD_SESSION by @GautamBytes in #596
- Fix graphie processing by @rtibbles in #604
- Fix regression introduced by overly liberal perseus image URL capture. by @rtibbles in #621
- Fix tests for latest version of yt-dlp by @rtibbles in #641
- Miscellaneous bug fixes by @rtibbles in #628
Documentation
- Update ReadTheDocs builds configuration by @MisRob in #450
- docs: update link to api token by @ThEditor in #482
- Update video_compression docs to include faststart flag by @rtibbles in #540
- Added documentation regarding the transition to WebM format (for videos) by @GautamBytes in #591
- Update installation.md to remove incorrect references to Python 3.5 by @rtibbles in #599
- Docs: Document all le_utils.constants.labels metadata fields in nodes.md by @rtibbles in #609
Testing
- Update content disposition parsing and add tests. by @rtibbles in #484
- Test under Python 3.11 & 3.12 by @rodjek in #510
- Mock yt-dlp web requests by @jredrejo in #527
- Add tests cases for predictable zip functionality. by @rtibbles in #544
- Adds more tests for the File classes to ensure behaviour ahead of refactor by @rtibbles in #571
- Add vcr for youtube test by @rtibbles in #574
- Update audio and video to same urls used in standard fixtures. by @rtibbles in #611
- Add Python 3.13 support by @rtibbles in #614
CI/CD & GitHub Actions
- Add action to send Slack notification about comments on issues by @MisRob in #479
- Feat: added update-spreadsheet action by @GarvitSinghal47 in #541
- Use notify_team_new_comment workflow action from .github repo by @rparadowski in #543
- Remove 'pull_request_review' event from the community contributions spreadsheet action by @MisRob in #548
- Trusted publishing setup by @rtibbles in #553
- Fix the action not updating some data in the contributions tracking sheet by @MisRob in #569
- feat: add community contribution labeling workflow by @iamshobhraj in #578
- Add pre-commit hooks for yml formatting and github actions linting. by @rtibbles in #586
- unassign inactive users action by @SukhvirKooner in #590
- Remove custom issue templates, turn on issue header automation, reference new contributing guidelines by @MisRob in #607
- Update manage issue header workflow events by @MisRob in #617
- Update workflow that handles contributor comments to the latest version + update make lint command to use pre-commit by @MisRob in #622
- Upgrade workflows to .github#35 by @MisRob in #643
Refactoring & Maintenance
- Drop Python 3.7 support. by @rtibbles in #459
- Do a minimum version pin for yt-dlp to allow more rapid updates by @rtibbles in #534
- Upgrade flake8 hook for Python 3.12 compatibility. by @rtibbles in #564
- Remove unused CLI to reduce complexity. by @rtibbles in #565
- Update graphie files to focus on https only downloads. by @rtibbles in #572
- Pipeline refactor by @rtibbles in #573
- Handle case where the file extension has changed from the original filename by @rtibbles in #584
- Remove reliance on le-utils based pycountry using getlang methods. by @rtibbles in #597
- Tweaks and improvements to file handling by @rtibbles in #601
- Fixes/tweak for handling compression in archive files by @rtibbles in #616
- Path handling tweaks in transfer handling by @rtibbles in #620
Dependency Upgrades
- Bump the github group with 2 updates by @dependabot[bot] in #452
- Bump urllib3 from 1.26.15 to 1.26.18 by @dependabot[bot] in #456
- Bump yt-dlp from 2023.7.6 to 2023.12.30 by @dependabot[bot] in #458
- Bump sphinx from 2.4.4 to 7.2.6 by @dependabot[bot] in #453
- Bump the github group with 1 update by @dependabot[bot] in #460
- Bump pillow from 8.4.0 to 10.2.0 by @dependabot[bot] in #455
- Bump mock from 2.0.0 to 5.1.0 by @dependabot[bot] in #442
- Bump chardet from 4.0.0 to 5.2.0 by @dependabot[bot] in #447
- Bump requests-cache from 1.0.1 to 1.1.1 by @dependabot[bot] in #461
- Bump pre-commit/action from 3.0.0 to 3.0.1 by @dependabot[bot] in #465
- Bump pycountry from 22.3.5 to 23.12.11 by @dependabot[bot] in #463
- Bump css-html-js-minify from 2.2.2 to 2.5.5 by @dependabot[bot] in #429
- Bump selenium from 3.0.1 to 4.17.2 by @dependabot[bot] in #466
- Bump pytest from 7.3.1 to 8.0.1 by @dependabot[bot] in #467
- Bump pytest-env from 0.8.1 to 1.1.3 by @dependabot[bot] in #472
- Bump requests-cache from 1.1.1 to 1.2.0 by @dependabot[bot] in #470
- Update colorlog requirement from <4.2,>=4.1.0 to >=4.1.0,<6.9 by @dependabot[bot] in #471
- Bump selenium from 4.17.2 to 4.18.1 by @dependabot[bot] in #475
- Bump pdf2image from 1.16.3 to 1.17.0 by @dependabot[bot] in #474
- Bump pytest from 8.0.1 to 8.0.2 by @dependabot[bot] in #480
- Bump urllib3 from 1.26.18 to 2.2.1 by @dependabot[bot] in #473
- Bump pytest from 8.0.2 to 8.1.1 by @dependabot[bot] in #485
- Bump yt-dlp from 2023.12.30 to 2024.3.10 by @dependabot[bot] in #486
- Bump pillow from 10.2.0 to 10.3.0 by @dependabot[bot] in #488
- Bump yt-dlp from 2024.3.10 to 2024.4.9 by @dependabot[bot] in #491
- Bump selenium from 4.18.1 to 4.19.0 by @dependabot[bot] in #487
- Bump sphinx from 7.2.6 to 7.3.6 by @dependabot[bot] in #492
- Bump slackapi/slack-github-action from 1.25.0 to 1.26.0 by @dependabot[bot] in #493
- Bump sphinx from 7.3.6 to 7.3.7 by @dependabot[bot] in #494
- Bump selenium from 4.19.0 to 4.20.0 by @dependabot[bot] in #495
- Bump pytest from 8.1.1 to 8.2.0 by @dependabot[bot] in #497
- Bump pytest from 8.2.0 to 8.2.1 by @dependabot[bot] in #499
- Bump urllib3 from 2.2.1 to 2.2.2 by @dependabot[bot] in #502
- Bump selenium from 4.20.0 to 4.21.0 by @dependabot[bot] in #498
- Bump pytest from 8.2.1 to 8.2.2 by @dependabot[bot] in #503
- Bump yt-dlp from 2024.4.9 to 2024.7.2 by @dependabot[bot] in #506
- Bump yt-dlp from 2024.7.2 to 2024.7.7 by @dependabot[bot] in #507
- Bump pycountry from 23.12.11 to 24.6.1 by @dependabot[bot] in #509
- Bump yt-dlp from 2024.7.7 to 2024.7.9 by @dependabot[bot] in #508
- Bump requests-cache from 1.2.0 to 1.2.1 by @dependabot[bot] in #511
- Bump pillow from 10.3.0 to 10.4.0 by @dependabot[bot] in #512
- Bump yt-dlp from 2024.7.9 to 2024.8.1 by @dependabot[bot] in #516
- Bump selenium from 4.21.0 to 4.23.1 by @dependabot[bot] in #514
- Bump selenium from 4.23.1 to 4.24.0 by @dependabot[bot] in #521
- Bump slackapi/slack-github-action from 1.26.0 to 1.27.0 by @dependabot[bot] in #520
- Bump urllib3 from 2.2.2 to 2.2.3 by @dependabot[bot] in #524
- Bump pytest from 8.2.2 to 8.3.3 by @dependabot[bot] in #523
- Bump pytest-env from 1.1.3 to 1.1.5 by @dependabot[bot] in #525
- Bump selenium from 4.24.0 to 4.25.0 by @dependabot[bot] in #526
- Bump yt-dlp from 2024.8.1 to 2024.10.7 by @dependabot[bot] in #529
- Bump yt-dlp from 2024.10.7 to 2024.11.18 by @dependabot[bot] in #542
- Bump cachecontrol from 0.12.11 to 0.14.1 by @dependabot[bot] in #537
- Bump pytest from 8.3.3 to 8.3.4 by @dependabot[bot] in #546
- Bump yt-dlp from 2024.11.18 to 2024.12.13 by @dependabot[bot] in #549
- Bump selenium from 4.25.0 to 4.27.1 by @dependabot[bot] in #550
- Bump sphinx from 7.3.7 to 8.1.3 by @dependabot[bot] in #532
- Bump pillow from 10.4.0 to 11.0.0 by @dependabot[bot] in #531
- Bump yt-dlp from 2024.12.13 to 2024.12.23 by @dependabot[bot] in #552
- Bump urllib3 from 2.2.3 to 2.3.0 by @dependabot[bot] in #551
- Bump pillow from 11.0.0 to 11.1.0 by @dependabot[bot] in #556
- Bump filelock from 3.16.1 to 3.17.0 by @dependabot[bot] in #560
- Bump selenium from 4.27.1 to 4.28.1 by @dependabot[bot] in #561
- Bump cachecontrol from 0.14.1 to 0.14.2 by @dependabot[bot] in #559
- Bump pytest from 8.3.4 to 8.3.5 by @dependabot[bot] in #580
- Bump selenium from 4.28.1 to 4.29.0 by @dependabot[bot] in #575
- Bump sphinx from 8.1.3 to 8.2.3 by @dependabot[bot] in #581
- Bump mock from 5.1.0 to 5.2.0 by @dependabot[bot] in #587
- Bump filelock from 3.17.0 to 3.18.0 by @dependabot[bot] in #588
- Bump selenium from 4.29.0 to 4.30.0 by @dependabot[bot] in #589
- Bump urllib3 from 2.3.0 to 2.4.0 by @dependabot[bot] in #595
- Bump selenium from 4.30.0 to 4.31.0 by @dependabot[bot] in #594
- Bump pillow from 11.1.0 to 11.2.1 by @dependabot[bot] in #598
- Bump cachecontrol from 0.14.2 to 0.14.3 by @dependabot[bot] in #600
- Bump selenium from 4.31.0 to 4.33.0 by @dependabot[bot] in #605
- Bump pytest from 8.3.5 to 8.4.0 by @dependabot[bot] in #606
- Bump pytest from 8.4.0 to 8.4.1 by @dependabot[bot] in #613
- Bump pillow from 11.2.1 to 11.3.0 by @dependabot[bot] in #615
- Bump urllib3 from 2.4.0 to 2.5.0 by @dependabot[bot] in #612
- Bump actions/checkout from 4 to 5 in the github group by @dependabot[bot] in #627
- Bump selenium from 4.34.2 to 4.35.0 by @dependabot[bot] in #625
- Bump filelock from 3.18.0 to 3.19.1 by @dependabot[bot] in #626
- Bump pytest from 8.4.1 to 8.4.2 by @dependabot[bot] in #629
- Bump actions/setup-python from 5 to 6 in the github group by @dependabot[bot] in #630
- Bump actions/checkout from 5 to 6 in the github group by @dependabot[bot] in #640
- Bump selenium from 4.35.0 to 4.36.0 by @dependabot[bot] in #633
- Update colorlog requirement from <6.9,>=4.1.0 to >=4.1.0,<6.11 by @dependabot[bot] in #635
- Bump urllib3 from 2.5.0 to 2.6.0 by @dependabot[bot] in #645
- Bump langcodes[data] from 3.5.0 to 3.5.1 by @dependabot[bot] in #644
- Bump urllib3 from 2.6.0 to 2.6.2 by @dependabot[bot] in #646
- Bump actions/cache from 4 to 5 in the github group by @dependabot[bot] in #647
New Contributors
- @MisRob made their first contribution in #450
- @jredrejo made their first contribution in #469
- @ThEditor made their first contribution in #482
- @rodjek made their first contribution in #510
- @nikkuAg made their first contribution in #517
- @GarvitSinghal47 made their first contribution in #541
- @rparadowski made their first contribution in #543
- @the-ivii made their first contribution in #567
- @iamshobhraj made their first contribution in #578
- @SukhvirKooner made their first contribution in #590
- @GautamBytes made their first contribution in #591
Full Changelog: v0.7.3...v0.8.0