initial commit
This commit is contained in:
parent
abf3af5768
commit
8d879ccd0d
1 changed files with 173 additions and 0 deletions
173
README.md
Normal file
173
README.md
Normal file
|
|
@ -0,0 +1,173 @@
|
||||||
|
# YouTube Backup
|
||||||
|
|
||||||
|
A modern desktop application for archiving YouTube channels using [yt-dlp](https://github.com/yt-dlp/yt-dlp). Browse your downloaded channels, manage downloads, and play videos with your preferred media player—all from a clean, user-friendly GUI.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **Channel Browser**: Browse downloaded YouTube channels and videos with thumbnails
|
||||||
|
- **Download Queue**: Queue new channels or videos for download with a simple interface
|
||||||
|
- **Video Playback**: Play videos directly using your preferred video player (mpv, VLC, etc.)
|
||||||
|
- **Live Chat Archives**: Identify and manage downloaded live chat archives
|
||||||
|
- **Search**: Search across your entire video library
|
||||||
|
- **System Tray**: Minimize to system tray for quick access
|
||||||
|
- **Configurable**: Customize backup location and video player via `config.toml`
|
||||||
|
- **SQLite Database**: Efficient metadata storage and retrieval
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- **Rust** 1.70+ (for building from source)
|
||||||
|
- **yt-dlp**: Required for downloading videos. Install via:
|
||||||
|
- `pip install yt-dlp` (Python)
|
||||||
|
- `apt install yt-dlp` (Debian/Ubuntu)
|
||||||
|
- `brew install yt-dlp` (macOS)
|
||||||
|
- Or [build from source](https://github.com/yt-dlp/yt-dlp#installation)
|
||||||
|
- **Video Player**: A command-line compatible player like:
|
||||||
|
- mpv (default)
|
||||||
|
- VLC
|
||||||
|
- ffplay
|
||||||
|
- Any player accepting a file path as argument
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### From Source
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://codeberg.org/your-username/youtube-backup
|
||||||
|
cd youtube-backup
|
||||||
|
cargo build --release
|
||||||
|
```
|
||||||
|
|
||||||
|
The compiled binary will be at `target/release/youtube-backup`.
|
||||||
|
|
||||||
|
### Linux Desktop Integration
|
||||||
|
|
||||||
|
A `.desktop` file is included for easy launcher integration:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp youtube-backup.desktop ~/.local/share/applications/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Create a `config.toml` file in the same directory as the binary:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[backup]
|
||||||
|
directory = "/path/to/your/video/library"
|
||||||
|
|
||||||
|
[player]
|
||||||
|
command = "mpv" # or "vlc", "ffplay", etc.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration Options
|
||||||
|
|
||||||
|
| Setting | Type | Default | Description |
|
||||||
|
|---------|------|---------|-------------|
|
||||||
|
| `backup.directory` | string | `./channels` | Where downloaded videos are stored |
|
||||||
|
| `player.command` | string | `mpv` | Command to launch video player |
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Running the Application
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./youtube-backup
|
||||||
|
```
|
||||||
|
|
||||||
|
Or from your application launcher after installing the `.desktop` file.
|
||||||
|
|
||||||
|
### Workflow
|
||||||
|
|
||||||
|
1. **Add a Channel**:
|
||||||
|
- Click the "Download" tab
|
||||||
|
- Enter the YouTube channel URL (e.g., `https://www.youtube.com/@channelname`)
|
||||||
|
- Optionally specify a custom directory
|
||||||
|
- Click "Queue Download"
|
||||||
|
|
||||||
|
2. **Browse Downloads**:
|
||||||
|
- Videos are automatically organized by channel
|
||||||
|
- Browse channels in the left sidebar
|
||||||
|
- Click a channel to view its videos
|
||||||
|
- Videos display with thumbnails and metadata
|
||||||
|
|
||||||
|
3. **Play a Video**:
|
||||||
|
- Click any video card
|
||||||
|
- Select "Play" to launch it in your configured player
|
||||||
|
|
||||||
|
4. **Search**:
|
||||||
|
- Use the search bar to find videos by title
|
||||||
|
- Results update in real-time across your entire library
|
||||||
|
|
||||||
|
5. **View Downloads**:
|
||||||
|
- Toggle the "Show Downloads" button to monitor active downloads
|
||||||
|
- Tracks download progress for queued jobs
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
youtube-backup/
|
||||||
|
├── src/
|
||||||
|
│ ├── main.rs # Application entry point
|
||||||
|
│ ├── app.rs # Main GUI and event loop
|
||||||
|
│ ├── downloader.rs # yt-dlp integration
|
||||||
|
│ ├── library.rs # Channel and video scanning
|
||||||
|
│ ├── config.rs # Configuration loading
|
||||||
|
│ ├── database.rs # SQLite metadata storage
|
||||||
|
│ └── tray.rs # System tray integration
|
||||||
|
├── config.toml # Configuration template
|
||||||
|
├── Cargo.toml # Rust dependencies
|
||||||
|
└── youtube-backup.desktop # Linux launcher entry
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
- **eframe/egui**: Fast, native GUI framework for Rust
|
||||||
|
- **rusqlite**: SQLite database bindings (bundled)
|
||||||
|
- **serde/toml**: Configuration file parsing
|
||||||
|
- **image**: Thumbnail decoding (JPEG, PNG, WebP)
|
||||||
|
- **tray-icon**: System tray integration
|
||||||
|
|
||||||
|
## Building and Packaging
|
||||||
|
|
||||||
|
### Release Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo build --release
|
||||||
|
```
|
||||||
|
|
||||||
|
### AUR (Arch Linux)
|
||||||
|
|
||||||
|
A `PKGBUILD` is included for Arch Linux:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
makepkg -si
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### yt-dlp Not Found
|
||||||
|
Ensure `yt-dlp` is installed and in your `$PATH`:
|
||||||
|
```bash
|
||||||
|
which yt-dlp
|
||||||
|
```
|
||||||
|
|
||||||
|
### Videos Won't Play
|
||||||
|
Check that your configured player command is correct in `config.toml` and installed on your system.
|
||||||
|
|
||||||
|
### Thumbnails Not Loading
|
||||||
|
Verify the image dependencies are compiled correctly. Supported formats: JPEG, PNG, WebP.
|
||||||
|
|
||||||
|
### Database Issues
|
||||||
|
Delete `backup.db` (in the parent directory of your video library) and rescan:
|
||||||
|
```bash
|
||||||
|
rm backup.db
|
||||||
|
```
|
||||||
|
Restart the application to rebuild the index.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
See [LICENSE](LICENSE) file for details.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Contributions welcome! Feel free to open issues or submit pull requests.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue