
    j\                         d dl Z d dlZd dlmZmZmZ d dlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ d	d
gZddgZ G d de	      Zy)    N)AnyBinaryIOOptional)BeautifulSoup   )DocumentConverterDocumentConverterResult)
StreamInfo   )_CustomMarkdownify	text/htmlzapplication/xhtml.htmlz.htmc                   `    e Zd ZdZdedededefdZdededede	fdZ
dd	d
edee   de	fdZy)HtmlConverterz$Anything with content type text/htmlfile_streamstream_infokwargsreturnc                     |j                   xs dj                         }|j                  xs dj                         }|t        v ryt        D ]  }|j                  |      s y y)N TF)mimetypelower	extensionACCEPTED_FILE_EXTENSIONSACCEPTED_MIME_TYPE_PREFIXES
startswith)selfr   r   r   r   r   prefixs          f/root/aria/tools/markitdown-venv/lib/python3.12/site-packages/markitdown/converters/_html_converter.pyacceptszHtmlConverter.accepts   sg      ((.B557 **0b779	001 	F""6*	     c                 z   |j                  dd      }|j                  dn|j                  }t        |d|      } |ddg      D ]  }|j                           |j	                  d      }d	}		 |rt        di |j                  |      }	nt        di |j                  |      }	t        |	t              sJ |	j                         }	t        |	|j                  d       S |j                  j                         S # t        $ r6 |r t        j                  d
d       |r|n|}
|
j                  dd      }	Y w xY w)NstrictFutf-8zhtml.parser)from_encodingscriptstylebodyr   zsHTML document is too deeply nested for markdown conversion (RecursionError). Falling back to plain-text extraction.r   )
stacklevel
T)strip)markdowntitle )popcharsetr   extractfindr   convert_soupRecursionErrorwarningswarnget_text
isinstancestrr+   r	   r-   string)r   r   r   r   r#   encodingsoupr&   body_elmwebpage_texttargets              r   convertzHtmlConverter.convert*   sN    zz(E2 *1197{?R?R[-xP Hg./ 	FNN	 99V$	=1;F;HHR1;F;HHN  ,,,, $))+&!**,$
 	
26**2C2C
 	
)  	=
 MMK
 "*XtF!??4t?<L	=s   .7C; ;<D:9D:N)urlhtml_contentrA   c          
           | j                   dt        j                  |j                  d            t	        ddd|      d|S )z
        Non-standard convenience method to convert a string to markdown.
        Given that many converters produce HTML as intermediate output, this
        allows for easy conversion of HTML to markdown.
        r$   r   r   )r   r   r0   rA   )r   r   r.   )r@   ioBytesIOencoder
   )r   rB   rA   r   s       r   convert_stringzHtmlConverter.convert_string]   sQ     t|| 	


<#6#6w#?@"$!		
 	
 		
r!   )__name__
__module____qualname____doc__r   r
   r   boolr    r	   r@   r9   r   rG   r.   r!   r   r   r      s    .   	
 
$1
1
  1
 	1

 
!1
h :>

)1#
	 
r!   r   )rD   r5   typingr   r   r   bs4r   _base_converterr   r	   _stream_infor
   _markdownifyr   r   r   r   r.   r!   r   <module>rR      sL    	  * *  H % ,   
 Y
% Y
r!   