o
    Ni8                     @   s   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
Z
dZdg g dfd	d
Zdg g dfddZdg g dfddZdg g dfddZdd Zdd Zdd ZdS )    )convertN)etree)ZipFile)BeautifulSoupz?{http://schemas.openxmlformats.org/wordprocessingml/2006/main}tTFc                 C   s   t j|r=d|v rt| |||||| d S d|v r&t| |||||| d S d|v r6t| |||||| d S td d S td d S )Nz.txtz.docxz.htmz\Only .txt, .html, .docx formats are supported for file conversion. Input file not processed.z-Not a file. Please pass a file as an argument)ospathisfileconvert_txtconvert_docxconvert_htmlwarningswarn)srctgtfilenativizepre_optionspost_optionsis_api_mode r   S/home/ubuntu/.local/lib/python3.10/site-packages/aksharamukha/transliterate_file.pyprocess   s   r   c              
   C   s   t |ddd}| }W d    n1 sw   Y  tj|}	|	d d |  | |	d  }
t |
ddd}|t| ||||| W d    n1 sMw   Y  td|
  d S )	Nrutf8encodingr   _   w%The following file has been created: )openreadr   r   splitextwriter   print)r   r   r   r   r   r   r   ftxt
file_partsnew_filer   r   r   r	      s   
r	   c                 C   s  |r|}nt |ddd}| }W d    n1 sw   Y  t|}	|	jddD ]}
|
|
jt| ||
j|||}|
| q*|rG|	 S t	j
|}|d d |  | |d  }t |d	dd}||	  W d    n1 stw   Y  td
|  d S )Nr   r   r   T)textr   r   r   r   r   )r    r!   r   findAllreplacestringr   replace_withprettifyr   r   r"   r#   r$   )r   r   r   r   r   r   r   htmlr%   soupnodenew_noder'   r(   r   r   r   r   $   s"   
r   c              	   C   s   | ||||d}t  }|r$dd l}	ddl m}
 ddlm} |
||}t|d#}t|d}t||| W d    n1 s@w   Y  W d    n1 sOw   Y  t|||| |}|S )N)sourcetargetr   r   r   r   )BytesIO)	b64decoder   r   )ior5   rebase64r6   r   parse_contentflush_zip_to_file)r   r   r   r   r   r   r   conversion_datanew_zipr8   r5   r6   old_archivenew_archiver   r   r   r
   <   s(   r
   c                 C   sL   |j D ] }|jdr|jdrt| ||| q||||j qd S )Nzword/z.xml)filelistfilename
startswithendswithxml_file_to_convertwritestrr!   )datar>   r?   itemr   r   r   r:   V   s
   
r:   c              
   C   s   | |dB}t|}|  D ]}|jtkr.t| d | d |j| d | d | d |_qtj	| dddd	}|
|| W d    d S 1 sKw   Y  d S )
Nr   r3   r4   r   r   r   TzUTF-8)xml_declarationr   
standalone)r    r   parsegetrootitertagMS_WORD_TEXT_SCHEMAr   r)   tostringrE   )rF   r>   r?   rG   xml_filetreeelementr,   r   r   r   rD   ^   s&   


"rD   c                 C   s   |rt | } | S tj| }|d d | d | |d  }t|d}||  W d    n1 s8w   Y  td|  d S )Nr   r   r   wbr   )	r7   r5   getvaluer   r   r"   r    r#   r$   )r   zipr   r   r   r'   r(   r%   r   r   r   r;   r   s    r;   )aksharamukha.transliterater   r7   r   lxmlr   zipfiler   bs4r   r   rN   r   r	   r   r
   r:   rD   r;   r   r   r   r   <module>   s    