diff --git a/Home.md b/Home.md new file mode 100644 index 0000000..f5ffeaa --- /dev/null +++ b/Home.md @@ -0,0 +1,68 @@ +# yt-shorts-downloader + +Typed Python library and CLI for downloading YouTube Shorts as MP4 using a Netscape cookie session file. + +## What this project does + +- validates a Netscape cookie file before download +- validates that the URL belongs to YouTube +- downloads the resulting video as MP4 through yt-dlp +- exposes a typed Python API for returning MP4 bytes in memory +- provides a CLI for saving the MP4 to disk +- publishes package builds to Gitea Packages after successful CI on `main` + +## Public contract + +- input: YouTube URL and path to a Netscape cookie file +- API output: `DownloadedVideo` with MP4 bytes in memory +- CLI output: filesystem path to the downloaded MP4 + +## Quick start + +### Python API + +```python +from yt_shorts_downloader import download + +video = download( + 'https://www.youtube.com/shorts/VIDEO_ID', + 'cookies.txt', +) + +assert video.media_type == 'video/mp4' +content = video.content +``` + +### Save directly to disk + +```python +from yt_shorts_downloader import download_to_path + +path = download_to_path( + 'https://www.youtube.com/shorts/VIDEO_ID', + 'cookies.txt', + output_dir='downloads', +) +``` + +### CLI + +```bash +uv run yt-shorts-downloader \ + 'https://www.youtube.com/shorts/VIDEO_ID' \ + cookies.txt \ + --output-dir downloads +``` + +## Requirements + +- Python 3.12+ +- valid Netscape cookie file +- Deno or Node.js 22+ +- optional but recommended: ffmpeg + +## Documentation + +- [API](API) +- [Session File](Session-File) +- [Development and CI](Development-and-CI)