auto backup 2026-07-02 11:00

This commit is contained in:
2026-07-02 11:00:05 +08:00
parent 022b6edbe4
commit c7ff34d012
199 changed files with 43050 additions and 0 deletions
@@ -0,0 +1,96 @@
---
name: "jellyfin-nfo-builder"
description: "为剧集整理统一文件名、生成缺失的 Jellyfin .nfo 剧集元数据"
status: proposal
version: "v1"
date: "2026-07-01T23:52:24.406Z"
---
# Jellyfin NFO 剧集元数据补齐技能
为剧集目录整理统一文件名,并为缺失的集数生成标准的 Jellyfin `.nfo` 元数据文件。
## 适用场景
- 手动清理/重命名剧集文件后,部分集数的 `.nfo` 元数据缺失
- 从不同来源合并剧集(高质量版 + 补全集),需要统一格式
- 批量标准化剧集视频文件和元数据
## 前置条件
- 视频文件已整理到一个目录
- 有一条完整的剧集(有 `.nfo` 示例可参照格式)
- 了解剧集的总集数
- shell 工作目录为剧集所在目录
## 步骤
### 1. 检查现有状态
列出目录下所有视频文件和 `.nfo` 文件:
```bash
ls -lh *.mp4 *.nfo 2>/dev/null
```
确定:
- 总集数
- 已有哪些集的 `.nfo`
- 哪些集缺失 `.nfo`
- 文件名是否统一
### 2. 读取一个已有 `.nfo` 作为模板
```bash
cat "剧集名 第xx集.nfo"
```
标准 Jellyfin 剧集 nfo 格式:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<episodedetails>
<title>第N集</title>
<season>1</season>
<episode>N</episode>
<plot>剧集名 第N集</plot>
<runtime>233</runtime>
<aired>2026-01-01</aired>
</episodedetails>
```
### 3. 生成缺失的 `.nfo`
```bash
cd /path/to/剧集目录
for i in 4 5 8 9 10 11; do
cat > "剧集名 第${i}集.nfo" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<episodedetails>
<title>第${i}集</title>
<season>1</season>
<episode>${i}</episode>
<plot>剧集名 第${i}集</plot>
<runtime>233</runtime>
<aired>2026-01-01</aired>
</episodedetails>
EOF
done
```
> `runtime`(时长秒数)和 `aired`(首播日期)可以参照已有文件填写,或设为默认值。
### 4. 检查结果
```bash
ls -lh *.mp4 *.nfo 2>/dev/null
```
确认每一集都有对应的视频文件和 `.nfo` 文件。
## 注意事项
- Jellyfin 依赖文件名排序,统一格式为 `剧集名 第XX集.mp4`(两位数字,按字母排序正确)
- `.nfo` 中的 `<episode>` 标签必须与集数一致
- 如果整个剧集目录还没有 `tvshow.nfo``season.nfo`,也需要一并创建
- 视频文件命名应与 `.nfo` 文件名完全一致(仅扩展名不同)
@@ -0,0 +1 @@
{"schema":"openclaw.skill-workshop.proposal.v1","id":"jellyfin-nfo-builder-20260701-6434352e0d","kind":"create","status":"pending","title":"Create jellyfin-nfo-builder","description":"为剧集整理统一文件名、生成缺失的 Jellyfin .nfo 剧集元数据","createdAt":"2026-07-01T23:52:24.406Z","updatedAt":"2026-07-01T23:52:24.406Z","createdBy":"skill-workshop","origin":{"agentId":"storage","sessionKey":"agent:storage:main","runId":"1b45e119-4276-4a7c-8a20-e52d1679a304","messageId":"1b45e119-4276-4a7c-8a20-e52d1679a304"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"fa9a54a33aecdbb0a96e175f7acf1e923606cbf90114460da48548e127710a48","target":{"skillName":"jellyfin-nfo-builder","skillKey":"jellyfin-nfo-builder","skillDir":"/home/yangxuan/.openclaw/workspace/storage/skills/jellyfin-nfo-builder","skillFile":"/home/yangxuan/.openclaw/workspace/storage/skills/jellyfin-nfo-builder/SKILL.md","source":"openclaw-workspace"},"scan":{"state":"clean","scannedAt":"2026-07-01T23:52:24.407Z","critical":0,"warn":0,"info":0,"findings":[]}}