Initial commit: source code only
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
"""Convert transcript JSON into a readable timestamped txt for LLM analysis."""
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
from config import TRANSCRIPT_DIR
|
||||
from feed import load_episodes
|
||||
from download import slug as ep_slug
|
||||
|
||||
TXT_DIR = os.path.join(TRANSCRIPT_DIR, "txt")
|
||||
|
||||
|
||||
def txt_path(ep: dict) -> str:
|
||||
return os.path.join(TXT_DIR, ep_slug(ep) + ".txt")
|
||||
|
||||
|
||||
def export_txt(ep: dict) -> str:
|
||||
tp = os.path.join(TRANSCRIPT_DIR, ep_slug(ep) + ".json")
|
||||
with open(tp, encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
os.makedirs(TXT_DIR, exist_ok=True)
|
||||
out = txt_path(ep)
|
||||
with open(out + ".tmp", "w", encoding="utf-8") as f:
|
||||
f.write(f"# {data['title']}\n# published: {data['pub_date']}\n"
|
||||
f"# episode: {data.get('ep_num')}\n\n")
|
||||
for seg in data["segments"]:
|
||||
s = int(seg["start"])
|
||||
stamp = f"{s // 3600:02d}:{(s % 3600) // 60:02d}:{s % 60:02d}"
|
||||
f.write(f"[{stamp}] {seg['text']}\n")
|
||||
os.replace(out + ".tmp", out)
|
||||
return out
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
eps = load_episodes()
|
||||
want = {int(a) for a in sys.argv[1:]} if len(sys.argv) > 1 else None
|
||||
n = 0
|
||||
for ep in eps:
|
||||
if want and (ep["ep_num"] not in want):
|
||||
continue
|
||||
src = os.path.join(TRANSCRIPT_DIR, ep_slug(ep) + ".json")
|
||||
if os.path.exists(src):
|
||||
print(export_txt(ep))
|
||||
n += 1
|
||||
print(f"exported {n}")
|
||||
Reference in New Issue
Block a user