提交必要文件
This commit is contained in:
@@ -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])}')
|
||||
Reference in New Issue
Block a user