
    ,$j"	                         d dl Z d dlZd dlZd dlZd dlmZ dedefdZdedefdZ	dede
fdZd	ed
eddfdZdedede
fdZdS )    N)Pathpathreturnc                    t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                  .                          d          S )Ni   )read)fs   P/home/agent/projects/AutoShorts_Dashboard/backend/app/services/video_metadata.py<lambda>zsha256_file.<locals>.<lambda>   s    !&&"5"5     r   )hashlibsha256openiterupdate	hexdigest)r   hchunkr
   s      @r   sha256_filer      s    A	4 A5555s;; 	 	EHHUOOOO	               ;;==s   ,A##A'*A'filenamec                 R    t          |           j                                        dv S )N>   .mov.mp4.webm)r   suffixlower)r   s    r   allowed_video_filer      s#    >> &&((,EEEr   c                    d d d d d d}	 t          j        dddddddd	d
t          |           g
d          }dd l}|                    |          }|                    d          pi gd         }|                    d          pi }|                    d          rt          |d                   nd |d<   |                    d          |d<   |                    d          |d<   |                    d          pd}d |                    d          D             \  }}	|	rt          ||	z  d          nd |d<   |d         r|d         r|d          d|d          |d<   n# t          $ r Y nw xY w|S )N)duration_secwidthheightfpsaspect_ratioffprobez-verrorz-select_streamszv:0z-show_entriesz0stream=width,height,r_frame_rate:format=durationz-ofjsonT)textr   streamsformatdurationr    r!   r"   r_frame_ratez0/1c                 ,    g | ]}t          |          S  )float).0xs     r   
<listcomp>zprobe_video.<locals>.<listcomp>$   s    666E!HH666r   /   r#   :r$   )

subprocesscheck_outputstrr'   loadsgetr/   splitround	Exception)
r   metadatar'   parsedstreamfmtratenumdens
             r   probe_videorF      s    44^bccD&tW&7O63t99(
 	  
 	D!!**Y''/B43jj""(b9<9L9LVuS_555RV^

7++WH--Xzz.))2U66djjoo666S-0:eC#Iq)))dU= 	GT(^ 	G&*7m#F#Fd8n#F#FD    Ks   EE 
E+*E+
video_paththumbnail_pathc                     |j                             dd           	 t          j        ddddddd	d
t	          |           ddt	          |          g           d S # t
          $ r |                    d           Y d S w xY w)NTparentsexist_okffmpegz-yz-hide_bannerz	-loglevelr&   z-ssz00:00:00.25z-iz	-frames:v1r   )parentmkdirr6   
check_callr8   r=   write_bytes)rG   rH   s     r   generate_thumbnailrS   -   s    t<<<(dNK%#j//;S5H5H
 	 	 	 	 	  ( ( (""3''''''(s   :A A=<A=sourcedestc                     |j                             dd           t          j        | |           t	          |          }t          j        |j                  d         pd}t          |          }||	                                j
        |d|S )NTrJ   r   zapplication/octet-stream)checksum	file_size	mime_type)rO   rP   shutilcopy2r   	mimetypes
guess_typenamerF   statst_size)rT   rU   rW   rY   r>   s        r   copy_video_to_processedra   9   s    KdT222
L4  H$TY//2P6PItD tyy{{/BQZcc^bccr   )r   r\   rZ   r6   pathlibr   r8   r   boolr   dictrF   rS   ra   r.   r   r   <module>re      s                  d s    F F F F F Fd t    2	(4 	( 	($ 	( 	( 	( 	(dD d d d d d d d dr   