import os from pathlib import Path import pypandoc from xml.sax.saxutils import escape def convert_markdown_to_enex(markdown_file_path, output_file_path): # Convert Markdown to HTML html_content = pypandoc.convert_file(str(markdown_file_path), 'html', format='markdown') # Extract title from file name title = markdown_file_path.stem # Create Evernote ENEX structure enex_content = f''' {escape(title)} {html_content} ]]> ''' with open(output_file_path, 'w', encoding='utf-8') as f: f.write(enex_content) def process_folder(input_folder, output_folder): input_folder = Path(input_folder).resolve() output_folder = Path(output_folder).expanduser().resolve() for root, dirs, files in os.walk(input_folder): rel_path = Path(root).relative_to(input_folder) target_dir = output_folder / rel_path target_dir.mkdir(parents=True, exist_ok=True) for file in files: if file.lower().endswith(".md"): md_file_path = Path(root) / file enex_filename = md_file_path.stem + ".enex" enex_file_path = target_dir / enex_filename convert_markdown_to_enex(md_file_path, enex_file_path) if __name__ == "__main__": import sys if len(sys.argv) < 2: print("Usage: python convert_md_to_enex.py ") sys.exit(1) input_dir = sys.argv[1] output_dir = "~/mdConverted" process_folder(input_dir, output_dir) print(f"Conversion completed. ENEX files saved in {output_dir}")