o
    i                     @   sp   d dl Z d dlZ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
mZmZ ddlmZ G dd	 d	eZdS )
    N   )
FragmentFD   )imghdr)
escapeHTMLformatSecondssrt_subtitles_timecodeurljoin)__version__c                   @   sP   e Zd ZdZeddeZeddeZedd Zdd	 Zd
d Z	dd Z
dS )MhtmlFDa  html, body {
    margin: 0;
    padding: 0;
    height: 100vh;
}

html {
    overflow-y: scroll;
    scroll-snap-type: y mandatory;
}

body {
    scroll-snap-type: y mandatory;
    display: flex;
    flex-flow: column;
}

body > figure {
    max-width: 100vw;
    max-height: 100vh;
    scroll-snap-align: center;
}

body > figure > figcaption {
    text-align: center;
    height: 2.5em;
}

body > figure > img {
    display: block;
    margin: auto;
    max-width: 100%;
    max-height: calc(100vh - 5em);
}
z\s+ z5\B \B|(?<=[\w\-]) (?=[^\w\-])|(?<=[^\w\-]) (?=[\w\-]) c                 C   s0   dd dd tj|  ddD d d S )	Nz
=?utf-8?Q?    c                 s   s*    | ]}|d krt |fnd| V  qdS )    s   =%02XN)bytes).0b r   K/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/downloader/mhtml.py	<genexpr>6   s
    
z'MhtmlFD._escape_mime.<locals>.<genexpr>T)headerus-asciiz?=)joinquopriencodestringencodedecode)sr   r   r   _escape_mime4   s   zMhtmlFD._escape_mimec                 C   s   | d| dS )N.z@yt-dlp.github.io.invalidr   )selfifragmentfrag_boundaryr   r   r   _gen_cid;   s   zMhtmlFD._gen_cidc          	      C   s   t  }|dtt dt| d| j d d}t|D ]X\}}|d z ||d  }|dj|d	 t|t|t	|d d
dd W n t
ttfy`   d }|d|d	  d Y nw |d| ||| d |d |}q| S )NzB<!DOCTYPE html><html><head><meta name="generator" content="yt-dlp z	"><title>z</title><style>z</style><body>r   z<figure>durationuK   <figcaption>Slide #{num}: {t0} – {t1} (duration: {duration})</figcaption>r   T)msec)numt0t1r%   z<figcaption>Slide #z</figcaption>z<img src="cid:z">z	</figure>)ioStringIOwriter   YT_DLP_VERSION_STYLESHEET	enumerateformatr   r   KeyError
ValueError	TypeErrorr$   getvalue)	r    	fragmentsr#   titleoutputr(   r!   fragr)   r   r   r   	_gen_stub>   s>   	

zMhtmlFD._gen_stubc                 C   s8  | d}| j ddr|d d d n|d }| d|d }| d|d	 }|t|d
}| || |ddtt ddd}|d }	|d s{| j	||	|d}
|d 
d| | d|	 d| d|	 dt|
 d|
 d  d|d< t|D ]\}}|d |d krq| d	}|s|sJ t||d }| |||}|sq| |}t }|
d|	d  |
d| |||	d  |
d d!tj|d"pd#    |
d$t|  |
d%|d  |
d&|d'   |
d( | || | d(  q|d 
d)|	d  | ||S )*Nfragment_base_urltestFr5   r   r6   	format_idwebpage_urlurl)filenametotal_fragsextra_state-r   )header_writtenmime_boundaryrD   rC   )r5   r#   r6   dest_streamznMIME-Version: 1.0
From: <nowhere@yt-dlp.github.io.invalid>
To: <nowhere@yt-dlp.github.io.invalid>
Subject: z-
Content-type: multipart/related; boundary="z&"; type="text/html"
X.yt-dlp.Origin: z

--z:
Content-Type: text/html; charset=utf-8
Content-Length: z

z
Tfragment_indexpaths   --%b
r   s   Content-ID: <%b>
s   Content-type: %b
zimage/)hjpegs   Content-length: %u
s   Content-location: %b
s   X.yt-dlp.Duration: %f
r%   s   
s
   --%b--

)getparamslen _prepare_and_start_frag_download
setdefaultstruuiduuid4replacer9   r,   r   r   r/   r	   _download_fragment_read_fragmentr*   BytesIOr$   r   what_append_fragmentr4   _finish_frag_download)r    r?   	info_dictr:   r5   r6   originctxrA   r#   stubr!   r"   fragment_urlsuccessfrag_contentfrag_headerr   r   r   real_download`   s   
	




zMhtmlFD.real_downloadN)__name__
__module____qualname__r.   resubstaticmethodr   r$   r9   ra   r   r   r   r   r      s    $
"r   )r*   r   re   rP   r"   r   compatr   utilsr   r   r   r	   versionr
   r-   r   r   r   r   r   <module>   s    