
    VGh~                        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	 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m Z m!Z!  G d	 d
e      Z" G d de      Z# G d de      Z$ G d de      Z% G d de      Z&y)    N   )InfoExtractor   )compat_etree_fromstring)Request)network_exceptions)ExtractorError
clean_htmldetermine_extfloat_or_noneformat_fieldget_element_by_id	get_firstint_or_nonejoin_nonempty
js_to_jsonmerge_dictsparse_countparse_qs	qualitiesstr_or_nonetraverse_objtry_geturl_or_noneurlencode_postdataurljoinvariadicc                   H   e Zd ZdZddgZdZdZdZdZdZ	dZ
g d	d
ddddddddde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)eed*dd+d,d-d.dd/d0d1d2ddd3d4d5d6dd7d8d9d:d d;d<d=dd>d?d9d:d d@dAdBdCddDddEdFdGdHdId3dJdKdLddMdNdOdPdQdedRedSdTdUdVdWddXdYdZd[d\d]eded^d_d`daidbdcddddedfdgdhddiddjdkdlddmdndodpdqdrdsddjdtduddvdwdxdydzd{dd|d}
dd~ddddddddedddddddddddddddeddddadddadddadddadddadddadddadddadddadddddddddddededd`daidbdddddeddddd$dddddaddddidddddddddddddjddddddddddjddaddddidddddddddddd˜dddadZdZddiZdЄ Zdф Zd҄ Zy)
FacebookIEa(  (?x)
                (?:
                    https?://
                        (?:[\w-]+\.)?(?:facebook\.com|facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd\.onion)/
                        (?:[^#]*?\#!/)?
                        (?:
                            (?:
                                permalink\.php|
                                video/video\.php|
                                photo\.php|
                                video\.php|
                                video/embed|
                                story\.php|
                                watch(?:/live)?/?
                            )\?(?:.*?)(?:v|video_id|story_fbid)=|
                            [^/]+/videos/(?:[^/]+/)?|
                            [^/]+/posts/|
                            events/(?:[^/]+/)?|
                            groups/[^/]+/(?:permalink|posts)/(?:[\da-f]+/)?|
                            watchparty/
                        )|
                    facebook:
                )
                (?P<id>pfbid[A-Za-z0-9]+|\d+)
                zd<iframe[^>]+?src=(["\'])(?P<url>https?://www\.facebook\.com/(?:video/embed|plugins/video\.php).+?)\1z(?x)<div[^>]+
                class=(?P<q1>[\'"])[^\'"]*\bfb-(?:video|post)\b[^\'"]*(?P=q1)[^>]+
                data-href=(?P<q2>[\'"])(?P<url>(?:https?:)?//(?:www\.)?facebook.com/.+?)(?P=q2)z\https://www.facebook.com/login.php?next=http%3A%2F%2Ffacebook.com%2Fhome.php&login_attempt=1z]https://www.facebook.com/checkpoint/?next=http%3A%2F%2Ffacebook.com%2Fhome.php&_fb_noscript=1facebookz-https://www.facebook.com/video/video.php?v=%szZhttps://www.facebook.com/video/tahoe/async/%s/?chain=true&isvideo=true&payloadtype=primaryz>https://www.facebook.com/radiokicksfm/videos/3676516585958356/3676516585958356mp4zdr Adam Przygodaz$md5:34675bda53336b1d16400265c2bb9b3bzRADIO KICKS FM20230818i/'dre:^https?://.*100063551323670g#~*{@r   )idexttitledescriptionuploaderupload_date	timestamp	thumbnailuploader_idduration
view_countconcurrent_view_counturl	info_dictz<https://www.facebook.com/video.php?v=637842556329505&fref=nf 6a40d33c0eccbb1af76cf0485a052659637842556329505zOre:Did you know Kei Nishikori is the first Asian man to ever reach a Grand SlamzTennis on Facebook20140908iTr&   r'   r(   r*   r+   r,   zRequires logging in)r3   md5r4   skipz4https://www.facebook.com/video.php?v=274175099429670274175099429670Asif zAsif Nawab Butt20140506iV"iSGpfbid05AzrFTXgY37tqwaSgbFTTEpCLBjjEJHkigogwGiRPtKEpAsJYJpzE94H1RxYXWEtlg)\``@)r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r1   r0   zVideo with DASH manifestz4https://www.facebook.com/video.php?v=957955867617029 b2c28d528273b323abe5c6ab59f0f030957955867617029zPWhen you post epic content on instagram.com/433 8 million followers, this is ...zDemy de Zeeuw20160110iYV)noter3   r9   r4   r:   z8https://www.facebook.com/maxlayn/posts/10153807558977570 037b1fa7f3c2d02b7a0d7bc16031ecc6544765982287235z)"What are you doing running in the snow?"FailArmy)r&   r'   r(   r*   z
Video gonezOhttps://m.facebook.com/story.php?story_fbid=1035862816472149&id=116132035111903 1deb90b6ac27f7efcf6d747c8a27f5e31035862816472149z;What the Flock Is Going On In New Zealand  Credit: ViralHogzS. Saintzswf params escapedz<https://www.facebook.com/barackobama/posts/10153664894881749 97ba073838964d12c70566e0085c2b9110153664894881749zPAverage time to confirm recent Supreme Court nominees: 67 days Longest it's t...i,V20160223zBarack Obama)r&   r'   r(   r-   r,   r+   r*   zGif on giphy.com gonez6https://www.facebook.com/cnn/videos/10155529876156509/ 1659aa21fb3dd1585874f668e81a72c810155529876156509z%Holocaust survivor becomes US citizenu   She survived the holocaust — and years later, she’s getting her citizenship so she can vote for Hillary Clinton http://cnn.it/2eERh5fiX20161030CNN100059479812265gI+F@)r&   r'   r(   r)   r,   r+   r*   r-   r0   r.   r1   r/   r3   r9   r4   zAhttps://www.facebook.com/yaroslav.korpan/videos/1417995061575415/1417995061575415u@   Довгоочікуване відео | By Yaroslav - Facebooku'   Довгоочікуване відеоisX20170209zYaroslav KorpanGpfbid06AScABAWcW91qpiuGrLt99Ef9tvwHoXP6t8KeFYEqkSfreMtfa9nTveh8b2ZEVSWlg+9@)r&   r'   r(   r)   r,   r+   r*   r.   r1   r-   r0   r/   skip_downloadT)r3   r4   paramsz>https://www.facebook.com/LaGuiaDelVaron/posts/10726917028604711072691702860471z$md5:ae2d22a93fbb12dad20dc393a869739diX20161024u   La Guía Del Varón)r&   r'   r(   r,   r+   r*   r-   )r3   r4   r:   zLhttps://www.facebook.com/groups/1024490957622648/permalink/1396382447100162/202882990186699z1birb (O v O") | Hello? Yes your uber ride is herezlHello? Yes your uber ride is here * Jukin Media Verified * Find this video and others like it by visiting...i9X20170202zElisabeth Ahtn100013949973717)r&   r'   r(   r)   r,   r+   r*   r.   zHhttps://www.facebook.com/groups/1645456212344334/posts/3737828833107051/1569199726448814zPence MUST GO!zVickie Gentry shared a memory.ideZ20171124zVickie GentryGpfbid0FkkycT95ySNNyfCw4Cho6u5G7WbbZEcxT496Hq8rtx1K3LcTCATpR3wnyYhmyGC5lgI+b@)
r&   r'   r(   r)   r,   r+   r*   r.   r-   r/   zkhttps://www.facebook.com/attn/posts/pfbid0j1Czf2gGDVqeQ8KiMLFm3pWN8GxsQmeRrVhimWDzMuKQoR8r4b1knNsejELmUgyhl6968553779868435z$md5:2f2fcf93e97ac00244fe64521bbdb0cbzATTN:20231207g`@100064451419378i^re)r&   r'   r)   r*   r+   r(   r/   r.   r0   r-   r,   zhttps://www.facebook.com/permalink.php?story_fbid=pfbid0fqQuVEQyXRa9Dp4RcaTR14KHU3uULHV1EK7eckNXSH63JMuoALsAvVCJ97zAGitil&id=100068861234290270103405756416z
Lela EvanszToday Makkovik's own Pilot Mandy Smith made her inaugural landing on the airstrip in her hometown. What a proud moment as we all cheered and...Gpfbid0swT2y7t6TAsZVBvcyeYPdhTMefGaS26mzUwML3vd1ma6ndGZKxsyS4Ssu3jitZLXl20231228iegd;Ox@)r&   r'   r(   r)   r-   r*   r.   r+   r,   r/   r0   zhttps://www.facebook.com/story.php?story_fbid=pfbid0Fnzhm8UuzjBYpPMNFzaSpFE9UmLdU4fJN8qTANi1Dmtj5q7DNrL5NERXfsAzDEV7l&id=100073071055552r3   only_matchingz6https://www.facebook.com/video.php?v=10204634152394104zAhttps://www.facebook.com/amogood/videos/1618742068337349/?fref=nfzbhttps://www.facebook.com/ChristyClarkForBC/videos/vb.22819070941/10153870694020942/?type=2&theaterzfacebook:544765982287235zJhttps://www.facebook.com/groups/164828000315060/permalink/764967300301124/z@https://zh-hk.facebook.com/peoplespower/videos/1135894589806027/zfhttps://www.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion/video.php?v=274175099429670zIhttps://www.facebook.com/onlycleverentertainment/videos/1947995502095005/z<https://www.facebook.com/WatchESLOne/videos/359649331226507/359649331226507zBFnatic vs. EG - Group A - Opening Match - ESL One Birmingham Day 1z?#ESLOne VoD - Birmingham Finals Day#1 Fnatic vs. @Evil Geniusesit[20180523zESL One Dota 2100066514874195gL7A @)r&   r'   r(   r)   r,   r+   r*   r.   r/   r0   r-   r1   z@https://www.facebook.com/100033620354545/videos/106560053808006/106560053808006JosefHpfbid02gpfwRM2XvdEJfsERupwQiNmBiDArc38RMRYZnap372q6Vs7MtFTVy72mmFWpJBTKliX\g$C
@zJosef Novak20190204)r&   r'   r(   r-   r1   r.   r,   r/   r*   r)   r+   z1https://www.facebook.com/watch/?v=647537299265662zAhttps://www.facebook.com/PankajShahLondon/posts/10157667649866271r&   10157667649866271   )r3   r4   playlist_countr:   zHhttps://m.facebook.com/Alliance.Police.Department/posts/4048563708499330117576630041613zFacebook video #11757663004161318939301441643820201123i_)r&   r'   r(   r.   r+   r,   zMhttps://www.facebook.com/groups/ateistiskselskab/permalink/10154930137678856/211567722618337zFacebook video #21156772261833712787522765425420161122i3XzNo videoz7https://www.facebook.com/watch/live/?v=1823658634322275z3https://www.facebook.com/watchparty/211641140192478211641140192478r   z.https://m.facebook.com/events/1509582499515440637246984455045z;ANALISI IN CAMPO OSCURO " Coaguli nel sangue dei vaccinati"zDOther event by Comitato Liberi Pensatori on Tuesday, October 18 2022zComitato Liberi Pensatori100065709540881)r&   r'   r(   r)   r-   r*   r.   zYhttps://www.facebook.com/groups/1513990329015294/posts/d41d8cd9/2013209885760000/?app=fblzK(?:pagelet_group_mall|permalink_video_pagelet|hyperfeed_story_id_[0-9a-f]+)graphURIz/api/graphql/c           
         t        | j                        }| j                  ddd       | j                  |d dd      }| j	                  d|d      }| j	                  d	|d
      }||||dddddd	}t        | j                  t        |            }d|j                  d<   	 | j                  |d dd      }	t        j                  d|	      :| j                  d|	dd d      }
|
rt        d|
 d      | j                  d       y | j	                  d|	dd       }| j	                  d |	d!d       }|r|sy ||d"d#}t        | j                  t        |            }d|j                  d<   | j                  |d d$%      }t        j                  d&|      | j                  d'       y y # t        $ r}| j                  d(|        Y d }~y d }~ww xY w))Nzfacebook.comlocaleen_USzDownloading login pagezUnable to download login page)rC   errnotez/<input type="hidden" name="lsd" value="([^"]*)"lsdzname="lgnrnd" value="([^"]*?)"lgnrndzhttp://facebook.com/home.php01z-60)	emailpassr   r   nextdefault_persistentlegacy_returntimezonetrynum!application/x-www-form-urlencodedContent-Typez
Logging inzunable to fetch login pagez <form(.*)name="login"(.*)</form>zh(?s)<div[^>]+class=(["\']).*?login_error_box.*?\1[^>]*><div[^>]*>.*?</div><div[^>]*>(?P<error>.+?)</div>zlogin errorerrordefaultgroupzUnable to login: Texpectedzjunable to log in: bad username/password, or exceeded login rate limit (~3/min). Check credentials or wait.zname="fb_dtsg" value="(.+?)"fb_dtsgr   z.name="h"\s+(?:\w+="[^"]+"\s+)*?value="([^"]+)"h	dont_save)r   r   name_action_selectedzConfirming login)rC   zid="checkpointSubmitButton"zSUnable to confirm login, you have to login in your browser and authorize the login.zunable to log in: )r   
_LOGIN_URL_set_cookie_download_webpage_search_regexr   headersresearch_html_search_regexr	   report_warning_CHECKPOINT_URLr   )selfusernamepasswordlogin_page_req
login_pager   r   
login_formrequestlogin_resultsr   r   r   
check_form	check_reqcheck_responseerrs                    b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/facebook.py_perform_loginzFacebookIE._perform_login  s=    17;++ND1I4S , U
   > ##$EzS[\ 2"% 


 $//+=j+IJ*M'!	 227D8DNj 3 lMyy<mLX//!=$g 0 O (+<UG)DtTT##  %Q  R((/	SW ) YG""A=RU_c # eA ! #(3J
   4 46H6TUI0SIn-!33It9K 4 MNyy7HT##$yz U! 	"4SE :;	s&   A$F$ .F$ 3A/F$ $	G-GGc                    +,-./01  j                  |j                  dd            0 fd}d }d - j                   j                  ddg0dd	      d
      }|r -|j	                  dg             }-fd}dn fd	,d / 0fd11fd}dn1fd	}|sP j                   j                  d j
                  z   d j
                   dg0dd	      t        d
      } ||      }|sv |dd      }	|	rig ++,/ 0fd.do.fd	}
t        t        |	dd      xs g       }t        |ddd d!d"d#dd$d%t        hf
      }|D ]:  }t        |d&ddt        hfd'd#dd(d%t        hf      }|D ]
  } |
|         |
|       < t        |	d) t              xs g }|D ]  } |
|d*        t        |	d+d,t        -      xs i }|r2t        |d. d/ gt              xs g }|D ]
  } |
|        +s .|       t        +      d0kD  r j                  +      S +r+d1   nd2i} |0      }|j	                  d3      r|d3   |d3<   |j	                  d4      r|d4   |d4<   t        ||      S |s\t        j                   d50      }| t#        d6|j%                  d0       d7d89      t'        0fd:d;D              r j)                          |s^d<|v rYd=t+        j,                  d>i      d?} |d@      }|rt        |dA t              }|r|dB   ||dC   <    |dD      }|j	                  dE      xs g D ]  }|d1   dFk(  s|dG    _          j1                  t3        | j.                  dH         t5        |      I      dJ   dK   }g +t        |dL       xs g D ]  }t        |dM       xs i }|j	                  d2      }|s(t7        |      }+j9                   j;                   j<                  |z   j?                         ||j	                  dC                     j                  +      S |s j                   j@                  z  t5        d0 j                  dN0dOdP	       j                  dQ0dRdS	       j                  dT0dUdV	      dW      dXdYiZ      } j                   j                  d[|d\d	      d
      } ||      }|st#        d]      t        |      d0kD  r~g +|D ]e  }|d1   j	                  d^      } | s+j9                   j;                  t3        ||        j?                         |d1   j	                  d_                   g  j                  +      S |d1   }g }!i }"|D ]  }#|#d`   }$|#rtC        |#t              r|#g}#|#rtC        |#t              s0daD ]]  }%dbD ]V  }&|#d1   j	                  |% dc|&       }'|'s|$ddk(  rdendf}(|%dgk(  r|(d0z  }(|!j9                  |$ dc|% dc|& |'|(|%dgk(  rdhnd di       X _  ,|#d1   |!       |#d1   j	                  dj      })|)s|"jE                  dkg       j9                  dl|)i        |!|"dm}* /|*       |*jG                   |0             |*S )pNz://m.facebook.com/z://www.facebook.com/c                    t        j                  d|       D cg c]  }j                  |d       }}t        |dt              xs g }t        |dddfdft              }t        |d	      }t        |d
      }|xs9 j                  ddj                  d      j                  d      df| dd d      }|xs j                  g d| dd       }t        |dt        hf      xsn t        |dddddd f      xsY t        |ddd f      xsG t        |dddt        hf      xs0 t        |ddt        hf      xs t        |ddd d!t        hf      xs i }|j                  d"      xs? t        t        d#|             xs( j                  d$gj                  d      | d%d      }	t        j                  d&| d'd             }
j                  d(d)g| d*d       }|rt        j                  d+|      sd }||	|j                  d,      |
|t!        j                  d-| d.d             t        |d/d0t        hf      d1t        |fd2d3d4d5t"        hfd6t"        hfd7t         hfd8fd9      }j%                  | i       }t        j&                  d:d;|xs |j                  d      xs |xs d;      xs |xs d;j)                  d<d=      xs d> |d<   t+        ||      S c c}w )?N-data-sjs>({.*?ScheduledServerJS.*?})</script>Ffatal).require...__bboxr   ...r   resultdataexpected_type.attachmentsc                 H    | dk(  xr t        |d         k(  xr |d   dk(  S )Nmediar&   
__typenameVideo)str)kvvideo_ids     r   <lambda>zHFacebookIE._extract_from_url.<locals>.extract_metadata.<locals>.<lambda>  s0    WXQtW!9XaoQX>X     )r(   text)creation_storycomet_sectionsmessagestoryr   r   z=<h2\s+[^>]*class="uiHeaderTitle"[^>]*>(?P<content>[^<]*)</h2>zq(?s)<span class="fbPhotosPhotoCaption".*?id="fbPhotoPageCaption"><span class="hasCaption">(?P<content>.*?)</span>zog:titleztwitter:titlez<title>(?P<content>.+?)</title>r(   contentr   )r)   zog:descriptionztwitter:descriptionr)   r   ownervideor   r   c                     | dk(  xr |d   S Nr   name r   r   s     r   r   zHFacebookIE._extract_from_url.<locals>.extract_metadata.<locals>.<lambda>  s%    ijnuiu  jDz{  }C  {D r   c                     | dk(  xr |d   S r   r   r   s     r   r   zHFacebookIE._extract_from_url.<locals>.extract_metadata.<locals>.<lambda>  s    qG|?YPQRXPY r   nodeactorseventevent_creatorshort_form_video_contextvideo_ownerr   fbPhotoPageAuthorNamezownerName\s*:\s*"([^"]+)"r*   z<abbr[^>]+data-utime=["\'](\d+)r,   zog:imageztwitter:imager-   z\.(?:jpg|png)r&   )z \bviewCount\s*:\s*["\']([\d,.]+)z!video_view_count["\']\s*:\s*(\d+)z
view count)r   )..r   .r   liveViewerCount)r)   r*   r.   r,   r-   r0   r1   c                     |d   v S )Nr3   r   )_r   r   s     r   r   zHFacebookIE._extract_from_url.<locals>.extract_metadata.<locals>.<lambda>  s    8qx3G r   feedbacklikerscounttotal_comment_countshare_count_reduced)
like_countcomment_countrepost_countget_allz\s*\|\s*Facebook$r=   
 Facebook video #)r   findall_parse_jsonr   dictr   r   _meta_regex_html_search_metagetr
   r   r   _og_regexesr   r   r   int_search_json_ldsubreplacer   )webpagej	post_datapostr   r(   r)   
page_titleuploader_datar*   r,   r-   r4   info_json_ldr   r   s                 r   extract_metadataz6FacebookIE._extract_from_url.<locals>.extract_metadata  s   MOZZ@'NK L))!XU)C LI L	 ,o CD J HJ  ]C BZ ([jnpEe%67E#E+vwK @$"9"9P E  ,d.>.>.OQs; Y	 #: #@J
 & 6)?)?H *@ *6K %'D6!23 yTG-=}cSZ  ]D  $E  FyTC2Y#Z[y TFHcD6#BCy TG_tf#EF	y
 TG-=?Y[hkojp#qry
 wy  %((0 s,-DgNO r%%1ND4D4DW4MNPWYckp & r  $D$6$62GT %7 %+ ,I .._-wT / SI
 +;Y!G 	*$,006&&)$*<*<_\4 += +9 : *34FHY\g[h:j *k t&G#+Wse"<&;cU%C%:[M$JV & "	#I$  //2/NL%'VV,@"eF||O_O_`gOhF|lvF|z|%} &p)4):(C(CD#(N&pTdemdnRo !|Y77uLs   K#c                     g }| D ]A  }t        |d       dk(  s|d   d   }|j                  d      s.|j                  |d          C |S )Nc                     | d   d   S )Nr   r   r   xs    r   r   zJFacebookIE._extract_from_url.<locals>.extract_video_data.<locals>.<lambda>'  s    1Q47 r   VideoConfigr   r   r   	videoData)r   r   append)	instances
video_dataitem
video_items       r   extract_video_dataz8FacebookIE._extract_from_url.<locals>.extract_video_data$  s\    J! C4!23}D!%aJ!~~j1"))*[*AB	C
 r   z handleServerJS\(({.+})(?:\);|,")z\bs\.handle\(({.+?})\);zserver js dataz{}r   Fr   r  c                 B    | r t        | d t              xs g       S y )Nc                     | d   d   S )Njsmodsr  r   r   s    r   r   zUFacebookIE._extract_from_url.<locals>.extract_from_jsmods_instances.<locals>.<lambda>7  s    q{;'? r   )r   list)js_datar  s    r   extract_from_jsmods_instanceszCFacebookIE._extract_from_url.<locals>.extract_from_jsmods_instances4  s3    )'?+G +MJLN N r   c           
          t        | ddddt              }|re|j                  j                  t	        t
        j                  j                  |            t        | j                  d            xs |             y y )Ndash_manifestplaylistdash_manifest_xml_stringmanifest_xmlr   dash_manifest_urlmpd_url)
r   r   extend_parse_mpd_formatsr   urllibparseunquote_plusr   r   )vid_dataformatsr  r  r   s       r   extract_dash_manifestz;FacebookIE._extract_from_url.<locals>.extract_dash_manifest9  st    (/:7QSaqtvMt66+FLL,E,Em,TU'5H(IJUg  7  W X r   c                 l    | d   D ],  }d|j                  di       d<   d|j                  di       d<   . y )Nr  zfacebookexternalhit/1.1http_headersz
User-Agenti  downloader_optionshttp_chunk_size)
setdefault)infofs     r   process_formatsz5FacebookIE._extract_from_url.<locals>.process_formatsA  sI     )_ V B[^R0>LU1267HIVr   c              3      K   t        j                  d|  d      D ]  }j                  |d      xs i   y w)Nzdata-sjs>({.*?z.*?})</script>Fr   )r   r   r   )_filter
relay_datar   r   r   s     r   yield_all_relay_dataz:FacebookIE._extract_from_url.<locals>.yield_all_relay_dataK  sJ      jjOG9O)TV]^ P
&&z85&IOROPs   ;>c                 <    t        t        d  |             i       S N)r   filter)r(  r*  s    r   extract_relay_dataz8FacebookIE._extract_from_url.<locals>.extract_relay_dataO  s    t%9'%BCRHHr   c                 h    d}fd}t         |       dddd dddd|t        hf
d	
      xs i S )Nr   c                 N    | dk(  xr t        fdt              D              S )Nr   c              3   &   K   | ]  }|v  
 y wr,  r   ).0targetr   s     r   	<genexpr>zhFacebookIE._extract_from_url.<locals>.extract_relay_prefetched_data.<locals>.<lambda>.<locals>.<genexpr>U  s     7h!7h   )anyr   )r   r   target_keyss    `r   r   zUFacebookIE._extract_from_url.<locals>.extract_relay_prefetched_data.<locals>.<lambda>U  s"    AK$hC7hRZ[fRg7h4h r   .r   )N)...r   r   c                 &    t        d |D              S )Nc              3   >   K   | ]  }|j                  d         yw)RelayPrefetchedStreamCacheN
startswith)r2  keys     r   r4  zhFacebookIE._extract_from_url.<locals>.extract_relay_prefetched_data.<locals>.<lambda>.<locals>.<genexpr>X  s      [RU0L!M [s   )r6  r   r   s     r   r   zUFacebookIE._extract_from_url.<locals>.extract_relay_prefetched_data.<locals>.<lambda>X  s    S [YZ [[ r   r   r   Fr   )r   r   )r(  r7  pathr*  s    ` r   extract_relay_prefetched_datazCFacebookIE._extract_from_url.<locals>.extract_relay_prefetched_dataR  s^    D&h 4W =Y L[S(HdTF@< FKL R PRRr   zNbigPipe\.onPageletArrive\(({.+?})\)\s*;\s*}\s*\)\s*,\s*["\']onPageletArrive\s+z)bigPipe\.onPageletArrive\(({.*?id\s*:\s*"z	".*?})\);zjs dataz/"(?:dash_manifest|playable_url(?:_quality_hd)?))r   r   nodesr   mediaset)r7  c           
         | j                  d      xs | j                  d      xs }t        | dddt        hf      }|r%| d   } t        | d      | d<   | j                  |       g }t	        dd	g      }t        | d
t        hf      xs | }dD ]i  \  }}|j                  |      }|st        |      dk(  r$|j                  j                  |d             L|j                  | ||      dz
  |d       k  ||       t        | d      }t        |dddt        hf      }	t        |dd f      }
t        |
      D ]  \  }} ||t        |	|              |
s*|	D ]%  }|j                  j                  |d             ' t        |dd f      D ]A  }t        |ddt        j                  hf      }|j                  | ||      dz
  |d   d       C t        |dddt        hf      D ]'  }|j                  j                  |ddd !             ) |sy i i }}t        | d"t        hf      }t        | d#d$ hd% f      D ]  }|j                  d&      xs d'}|d(   t        |d)| d*|+      d,}|j                  d-      s|r%|j!                  |d.   g       j                  |       h|j!                  |d.   g       j                  |        t        | d(t        hf      }|r'|s%|s#j#                  d/d0g d.d1+      }d2|ig|r|n||<   ||t        | d3d4      t        | ddt$        hf      t        | d5d6t&        7      t)        | j                  d8      d9      xs t)        | j                  d:            ||d;} |       t+        | d<       }| j                  d=      }|r|j                  ||d>       n|xs d?| |d@<   j                  |       y )ANvideoIdr&   r   r   playback_video)r   r   r   sdhdvideoDeliveryLegacyFields))playable_urlrF  )playable_url_quality_hdrG  )playable_url_dashr=   )browser_native_hd_urlrG  )browser_native_sd_urlrF  mpdFr   ro   )	format_idqualityr3   )videoDeliveryResponseFragmentvideoDeliveryResponseResultdash_manifest_urls.manifest_urldash_manifestsc                     |d   S )Nr  r   r>  s     r   r   zKFacebookIE._extract_from_url.<locals>.parse_graphql_video.<locals>.<lambda>  s    \]^l\m r   r  progressive_urlsc                     |d   S )Nprogressive_urlr   r>  s     r   r   zKFacebookIE._extract_from_url.<locals>.parse_graphql_video.<locals>.<lambda>  s    ]^_p]q r   metadatarP  rY  hls_playlist_urlshls_playlist_urlr"   hls)r   m3u8_idis_video_broadcast video_available_captions_localesc                     t        | d       S )Nc                     | d   S )Nr|   r   )cs    r   r   z]FacebookIE._extract_from_url.<locals>.parse_graphql_video.<locals>.<lambda>.<locals>.<lambda>  s
    1X; r   r=  )sortedr   s    r   r   zKFacebookIE._extract_from_url.<locals>.parse_graphql_video.<locals>.<lambda>  s    6!1F#G r   c                     t        |d         S )Ncaptions_url)r   r>  s     r   r   zKFacebookIE._extract_from_url.<locals>.parse_graphql_video.<locals>.<lambda>  s    [>1B%C r   localized_languageundrg  localized_countryz (%s)r   )r3   r   localized_creation_methodr|   z	og:localeztwitter:localer}   r3   )thumbnailImageuri)preferred_thumbnailimagerm  publish_timecreation_timer   playable_duration_in_msi  length_in_second)r&   r  r-   r.   r,   r/   automatic_captions	subtitlesc                     | d   d   S )Nsavable_descriptionr   r   r   s    r   r   zKFacebookIE._extract_from_url.<locals>.parse_graphql_video.<locals>.<lambda>  s    1=R;STZ;[ r   r   r(   r)   r   r(   )r   r   r   updater   r   r  _extract_mpd_formatsr  r   	enumerater   lower_extract_m3u8_formatsboolr   r#  r   r   r   r   r   )!r   v_id	reel_infor  qfmt_datar=  rO  rI  mpd_urlsrU  idxr  r  prog_fmtm3u8_urlrt  ru  is_broadcastcaptionlangsubsrg  r|   r$  r)   r(   entriesr  r&  r   r   r   s!                              r   parse_graphql_videoz9FacebookIE._extract_from_url.<locals>.parse_graphql_videoi  s    99Y/N599T?NhD , 02LN^ae`fg!iI  %&6 7)5e=h)igY/ G!4,/A  ,E4ORVQW3XYb]bH+L Y (0||C'8+$(6%?#NN4+D+D\S[ch+D+ij#NN-6+,Y<!+;'3	,  *(G<  ,E3stH+H7KSR`cnbo6pqH%1(=MOm<n%oN.7.G k*]-mWl[cehNijk)'/ fG#NN4+D+DWh^c+D+def$0<NPq;r$s $0J	TWT]T]S^;_$`	)2'(|a'7#+,=#>	(  %1<OQTVhkvjw;x$y zt'A'A(HV[chrw'A'xyz #46	&#/8Ltf7U#VL#/:GHC8 $ U
  '{{+?@IE#*>#:$0:MRVQWW\~gk$l  #;;'BC|.99'(:KRPWWX\]%001BBGNNtTU $07V#WL#,>y!%!7!7(*:;WhX_ "8 "aX]_kWlVm|+FS ##*%1!#<>e&g'3EGTK=;Y'Z%1%hs%t%2599=V3WY]%^ &U(5eii@R6S(T.@%.D $D)")%1["\K!IIf-E%*+6% 
 )4(P9I$7PWNN4(r   c                 h    | j                  |      xs i }|j                  d      dk(  r |      S y )Nr   r   )r   )
attachmentr=  r   r  s      r   parse_attachmentz6FacebookIE._extract_from_url.<locals>.parse_attachment  s7    &NN3/52Eyy.'92599 :r   rA  r   .r   r   r   )Nattached_storyr   )stylesstyle_type_renderer)throwbackStylesattachment_target_rendererr  all_subattachmentsr3  r  c                     | d   d   d   S )NrB  	currMediaedgesr   r   s    r   r   z.FacebookIE._extract_from_url.<locals>.<lambda>  s    *k0J70S r   rd  )r   cover_media_renderercover_videor   r   c                     | d   d   S )Nr   r   r   r   s    r   r   z.FacebookIE._extract_from_url.<locals>.<lambda>  s    !G*]"; r   c                     | d   d   S )Nr   r   r   r   s    r   r   z.FacebookIE._extract_from_url.<locals>.<lambda>  s    !$4"5m"D r   r   r   r&   r/   r-   z8class="[^"]*uiInterstitialContent[^"]*"><div>(.*?)</div>z,The video is not available, Facebook said: ""Tr   c              3   &   K   | ]  }|v  
 y wr,  r   )r2  pr   s     r   r4  z/FacebookIE._extract_from_url.<locals>.<genexpr>  s      )aQ'\ )r5  )z>You must log in to continuezid="login_form"zid="loginbutton"z/watchparty/l   Ws/j livingRoomID)doc_id	variablesz"login_data"\s*:\s*{c                     | d   d   S )N
login_datar   r   r   s    r   r   z.FacebookIE._extract_from_url.<locals>.<lambda>  s    <9O r   valuer   z!\[\s*"RelayAPIConfigDefaults"\s*,defineRelayAPIConfigDefaultsr   rz   )r   r   living_roomc                     | d   d   d   S )Nrecapwatched_contentr  r   r   s    r   r   z.FacebookIE._extract_from_url.<locals>.<lambda>!  s    '
CT8UV]8^ r   c                     | d   d   S )Nr   r   r   r   s    r   r   z.FacebookIE._extract_from_url.<locals>.<lambda>"  s    &	'0B r   z%pkg_cohort["\']\s*:\s*["\'](.+?)["\']z
pkg cohortzPHASED:DEFAULTz!client_revision["\']\s*:\s*(\d+),zclient revision3944515z>"DTSGInitialData"\s*,\s*\[\]\s*,\s*{\s*"token"\s*:\s*"([^"]+)"z
dtsg tokenr=   )__a__pc__revr   r   r   )r   r   zfor\s+\(\s*;\s*;\s*\)\s*;(.+)ztahoe js datazCannot parse data	video_urlr   stream_type)rF  rG  )srcsrc_no_ratelimitr   progressiveirG  i  )rO  r3   rP  heightsubtitles_srcenr3   )r&   r  ru  r,  )r   )$r   r   r   r   r   _SUPPORTED_PAGLETS_REGEXr   r   r   r   r   r  lenplaylist_resultr   r   r   r	   r   r6  raise_login_requiredjsondumps_api_config_download_jsonr   r   r   r  
url_result_VIDEO_PAGE_TEMPLATEie_key_VIDEO_PAGE_TAHOE_TEMPLATE
isinstancer#  ry  )2r   r3   r   r   r  server_js_datar  r.  r@  r   r  rA  r   r  nsnr  edger   
video_infowebpage_infom_msgr   prefetched_datar   r)  r  r  r  
tahoe_datatahoe_js_datar   r  r  ru  r%  rO  rP  src_typer  
preferencer  r4   r  r  r  r  r&  r   r*  s2   ` `                                        @@@@@@@r   _extract_from_urlzFacebookIE._extract_from_url  s
   ((KK,.DExQ;	8z 
	 ))$*<*<02LM%t += +56>e * M +N,>,>{B,OPJ	N
	X	V	P	I	R !--d.@.@adh  eB  eB  B=d>[>[=\\fgB 	4 /A /1 3;JON 7~FJ0BKMD d) d)L:
 !dGV!D!JK*5)9g?WYfm 4&3* + #. 1J%j3GRUX\W]2^'/X|^b]c&dfB ,(+,$Z01  &SUYZ`^`! 7D$Tv67 %T ,DEL\`b heg ")%;D2 # ## !#   '2 5
(45"+E2w<!#//BB+2WQZx8H
/8>>*-/9*/EL,>>+.0:;0GL-"<<<IIY[bcE $B5;;q>BRRST!# #  ) ,( ) ) ))+n3*!ZZ"H) I <<STOo/OQUV-0\Ic&k*+,PQJ%>>(39r 1!9 88'-ayD$1 --T--j9:H'	2 . 44:<<IKK G .^_ece =&BCIryy4yt--4KKM46): < == '':: ////(:H' ..@'$.> / @ "//<g)9 0 >  $11Yr  2  ;)  #$G 0 J" !,,""4j#T # 3 	 - 'M
 7}EJ !455z?QG KaDHH[1	 tw0$%)[[]AaDHHZ4H J K	K ''::]
	 	NA-(IZ4(CJq$/'  ; HA$((gYaz#:;C -6,FSB
"d?&!OJ,5;ay()L#&'1-4_c$	(  "!A$0aDHH_5M$$T2.55um6LM1	N6 "
	
 		")'23r   c                     | j                  |      }|j                  d      r| j                  |z  n|}| j                  ||      S )Nz	facebook:)	_match_idr<  r  r  )r   r3   r   real_urls       r   _real_extractzFacebookIE._real_extract|  sA    >>#&;>>>+;V4,,x7\_%%h99r   N)__name__
__module____qualname__
_VALID_URL_EMBED_REGEXr   r   _NETRC_MACHINEIE_NAMEr  r  r   _TESTSr  r  r   r  r  r   r   r   r   r   "   s   J4 	p	cL pJuONGJ!}UO$'A(%#+, %&
 U" N1#f,%#
 &!U< F#)%#+d%(
9U\ +E1#g'%#
 &[Uv J1#@"	
 
uUJ a1$R"	
 
IU^ %M1%h+#%&
 (]U~ H1%< g#%+,%(
yUf S$WD#%)d%(+!
 T
'_UN P$;#%-+
 &KUh ^#H J#%(,	
 &eUD Z$%;#%'d+
AUb }$A%,+#
_UB ^#! n+$d%#
U` Z_Uf HeUl SkUt tqU| *yUD \AUL RIUT xQU\ [YUd N#Y\#%(, +%(
 T
#aUL R#+%(e#%%
IUl CiUv S%
 %	qUF	 Z#6,%#
 &C	U`	 _#6,%#
 ]	Ux	 Iu	U~	 E#
 %}	UP
 @#Ra+3,
	K
Uf
 ke
UFl
  nOK9vYv:r   r   c            	       b    e Zd ZdZdddddddd	d
ej                         gdddddddgZd Zy)FacebookPluginsVideoIEzQhttps?://(?:[\w-]+\.)?facebook\.com/plugins/video\.php\?.*?\bhref=(?P<id>https.+)zhttps://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2Fgov.sg%2Fvideos%2F10154383743583686%2F&show_text=0&width=560 5954e92cdfe51fe5782ae9bda7058a0710154383743583686r"   zWhat to do during the haze?zGov.sg20160826iWr8   )r3   r9   r4   add_iezrhttps://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2Fvideo.php%3Fv%3D10204634152394104Tre   zhttps://www.facebook.com/plugins/video.php?href=https://www.facebook.com/gov.sg/videos/10154383743583686/&show_text=0&width=560c                     | j                  t        j                  j                  | j	                  |            t
        j                               S r,  )r  r  r  unquoter  r   r  )r   r3   s     r   r  z$FacebookPluginsVideoIE._real_extract  s:    LL  !45! 	!r   N)r  r  r  r  r   r  r  r  r   r   r   r  r    se    eJ _1%2 %#
 $$&' D Q!F*!r   r  c                       e Zd ZdZdZdi dddd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&eed'd(gd)d(id*gZd+ Zy,)-FacebookRedirectURLIEFz0https?://(?:[\w-]+\.)?facebook\.com/flx/warn[/?]zlhttps://www.facebook.com/flx/warn/?h=TAQHsoToz&u=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpO8h3EaFRdo&s=1r&   pO8h3EaFRdor'   r"   r(   z.Tripeo Boiler Room x Dekmantel Festival DJ Setr)   z$md5:2d713ccbb45b686a1888397b2c77ca6b
channel_idUCGBpxWJr9FNOcFYA5GkKrMgplayable_in_embedT
categoriesMusicchannelzBoiler Roomr.   brtvofficialr*   tagszcount:11r/   i  live_statusnot_liver-   z4https://i.ytimg.com/vi/pO8h3EaFRdo/maxresdefault.jpgchannel_urlz8https://www.youtube.com/channel/UCGBpxWJr9FNOcFYA5GkKrMgavailabilitypublicuploader_urlz(http://www.youtube.com/user/brtvofficial20150917r   )r+   	age_limitr0   r   YoutuberU   )r3   r4   r  rV   c                     t        t        |      j                  dd g      d         }|st        dd      | j	                  |      S )NuzInvalid facebook redirect URLTr   )r   r   r   r	   r  )r   r3   redirect_urls      r   r  z#FacebookRedirectURLIE._real_extract  sD    "8C=#4#4S4&#A"#EF !@4PP|,,r   N)r  r  r  IE_DESCr  r   r  r  r   r   r   r  r    s   GDJ}
-
5
 E
 A	

 4
  
 7)
 }
 >
 
 J
 
 :
 O
 U
  H!
" F#
$ &+
. +"I.5 F:-r   r  c                   D    e Zd ZdZdZddddddd	d
ddddeeeddgZd Zy)FacebookReelIEz4https?://(?:[\w-]+\.)?facebook\.com/reel/(?P<id>\d+)zfacebook:reelz.https://www.facebook.com/reel/1195289147628387 a53256d10fc2105441fe0c4212ed8cea1195289147628387r"   un   re:9\.6K views · 355 reactions .+ Let the “Slapathon” commence!! .+ LL COOL J · Mama Said Knock You Out$uQ   re:When your trying to help your partner .+ LL COOL J · Mama Said Knock You Out$zBeast Camp Training100040874179269g r(#@iNa20211121r$   )r&   r'   r(   r)   r*   r.   r/   r,   r+   r-   r   r   r   rQ   c                 Z    | j                  |      }| j                  d| dt        |      S )Nz https://m.facebook.com/watch/?v=z&_rdr)r  r  r   )r   r3   r   s      r   r  zFacebookReelIE._real_extract  s3    >>#&.xj>
HV 	Vr   N)r  r  r  r  r  r   r  r  r   r   r   r  r    sV    HJG @1$ Go-,#%+ 
 F(Vr   r  c                       e Zd ZdZdZddddddd	d
dd
dedddddddddd
dd
dedddddddd
ddeddd d!d"d#d$d"d#gZd%d&d'd(d)Zd* Zd+ Z	y,)-FacebookAdsIEzLhttps?://(?:[\w-]+\.)?facebook\.com/ads/library/?\?(?:[^#]+&)?id=(?P<id>\d+)zfacebook:adsz8https://www.facebook.com/ads/library/?id=899206155126718899206155126718r"   zvideo by Kandaoz$md5:0822724069e3aca97cbed5dabbab282eKandao774114102743284r$   ijze20231214)r&   r'   r(   r)   r*   r.   r  r,   r-   r+   r   r2   z8https://www.facebook.com/ads/library/?id=501152689226254501152689226254zvideo by mat.nawrockiz$md5:02a446ace7ff8c3c37a2892922492490zmat.nawrocki148586968341456i˹f20240812z8https://www.facebook.com/ads/library/?id=893637265423481893637265423481u@   Jusqu’à -25% sur une sélection de vins pétillants italiens zEataly Paris Marais2086668958314152iIpe20231226)r&   r(   r*   r.   r  r,   r+   r   ro   )r3   r4   rp   z:https://es-la.facebook.com/ads/library/?id=901230958115569Tre   z6https://m.facebook.com/ads/library/?id=901230958115569)zsd-wmkzSD, watermarked)rF  N)zhd-wmkzHD, watermarked)rG  N)watermarked_video_sd_urlvideo_sd_urlwatermarked_video_hd_urlvideo_hd_urlc                     g }t        |t        j                  h fdf      D ]^  \  }}|j                   j                  |   d    j                  |   d   |d t        t         j                              |      d       ` |S )Nc                 F    |d   j                   v xr t        |d         S )Nr   r   )_FORMATS_MAPr   r   r   r   s     r   r   z0FacebookAdsIE._extract_formats.<locals>.<lambda>(  s'    qtt/@/@'@'V[QRSTQUEV r   r   r   r"   )rO  format_noter3   r'   rP  )r   r   itemsr  r  r   tuple)r   
video_dictr  
format_key
format_urls   `    r   _extract_formatszFacebookAdsIE._extract_formats%  s    &2:ZZLV@
 ' 		"J
 NN!..z:1=#00<Q?!>9U4+<+<%=>zJ 		 r   c                 8     j                  |      } j                  ||      }t        t        j                  d|      dt
        j                  hf      }t        |dddddddddddddt        hf      }|st        d	      |j                  d
      }|r|dk(  rt        ddd|      }t        |ddt        hf      t        |dddddddfdddt        hd ht        f      }t        ||xs d dt        |dd hfdt        hfdt         hfdt"        hfdt$        hfdt$        hfd            }g }	t'        t        |d fdf      d       D ]y  \  }
}|	j)                  | d!|
 |j                  d
      xs |t        |dd      xs |j                  d"      t#        |j                  d#             j+                  |      d$       { t-        |	      d k(  r|j/                  |	d%          n)t-        |	      d kD  r|j/                  |	d%   d
   |	d&d'       ||d(<   |S ))Nr   .r   r   entryPointRoot
otherPropsdeeplinkAdCardsnapshotzUnable to extract ad datar(   z{{product.name}}display_format	page_namez by )delim	from_dictbody__mmarkupc                 ,    |d   j                        S )Nr   r;  )r   r   	markup_ids     r   r   z-FacebookAdsIE._real_extract.<locals>.<lambda>D  s    AaDOO\eLf r   __htmlc                 .    | j                  d       xr | S Nz
{{product.r;  r   s    r   r   z-FacebookAdsIE._real_extract.<locals>.<lambda>E  s    \8R4R4XWX r   rx  link_descriptionc                 ,    | j                  d      s| S d S r3  r;  r   s    r   r   z-FacebookAdsIE._real_extract.<locals>.<lambda>K  s    ALLQ]D^1 dh r   page_idpage_profile_urirq  page_like_count)r)   r*   r.   r  r,   r   )videoscardsc                 B    t        fdj                  D              S )Nc              3   R   K   | ]  }t        j                  |               y wr,  )r   r   )r2  r%  r   s     r   r4  z@FacebookAdsIE._real_extract.<locals>.<lambda>.<locals>.<genexpr>U  s     8jSTQUU1X9N8js   $')r6  r  r  s    `r   r   z-FacebookAdsIE._real_extract.<locals>.<lambda>U  s    S8jX\XiXi8j5j r   r   r   r)   video_preview_image_url)r&   r(   r)   r-   r  r   r  )r(   r  _typer&   )r  r   r   r   r   r  loadsr   r   r	   r   r   r   r
   r6  r   r   r   r   r{  r  r"  r  ry  )r   r3   r   r   r   r   r(   r.  r4   r  r  entryr0  s   `           @r   r  zFacebookAdsIE._real_extract3  s~   >>#&((h7 JJGQTWZ^ZdZdYeSfh	sCh	3Sl,<j4&%R S  !<==!!33!"2KvY]^E u'=>	iCc8X?fJ<*X)Y[^*` a  !>T!
 .1h0ij$se,%}5/+?)K=9,{m<
 
	 #L&(jk%mno
 		JC NN!
!C5)7+4u+E6;MNnR[R_R_`mRn(3L)MN007 		 w<1WQZ(\A G,"#  #	$r   N)
r  r  r  r  r  r   r  r  r"  r  r   r   r   r	  r	    s    `JG J#&A ,.#+%
" J#,A&,.#+%
" J#f--.#%	
  L H_2Fj %B$$A$	L8r   r	  )'r  r   urllib.parser  commonr   compatr   
networkingr   networking.exceptionsr   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  r	  r   r   r   <module>rG     s|     	  ! ,   6     2^: ^:B!] !<$-M $-NV] V<EM Er   