Ë
    š„j£!  ã                   ó€   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZddlm	Z	m
Z
mZmZmZmZmZ d„ Zd„ Z G d„ d«      Zy)é    Né   )ÚExtractorErrorÚPopenÚcheck_executableÚformat_fieldÚget_exe_versionÚis_outdated_versionÚshell_quotec                 óJ  — | j                   | j                  dœ}| j                  r| j                  |d<   | j                  r| j
                  |d<   | j                  r| j                  |d<   | j                  �| j                  |d<   | j                  �| j                  |d<   | j                  �| j                  |d<   t        j                  t        «      5  | j                  d«      s"| j                  d	«      s| j                  d
«      rd|d	<   d d d «       |S # 1 sw Y   |S xY w)N)ÚnameÚvalueÚportÚdomainÚpathÚexpiresÚsecureÚdiscardÚhttpOnlyÚhttponlyÚHttpOnlyT)r   r   Úport_specifiedr   Údomain_specifiedr   Úpath_specifiedr   r   r   r   Ú
contextlibÚsuppressÚ	TypeErrorÚhas_nonstandard_attr)ÚcookieÚcookie_dicts     úP/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/openload.pyÚcookie_to_dictr!      s  € à—‘Ø—‘ñ€Kð ×ÒØ$Ÿk™kˆ�FÑØ×ÒØ &§¡ˆ�HÑØ×ÒØ$Ÿk™kˆ�FÑØ‡~�~Ð!Ø!'§¡ˆ�IÑØ‡}�}Ð Ø &§¡ˆ�HÑØ‡~�~Ð!Ø!'§¡ˆ�IÑÜ	×	Ñ	œYÓ	'ñ +Ø×'Ñ'¨
Ô3Ø×.Ñ.¨zÔ:Ø×.Ñ.¨zÔ:Ø&*ˆK˜
Ñ#÷	+ð
 Ð÷+ð
 Ðús   Ã9DÄD"c                 ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w ©N)r!   )Ú
cookie_jarr   s     r    Úcookie_jar_to_listr%   -   s   € Ø1;Ö< vŒN˜6Õ"Ò<Ð<ùÒ<s   …c                   óp   — e Zd ZdZdZdZdZg d¢Zed„ «       Z	dd„Z
d	„ Zd
„ Zd„ Zddddi dfd„Zdddœd„Zy)ÚPhantomJSwrapperz=PhantomJS wrapper class

    This class is experimental.
    z;Please download it from https://phantomjs.org/download.htmlaë  
        phantom.onError = function(msg, trace) {{
          var msgStack = ['PHANTOM ERROR: ' + msg];
          if(trace && trace.length) {{
            msgStack.push('TRACE:');
            trace.forEach(function(t) {{
              msgStack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line
                + (t.function ? ' (in function ' + t.function +')' : ''));
            }});
          }}
          console.error(msgStack.join('\n'));
          phantom.exit(1);
        }};
    a	  
        var page = require('webpage').create();
        var fs = require('fs');
        var read = {{ mode: 'r', charset: 'utf-8' }};
        var write = {{ mode: 'w', charset: 'utf-8' }};
        JSON.parse(fs.read("{cookies}", read)).forEach(function(x) {{
          phantom.addCookie(x);
        }});
        page.settings.resourceTimeout = {timeout};
        page.settings.userAgent = "{ua}";
        page.onLoadStarted = function() {{
          page.evaluate(function() {{
            delete window._phantom;
            delete window.callPhantom;
          }});
        }};
        var saveAndExit = function() {{
          fs.write("{html}", page.content, write);
          fs.write("{cookies}", JSON.stringify(phantom.cookies), write);
          phantom.exit();
        }};
        page.onLoadFinished = function(status) {{
          if(page.url === "") {{
            page.setContent(fs.read("{html}", read), "{url}");
          }}
          else {{
            {jscode}
          }}
        }};
        page.open("");
    )ÚscriptÚhtmlÚcookiesc                  ó   — t        dd¬«      S )NÚ	phantomjsz	([0-9.]+))Ú
version_re)r   © ó    r    Ú_versionzPhantomJSwrapper._versionj   s   € ä˜{°|ÔDÐDr/   Nc                 óŽ  — i | _         t        ddg«      | _        | j                  st        d| j                  › �d¬«      ‚|| _        |rE| j                  «       }t        ||«      r)| j
                  j                  j                  d|› d�«       | j                  D ]7  }t        j                  d¬	«      }|j                  «        || j                   |<   Œ9 t        j                  d
|i| j                  D �ci c]<  }|| j                   |   j                   j#                  dd«      j#                  dd«      “Œ> c}«      | _        y c c}w )Nr,   z-vzPhantomJS not found, T)Úexpectedz9Your copy of PhantomJS is outdated, update it to version z& or newer if you encounter any errors.F)ÚdeleteÚtimeoutú\z\\ú"ú\")Ú
_TMP_FILESr   Úexer   ÚINSTALL_HINTÚ	extractorr0   r	   Ú_downloaderÚreport_warningÚ_TMP_FILE_NAMESÚtempfileÚNamedTemporaryFileÚcloseÚcollectionsÚChainMapr   ÚreplaceÚoptions)Úselfr;   Úrequired_versionr4   Úversionr   ÚtmpÚxs           r    Ú__init__zPhantomJSwrapper.__init__n   s5  € ØˆŒä# K°$°Ó8ˆŒØ�xŠxÜ Ð#8¸×9JÑ9JÐ8KÐ!LÐW[Ô\Ð\à"ˆŒáØ—m‘m“oˆGÜ" 7Ð,<Ô=Ø—‘×*Ñ*×9Ñ9ØOØ'Ð(Ð(NðPôQð ×(Ñ(ò 	(ˆDÜ×-Ñ-°UÔ;ˆCØ�I‰IŒKØ$'ˆD�O‰O˜DÒ!ð	(ô
 #×+Ñ+Ø�wð-
ð ×)Ñ)ö
àð ˆt�‰˜qÑ!×&Ñ&×.Ñ.¨t°VÓ<×DÑDÀSÈ%ÓPÑPò
óˆ�ùò
s   Ã4AE
c                 óä   — | j                   D ]U  }t        j                  t        t        «      5  t        j                  | j                  |   j                  «       d d d «       ŒW y # 1 sw Y   ŒbxY wr#   )	r>   r   r   ÚOSErrorÚKeyErrorÚosÚremover8   r   )rF   r   s     r    Ú__del__zPhantomJSwrapper.__del__Š   s\   € Ø×(Ñ(ò 	6ˆDÜ×$Ñ$¤W¬hÓ7ñ 6Ü—	‘	˜$Ÿ/™/¨$Ñ/×4Ñ4Ô5÷6ð 6ñ	6÷6ð 6ús   ®-A&Á&A/	c                 ó˜  — t        | j                  j                  «      }|D ]<  }d|vrd|d<   d|vsŒt        j                  j                  |«      j                  |d<   Œ> t        | j                  d   j                  d«      5 }|j                  t        j                  |«      j                  «       «       d d d «       y # 1 sw Y   y xY w)Nr   ú/r   r*   Úwb)r%   r;   Ú	cookiejarÚurllibÚparseÚurlparseÚnetlocÚopenr8   r   ÚwriteÚjsonÚdumpsÚencode)rF   Úurlr*   r   Úfs        r    Ú_save_cookieszPhantomJSwrapper._save_cookies�   s¯   € Ü$ T§^¡^×%=Ñ%=Ó>ˆØò 	EˆFØ˜VÑ#Ø!$��v‘Ø˜vÒ%Ü#)§<¡<×#8Ñ#8¸Ó#=×#DÑ#D��xÒ ð		Eô
 �$—/‘/ )Ñ,×1Ñ1°4Ó8ð 	2¸AØ�G‰G”D—J‘J˜wÓ'×.Ñ.Ó0Ô1÷	2÷ 	2ñ 	2ús   Â3C Ã C	c                 óR  — t        | j                  d   j                  d«      5 }t        j                  |j                  «       j                  d«      «      }d d d «       D ]8  }|d   du rdd i|d<   d|v r|d   |d	<    | j                  j                  d
i |¤Ž Œ: y # 1 sw Y   ŒGxY w)Nr*   Úrbúutf-8r   Tr   ÚrestÚexpiryÚexpire_timer.   )	rZ   r8   r   r\   ÚloadsÚreadÚdecoder;   Ú_set_cookie)rF   r`   r*   r   s       r    Ú_load_cookieszPhantomJSwrapper._load_cookies™   s§   € Ü�$—/‘/ )Ñ,×1Ñ1°4Ó8ð 	;¸AÜ—j‘j §¡£§¡°Ó!9Ó:ˆG÷	;àò 	1ˆFØ�jÑ! TÑ)Ø",¨dÐ!3��v‘Ø˜6Ñ!Ø(.¨xÑ(8��}Ñ%Ø&ˆD�N‰N×&Ñ&Ñ0¨Ó0ñ	1÷	;ð 	;ús   ¤3BÂB&zExecuting JS on webpageúsaveAndExit();c           	      ó$  — d|vrt        d«      ‚|s| j                  j                  ||||¬«      }t        | j                  d   j
                  d«      5 }|j                  |j                  «       «       ddd«       | j                  |«       |j                  d«      xs | j                  j                  d«      d   }	| j                  j                  | j                  j                  ||	j                  d	d
«      |dœ«      «      }| j!                  |||¬«      }
t        | j                  d   j
                  d«      5 }|j#                  «       j%                  d«      }ddd«       | j'                  «        ||
fS # 1 sw Y   �ŒxY w# 1 sw Y   Œ*xY w)a  
        Downloads webpage (if needed) and executes JS

        Params:
            url: website url
            html: optional, html code of website
            video_id: video id
            note: optional, displayed when downloading webpage
            note2: optional, displayed when executing JS
            headers: custom http headers
            jscode: code to be executed when page is loaded

        Returns tuple with:
            * downloaded website (after JS execution)
            * anything you print with `console.log` (but not inside `page.execute`!)

        In most cases you don't need to add any `jscode`.
        It is executed in `page.onLoadFinished`.
        `saveAndExit();` is mandatory, use it instead of `phantom.exit()`
        It is possible to wait for some element on the webpage, e.g.
            var check = function() {
              var elementFound = page.evaluate(function() {
                return document.querySelector('#b.done') !== null;
              });
              if(elementFound)
                saveAndExit();
              else
                window.setTimeout(check, 500);
            }

            page.evaluate(function(){
              document.querySelector('#a').click();
            });
            check();
        rm   z&`saveAndExit();` not found in `jscode`)ÚnoteÚheadersr)   rT   Nz
User-AgentÚhttp_headersr6   r7   )r_   ÚuaÚjscode©ro   rc   rd   )r   r;   Ú_download_webpagerZ   r8   r   r[   r^   ra   ÚgetÚ	get_paramÚ	_TEMPLATEÚ
format_maprE   Ú	new_childrD   Úexecuteri   rj   rl   )rF   r_   r)   Úvideo_idro   Únote2rp   rs   r`   Ú
user_agentÚstdouts              r    rv   zPhantomJSwrapper.get£   se  € ðH  6Ñ)Ü Ð!IÓJÐJÙØ—>‘>×3Ñ3°C¸ÈÐV]Ð3Ó^ˆDÜ�$—/‘/ &Ñ)×.Ñ.°Ó5ð 	#¸Ø�G‰G�D—K‘K“MÔ"÷	#ð 	×Ñ˜3Ôà—[‘[ Ó.Òh°$·.±.×2JÑ2JÈ>Ó2ZÐ[gÑ2hˆ
Ø—‘×*Ñ*¨4¯<©<×+AÑ+AØØ×$Ñ$ S¨%Ó0ØñC
ó ,ó ˆð —‘˜f h°U�Ó;ˆä�$—/‘/ &Ñ)×.Ñ.°Ó5ð 	,¸Ø—6‘6“8—?‘? 7Ó+ˆD÷	,à×ÑÔà�Vˆ|Ð÷%	#ñ 	#ú÷	,ð 	,ús   Á E9Ä= FÅ9FÆFzExecuting JSrt   c                óØ  — d|vr|dz  }| j                   |z   }t        | j                  d   j                  dd¬«      5 }|j	                  |«       ddd«       | j
                  j                  t        |dd«      › |› �«       | j                  d	| j                  d   j                  g}| j
                  j                  d
t        |«      › �«       	 t        j                  || j                  d   dz  dt        j                  t        j                  ¬«      \  }}}|r!t#        |› d|› d|j%                  «       › �«      ‚|S # 1 sw Y   ŒðxY w# t         $ r}	t#        |› d�|	¬«      ‚d}	~	ww xY w)zExecute JS and return stdoutzphantom.exit();z;
phantom.exit();r(   Úwrd   )ÚencodingNz%s: z--ssl-protocol=anyzPhantomJS command line: r4   iè  T)r4   Útextr   Ústderrz' failed: Unable to run PhantomJS binary)Úcausez failed with returncode z:
)Ú_BASE_JSrZ   r8   r   r[   r;   Ú	to_screenr   r9   Úwrite_debugr
   r   ÚrunrE   Ú
subprocessÚPIPEÚ	Exceptionr   Ústrip)
rF   rs   r|   ro   r`   Úcmdr   r„   Ú
returncodeÚes
             r    r{   zPhantomJSwrapper.executeß   sa  € à FÑ*ØÐ*Ñ*ˆFØ—‘ Ñ'ˆä�$—/‘/ (Ñ+×0Ñ0°#ÀÔHð 	ÈAØ�G‰G�FŒO÷	à�‰× Ñ ¤L°¸4ÀÓ$HÐ#IÈ$ÈÐ!PÔQà�x‰xÐ-¨t¯©¸xÑ/H×/MÑ/MÐNˆØ�‰×"Ñ"Ð%=¼kÈ#Ó>NÐ=OÐ#PÔQð	\Ü).¯©°3ÀÇÁÈYÑ@WÐZ^Ñ@^Ø8<ÄZÇ_Á_Ô]g×]lÑ]lô*nÑ&ˆF�F˜Jñ Ü  D 6Ð)AÀ*ÀÈSÐQW×Q]ÑQ]ÓQ_ÐP`Ð!aÓbÐbàˆ÷	ð 	ûô ò 	\Ü  D 6Ð)PÐ!QÐYZÔ[Ð[ûð	\ús$   ¾D?ÃA
E Ä?EÅ	E)ÅE$Å$E))Ni'  r#   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r:   r†   rx   r>   Ústaticmethodr0   rK   rQ   ra   rl   rv   r{   r.   r/   r    r'   r'   1   su   „ ñð
 Q€Lð€Hð€Iò@ 4€OàñEó ðEóò86ò
2ò1ð !¨4°dÐB[Ðegð  qAó :ðx°^õ r/   r'   )rB   r   r\   rO   rŠ   r?   Úurllib.parserV   Úutilsr   r   r   r   r   r	   r
   r!   r%   r'   r.   r/   r    ú<module>r˜      s?   ðÛ Û Û Û 	Û Û Û ÷÷ ñ òò2=÷Bò Br/   