U
    �€ik  ã                	   @   sj  d dl Z d dlmZ d dlZd dlZd dlZd dlmZ i ZdZ	e
ddƒ�FZe e¡ZeD ]0Zeeƒd krlqZed  Zed Ze eei¡ qZW 5 Q R X G dd	„ d	ƒZeƒ Zejed
gdd
gd
gd� e ¡ D ]\ZZeeeƒ eed� qÌejZedƒ eeƒ edƒ e d¡dd„ ƒZe d¡dd„ ƒZe d¡dd„ ƒZe d¡edœdd„ƒZdd„ Zdd„ Z dS )é    N)ÚFastAPI)ÚCORSMiddlewareTzall_channels.csvÚré   c                   @   s(   e Zd Zg Zdd„ Zdd„ Zdd„ ZdS )Ú
AddChannelc                 C   sl   t j | ¡ || _t | j¡| _d | _td| j› �ƒ t	sht
 d¡}| ¡ | _| j d¡rh| j | j¡ d S )NzNew channel: zZ--no-audio --vout dummy --quiet --ts-csa2-ck=0000000000000000 --ts-csa-ck=0000000000000001)ÚhttpÚhttpsúudp://)r   Úchannels_listÚappendÚnameÚchannels_dictÚgetÚlinkÚplayerÚprintÚSTATIC_MODEÚvlcZInstanceZmedia_player_newÚ
startswithZset_mrl)Úselfr   Zvlc_instance© r   ú>/home/user/RIDSYSPACKAGE/riptv/live/STATS_AUTOSCRIPT/./main.pyÚ__init__   s    ÿ
zAddChannel.__init__c                 C   s   | j r| j  ¡  d S ©N)r   Úplay©r   r   r   r   r   ,   s    zAddChannel.playc              
   C   s   ddddddddddœ	S )Nr   ZIdle)	Údemux_bitrateZdemux_corruptedZdemux_discontinuityZdemux_read_bytesZinput_bitrateÚ
read_bytesÚtimeZdrop_diff_1minÚstatusr   r   r   r   r   Ú	get_stats0   s    ÷zAddChannel.get_statsN)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r    r   r   r   r   r      s   r   Ú*)Zallow_originsZallow_credentialsZallow_methodsZallow_headers)r   z'-------------All Channels--------------z'---------------------------------------Ústartupc                  C   s   t stD ]} |  ¡  qd S r   )r   r
   r   )Úeach_channelr   r   r   r   T   s    r   c                  Ã   s    d} t D ]}d|jkrd} qd S )NFr	   T)r
   r   )Zcontain_udpr&   r   r   r   Ústartup_event]   s    
r'   z/statsc                   C   s   dd„ t D ƒS )Nc                 S   s   g | ]}|j | ¡ g‘qS r   )r   r    )Ú.0Zchannelr   r   r   Ú
<listcomp>l   s     zget_stats.<locals>.<listcomp>)r
   r   r   r   r   r    j   s    r    z/stats/{channel_name})Úchannel_namec                 C   sB   d }t D ]}|j| kr|}q|d kr4dd| › d�iS |j| ¡ fS )NÚERRORzThe channel 'z6' is not in the list. Please check your configuration.)r
   r   r    )r*   Z	outputOBJÚ
channelOBJr   r   r   Úget_specific_statsp   s    
 
ÿr-   c                  Ã   sh   t dƒ tD ]D} |  ¡ }|d }|dkr| j ¡  | j ¡  t d t| jƒ¡ƒ qt	 
d¡I d H  q d S )Nz_____Clearing the buffer______r   éd   zBuffer of {0} has been clearedé   )r   r
   r    r   Ústopr   ÚformatÚstrr   ÚasyncioÚsleep)r,   Zchannel_statsZchannel_bufferr   r   r   Úclear_buffer€   s    

r5   c                  Ã   sÈ   t D ]¬} |  ¡ }|d }| j ¡ }|tjjtjjfkrrtd| j	› d|› �ƒ | j 
¡  t d¡I d H  | j ¡  q|dkrtd| j	› d�ƒ | j 
¡  t d¡I d H  | j ¡  qt d¡I d H  q d S )Nr   z
[RESTART] z bad state: r   r   z stalled (demux_bitrate=0)é   )r
   r    r   Z	get_stater   ÚStateZPlayingZ	Bufferingr   r   r0   r3   r4   r   )r,   Zstatsr   Ústater   r   r   Úmonitor_channels�   s     



r9   )!r   Zfastapir   r3   Zcsvr   Zfastapi.middleware.corsr   r   r   ÚopenÚfileÚreaderZeachLineÚlenZch_nameZch_linkÚupdater   ÚappZadd_middlewareÚitemsr   r
   Zon_eventr   r'   r   r    r2   r-   r5   r9   r   r   r   r   Ú<module>   sR   
)û	



