提交必要文件

This commit is contained in:
2026-06-12 10:59:32 +08:00
parent 8b2ac635db
commit bb27963fc1
15 changed files with 2994 additions and 0 deletions
+98
View File
@@ -0,0 +1,98 @@
path = 'D:\\proj\\videoconvert\\video_pipeline.py'
content = open(path, 'r', encoding='utf-8').read()
old_func = '''def generate_playlist_txt(
output_dir: str | Path,
url_prefix: str = \"http://192.168.10.32:2088\",
) -> list[Path]:
\"\"\"Scan output_dir for series folders, generate playlist txt files.
For each series, scans episode subdirs for m3u8 files and generates:
series_name + episode_name,url_prefix/series_folder/episode_folder/m3u8_file
One txt per series, placed in output_dir/.\"\"\"
output = Path(output_dir)
if not output.is_dir():
return []
created: list[Path] = []
for series_dir in sorted(output.iterdir(), key=lambda f: natural_sort_key(f.name)):
if not series_dir.is_dir():
continue
lines: list[str] = []
episode_dirs = sorted(
[d for d in series_dir.iterdir() if d.is_dir()],
key=lambda d: natural_sort_key(d.name),
)
for ep_dir in episode_dirs:
m3u8_files = sorted(ep_dir.glob(\"*.m3u8\"))
if not m3u8_files:
continue
m3u8_name = m3u8_files[0].name
display_name = series_dir.name + ep_dir.name
url = f\"{url_prefix}/{series_dir.name}/{ep_dir.name}/{m3u8_name}\"
lines.append(f\"{display_name},{url}\\n\")
if not lines:
continue
txt_path = output / f\"{series_dir.name}_playlist.txt\"
txt_path.write_text(\"\".join(lines), encoding=\"utf-8\")
created.append(txt_path)
return created'''
new_func = '''def generate_playlist_txt(
output_dir: str | Path,
url_prefix: str = \"http://192.168.10.32:2088\",
) -> list[Path]:
\"\"\"Scan output_dir for series folders, generate playlist txt files.
Supports both flat mode (m3u8 in series dir) and episode folder mode.
One txt per series, placed in output_dir/.\"\"\"
output = Path(output_dir)
if not output.is_dir():
return []
created: list[Path] = []
for series_dir in sorted(output.iterdir(), key=lambda f: natural_sort_key(f.name)):
if not series_dir.is_dir():
continue
lines: list[str] = []
# Flat mode: m3u8 files directly in series dir
flat_m3u8 = sorted(series_dir.glob(\"*.m3u8\"), key=lambda f: natural_sort_key(f.stem))
if flat_m3u8:
for m3u8_file in flat_m3u8:
ep_name = m3u8_file.stem
display_name = series_dir.name + ep_name
url = f\"{url_prefix}/{series_dir.name}/{m3u8_file.name}\"
lines.append(f\"{display_name},{url}\\n\")
else:
# Episode folder mode: m3u8 files in subdirectories
episode_dirs = sorted(
[d for d in series_dir.iterdir() if d.is_dir()],
key=lambda d: natural_sort_key(d.name),
)
for ep_dir in episode_dirs:
m3u8_files = sorted(ep_dir.glob(\"*.m3u8\"))
if not m3u8_files:
continue
m3u8_name = m3u8_files[0].name
display_name = series_dir.name + ep_dir.name
url = f\"{url_prefix}/{series_dir.name}/{ep_dir.name}/{m3u8_name}\"
lines.append(f\"{display_name},{url}\\n\")
if not lines:
continue
txt_path = output / f\"{series_dir.name}_playlist.txt\"
txt_path.write_text(\"\".join(lines), encoding=\"utf-8\")
created.append(txt_path)
return created'''
if old_func in content:
content = content.replace(old_func, new_func)
open(path, 'w', encoding='utf-8').write(content)
print('Replaced OK')
else:
print('Old function not found - checking around line 735')
lines = content.split('\\n')
for i in range(730, min(770, len(lines))):
print(f'{i+1}: {repr(lines[i][:120])}')