o
    i                     @  s   d dl m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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ G dd	 d	eZG d
d deZdS )    )annotationsN   )InfoExtractor)YoutubeBaseInfoExtractor   )KNOWN_EXTENSIONSbug_reports_message
clean_htmldict_getextract_attributesget_element_by_id get_element_text_and_html_by_tagint_or_nonejoin_nonempty
js_to_jsonmerge_dicts
orderedSetparse_durationparse_qsstr_or_nonetraverse_objunified_strdateunified_timestampurl_or_nonec                   @  s  e Zd ZdZdZdZdddddd	d
dddgdddddddddddddddddddd dd!d"d#d$d%d&d'd(dd)d'd*d+dd,d-d.d/d(d0d1d2d3d/d4d5dd6d7dd8d9d:d;d<d;d=gd>d?d@dAdB	ddCdDdEdFd<dGdHdIdJdKdLdFd=gd@dMdNdOdPddQdRdSdTdUdVdWdXdYdZd[d\dUd]d^d_d`dadWdXdbdcdddedfdgdhdigdjdkdldmddndodpdndqdrdsdtduddvdwdwdxdydzdsd{d|dd}d~dd~dddsgddddUdd=gddddddddddddddddUddddddd?dddddgZedd Zdd Z	dS )ArchiveOrgIEzarchive.orgzarchive.org video and audiozKhttps?://(?:www\.)?archive\.org/(?:details|embed)/(?P<id>[^?#]+)(?:[?].*)?$zMhttp://archive.org/details/XD300-23_68HighlightsAResearchCntAugHumanIntellect 8af1d4cf447933ed3c7f4871162602dbz2XD300-23_68HighlightsAResearchCntAugHumanIntellectogvz01968 Demo - FJCC Conference Presentation Reel #1z$md5:da45c349df039f1cc8075268eb1b5c2519681210iK20100315zSRI Internationalzlaura@archive.orgz(re:https://archive\.org/download/.*\.jpgz6XD300-23_68HighlightsAResearchCntAugHumanIntellect.cdrz2XD300-23 68HighlightsAResearchCntAugHumanIntellect)idexttitledescriptionrelease_date	timestampupload_datecreatorsuploader	thumbnail
display_idtrack)urlmd5	info_dictz$https://archive.org/details/Cops1922 0869000b4ce265e8ca62738b336b268aCops1922mp4zBuster Keaton's "Cops" (1922)z$md5:cd6f9910c35aedd5fc237dbc3957e2cazyorkmba99@hotmail.comiR20131222zCops-v2.mp4gp=
@zCops-v2)r   r    r!   r"   r'   r$   r%   r)   r(   durationr*   zKhttp://archive.org/embed/XD300-23_68HighlightsAResearchCntAugHumanIntellectTr+   only_matchingz(https://archive.org/details/Election_Ads eec5cddebd4793c6a653b69c3b11f2e6z;Election_Ads/Commercial-JFK1960ElectionAdCampaignJingle.mpgz.Commercial-JFK1960ElectionAdCampaignJingle.mpgmpgg(\M@z*Commercial-JFK1960ElectionAdCampaignJingle)r   r!   r    r(   r2   r)   r*   zYhttps://archive.org/details/Election_Ads/Commercial-Nixon1960ElectionAdToughonDefense.mpg ea1eed8234e7d4165f38c8c769edef38z=Election_Ads/Commercial-Nixon1960ElectionAdToughonDefense.mpgz0Commercial-Nixon1960ElectionAdToughonDefense.mpgiMGzmikedavisstripmaster@yahoo.comzO1960 Presidential Campaign Election Commercials John F Kennedy, Richard M Nixon20080315gzGM@z1http://creativecommons.org/licenses/publicdomain/z,Commercial-Nixon1960ElectionAdToughonDefense)r   r!   r    r$   r'   r"   r%   r)   r2   licenser(   r*   zGhttps://archive.org/details/gd1977-05-08.shure57.stevenson.29303.flac16 7d07ffb42aba6537c28e053efa4b54c9zCgd1977-05-08.shure57.stevenson.29303.flac16/gd1977-05-08d01t01.flacTurningflaczGrateful Deadzgd1977-05-08d01t01.flacr   z-1977-05-08 - Barton Hall - Cornell UniversitygfffffC@)	r   r!   r    r*   r&   r)   track_numberalbumr2   z_https://archive.org/details/gd1977-05-08.shure57.stevenson.29303.flac16/gd1977-05-08d01t07.flac a07cd8c6ab4ee1560f8a0021717130f3zCgd1977-05-08.shure57.stevenson.29303.flac16/gd1977-05-08d01t07.flacDealiȁGzmvernon54@yahoo.comz$md5:6c921464414814720c6593810a5c7e3d20080319z Barton Hall - Cornell Universityg{Gj{@19770508zgd1977-05-08d01t07.flac   )r   r!   r    r$   r'   r"   r%   locationr2   r*   r&   r>   r#   r)   r=   z]https://archive.org/details/lp_the-music-of-russia_various-artists-a-askaryan-alexander-melik 7cb019baa9b332e82ea7c10403acd180zblp_the-music-of-russia_various-artists-a-askaryan-alexander-melik/disc1/01.01. Bells Of Rostov.mp3zBells Of Rostovmp3)r   r!   r    
restricted)r+   r,   r-   skipzhttps://archive.org/details/lp_the-music-of-russia_various-artists-a-askaryan-alexander-melik/disc1/02.02.+Song+And+Chorus+In+The+Polovetsian+Camp+From+%22Prince+Igor%22+(Act+2%2C+Scene+1).mp3 1d0aabe03edca83ca58d9ed3b493a3c3zlp_the-music-of-russia_various-artists-a-askaryan-alexander-melik/disc1/02.02. Song And Chorus In The Polovetsian Camp From "Prince Igor" (Act 2, Scene 1).mp3zKSong And Chorus In The Polovetsian Camp From "Prince Igor" (Act 2, Scene 1)i{&]z%associate-joygen-odiongan@archive.orgz$md5:012b2d668ae753be36896f343d12a23620190928)r   r!   r    r$   r'   r"   r%   z7https://archive.org/details/irelandthemakingofarepublicirelandthemakingofarepublicz!Ireland: The Making of a Republic20160610z$md5:f70956a156645a658a0dc9513d9e78b7zdimitrios@archive.orgz British Broadcasting CorporationzTime-Life FilmsiC4[W)r   r!   r%   r"   r'   r&   r$    0b211261b26590d49df968f71b90690dzCirelandthemakingofarepublic/irelandthemakingofarepublicreel1_01.movz'irelandthemakingofarepublicreel1_01.movgQN`@zhttps://archive.org/download/irelandthemakingofarepublic/irelandthemakingofarepublic.thumbs/irelandthemakingofarepublicreel1_01_000117.jpgz#irelandthemakingofarepublicreel1 01)r   r    r!   r2   r(   r)   r*   )r,   r-    67335ee3b23a0da930841981c1e79b02zCirelandthemakingofarepublic/irelandthemakingofarepublicreel1_02.movgQ̕@z'irelandthemakingofarepublicreel1_02.movzhttps://archive.org/download/irelandthemakingofarepublic/irelandthemakingofarepublic.thumbs/irelandthemakingofarepublicreel1_02_001374.jpgz#irelandthemakingofarepublicreel1 02)r   r    r2   r!   r)   r(   r*    e470e86787893603f4a341a16c281eb5z@irelandthemakingofarepublic/irelandthemakingofarepublicreel2.movgHz
@z$irelandthemakingofarepublicreel2.movzhttps://archive.org/download/irelandthemakingofarepublic/irelandthemakingofarepublic.thumbs/irelandthemakingofarepublicreel2_001554.jpg irelandthemakingofarepublicreel2)r   r    r2   r!   r(   r)   r*   )r+   r-   playlistzOhttps://archive.org/details/gd95-04-02.sbd.11622.sbeok.shnf/gd95-04-02d1t04.shnz3gd95-04-02.sbd.11622.sbeok.shnf/gd95-04-02d1t04.shnz3Stuck Inside of Mobile with the Memphis Blues Againg)\$u@z$md5:764348a470b986f1217ffd38d6ac7b72zgd95-04-02d1t04.shnzPyramid Arenazjon@archive.orgz1995-04-02 - Pyramid Arena20040519   19950402i@)r   r    r!   r&   r2   r*   r"   r)   rD   r'   r>   r%   r=   r#   r$   r+   r-   z)https://archive.org/details/pra-KZ1908.02zpra-KZ1908.02zKZ1908.02_01.wavz&Crips and Bloods speak about gang lifez$md5:2b56b35ff021311e3554b47a285e70b3zjake@archive.orgg)\@zKZ1908.02 01i#O20120503i  )r   r    r)   r!   r"   r'   r2   r*   r=   r$   r%   release_yearc                 C  s    t d| d }tt|d S )Nzplay-avr   rQ   )r   jsonloadsr   )webpageelement r\   O/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/archiveorg.py_playlist_data   s   zArchiveOrgIE._playlist_datac                 C  sV  t j| |}|d\}}}| d| |}| |}i }|D ]@}	|r.|	d |kr.q#g g |	d|	di d||	d < |	dg D ]}
|
d d	krOqFd
d|
d d i||	d  |
d < qFq#| 	d| |}|d }|d }t
|dthfdthdtdjhffthttfdthtfddthtttfdthfdthfdthtfdthfdthfd	}||d| d |d D ]}|d  |v rt||d   d!|d |d   it
|d"thtfd thfdthdtdjhffthttfddthtttfd#thfd$thfd%thfd&thfdthfd'	||d  < ||d   }nt
|d(thf|v r1||d(  }nq|d)d*kr`|d+ |d  d,| d |d   t|d-t|d-t|d.d/ |d  d0\}}}|sod }t| d1d2}|tv r|d3r|r|d4 d,| d t j|d   |d)t|d-t|d5t|d.d6|d7d(krd8nd9|d7d: q| D ]}d;|d<< qt|d=krt t!| }|rt||}nt||}nd>|d?< t"| |d@< |dAr)g |dB< |dA D ]!}|dB |dC|dDt#dEdF|dGdHt|dIdJdK q|S )LN/zhttps://archive.org/embed/origartistr!   )formats
thumbnailsra   r*   	subtitlestrackskindrd   r+   zhttps://archive.org/filelabelzhttps://archive.org/metadata/metadata
identifierr"   . )r'   addercreator)N.
licenseurldate)
publicdate	addeddatevenueyear)	r!   r"   r'   r&   r9   r#   r$   rD   rW   zhttps://archive.org/details/)r   webpage_urlfilesnamer   )r!   rv   lengthr*   r>   disc)	r!   r)   r"   r&   r2   r=   r>   
discnumberrW   originalformat	Thumbnailrc   zhttps://archive.org/download/widthsize)r   r+   r}   heightfilesize.zhttps://archive.orgzlogged-in-sigprivaterb   r   httpssourcer   )r+   r{   r}   r   r   protocolsource_preferenceformat_note)r   _format_sort_fieldsr   rQ   _typeentriesreviewscomments	review_idreviewerreviewtitle
reviewbodyz

)	from_dictdelim
createdateroot)r   authortextr$   parent)$urllibparseunquote_plus	_match_id	partition_download_webpager^   getlstrip_download_jsonr   stralljoinr	   filteranyr   r   r   r   updater   r   append
rpartitionbool_get_cookiesr   quotevalueslennextiterlistr   )selfr+   video_idrj   _entry_id
embed_pagerQ   r   pr*   ri   minfofentryhas_ext	extensionis_logged_in
only_videoreviewr\   r\   r]   _real_extract   s   



zArchiveOrgIE._real_extractN)
__name__
__module____qualname__IE_NAMEIE_DESC
_VALID_URL_TESTSstaticmethodr^   r   r\   r\   r\   r]   r       s   	2  S
r   c                "   @  s6  e Zd ZdZdZdZdddddd	d
ddd
dddddddddddddddddddddddd d!d"d#d$d%dd$d&
dd'd(d)d*d+d,d-d.d/d0d1dd/d2dd3d4dd5d6d7d8d9d:d;d<d=dd>dd?d@ddAdBdCdDdEdFdGdHddId2ddJdKddLdMdCdNdOdFdGdHddId2dPgdQdRdSd)dTdUddVdWddXdYdZd[d\d]dd^d_
dd`daddbdcdddedfdgdhdhdiddjddkdld)dmdndodpdpddqdrds
ddtduddvdwdxdydwddzd{d|
dd}d~dddpdpdqddddd
dddddddddddd	dddddddddddddddddddddddddddddddddddddddddd
ddddddddddddd
dddddddddddd	ddddddddddddddd˜ddddddddddddddd˜ddidٜdddܜdddܜdddܜdddܜdddܜdddܜdddܜdddܜdddܜgZejZdej	 dZ	dgZ
eg e
ddd dD ZdZdZdZi dd)ddddddd)dddddddddddddddddd ddddddddddddddd)ddddddd)d	d
ddddddddddddddddddddddddddddddddd	d
dddddddddddddddddddd	d
dddddd	d
dddi ddddddddd dd
dddddd!dddddddd"dddddddd#dddddddd$dd
dddddd%dddddddd&ddd'ddd(d)ddd'ddd(d*ddd'ddd(d+dd
d'ddd(d,ddd'ddd(d-ddd'ddd(d.ddd'ddd(d/dd0d'ddd(d1dddd2d3d4dddd2d3i d5dd
dd2d3d6dddd2d3d7dddd2d3d8ddd2d9d:dddd2d3d;dd
dd2d3d<dd=dd2d3d>dddd?d2d@dAdddd?d2d@dBddCdd2d3dDdEdd2ddFdEdd2ddGdEdd2ddHdEdd2ddIdEdd2ddJdEdKd2ddLdEdMd2di dNdddddOdPdd
d	ddOdQdddddOdRdddddOdSdd
d	ddOdTdd
d	ddOdUdddVd2d3dWdddVd2d3dXdddVd2d3dYdd
dVd2d3dZdd
dVd2d3d[dd
dVd2d3d\dddVd2d3d]dddVd2d3d^dd=dVd2d3d_ddCdVd2d3d`dddVd?d2d@i dadddVd?d2d@dbdd=dVd?d2d@dcddCdVd2d3ddddCdVd?d2d@deddd2ddfddd2ddgddhd2ddiddhd2ddjddhd2ddkdddld2d3dmdddld2d3dndddod2d3dpdd
dqd2d3drdddsd2d3dtdddud2d3dvdd=dwd2d3dxddCdwd2d3ZddddZdd Zdd Zdd Zdd ZdddZdd ZdyS (  YoutubeWebArchiveIEzweb.archive:youtubez9web.archive.org saved youtube videos, "ytarchive:" prefixaE  (?x)(?:(?P<prefix>ytarchive:)|
            (?:https?://)?web\.archive\.org/
            (?:web/)?(?:(?P<date>[0-9]{14})?[0-9A-Za-z_*]*/)?  # /web and the version index is optional
            (?:https?(?::|%3[Aa])//)?(?:
                (?:\w+\.)?youtube\.com(?::(?:80|443))?/watch(?:\.php)?(?:\?|%3[fF])(?:[^\#]+(?:&|%26))?v(?:=|%3[dD])  # Youtube URL
                |(?:wayback-fakeurl\.archive\.org/yt/)  # Or the internal fake url
            )
        )(?P<id>[0-9A-Za-z_-]{11})
        (?(prefix)
            (?::(?P<date2>[0-9]{14}))?$|
            (?:%26|[#&]|$)
        )zVhttps://web.archive.org/web/20150415002341/https://www.youtube.com/watch?v=aYAGB11YrSsaYAGB11YrSswebmzTeam Fortress 2 - Sandviches!z$md5:4984c0f9a07f349fc5d8e82ab7af4eaf20110926ZeurelzUCukCyHaD-bK3in_pKpfH9Eg    z#https://www.youtube.com/user/Zeurelzre:https?://.*\.(jpg|webp)z8https://www.youtube.com/channel/UCukCyHaD-bK3in_pKpfH9Eg)r   r    r!   r"   r%   r'   
channel_idr2   uploader_iduploader_urlr(   channel_urlrU   zQhttps://web.archive.org/web/2oe/http://wayback-fakeurl.archive.org/yt/97t7Xj_iBv097t7Xj_iBv0r0   z!Why Machines That Bend Are Betterz$md5:00404df2c632d16a674ff8df1ecfbb6c20190312
VeritasiumzUCHnyfMqiRRG1u-2MsSQLbXAi  1veritasiumz(https://www.youtube.com/user/1veritasiumz8https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXAzahttps://web.archive.org/web/20120712231619/http://www.youtube.com/watch?v=AkhihxRKcrs&gl=US&hl=enAkhihxRKcrsz6Limited Run: Mondo's Modern Classic 1 of 3 (SDCC 2012)20120712i  z$md5:ff4de6a7980cb65d951c2f6966a4f2f3	machinimaz&https://www.youtube.com/user/machinima)
r   r    r!   r%   r2   r"   r   r   r(   r'   zUhttps://web.archive.org/web/20081211103536/http://www.youtube.com/watch?v=jNQXAC9IVRwjNQXAC9IVRwflvzMe at the zoo20050423UC4QobU6STFB0P71PMvOGN5A   z$md5:10436b12e07ac43ff8df65287a56efb4jawedz"https://www.youtube.com/user/jawedz8https://www.youtube.com/channel/UC4QobU6STFB0P71PMvOGN5A)r   r    r!   r%   r   r2   r"   r   r   r   r(   r'   zUhttps://web.archive.org/web/20110712231407/http://www.youtube.com/watch?v=lTx3G6h2xyAlTx3G6h2xyAz"Madeon - Pop Culture (live mashup)20110711MadeonUCqMDNf3Pn5L7pcNkuSEeO3w   z$md5:f7535343b6eda34a314eff8b85444680	itsmadeonz&https://www.youtube.com/user/itsmadeonz8https://www.youtube.com/channel/UCqMDNf3Pn5L7pcNkuSEeO3w)r   r    r!   r%   r'   r   r2   r"   r   r   r   r(   zChttps://web.archive.org/https://www.youtube.com/watch?v=1JYutPM8O6E1JYutPM8O6Ez3Fake Teen Doctor Strikes AGAIN! - Weekly Weird News20160218UCdIaNUarhzLSXGoItz7BHVAi  z$md5:21032bae736421e89c2edf36d1936947MachinimaETCz)https://www.youtube.com/user/MachinimaETCz8https://www.youtube.com/channel/UCdIaNUarhzLSXGoItz7BHVAzETC NewszVhttps://web.archive.org/web/20180803221945/https://www.youtube.com/watch?v=6FPhZJGvf4E6FPhZJGvf4Ez1WTF: Video Games Still Launch BROKEN?! - T.U.G.S.20160219i  z$md5:a1dbf12d9a3bd7cb4c5e33b27d77ffe7z=unable to download capture webpage \(it may not be archived\))r+   r-   expected_warningszPhttp://web.archive.org/web/20070302011044/http://youtube.com/watch?v=-06-KB9XTzgz-06-KB9XTzgzNew Coin Hack!! 100% Safe!!)r   r    r!   z;web.archive.org/https://www.youtube.com/watch?v=dWW7qP423y8dWW7qP423y8zIt's Bootleg AirPods Time.20211021UC7Jwj9fkrf1adN4fMmTkpugz8https://www.youtube.com/channel/UC7Jwj9fkrf1adN4fMmTkpugi*  z$md5:7b567f898d8237b256f36c1a07d6d7bcDankPods)
r   r    r!   r%   r   r   r2   r"   r(   r'   zXhttps://web.archive.org/web/20200827003909if_/http://www.youtube.com/watch?v=6Dh-RL__uN4z6Dh-RL__uN4zbitch lasagna20181005zUC-lHJZR3Gqxm24_Vd_AJ5Ywz8https://www.youtube.com/channel/UC-lHJZR3Gqxm24_Vd_AJ5Yw   z$md5:2dbe4051feeff2dab5f41f82bb6d11d0	PewDiePiez&https://www.youtube.com/user/PewDiePie)r   r    r!   r%   r   r   r2   r"   r'   r   r   r(   zIhttps://web.archive.org/web/0/https://www.youtube.com/watch?v=8XeW5ilk-9Yz8XeW5ilk-9Yz(Story of Stuff, The Critique Part 4 of 4i  z$md5:28157da06f2c5e94c97f7f3072509972HowTheWorldWorksz-https://www.youtube.com/user/HowTheWorldWorks20090520)
r   r    r!   r2   r"   r'   r   r(   r   r%   zUhttps://web.archive.org/web/20110126141719/http://www.youtube.com/watch?v=Q_yjX80U7YcQ_yjX80U7Ycz5Spray Paint Art by Clay Butler: Purple Fantasy Forestclaybutlermusicz$md5:4595264559e3d0a0ceb3f011f633454320090803   z,https://www.youtube.com/user/claybutlermusic)
r   r    r!   r   r"   r%   r'   r(   r2   r   zIhttps://web.archive.org/web/0/https://www.youtube.com/watch?v=c5uJgG05xUYc5uJgG05xUYz(Story of Stuff, The Critique Part 1 of 420090513z$md5:4ca77d79538064e41e4cc464e93f44f0i  )
r   r    r!   r   r'   r   r%   r"   r(   r2   zUhttps://web.archive.org/web/20120607174520/http://www.youtube.com/watch?v=xWTLLl-dQaAzxWTLLl-dQaAz,Black Nerd eHarmony Video Bio Parody (SPOOF)z,https://www.youtube.com/user/BlackNerdComedyz$md5:e25f0133aaf9e6793fb81c18021d193eBlackNerdComedy   )	r   r    r!   r   r"   r   r'   r2   r(   zIhttps://web.archive.org/web/*/https://www.youtube.com/watch?v=9eO1aasHyTM9eO1aasHyTMz	Polar-oidz Cameras and bears are dangerous!z&https://www.youtube.com/user/punkybird	punkybird   UC62R2cBezNBOqxSerfb1nMQz8https://www.youtube.com/channel/UC62R2cBezNBOqxSerfb1nMQ20060428)r   r    r!   r"   r   r   r2   r   r   r%   r'   zbhttps://web.archive.org/web/20200416034815/https://www.youtube.com/watch?v=Cf7vS8jc7dY&gl=US&hl=enCf7vS8jc7dYzDA Dramatic Pool Story (by Jamie Spicer-Lewis) - Game Grumps Animated@   20200408
GameGrumpsz8https://www.youtube.com/channel/UC9CuvdOVfMPvKCiwdGKL3cQUC9CuvdOVfMPvKCiwdGKL3cQz$md5:c625bb3c02c4f5fb4205971e468fa341z'https://www.youtube.com/user/GameGrumps)r   r    r!   r2   r%   r   r'   r   r   r(   r"   r   z$ytarchive:kbh4T_b4Ixw:20160307085057kbh4T_b4IxwzXShovel Knight OST - Strike the Earth! Plains of Passage 16 bit SNES style remake / remixz8https://www.youtube.com/channel/UCnTaGvsHmMy792DWeT6HbGAzNelward music   z$md5:804b4a9ce37b050a5fefdbb23aeba54d20150503UCnTaGvsHmMy792DWeT6HbGA)
r   r    r!   r   r'   r2   r"   r(   r%   r   zIhttps://web.archive.org/web/0/https://www.youtube.com/watch?v=SOm7mPoPskUSOm7mPoPskUz Boyfriend - Justin Bieber Parodyz.https://www.youtube.com/user/thecomputernerd01thecomputernerd01z$md5:dd7fa635519c2a5b4d566beaecad7491   20120407)
r   r    r!   r   r'   r(   r"   r2   r%   r   zytarchive:o_T_S_TU12Mo_T_S_TU12Mz)Prairie Pulse 1218; Lin Enger, Paul Olsonz$md5:36e7a34cdc8508e35a920ec042e799c7zPrairie PublicUC4BOzQel6tvJm7OEDd3vZlwz8https://www.youtube.com/channel/UC4BOzQel6tvJm7OEDd3vZlwiF  20150213)	r   r    r!   r"   r'   r   r   r2   r%   zytarchive:SQCom7wjGDsSQCom7wjGDsz^Jamin Warren from PBS Game/Show decides that Portal is a feminist Game [Top Hats and No Brain]z$md5:c0cb876dd075483ead9afcc86798efb0zTop Hats and Champagne	sparrowtmz&https://www.youtube.com/user/sparrowtmzUCW3T5nG4iEkI7HjG-Du3HQAz8https://www.youtube.com/channel/UCW3T5nG4iEkI7HjG-Du3HQAi  zbhttps://web.archive.org/web/20160108040020if_/https://i.ytimg.com/vi/SQCom7wjGDs/maxresdefault.jpg20160107)r   r    r!   r"   r'   r   r   r   r   r2   r(   r%   zVhttps://web.archive.org/web/20240922160632/https://www.youtube.com/watch?v=z7hzvTL3k1kz7hzvTL3k1kz6Praise the Lord and Pass the Ammunition (BARRXN REMIX)z$md5:45dbf2c71c23b0734c8dfb82dd1e94b6BarrxnTheRockstar6086z,https://www.youtube.com/user/TheRockstar6086UCjJPGUTtvR9uizmawn2ThqAz8https://www.youtube.com/channel/UCjJPGUTtvR9uizmawn2ThqA}   20201207r{   bv)r+   r-   paramszFhttps://web.archive.org/web/http://www.youtube.com/watch?v=kH-G_aIBlFwTr3   zXhttps://web.archive.org/web/20050214000000_if/http://www.youtube.com/watch?v=0altSZ96U4Mzchttps://web.archive.org/web/20210530071008/https://www.youtube.com/watch?v=lHJTf93HL1s&spfreload=10zohttps://web.archive.org/web/20120712231619/http%3A//www.youtube.com/watch%3Fgl%3DUS%26v%3DAkhihxRKcrs%26hl%3Denzohttps://web.archive.org/web/20120712231619/http%3A//www.youtube.com/watch%3Fv%3DAkhihxRKcrs%26gl%3DUS%26hl%3Denznhttps://web.archive.org/web/20060527081937/http://www.youtube.com:80/watch.php?v=ELTFsLT73fA&amp;search=soccerzEhttps://web.archive.org/http://www.youtube.com:80/watch?v=-05VVye-ffgz$ytarchive:BaW_jenozKc:20050214000000zytarchive:BaW_jenozKczq(?x:
        (?:window\s*\[\s*["\']ytInitialPlayerResponse["\']\s*\]|ytInitialPlayerResponse)\s*=[(\s]*|
        z
    )zi.ytimg.comzimg.youtube.comc                 C  s6   g | ]}g t d dR D ]}| |pd dqqS )   	    z
.ytimg.com)range).0cnr\   r\   r]   
<listcomp>  s   6 zYoutubeWebArchiveIE.<listcomp>)isz"https://web.archive.org/web/%sif_/l   Hl   @kyJ5i     rF   h263)r    r}   r   acodecvcodec6i  i  133gpaacmp4v)r    r,  r-  17      18i  ih  h26422i   i  3435iV  i  36i@  )r    r}   r,  r-  37i  i8  38i   i   43vorbisvp84445465978823Di)r    r   r   r,  r-  
preference83848510010110291HLS)r    r   r   r,  r-  9293949596132151H   133none)r    r   r-  r,  134135136137138)r    r-  r,  160212264i  298<   )r    r   r-  fpsr,  299266ip  139m4a140141256258325dtse328zec-3167)r    r   r}   r-  168169170218219278vp9242243244245246247248271272302303308313315171172249opus250251394zav01.0.00M.08395396zav01.0.01M.08397zav01.0.04M.08398zav01.0.05M.08399zav01.0.08M.08400zav01.0.12M.08401NFfilterslist | Nonecollapsequerydict | Nonec                   s   |ddddg|p	g  |pg d|pi }| j d||pd||d t tr8t d	kr8 fd
d dd  D S t trCt dkrM| dt   d S d S )NrX   z"original,mimetype,length,timestampi  zstatuscode:200)r+   outputfllimitr   r  z&https://web.archive.org/cdx/search/cdxzDownloading CDX API JSON)r  fatalr   c                   s   g | ]}t t d  |qS )r   )dictzip)r#  vresr\   r]   r&  |  s    z5YoutubeWebArchiveIE._call_cdx_api.<locals>.<listcomp>r   r   z$Error while parsing CDX API response)r   
isinstancer   r   report_warningr   )r   item_idr+   r  r  r  noter  r\   r  r]   _call_cdx_apil  s$   	
z!YoutubeWebArchiveIE._call_cdx_apic                 C  s    | j |dd}| jd|dddS )Nr!  defaultz/(?:YouTube\s*-\s*(.*)$)|(?:(.*)\s*-\s*YouTube$)r!   )_html_extract_title_html_search_regex)r   rZ   
page_titler\   r\   r]   _extract_webpage_title  s
   z*YoutubeWebArchiveIE._extract_webpage_titlec                   sb  r	 fddndd } j  jd|i d} j  jd|i d}i }tdD ]}| j||dd	td
dp;i  q+ j dd|d dpN|dpNi } j dd|i d}	|	rdt	|dsd|	|d< |ss jt	|dpnd|dd}t	|dt
di d}
t	|dt
di d}t	|dt
di d}|dpt|dpt|
dpt	|dp p|g d} fdd}d} jd | d!d"| gd#d d}t|d$}||d%p||d%p|d&}|rd'| nd } jg d(d)d dp jd*d+gtd,d)d dp jd-td.d)d dpt	|d/p|d0}t|d1pH|d2pH|d1pH jd3d4d d5d6pH||d7pH||d7pHt	|d8}|rRd9| nd }t|d:pn|d:pnt	|d;dd<pnt|d=}|d>pt|d?pttd@p|g dA}tt|dBp|dCdDgp jg dEdFd d}|||||||||dG	S )HNc                   s    j | d dS )Nr  )_html_search_metaxr   rZ   r\   r]   <lambda>  s    z7YoutubeWebArchiveIE._extract_metadata.<locals>.<lambda>c                 S  s   d S Nr\   r  r\   r\   r]   r    s    zinitial player responser  zinitial dataz2yt\.setConfig\(\s*(?P<json>{\s*(?s:.+?)\s*})\s*\);FTr!  )r  ignore_extratransform_sourceerrnotez3(?:yt\.playerConfig|ytplayer\.config|swfConfig)\s*=zplayer configPLAYER_CONFIGzswfArgs\s*=z
swf config)argsr  )r  player_responsez{})r  )contentstwoColumnWatchNextResultsresultsr  r  .videoPrimaryInfoRenderer)expected_typeget_allr  videoDetails)microformatplayerMicroformatRendererr!   )r  r!   )zog:titleztwitter:titler!   c                   s$    j d| d| p
d| dd dS )Nz(?:z)/([^/#&?]+)r!  z idr  )_search_regex)r+   type_r   r\   r]   id_from_url  s   z:YoutubeWebArchiveIE._extract_metadata.<locals>.id_from_urlzFhref="[^"]*(?P<url>https?://www\.youtube\.com/(?:user|channel)/[^"]+)"z;<(?:link\s*itemprop=\"url\"|a\s*id=\"watch-username\").*?\b>zP<div\s*id=\"(?:watch-channel-stats|watch-headline-user-info)\"[^>]*>\s*<a[^>]*\bzuploader or channel urlownerProfileUrluserVIDEO_USERNAMEzhttps://www.youtube.com/user/)z9<a\s*id="watch-username"[^>]*>\s*<strong>([^<]+)</strong>z$var\s*watchUsername\s*=\s*\'(.+?)\';zA<div\s*\bid=\"watch-channel-stats"[^>]*>\s*<a[^>]*>\s*(.+?)\s*</az2<a\s*id="watch-userbanner"[^>]*title="\s*(.+?)\s*"r'   z=(?s)<div\s*class="yt-user-info".*?<a[^>]*[^>]*>\s*(.*?)\s*</az+(?s)<a[^>]*yt-user-name[^>]*>\s*(.*?)\s*</azwatch7-user-headerz6<button\s*href="/user/[^>]*>\s*<span[^>]*>\s*(.+?)\s*<zwatch-headline-user-info)r  rm   r   	channelIdexternalChannelIdz6data-channel-external-id=(["\'])(?P<id>(?:(?!\1).)+)\1z
channel idr   )r  groupchannel)r  ucidz https://www.youtube.com/channel/lengthSeconds)r  )length_secondsl)r  r2   shortDescriptionr"   zeow-description)r"   zog:descriptionztwitter:description)
uploadDatepublishDater  datePublished)z&(?s)id="eow-date.*?>\s*(.*?)\s*</span>z(?:id="watch-uploader-info".*?>.*?|["\']simpleText["\']\s*:\s*["\'])(?:Published|Uploaded|Streamed live|Started) on (.+?)[<"\']zSclass\s*=\s*"(?:watch-video-date|watch-video-added post-date)"[^>]*>\s*([^<]+?)\s*<zupload date)	r!   r"   r%   r'   r   r   r2   r   r   )_search_json_YT_INITIAL_PLAYER_RESPONSE_RE_YT_INITIAL_DATA_RErefindallr   _parse_jsonr   r   r   r  r   	_get_textr  r  r   r  r   r   r   r   r	   r   r
   )r   r   rZ   search_metar  initial_dataytcfgjplayer_configswf_argsinitial_data_videovideo_detailsmicroformatsvideo_titler  _CHANNEL_URL_HREF_REuploader_or_channel_urlowner_profile_urlr   r   r'   r   r   r2   r"   r%   r\   r  r]   _extract_metadata  s  "













z%YoutubeWebArchiveIE._extract_metadatac                   s   d  dv fddr jn jD }g }|D ]#} j|dgdgddid	}|s.q| fd
d|D  s> nq | |S )Nrc   	check_allc                   s:   g | ]} rd ndD ]}dj |dkrdnd|dq
qS ))jpgwebp)r  z#http://{server}/vi{webp}/{video_id}r  _webpr!  )r  r   server)r{   )r#  r  r    )try_allr   r\   r]   r&  
  s    z;YoutubeWebArchiveIE._extract_thumbnails.<locals>.<listcomp>zmimetype:image/(?:webp|jpeg)urlkey	matchTypeprefixr  r  r  c                 3  sP    | ]#} j t|d p j |d t|dt|ddV  qdS )r$   rz   rw   )r+   r   rH  N)_WAYBACK_BASE_URLr   r   _OLDEST_CAPTURE_DATE)r#  thumbnail_dictr  r\   r]   	<genexpr>  s    "
z:YoutubeWebArchiveIE._extract_thumbnails.<locals>.<genexpr>)_configuration_arg_YT_ALL_THUMB_SERVERS_YT_DEFAULT_THUMB_SERVERSr  extend_remove_duplicate_formats)r   r   thumbnail_base_urlsrc   r+   responser\   )r   r  r   r]   _extract_thumbnails  s(   

z'YoutubeWebArchiveIE._extract_thumbnailsc                 C  s   g }| j |d| dgddgddidpg }tdd	 |D }d
d |D }|r/||d  || |r=||d  d| dv rK|||  || j| jg ttd |S )Nz https://www.youtube.com/watch?v=zmimetype:text/htmlztimestamp:6digestr  r  r  c                 s  s,    | ]}t |d  durt |d  V  qdS )r$   N)r   )r#  rr\   r\   r]   r  '  s   * z9YoutubeWebArchiveIE._get_capture_dates.<locals>.<genexpr>c                 S  s   g | ]}|d kr|qS )l   @y6/}Ir\   )r#  r  r\   r\   r]   r&  +  s    z:YoutubeWebArchiveIE._get_capture_dates.<locals>.<listcomp>r   capturesr  )	r  sortedr   r  r  r  _NEWEST_CAPTURE_DATEr   r   )r   r   url_datecapture_datesr   all_capturesmodern_capturesr\   r\   r]   _get_capture_dates!  s$   

z&YoutubeWebArchiveIE._get_capture_datesc              
   C  sb   t |dthddf}d|i| j|i t |ddd hfdthfdthddthfd	|p/i S )
Nr+   itagr   	format_idc                 S  s
   d|  S )Nz!https://web.archive.org/web/2id_/r\   r  r\   r\   r]   r  ?  s   
 z0YoutubeWebArchiveIE._parse_fmt.<locals>.<lambda>r    clen)r+   r    r   )r   r   _FORMATSr   r   r   )r   fmt
extra_infor  r\   r\   r]   
_parse_fmt9  s   zYoutubeWebArchiveIE._parse_fmtc                 C  s  |  |ddd\}}}|p|}| jd|d|dd}t|ds(| jd	d
d | |t|}| dt|ddi  d|i}|D ].}| j	| j
d ||f |dddd}	| ||	p[d}
|
drpt||
}d| dvrp nqB| ||d< g }|drt|dddd fD ]}|| |ddi qt|ddd d fD ]}|| |d!di qnt|dd"d fD ]
}|| | q||d< |S )#Nr   ro   date2z&https://web.archive.org/__wb/videoinfoyoutube)vtypevid)r  rb   z.The requested video is not archived or indexedT)expectedzCaptures to try: r   z, z!http://www.youtube.com/watch?v=%sFz;unable to download capture webpage (it may not be archived)zDownloading capture webpage)r   r  r  r  r!  r!   r  r  rc   dmuxvideoc                 S     t |d S Nr+   r   r   r  r\   r\   r]   r  e      z3YoutubeWebArchiveIE._real_extract.<locals>.<lambda>r,  rZ  audioc                 S  r  r  r  r  r\   r\   r]   r  g  r  r-  c                 S  r  r  r  r  r\   r\   r]   r  j  r  )_match_valid_urlr  r   r   raise_no_formatsr  r   write_debugr   r   r  r  r   r   r  r  r   r  )r   r+   r   r  
url_date_2
video_infor  r   capturerZ   current_inforb   vfafr  r\   r\   r]   r   F  sJ   



z!YoutubeWebArchiveIE._real_extract)NNNNF)r  r  r  r  r  r  r  )r   r   r   r   r   r   r   r   r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r   r\   r\   r\   r]   r   |  s       i
    !"#$%&)*+,-./01234789:;<=@ABCDEFGHIJKLMNPQRSTUXY\]^abcdefghk r   ) 
__future__r   rX   r  urllib.parser   commonr   r  r   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r\   r\   r\   r]   <module>   s    T  ^