from fugashi_parser import * import os from pathlib import Path import shutil import hashlib destination_directory_name = '/run/media/deck/YF8SD/Sync/Notebooks/Obsidian/Japanese/Yu-Gi-Oh/AnimeSubs/' destination_path = Path(destination_directory_name) dictionary_name = 'Jitendex.org [2026-04-04]' #print(annotate_phrase("私は学校へ行きます")) ## Make sure directories exist if not destination_path.exists(): destination_path.mkdir(parents=True, exist_ok=True) if not destination_path.joinpath('_attachments').exists(): destination_path.joinpath('_attachments').mkdir(parents=True, exist_ok=True) if not destination_path.joinpath('vocab').exists(): destination_path.joinpath('vocab').mkdir(parents=True, exist_ok=True) # ---------- CLI ---------- def main(): # parser = argparse.ArgumentParser() # parser.add_argument("--vocab-file", required=True) # parser.add_argument("text", nargs="*") # args = parser.parse_args() vocab = load_vocab('foo.json') with open("/run/media/deck/YF8SD/Video/[Retimed and Corrected] Yu-Gi-Oh! Duel Monsters - 001.srt", "r", encoding="utf-8") as f: lines = f.readlines() notes_lines = [] # Example: Modify the 3rd line (index 2) #lines[2] = "This is the new subtitle text\n" ## First lien has some unicode bom bs i = 0 while i < len(lines): ## If the line starts with a single number build a header if re.fullmatch(r'\d+', lines[i].strip()) or i == 0: notes_lines.append('##### ' + lines[i].strip() + " `" + lines[i+1].strip() + "`" + "\n") i+=2 continue if has_japanese(lines[i]): print(lines[i]) result = analyze(lines[i],vocab) print(result['kana_reading']) notes_lines.append(result["ruby_html"] + "\n" ) notes_lines.append (result['notes_link'] + "\n") if lines[i] != result['kana_reading']: lines[i] = result['kana_reading'] + "\n" # lost the new line else: #notes_lines.append("`" + lines[i].strip() + "`" + "\n") notes_lines.append(lines[i]) i+=1 ## Lookup vocab for word in vocab: #vocab_hash = hashlib.shake_256((word + dictionary_name).encode()).hexdigest(4) if Path(destination_path.joinpath('vocab/' + word + '.md')).exists() == False: definitions = anki_fields_term(word) if definitions.get("fields"): with open(destination_path.as_posix() + '/vocab/' + word + '.md', 'w') as vocab_note: for entry in definitions.get("fields"): vocab_note.write("\n") print(entry['expression'], file=vocab_note) #print(entry['furigana-plain'], file=vocab_note) if entry['expression'] != entry['reading']: print(entry['reading'], file=vocab_note) print(entry['furigana'], file=vocab_note) #print(f"Part of Speech: {entry['part-of-speech']}", file=vocab_note) print(f"Frequency: {entry['frequency-average-rank']}", file=vocab_note) #print(entry['glossary-plain-no-dictionary'], file=vocab_note) vocab_note.write(entry['glossary-first']) print("##### Other Definitions", file=vocab_note) print(entry['glossary-plain-no-dictionary'], file=vocab_note) with open("subtitle.srt", "w", encoding="utf-8") as f: f.writelines(lines) with open("notestest-newchunks.md", "w", encoding="utf-8") as f: f.writelines(notes_lines) #vocab = load_vocab(args.vocab_file) #result = analyze(text, vocab) #save_vocab('foo.json', vocab) #result["vocab_file"] = args.vocab_file #print(json.dumps(result, ensure_ascii=False, indent=2)) if __name__ == "__main__": main()