#!/usr/bin/env python3
"""
Generate audiobook-enhanced plaintext version with pacing markers
Includes SSML-style breaks and emphasis markers for better voice control
"""

import os
import re
from pathlib import Path

EXPORT_READY_DIR = Path("export-ready")
OUTPUT_DIR = Path("export")

# File order mapping
FILE_ORDER = {
    "00-cover.md": 0,
    "01-title-page.md": 1,
    "02-dedication.md": 2,
    "02a-content-considerations.md": 2.5,
    "03-preface.md": 3,
    "04-how-to-use-this-book.md": 4,
    "05-introduction.md": 5,
    "06-chapter-01-overloaded-mind.md": 6,
    "07-chapter-02-emotional-architecture.md": 7,
    "08-chapter-03-mirror-misunderstanding.md": 8,
    "09-chapter-04-science-of-withdrawal.md": 9,
    "10-chapter-05-shutdown-triggers.md": 10,
    "11-chapter-06-survival-mode-love.md": 11,
    "12-chapter-07-overfunctioning.md": 12,
    "13-chapter-08-projection-mirror.md": 13,
    "14-chapter-09-burnout-breakdown-dissociation.md": 14,
    "15-chapter-10-loving-someone-who-retreats.md": 15,
    "16-chapter-11-what-people-get-wrong.md": 16,
    "17-chapter-12-repair-reconnection.md": 17,
    "18-chapter-13-emotional-bandwidth.md": 18,
    "19-chapter-14-healing-survival-patterns.md": 19,
    "20-chapter-15-coming-home-to-silence.md": 20,
    "21-epilogue.md": 21,
    "22-acknowledgements.md": 22,
    "23-about-the-author.md": 23,
    "24-back-of-book-summary.md": 24,
    "25-bibliography.md": 25,
    "25a-glossary.md": 25.5,
}

def strip_markdown(content: str) -> str:
    """Remove all Markdown formatting, keeping structure."""
    
    # Remove YAML front matter
    if content.startswith("---"):
        end_index = content.find("---", 3)
        if end_index != -1:
            content = content[end_index + 3:].strip()
    
    # Remove code blocks (keep content)
    content = re.sub(r'```[\s\S]*?```', '', content)
    content = re.sub(r'`([^`]+)`', r'\1', content)
    
    # Remove images but keep alt text
    content = re.sub(r'!\[([^\]]*)\]\([^\)]+\)', r'\1', content)
    
    # Remove links but keep text
    content = re.sub(r'\[([^\]]+)\]\([^\)]+\)', r'\1', content)
    
    # Convert headings to plain text (keep the text, remove #)
    content = re.sub(r'^#{1,6}\s+(.+)$', r'\1', content, flags=re.MULTILINE)
    
    # Remove bold (**text** or __text__)
    content = re.sub(r'\*\*([^\*]+)\*\*', r'\1', content)
    content = re.sub(r'__([^_]+)__', r'\1', content)
    
    # Remove italics (*text* or _text_)
    content = re.sub(r'(?<!\*)\*([^\*]+)\*(?!\*)', r'\1', content)
    content = re.sub(r'(?<!_)_([^_]+)_(?!_)', r'\1', content)
    
    # Remove blockquote markers
    content = re.sub(r'^>\s+', '', content, flags=re.MULTILINE)
    
    # Remove horizontal rules
    content = re.sub(r'^---+$', '', content, flags=re.MULTILINE)
    
    # Remove list markers (convert to plain text)
    content = re.sub(r'^\s*[-*+]\s+', '', content, flags=re.MULTILINE)
    content = re.sub(r'^\s*\d+\.\s+', '', content, flags=re.MULTILINE)
    
    # Clean up extra whitespace
    content = re.sub(r'\n{3,}', '\n\n', content)
    content = re.sub(r'[ \t]+', ' ', content)
    
    # Remove any remaining markdown artifacts
    content = re.sub(r'[#>*_`~\-]{2,}', '', content)
    
    return content.strip()

def add_audiobook_markers(content: str) -> str:
    """Add SSML-style markers for better audiobook pacing."""
    
    lines = content.split('\n')
    enhanced = []
    
    for i, line in enumerate(lines):
        if not line.strip():
            # Add pause for blank lines
            enhanced.append('<break time="500ms"/>')
        elif line.strip().startswith('CHAPTER') or line.strip().startswith('='):
            # Chapter headers get longer pause
            enhanced.append(line)
            enhanced.append('<break time="1000ms"/>')
        elif 'One Truth' in line or 'REFLECTION QUESTIONS' in line.upper():
            # Important sections get emphasis
            enhanced.append('<break time="800ms"/>')
            enhanced.append(f'<emphasis level="moderate">{line}</emphasis>')
            enhanced.append('<break time="500ms"/>')
        elif line.strip().endswith('?'):
            # Questions get slight pause
            enhanced.append(line)
            enhanced.append('<break time="300ms"/>')
        elif line.strip().endswith('.'):
            # End of sentence - natural pause
            enhanced.append(line)
            if i < len(lines) - 1 and lines[i+1].strip():
                enhanced.append('<break time="200ms"/>')
        else:
            enhanced.append(line)
    
    return '\n'.join(enhanced)

def get_chapter_title(filename: str, content: str) -> str:
    """Extract chapter title from content or filename."""
    h1_match = re.search(r'^#\s+(.+)$', content, re.MULTILINE)
    if h1_match:
        title = h1_match.group(1).strip()
        title = re.sub(r'\*\*([^\*]+)\*\*', r'\1', title)
        title = re.sub(r'_(.+?)_', r'\1', title)
        return title.upper()
    
    title = filename.replace('.md', '').replace('-', ' ').replace('_', ' ')
    title = re.sub(r'^\d+\s*', '', title)
    return title.upper()

def process_file(filename: str) -> tuple[str, str]:
    """Process a single file and return (title, clean_content)."""
    filepath = EXPORT_READY_DIR / filename
    if not filepath.exists():
        return None, None
    
    with open(filepath, 'r', encoding='utf-8') as f:
        content = f.read()
    
    title = get_chapter_title(filename, content)
    clean_content = strip_markdown(content)
    
    return title, clean_content

def main():
    """Generate enhanced audiobook version."""
    print("🎙️ Generating audiobook-enhanced plaintext version...")
    print("")
    
    OUTPUT_DIR.mkdir(exist_ok=True)
    
    chapters = []
    for filename in sorted(FILE_ORDER.keys(), key=lambda x: FILE_ORDER.get(x, 0)):
        print(f"Processing {filename}...")
        title, content = process_file(filename)
        
        if title and content:
            chapters.append((title, content))
    
    print(f"\n✅ Processed {len(chapters)} files")
    print("")
    
    print("📄 Creating enhanced audiobook version...")
    enhanced_output = []
    
    for i, (title, content) in enumerate(chapters, 1):
        enhanced_output.append("=" * 80)
        enhanced_output.append(f"CHAPTER {i}: {title}")
        enhanced_output.append("=" * 80)
        enhanced_output.append('<break time="1000ms"/>')
        enhanced_output.append("")
        
        # Add markers to content
        marked_content = add_audiobook_markers(content)
        enhanced_output.append(marked_content)
        
        enhanced_output.append("")
        enhanced_output.append('<break time="1500ms"/>')
        enhanced_output.append("")
    
    enhanced_text = '\n'.join(enhanced_output)
    
    # Save enhanced version
    enhanced_path = OUTPUT_DIR / "Silence-Isnt-Distance-AUDIOBOOK-ENHANCED.txt"
    with open(enhanced_path, 'w', encoding='utf-8') as f:
        f.write(enhanced_text)
    
    print(f"✅ Saved: {enhanced_path}")
    print("")
    print("📊 File Statistics:")
    print(f"   Enhanced version: {len(enhanced_text):,} characters")
    print(f"   Total chapters: {len(chapters)}")
    print("")
    print("✨ Enhanced audiobook version complete!")
    print("")
    print("📦 File ready for advanced audiobook generation:")
    print(f"   • {enhanced_path}")
    print("")
    print("💡 Note: This version includes SSML-style markers for:")
    print("   • Natural pauses at paragraph breaks")
    print("   • Emphasis on 'One Truth' sections")
    print("   • Longer pauses at chapter breaks")
    print("   • Better pacing for questions and reflections")

if __name__ == "__main__":
    main()

