initial commit
This commit is contained in:
113
README.md
Normal file
113
README.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# YouTube Summarizer
|
||||
|
||||
This is a local-first desktop app for summarizing YouTube videos with Ollama.
|
||||
|
||||
It uses:
|
||||
|
||||
- Tauri for the desktop shell
|
||||
- a bundled Python backend for transcript/audio processing in release builds
|
||||
- Ollama on `localhost` for summarization and translation
|
||||
- SQLite for local history
|
||||
|
||||
## What It Does
|
||||
|
||||
Given a YouTube URL, the app can:
|
||||
|
||||
- fetch a transcript via the YouTube transcript API or via Whisper
|
||||
- generate an English summary with a local Ollama model
|
||||
- optionally translate that summary into German and Japanese
|
||||
- store the results locally so they can be reopened later
|
||||
|
||||
## Local-Only Behavior
|
||||
|
||||
This repository is intentionally reset to a clean publishable state:
|
||||
|
||||
- no Discord webhook integration
|
||||
- no remote PHP/MySQL sync
|
||||
- no bundled production data or pre-filled database
|
||||
- runtime data is stored in the OS app data directory, not in the repo
|
||||
|
||||
## End User Requirements
|
||||
|
||||
If you ship a built installer, the user should only need:
|
||||
|
||||
- Ollama installed locally
|
||||
- the Ollama model they want to use pulled locally
|
||||
|
||||
Notes:
|
||||
|
||||
- The installer is designed to bundle the backend helper plus `ffmpeg` / `ffprobe`.
|
||||
- Whisper model weights are not bundled; the selected Whisper model is downloaded on first use and then cached locally.
|
||||
|
||||
## Developer Requirements
|
||||
|
||||
For development in this repo you still need:
|
||||
|
||||
- Python 3.8+
|
||||
- Rust/Cargo
|
||||
- FFmpeg in `PATH`
|
||||
- Ollama running locally on `http://localhost:11434`
|
||||
|
||||
Python dependencies are listed in [requirements.txt](/Users/giers/youtube_summarizer/requirements.txt).
|
||||
|
||||
## Run In Development
|
||||
|
||||
macOS/Linux:
|
||||
|
||||
```bash
|
||||
./run.sh
|
||||
```
|
||||
|
||||
Windows:
|
||||
|
||||
```bat
|
||||
run.bat
|
||||
```
|
||||
|
||||
Or directly:
|
||||
|
||||
```bash
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
cargo run --manifest-path src-tauri/Cargo.toml
|
||||
```
|
||||
|
||||
The app prefers a bundled backend executable when one is present under [src-tauri/resources/backend](/Users/giers/youtube_summarizer/src-tauri/resources/backend), and otherwise falls back to the local Python environment for development.
|
||||
|
||||
## Build A Shippable Bundle
|
||||
|
||||
1. Make sure the build machine has Python, Rust/Cargo, and `ffmpeg` / `ffprobe` available on `PATH`.
|
||||
2. Run:
|
||||
|
||||
```bash
|
||||
python3 tools/prepare_bundle.py
|
||||
```
|
||||
|
||||
3. Then build the installer:
|
||||
|
||||
```bash
|
||||
cargo tauri build
|
||||
```
|
||||
|
||||
What `tools/prepare_bundle.py` does:
|
||||
|
||||
- installs PyInstaller into the current Python environment
|
||||
- builds a single-file backend executable from [backend_cli.py](/Users/giers/youtube_summarizer/backend_cli.py)
|
||||
- copies that executable into [src-tauri/resources/backend](/Users/giers/youtube_summarizer/src-tauri/resources/backend)
|
||||
- copies `ffmpeg` and `ffprobe` from the build machine into [src-tauri/resources/ffmpeg](/Users/giers/youtube_summarizer/src-tauri/resources/ffmpeg)
|
||||
|
||||
Build once on each target OS you want to ship. For Windows 10, build on Windows.
|
||||
|
||||
## Build On GitHub Actions
|
||||
|
||||
A Windows build workflow is included at [.github/workflows/windows-installer.yml](/Users/giers/youtube_summarizer/.github/workflows/windows-installer.yml).
|
||||
|
||||
It runs on `windows-latest`, installs `ffmpeg` and NSIS, prepares the bundled Python backend with [tools/prepare_bundle.py](/Users/giers/youtube_summarizer/tools/prepare_bundle.py), builds an NSIS installer, and uploads the result as a workflow artifact named `windows-installer`.
|
||||
|
||||
## Notes
|
||||
|
||||
- If Python is not on your `PATH` for development, set `YTS_PYTHON` to the interpreter you want the Tauri backend to use.
|
||||
- If you want to test a prebuilt backend executable during development, set `YTS_BACKEND_BIN` to its full path.
|
||||
- If `ffmpeg` or `ffprobe` are not on `PATH` during bundle prep, set `YTS_FFMPEG` and `YTS_FFPROBE` to their full paths before running [tools/prepare_bundle.py](/Users/giers/youtube_summarizer/tools/prepare_bundle.py).
|
||||
- Generated thumbnails and the SQLite database are created on first run in the app's local data directory.
|
||||
Reference in New Issue
Block a user