a
    Ù;’h$  ã                   @   sL   d dl Z d dlZddlmZ ddlmZ ddlmZm	Z	 G dd„ deƒZ
dS )	é    Né   )Úget_suitable_downloader)Ú
FragmentFDé   )Úupdate_url_queryÚurljoinc                   @   s,   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	S )
ÚDashSegmentsFDz™
    Download segments in a DASH manifest. External downloaders can take over
    the fragment downloads by supporting the 'dash_frag_urls' protocol
    Zdashsegmentsc              	      s   dˆ d   d¡v rd }n,ˆ  d¡r,|  d¡ tˆ | jd d|dkd}t ¡ }‡ fd	d
„ˆ  dg ¡D ƒ}g }|prˆ gD ]}z | j d¡rŒdn
t|d ƒ}W n ty°   d }Y n0 | d¡p¾|| d¡rÌdn| d¡|dœ}	|rì|  |	¡ n|  	|	|¡ ||	d< d }
ˆ  d¡}|r t
j |¡}
|  ||	|
¡}|rz|  d| j› d| ¡ › ¡ t|ƒˆ d< || j| jƒ}| |ˆ ¡  S | |	||g¡ qt| j|ddd„ iŽS )NZhttp_dash_segments_generatorÚprotocolú+Zis_livez"Live DASH videos are not supportedZdash_frag_urlsú-)r	   Z	to_stdoutc                    s   g | ]}i ˆ ¥|¥‘qS © r   )Ú.0Úfmt©Ú	info_dictr   ú[/var/www/html/swiplay.fr/scambot/venv/lib/python3.9/site-packages/yt_dlp/downloader/dash.pyÚ
<listcomp>   ó    z0DashSegmentsFD.real_download.<locals>.<listcomp>Úrequested_formatsÚtestr   Ú	fragmentsÚfilepathZis_from_start)ÚfilenameZliveZtotal_fragsÚstartÚextra_param_to_segment_urlú[z*] Fragment downloads will be delegated to Zis_fatalc                 S   s   | dkS )Nr   r   )Úidxr   r   r   Ú<lambda>?   r   z.DashSegmentsFD.real_download.<locals>.<lambda>)ÚsplitÚgetZreport_errorr   ÚparamsÚtimeÚlenÚ	TypeErrorZ_prepare_external_frag_downloadZ _prepare_and_start_frag_downloadÚurllibÚparseÚparse_qsÚ_get_fragmentsZ	to_screenÚFD_NAMEZget_basenameÚlistZydlÚreal_downloadÚappendZ&download_and_append_fragments_multiple)Úselfr   r   Zreal_downloaderZ
real_startr   Úargsr   Úfragment_countÚctxÚextra_queryr   Zfragments_to_downloadÚfdr   r   r   r*      sJ    

ÿ 
ý
ÿzDashSegmentsFD.real_downloadc                 C   s2   t |ƒr||ƒn|}| j d¡r.tt|ƒƒgS |S )Nr   )Úcallabler    r   ÚnextÚiter)r,   r   r/   r   r   r   Ú_resolve_fragmentsA   s    z!DashSegmentsFD._resolve_fragmentsc           
      c   s’   |  d¡}|  |d |¡}d}t|ƒD ]f\}}|d7 }||d krDq&|  d¡}	|	sh|sZJ ‚t||d ƒ}	|rvt|	|ƒ}	||  d¡||	d	œV  q&d S )
NÚfragment_base_urlr   r   r   Zfragment_indexÚurlÚpathr.   )Ú
frag_indexr.   Úindexr7   )r   r5   Ú	enumerater   r   )
r,   r   r/   r0   r6   r   r9   ÚiÚfragmentZfragment_urlr   r   r   r'   E   s$    


üzDashSegmentsFD._get_fragmentsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r*   r5   r'   r   r   r   r   r   	   s
   0r   )r!   Úurllib.parser$   Ú r   r=   r   Úutilsr   r   r   r   r   r   r   Ú<module>   s
   