o
    .j1                     @   s   d dl Z d dlZd dlZzzd dlZW n ey    d dlZY nw W n ey/   dZdZY nw dd Zddlm	Z	m
Z
mZ dZdZdZd	Zd
ZdZedZedZdedejeef fddZdd ZdS )    Nc                 C   s   t | d pdS )Nencoding )chardetdetect)data r   I/home/thesage/.local/lib/python3.10/site-packages/feedparser/encodings.pylazy_chardet_encoding*   s   r	      )CharacterEncodingOverrideCharacterEncodingUnknownNonXMLContentTypes   Los    < ?s   < ? s      <s   <   z  z^<\?xml[^>]*?>s#   ^<\?.*encoding=[\'"](.*?)[\'"].*\?>linereturnc                 C   sj   |  d}|s	dS |d  }d}|dd D ]}|d\}}}|  dkr0| d	}q||fS )
a  Parse an HTTP Content-Type header.

    The return value will be a tuple of strings:
    the MIME type, and the value of the "charset" (if any).

    This is a custom replacement for Python's cgi.parse_header().
    The cgi module will be removed in Python 3.13.
    ;)r   r   r   r   r
   N=charsetz"')splitstrip	partitionlower)r   chunks	mime_typecharset_valuechunkkey_valuer   r   r   parse_content_typeG   s   

r   c              
   C   s  d}d}|dd t jkrd}|dd }n|dd t jkr(d}|dd }n||dd t jkrB|dd tkrBd}|dd }nb|dd t jkr\|dd tkr\d}|dd }nH|dd	 t jkrnd
}|d	d }n6|dd tkryd}n+|dd tkrd}n |dd t	krd}n|dd t
krd}n
|dd tkrd}|}z|r||d
}W n ttfy   d}Y nw t|}|r| d d
 }|r|dv r|}| dpd}t|\}}d}	d}
d}||
v s|dr|drd}	|p|pd
}n8||v s|dr!|dr!d}	|pd}n|dr-|p+d}n| r;d| vr;|p9d}n|p?d
}| dkrId}| dkrRd}d}| rl|	sld| v rfd| d  }nd}t|}d}g }|||td
ddfD ]M}t|r||}|sqy||v rqy|| z||}W n ttfy   Y qyw d}d}t|rt||}n|d | }|d
} |stdd ||f  }d}n||krt d!||f }|}||d"< |rd#|d$< ||d%< |S )&z|Detect and convert the character encoding to UTF-8.

    http_headers is a dictionary
    data is a raw string (not Unicode)r   N   zutf-32bezutf-32le   zutf-16bezutf-16le   zutf-8cp037r   )u16zutf-16utf16utf_16u32zutf-32utf32utf_32ziso-10646-ucs-2ziso-10646-ucs-4csucs4	csunicodezucs-2zucs-4zcontent-type)zapplication/xmlzapplication/xml-dtdz&application/xml-external-parsed-entity)ztext/xmlztext/xml-external-parsed-entityzapplication/z+xmlr
   ztext/zus-asciiz
iso-8859-1gb2312gb18030z%s is not an XML media typezno Content-type specifiedzwindows-1252z
iso-8859-2z&<?xml version='1.0' encoding='utf-8'?>
z#document encoding unknown, I tried z>%s, %s, utf-8, windows-1252, and iso-8859-2 but nothing workedz)document declared as %s, but parsed as %sr   Tbozobozo_exception)!codecsBOM_UTF32_BEBOM_UTF32_LEBOM_UTF16_BE
ZERO_BYTESBOM_UTF16_LEBOM_UTF8EBCDIC_MARKERUTF16BE_MARKERUTF16LE_MARKERUTF32BE_MARKERUTF32LE_MARKERdecodeencodeUnicodeDecodeErrorLookupErrorRE_XML_PI_ENCODINGmatchgroupsr   getr   
startswithendswithr   r	   callableappendRE_XML_DECLARATIONsearchsubr   r   )http_headersr   resultbom_encodingxml_encodingtempdataxml_encoding_matchhttp_content_typehttp_encodingacceptable_content_typeapplication_content_typestext_content_typesrfc3023_encodingerrormsgknown_encodingtried_encodingsproposed_encodingnew_declarationr   r   r   convert_to_utf8_   s   /	""








r]   )r0   retypingtcchardetr   ImportErrorr	   
exceptionsr   r   r   r7   r8   r9   r:   r;   r4   compilerH   r@   strTupler   r]   r   r   r   r   <module>   s4   	

