U
    yi{                  	   @   sf  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e	ddFZ
ee
ZeD ]0Zeed krhqVed  Zed Zeeei qVW 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 qe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)CORSMiddlewarez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   s   t j|  || _t| j| _d| _t | _	t
d| j td}| | _| jdsl| jdr|| j| j n| jdr| j| jd d S )Nr   zNew channel: {0}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last_discontinuitytimelast_checked_timeprintformatvlcZInstanceZmedia_player_newplayer
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   t d | j  d S )NZ
playerPlay)r   r   play)r   r   r   r   r   ,   s    zAddChannel.playc           	   
   C   s   t d t }| j }|| t }|| j }|j}|| j	 }|dkrZ|| _|| _	|dkrhd}n"d|  kr|dkrn nd}nd}t
|jd	 |j||jt
|jd	 |jt
| j d
 d ||d	}|S )NZgetStats<   r   ZHealthyr   
   zModerate DropzHighly Droppedi@  i`  )	demux_bitratedemux_corrupteddemux_discontinuitydemux_read_bytesinput_bitrate
read_bytesr   Zdrop_diff_1minstatus)r   r   Z
MediaStatsr   Z	get_media	get_statsr   r   r!   r   intr   r    r"   r#   r$   Zget_time)	r   smcurrent_timeelapsedZ	drops_nowZ	drop_diffr%   datar   r   r   r&   0   s6    



zAddChannel.get_statsN)__name__
__module____qualname__r
   r   r   r&   r   r   r   r   r      s   r   *T)Zallow_originsZallow_credentialsZallow_methodsZallow_headers)r   z'-------------All Channels--------------z'---------------------------------------startupc                  C   s   t D ]} |   qd S )N)r
   r   )each_channelr   r   r   r   n   s    r   c                     s<   d} t D ]}d|jkrd} q| r,tt  tt  d S )NFr	   T)r
   r   asynciocreate_taskclear_buffermonitor_channels)Zcontain_udpr2   r   r   r   startup_eventv   s    
r7   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>   s     zget_stats.<locals>.<listcomp>)r
   r   r   r   r   r&      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_stats   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   r   strr   r3   sleep)r<   Zchannel_statsZchannel_bufferr   r   r   r5      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   r@   r3   rB   r   )r<   Zstatsr   stater   r   r   r6      s     



r6   ) r   Zfastapir   r3   Zcsvr   Zfastapi.middleware.corsr   r   openfilereaderZeachLinelenZch_nameZch_linkupdater   appZadd_middlewareitemsr   r
   Zon_eventr   r7   r   r&   rA   r=   r5   r6   r   r   r   r   <module>   sP   
D	



