U
    U(Yd/                     @   s@  d dl Z d dlZe d e d d dlmZ d dlmZ d dlmZ d dl	m	Z	 d dl
mZmZmZ d d	lmZmZ d dlZd dlZd
d Zdd Zdd Zeeeef  eeeef  eeeef  dddZeeeef  eeeef  eeeef  dddZdd Zdd Zdd Zdd Zdd Zdd  ZdS )!    NZpunkt	stopwords)detect)Counterr   )datetime)AnyDictList)medianstdevc                 C   s   t t| S )N)setr   words)lang r   9/var/www/html/Presentation_Mo/src/apps/dashboard/utils.pyget_stopwords   s    r   c                 C   s   t j| dd}g }tt|D ]P}|d | d|d | d|d | d|d | d	d
}|| qt|}t|}|S )
    Reads an Excel file and converts its data to a JSON object.

    Args:
        filepath (str): The file path of the Excel file.

    Returns:
        A JSON object containing the data from the Excel file.
    ZF1)Z
sheet_namez
Start Datez%d-%m-%Yz
Start Time%H:%M:%SzEnd Timez
Event Namer   )date
time starttime endshowviews)	pd
read_excelrangelenstrftimeappendjsondumpsloadsfilepathdfdataidatum	json_dataZjson_objectr   r   r   excel_to_json_epg   s    


r)   c                 C   s   t | }g }tt|D ]\}|d | t|d | ddt|d | dd|d | d d	}|| qt	|}t
|}|S )
r   Zsfr_channel_namedayz%Y-%m-%dminuter   %I:%M %pZpurcenti@  )Zchannelr   timeviewers)r   r   r   r   r   strptimer   r   r   r    r!   r"   r   r   r   excel_to_json_views3   s    



r0   )json1json2returnc           
      C   s   g }| D ]}|  }t|d d }|D ]X}t|d d }t|d d }|d }	||  krt|kr,n q,|	|d<  qq,|| q|S )a^  
    Adds a 'show' key to each dictionary in json1 based on the time range in json2.

    Args:
        json1: A list of dictionaries representing the first JSON.
        json2: A list of dictionaries representing the second JSON.

    Returns:
        A list of dictionaries representing the updated JSON1, with a 'show' key added to each item.
    r-   r,   r   r   r   r   )copyr   r/   r-   r   )
r1   r2   updated_jsonitem1updated_itemr-   item2
start_timeend_timer   r   r   r   add_show_to_viewsU   s    r;   c                    s   g }|D ]}|  }t|d d t|d d  |d } fdd| D }t||d< |rpt|nd|d	< |rt|nd|d
< |rt|t| nd|d< |rt|nd|d< t|dkrt	|nd|d< |
| q|S )a  
    Calculates some statistics based on the views in json1 within the time range of each show in json2.
    Adds attributes 'total', 'max', 'min', 'mean', 'median', 'ecart-type views' to each show in json2.

    Args:
        json1: A list of dictionaries representing the first JSON.
        json2: A list of dictionaries representing the second JSON.

    Returns:
        A list of dictionaries representing the updated JSON2, with added attributes to each show.
    r   r   r   r   c                    s<   g | ]4}t |d  d   kr, krn q|d qS )r-   r,   r.   )r   r/   r-   ).0r6   r:   r9   r   r   
<listcomp>   s
        z%add_calcul_to_epg.<locals>.<listcomp>totalr   maxminmeanr
      z
ecart-type)r4   r   r/   r-   sumr@   rA   r   r
   r   r   )r1   r2   r5   r8   r7   r   Zviews_in_ranger   r=   r   add_calcul_to_epgy   s    rE   c                    s   t | }|dkrtd n|dkr,td ng  | tddtj} |  } t	| } fdd|D }t
|}t| t| dd	 d
d}fdd|D }|S )Nenenglishfrfrench c                    s   g | ]}| kr|qS r   r   r<   wordr   r   r   r>      s      z speech_words.<locals>.<listcomp>c                 S   s   | d S NrC   r   xr   r   r   <lambda>       zspeech_words.<locals>.<lambda>Tkeyreversec                    s    g | ]\}}||  |d qS ))rL   rankcountr   r<   rL   rV   )total_wordsr   r   r>      s     )r   r   	translatestr	maketransstringpunctuationlowernltkword_tokenizer   rD   valuessorteditemstextr   r   filtered_wordsword_countssorted_wordsZranked_wordsr   )r   rX   r   speech_words   s    


ri   c              -      sD  t | }|dkrjdddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+g* nl|d,krd-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFddGdHdIdJdKdLdMdNdOdPdOdQdRdSdMdTdUdVg- ng  | tdWdWtj} |  } t| } fdXdY|D }t	|}t
| dZd[ d\d]}d^dY t|D }|S )_NrF   aantheandorbutifthenitisarewaswereofforonintothatwiththisatfrombybenotasyouyourtheytheirr&   weourusheshehimherhishersitsrH   ununelelalesetoumaissialorsestsont   était   étaientdedudespoursurdans   àaveccecetcettecesparpascommevousvotreilsleurjenousnotreilelleluisonsasesrJ   c                    s   g | ]}| kr|qS r   r   rK   r   r   r   r>      s      z(speech_words_copy_v4.<locals>.<listcomp>c                 S   s   | d S rM   r   rN   r   r   r   rP      rQ   z&speech_words_copy_v4.<locals>.<lambda>TrR   c                 S   s"   g | ]\}\}}||d  dqS )rC   )rL   rU   r   )r<   rU   rL   rV   r   r   r   r>      s    
 )r   rY   rZ   r[   r\   r]   r^   r_   r`   r   rb   rc   	enumeraterd   r   r   r   speech_words_copy_v4   s    Z`
r   c              -      s<  t | }|dkrjdddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+g* nl|d,krd-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFddGdHdIdJdKdLdMdNdOdPdOdQdRdSdMdTdUdVg- ng  | tdWdWtj} |  } t| } fdXdY|D }t	|}t
| dZd[ d\d]}d^dY |D S )_NrF   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   c                    s   g | ]}| kr|qS r   r   rK   r   r   r   r>      s      z(speech_words_copy_v3.<locals>.<listcomp>c                 S   s   | d S rM   r   rN   r   r   r   rP     rQ   z&speech_words_copy_v3.<locals>.<lambda>TrR   c                 S   s   g | ]\}}||d qS )rL   rV   r   rW   r   r   r   r>   	  s     )r   rY   rZ   r[   r\   r]   r^   r_   r`   r   rb   rc   re   r   r   rf   rg   rh   r   r   r   speech_words_copy_v3   s    Z`
r   c                    sp   t d t| }t d tt| |  } fdd|D }t|}t|	 dd dd}dd |D S )	Nr   c                    s   g | ]}|   kr|qS r   )r^   rK   Z
stop_wordsr   r   r>     s      z%speech_words_copy.<locals>.<listcomp>c                 S   s   | d S rM   r   rN   r   r   r   rP     rQ   z#speech_words_copy.<locals>.<lambda>TrR   c                 S   s   g | ]\}}||d qS r   r   rW   r   r   r   r>   "  s     )
r_   downloadr   r   r   r   splitr   rb   rc   r   r   r   r   speech_words_copy  s    

r   c                 C   s8   |   }t|}dd | D }t|dd dd}|S )Nc                 S   s   g | ]\}}||d qS r   r   rW   r   r   r   r>   ,  s     z(speech_words_copy_v1.<locals>.<listcomp>c                 S   s   | d S )NrV   r   rN   r   r   r   rP   /  rQ   z&speech_words_copy_v1.<locals>.<lambda>TrR   )r   r   rc   rb   )re   r   rg   resultr   r   r   speech_words_copy_v1$  s
    r   c                 C   s`   |   }t|}t| dd dd}dd |D }g }|D ]\}}||kr<|||f q<|S )Nc                 S   s   | d S rM   r   rN   r   r   r   rP   ;  rQ   z&speech_words_copy_v2.<locals>.<lambda>TrR   c                 S   s   g | ]\}}||fqS r   r   rW   r   r   r   r>   >  s     z(speech_words_copy_v2.<locals>.<listcomp>)r   r   rb   rc   r   )re   r   rg   rh   Zunique_wordsrL   rV   r   r   r   speech_words_copy_v23  s    r   ) r_   r\   r   Z
langdetectr   collectionsr   Znltk.corpusr   r   typingr   r   r	   
statisticsr
   r   Zpandasr   r   r   r)   r0   rZ   r;   rE   ri   r   r   r   r   r   r   r   r   r   <module>   s,   

""6$6(%$!