nas-movie-download

TotalClaw 作者 totalclaw

通过 Jackett 和 qBittorrent 搜索和下载电影。当用户想要从 torrent 源下载电影或视频、搜索特定电影标题或管理电影下载时使用。现在包括与 SMB 集成的自动字幕下载支持。

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~roger0808-nas-movie-download
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~roger0808-nas-movie-download/file -o roger0808-nas-movie-download.md
# NAS Movie Download

Automated movie downloading system using Jackett for torrent search and qBittorrent for download management.

**新功能:SMB 自动字幕下载!** 🎬 下载完成后自动通过 SMB 为视频下载并上传字幕。

## Configuration

### Environment Variables

Set these environment variables for the skill to function properly:

**Jackett Configuration:**
- `JACKETT_URL`: Jackett service URL (default: http://192.168.1.246:9117)
- `JACKETT_API_KEY`: Jackett API key (default: o5gp976vq8cm084cqkcv30av9v3e5jpy)

**qBittorrent Configuration:**
- `QB_URL`: qBittorrent Web UI URL (default: http://192.168.1.246:8888)
- `QB_USERNAME`: qBittorrent username (default: admin)
- `QB_PASSWORD`: qBittorrent password (default: adminadmin)

**SMB Configuration (for subtitle download):**
- `SMB_USERNAME`: SMB username (default: 13917908083)
- `SMB_PASSWORD`: SMB password (default: Roger0808)
- `SMB_SERVER`: SMB server IP (default: 192.168.1.246)
- `SMB_SHARE`: SMB share name (default: super8083)
- `SMB_PATH`: SMB download path (default: qb/downloads)

**Subtitle Configuration:**
- `SUBTITLE_LANGUAGES`: Default subtitle languages (default: zh,en)

### SMB Setup

SMB 配置已保存到 `config/smb.env`:
```bash
cat config/smb.env
```

### Indexer Setup

The skill works with Jackett indexers. Currently configured indexers:
- The Pirate Bay
- TheRARBG
- YTS

Ensure these indexers are enabled and configured in your Jackett installation for best results.

## Usage

### Search Movies

Search for movies without downloading:

```bash
scripts/jackett-search.sh -q "Inception"
scripts/jackett-search.sh -q "The Matrix"
scripts/jackett-search.sh -q "死期将至"  # Chinese movie names supported
```

### Download Movie Only

Download movie without subtitles:

```bash
scripts/download-movie.sh -q "The Matrix"
```

### Download with Automatic Subtitles via SMB 🆕

**完整流程:搜索 → 下载 → 自动下载字幕 → 上传到 SMB**

```bash
# 下载电影并自动通过 SMB 下载字幕
scripts/download-movie.sh -q "Young Sheldon" --subtitle

# 指定字幕语言
scripts/download-movie.sh -q "Community" --subtitle --lang zh,en
```

**参数说明:**
- `--subtitle`: 启用自动字幕下载(通过 SMB)
- `--lang`: 指定字幕语言(默认:zh,en)

### SMB Subtitle Download (Standalone)

为 NAS 上已下载的视频通过 SMB 下载字幕:

```bash
# 为单个视频下载字幕
python3 scripts/smb-download-subtitle.py -f "movie.mkv"

# 为整个目录下载字幕
python3 scripts/smb-download-subtitle.py -d "qb/downloads/Movie Folder"

# 批量处理所有视频
python3 scripts/smb-download-subtitle.py --all
```

## Workflow

### 完整下载流程

1. **搜索电影**: 使用 Jackett 搜索种子
2. **添加到 qBittorrent**: 自动添加最高质量的种子
3. **等待下载完成**: qBittorrent 下载视频到 NAS
4. **自动下载字幕**: 通过 SMB 连接到 NAS,为视频下载字幕
5. **上传字幕**: 将字幕文件上传到 NAS 对应位置

```
┌─────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│  Jackett    │───▶│ qBittorrent  │───▶│    NAS       │───▶│   字幕下载    │
│   搜索      │    │   下载       │    │  存储视频     │    │  SMB + subliminal│
└─────────────┘    └──────────────┘    └──────────────┘    └──────────────┘
```

## Script Details

### jackett-search.sh

Search Jackett for torrents.

**Parameters:**
- `-q, --query`: Search query (required)
- `-u, --url`: Jackett URL (optional, uses env var)
- `-k, --api-key`: API key (optional, uses env var)

### qbittorrent-add.sh

Add torrent to qBittorrent.

**Parameters:**
- `-m, --magnet`: Magnet link (required)
- `-u, --url`: qBittorrent URL (optional, uses env var)
- `-n, --username`: Username (optional, uses env var)
- `-p, --password`: Password (optional, uses env var)

### download-movie.sh

One-click search, download, and subtitle fetching.

**Parameters:**
- `-q, --query`: Movie name (required)
- `-s, --subtitle`: Enable automatic subtitle download via SMB
- `-l, --lang`: Subtitle languages (default: zh,en)
- `--quality`: Quality preference (4k, 1080p, 720p, any)

### smb-download-subtitle.py 🆕

Download subtitles for videos on NAS via SMB.

**Parameters:**
- `-f, --file`: Single video filename (relative to SMB path)
- `-d, --directory`: Directory path (relative to SMB path)
- `-l, --lang`: Subtitle languages (default: zh,en)
- `--all`: Process all videos in SMB download folder

**Example:**
```bash
# Single video
python3 scripts/smb-download-subtitle.py -f "Lilo And Stitch 2025.mkv"

# Entire folder
python3 scripts/smb-download-subtitle.py -d "qb/downloads/Movie Folder"

# All videos
python3 scripts/smb-download-subtitle.py --all
```

**Features:**
- Connects to NAS via SMB
- Uses subliminal for subtitle search
- Downloads Chinese and English subtitles
- Uploads subtitles to corresponding video folders
- Skips existing subtitle files

## Tips and Best Practices

- **Use English movie names** for better search results
- **Check Jackett indexer status** if searches return no results
- **Monitor qBittorrent** to manage download progress
- **SMB subtitle download** works best for popular movies and TV shows
- **Test SMB connection** with `python3 scripts/smb-download-subtitle.py --test`
- **For TV series**: Use `--subtitle` flag to auto-download subtitles for all episodes
- **Subtitle resolution independence**: Subtitles are resolution-independent; 720p subtitles work on 1080p videos if the timing matches
- **Expand subtitle sources**: By default uses 9 subtitle providers (addic7ed, opensubtitles, podnapisi, etc.) to maximize subtitle find rate

## Troubleshooting

### SMB Connection Failed

1. Verify SMB credentials in `config/smb.env`
2. Check NAS IP address: `ping 192.168.1.246`
3. Ensure SMB service is running on NAS
4. Verify network connectivity

### Subtitle Download Issues

1. **No subtitles found**: Try different language codes or the video may not have subtitles available
2. **subliminal not installed**: `pip3 install subliminal`
3. **SMB upload failed**: Check folder permissions on NAS

### Permission Issues

Ensure scripts have execute permissions:

```bash
chmod +x scripts/*.sh
chmod +x scripts/*.py
```

## Security Notes

- Keep SMB credentials secure in `config/smb.env`
- Use HTTPS connections when possible
- Consider setting up VPN for torrent traffic
- Monitor qBittorrent for unauthorized downloads

## Dependencies

- `curl`: For HTTP requests
- `jq`: For JSON parsing
- `python3` with `pysmb`: For SMB operations
- `subliminal`: For subtitle download

Install dependencies:
```bash
apt-get install curl jq python3 python3-pip
pip3 install pysmb subliminal
```

## Changelog

### v3.2.0 - 2025-03-06
- ✅ **Expanded subtitle providers**: Now uses all 9 available subtitle sources (addic7ed, bsplayer, gestdown, napiprojekt, opensubtitles, opensubtitlescom, podnapisi, subtitulamos, tvsubtitles)
- ✅ **Improved subtitle find rate**: Successfully found subtitles for 141/141 Young Sheldon episodes (131 Chinese + 20 English)
- ✅ **Resolution independence**: Clarified that subtitles are not resolution-dependent; 720p subtitles work on 1080p videos
- ✅ **Enhanced smb-download-subtitle.py**: Refactored with modular functions and better error handling

### v3.0 - 2025-02-23
- ✅ Added SMB subtitle download support
- ✅ New `smb-download-subtitle.py` script
- ✅ Integrated subtitle download into download workflow
- ✅ Automatic subtitle upload via SMB
- ✅ Support for Chinese and English subtitles

### v2.0 - 2025-02-17
- ✅ Added automatic subtitle download support
- ✅ New `subtitle-download.sh` script
- ✅ Updated `download-movie.sh` with `-s` and `-w` flags
- ✅ Support for OpenSubtitles API
- ✅ Multi-language subtitle support (zh-cn, en, ja, ko, etc.)