
    i                      X    d dl Z d dlZd dlZd dlmZ d dlmZ d Zd Zd Z	d Z
defd	Zy)
    N)Path)get_ffprobe_pathc           
         t               ddddddt        |       g}	 t        j                  |ddd      }t	        j
                  |j                        S # t        $ r"}t        j                  d	|        Y d
}~y
d
}~ww xY w)z9Run ffprobe on the given file and return the JSON output.z-verrorz-print_formatjsonz-show_formatz-show_streamsT)capture_outputtextcheckzError running ffprobe for NFO: N)
r   str
subprocessrunr   loadsstdout	Exceptionloggingr   )	file_pathcmdresultes       b/home/nidran/Documenti/script/streaming-community/StreamingCommunity/core/processors/helper/nfo.pyrun_ffprober      s{     	gICDt4Pzz&--(( 7s;<s   7A 	B A;;B c                     	 t        |       } t        | dz        }t        | dz  dz        }t        | dz        }|dd|dd|dS # t        t        f$ r Y yw xY w)z'Format duration in seconds to HH:MM:SS.i  <   02:z00:00:00)floatint
ValueError	TypeError)secondshmss       r   format_durationr$       ss    .4 4B&'"Bq2a"v&&	" s   AA AAc                 v    | j                  di       }|j                  d      xs |j                  d      xs dS )z"Extract language from stream tags.tagslanguagetitleund)get)streamr&   s     r   get_languager,   ,   s4    ::fb!D88J=488G#4==    c                     | r@d| v r<	 | j                  d      \  }}t        |      dkD  rt        |      t        |      z   S 	 | xs dS # t        t        f$ r Y w xY w)z:Parse frame rate string (e.g., '24/1') to a simple string./r   zN/A)splitr   r   ZeroDivisionError)ratenumdens      r   	parse_fpsr5   2   sm    t	zz#HC3x!|c(c#h./0  =5 -. 		s   9A	 	AAr   c           
         | rt        |       j                         syt        |       }|syt        |       }|j                  d      }	 |j	                  di       }|j	                  dg       }|j	                  dd      }t        |j	                  dd            }|j	                  d	      rt        |j	                  d	d            d
z  nd}g }	|	j                  d|j                          |	j                  d|        |	j                  d|        |	j                  d| d       |D ]  }
|
j	                  d      dk(  s|	j                  d       |	j                  d|
j	                  dd      j                          d|
j	                  dd       d       |	j                  d|
j	                  dd       d|
j	                  dd              |	j                  dt        |
j	                  d                     |	j                  d!|
j	                  d"d#       d$        n |	j                  d%       |D ]  }
|
j	                  d      d&k(  s|	j                  d't        |
              |	j                  d|
j	                  dd      j                          d|
j	                  dd       d       |	j                  d(|
j	                  d)d              |	j                  d*|
j	                  d+d       d,        |D 
cg c]  }
|
j	                  d      d-k(  s|
 }}
|rY|	j                  d.       |D ]C  }
|	j                  d't        |
              |	j                  d|
j	                  dd              E |j                  d$j                  |	      d/0       yc c}
w # t        $ r%}t        j                   d1|  d2|        Y d}~yd}~ww xY w)3z
    Generate a .nfo file for the given media file.
    
    Parameters:
        - file_path (str): The path to the media file.
    Nz.nfoformatstreamsformat_nameunknowndurationr   bit_ratei  zFile: zContainer: z
Duration: z	Bitrate: z kb/s

codec_typevideoVIDEOz	  Codec: 
codec_nameUNKNOWNz (profile )z  Resolution: width?xheightz  FPS: r_frame_ratez  Scan: field_orderprogressive
AUDIOaudioz  Language: z  Channels: channelsz  Sample Rate: sample_ratez Hz
subtitle	SUBTITLESzutf-8)encodingzError creating NFO for z: )r   existsr   with_suffixr*   r$   r   appendnameupperr5   r,   
write_textjoinr   r   r   )r   datafile_path_objnfo_pathformat_infor8   	containerr;   bitratelinesr#   subsr   s                r   
create_nforc   >   s    DO224y!DOM((0H,Bhhx,((9b)OOM9=	";??:q#ABALQ[A\#kooj!45=bcvm00123{9+./z(,-y	12  	Auu\"g-W%y|Y)G)M)M)O(PPRSTSXSXYbdfSgRhhijk~aeeGS.A-B!AEE(TWDXCYZ[wy~1F'G&HIJxm](K'LBOP	 	W 	QAuu\"g-|LO+<=>y|Y)G)M)M)O(PPRSTSXSXYbdfSgRhhijk|AEE*c,B+CDEquu]C/H.IOP	Q #HaaeeL&9Z&GHHLL% K|LO+<=>y|Y)G(HIJK 	DIIe,w? I  B/	{"QC@AABs@   C8N# DN# B2N#  NNA?N# N# #	O,OO)r   r   r   pathlibr   StreamingCommunity.setupr   r   r$   r,   r5   r   rc    r-   r   <module>rg      s:        6&	>	=B# =Br-   