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}")