SoundCloud serves a ~30s preview clip for tracks gated behind Go+ or login (extremely common for major-label uploads — what's actually on SoundCloud is bootlegs, fan reuploads, type beats, and these previews). yt-dlp accepts the preview as the download payload, the post-download integrity check catches the duration mismatch and quarantines the file, but the user only sees "all candidates failed" with no obvious explanation. Filter at validation time when we know expected_duration: drop SoundCloud candidates whose duration is below half the expected length OR within ~5s of the 30s preview boundary, gated on expected being non-trivially long (>60s) so genuinely short tracks still pass through. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| cancel.py | ||
| candidates.py | ||
| cleanup.py | ||
| history.py | ||
| lifecycle.py | ||
| master.py | ||
| monitor.py | ||
| post_processing.py | ||
| staging.py | ||
| status.py | ||
| task_worker.py | ||
| validation.py | ||
| wishlist_failed.py | ||