自用代码备份
python
import sys
import re
import os
patterns = [
# 00:00:00 - xxxxx
re.compile(r"(\d{2}:\d{2}:\d{2})\s+-\s+([^\n\r]*)"),
# 00:00 xxxxx
re.compile(r"(\d{1,2}:\d{2})\s+([^\n\r]*)")]
if len(sys.argv) < 3:
print(f'''Usage: pythonScriptFilename.py listTextFileName audioBinaryFileName [last-to]
Example: python script.py music.lst music.mp3 01:00:23
--{"by mostone"}{"@"}hotmail{"."}com''')
quit()
listFileName = sys.argv[1]
inputFileName = sys.argv[2]
lastToTime = "" if len(sys.argv)==3 else f"-to {sys.argv[3]}"
lines = [] # [ss, to, outputFileName]
print("open list file")
with open(listFileName, "rb") as lst:
print("read to buff")
txt = lst.read().decode()
for ptn in patterns:
matches = ptn.findall(txt)
if len(matches) != 0: break
if len(matches) == 0:
print("No item found in the list file.")
quit()
ss = ""
fn = ""
for m in matches:
if ss != "":
lines.append([f"-ss {ss}", f"-to {m[0]}", fn])
ss = m[0]
fn = m[1]
# last one
lines.append([f"-ss {ss}", lastToTime, fn])
ptnIndex = re.compile(r"^\d+\.")
addIndex = True if ptnIndex.match(lines[0][2])==None else False
for i in range(1, len(lines)):
paras = lines[i - 1]
paras[2] = f"\"{f"{i:02g}.{paras[2]}" if addIndex else paras[2]}\".mp3"
cmd = f"ffmpeg -nostdin -i \"{inputFileName}\" -c copy {" ".join(paras)}"
# print(cmd)
os.system(cmd)