markdown_parser.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import sys, os
  2. sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  3. from parser.document_parser import DocumentParser
  4. from logger.logging import setup_logging
  5. logger = setup_logging()
  6. class MarkdownParser(DocumentParser):
  7. """Markdown文档解析器"""
  8. def parse(self, data: bytes) -> str:
  9. """解析Markdown文档,直接返回原始内容"""
  10. try:
  11. # 尝试不同的编码
  12. encodings = ['utf-8', 'gbk', 'gb2312', 'latin-1']
  13. for encoding in encodings:
  14. try:
  15. return data.decode(encoding)
  16. except UnicodeDecodeError:
  17. continue
  18. # 如果所有编码都失败,使用错误处理
  19. return data.decode('utf-8', errors='ignore')
  20. except Exception as e:
  21. logger.error(f"Markdown解析失败: {e}")
  22. return ""
  23. def supports(self, content_type: str) -> bool:
  24. """检查是否支持Markdown格式"""
  25. supported_types = [
  26. 'text/markdown',
  27. 'text/x-markdown',
  28. 'application/markdown',
  29. 'md'
  30. ]
  31. return content_type.lower() in [t.lower() for t in supported_types]
  32. if __name__ == "__main__":
  33. parser = MarkdownParser()
  34. with open("../data/md1.md", "rb") as f:
  35. data = f.read()
  36. result = parser.parse(data)
  37. print(result[:2000])