| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #!/usr/bin/env python3
- import os
- import html
- # ====================== 配置区,只需要修改这里 ======================
- MEDIA_ROOT = "/home/fred/PT/Movies"
- OVERWRITE_EXIST_NFO = True # True: 强制重写已存在的nfo,更新标题
- VIDEO_EXT = {".mkv", ".mp4", ".m4v", ".webm", ".mov", ".avi", ".flv", ".wmv"}
- FOLLOW_SYMLINK = False
- # ====================================================================
- def main():
- total_videos = 0
- created = 0
- overwrote = 0
- print(f"开始递归扫描根目录:{MEDIA_ROOT}")
- print(f"强制重写已有nfo:{OVERWRITE_EXIST_NFO}")
- print("-"*60)
- for dirpath, _, filenames in os.walk(MEDIA_ROOT, followlinks=FOLLOW_SYMLINK):
- print(f"\n【正在扫描目录】{dirpath}")
- for fname in filenames:
- file_base, ext = os.path.splitext(fname)
- ext_lower = ext.lower()
- if ext_lower not in VIDEO_EXT:
- continue
- total_videos += 1
- nfo_path = os.path.join(dirpath, f"{file_base}.nfo")
- safe_title = html.escape(file_base)
- nfo_content = f"""<?xml version="1.0" encoding="utf-8"?>
- <episodedetails>
- <title>{safe_title}</title>
- <lockdata>true</lockdata>
- </episodedetails>
- """
- if os.path.exists(nfo_path):
- # 覆盖已有nfo
- with open(nfo_path, "w", encoding="utf-8") as f:
- f.write(nfo_content)
- print(f" [覆盖] {fname}")
- overwrote +=1
- else:
- # 新建nfo
- with open(nfo_path, "w", encoding="utf-8") as f:
- f.write(nfo_content)
- print(f" [新建] {fname}")
- created +=1
- print("\n" + "="*60)
- print("===== 任务完成 =====")
- print(f"扫描到视频总数: {total_videos}")
- print(f"新建nfo数量: {created}")
- print(f"覆盖已有nfo: {overwrote}")
- print("="*60)
- if __name__ == "__main__":
- if not os.path.isdir(MEDIA_ROOT):
- print(f"错误:媒体根目录不存在 -> {MEDIA_ROOT}")
- else:
- main()
|