U
    gM5                     @   sP   d dl Z d dlZd dlZddlmZ ddlmZmZm	Z	m
Z
 G dd deZdS )    N   )InfoExtractor   )determine_extparse_count
remove_endunified_timestampc                   @   sz  e Zd ZdZdZdZee e Zddee	j
e dZde dZeeZd	e d
dddddddd	e dddeeeddd	e ddddddddd	e dddeeeed dd	e d!d"dd#d$dd%d&d	e d'd(d)eeeed d*gd+d	e d,d-dd.d/dddd	e dd0d1eeeed dd	e d2d3dd4d5dd6d7d	e d8d9d:eeeed d*gd;d<id=gZd>d? Zd@S )ANitterIE)z>3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onionzEnitter.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onionz>nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onionz>npf37k3mtzwxreiw52ccs5ay4e6qt2fkcs2ndieurdyn2cuzzsfyfvid.onionzEnitter.v6vgyqpa7yefkorazmg5d5fimstmvm2vtbirt6676mt7qmllrcnwycqd.onionz>i23nv6w3juvzlw32xzoxcqzktegd4i4fu3nmnc2ewv4ggiu4ledwklad.onionz>26oq3gioiwcmfojub37nz5gzbkdiqp7fue5kvye7d4txv4ny6fb4wwid.onionz>vfaomgh4jxphpbdfizkm5gbtjahmei234giqj4facbwhrfjtcldauqad.onionz>iwgu3cv7ywf3gssed5iqtavmrlszgsxazkmwwnt4h2kdait75thdyrqd.onionz>erpnncl5nhyji3c32dcfmztujtl3xaddqb457jsbkulq24zqq7ifdgad.onionz>ckzuw5misyahmg7j5t5xwwuj3bwy62jfolxyux4brfflramzsvvd3syd.onionz>jebqj47jgxleaiosfcxfibx2xdahjettuydlxbg64azd4khsxv6kawid.onionz>nttr2iupbb6fazdpr2rgbooon2tzbbsvvkagkgkwohhodjzj43stxhad.onionz>nitraeju2mipeziu2wtcrqsxg7h62v5y4eqgwi75uprynkj74gevvuqd.onionzEnitter.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onionz>ibsboeui2im5o7dxnik3s5yghufumgy5abevtij5nbizequfpu4qi4ad.onionz>ec5nvbycpfa5k6ro77blxgkyrzbkv7uy6r5cngcbkadtjj2733nm3uyd.onionz
nitter.i2pz<u6ikd6zndl3c4dsdq4mmujpntgeevdk5qzkfb57r4tnfeccrn2qa.b32.i2pz>nitterlgj3n5fgwesu3vxc5h67ruku33nqaoeoocae2mvlzhsu6k7fqd.onion)]znitter.lacontrevoie.frznitter.fdn.frznitter.1d4.usznitter.kavin.rocksznitter.unixfox.euznitter.domain.glassznitter.namazso.euzbirdsite.xanny.familyznitter.moomoo.mezbird.trom.tfz	nitter.itztwitter.censors.usznitter.grimneko.deztwitter.076.ne.jpznitter.fly.devznotabird.siteznitter.weiler.rocksznitter.sethforprivacy.comznitter.cutelab.spacez	nitter.nlznitter.mint.lgbtznitter.bus-hit.meznitter.esmailelbob.xyzztw.artemislena.euznitter.winscloud.netznitter.tiekoetter.comznitter.spaceint.frznitter.privacy.com.deznitter.poast.orgznitter.bird.froth.zoneznitter.dcs0.huztwitter.dr460nf1r3.orgznitter.garudalinux.orgztwitter.femboy.huz	nitter.czznitter.privacydev.netznitter.evil.sitetweet.lambda.danceznitter.kylrth.comznitter.foss.wtfznitter.priv.pwnitter.tokhmi.xyzznitter.catalyst.sxzunofficialbird.comznitter.projectsegfau.ltznitter.eu.projectsegfau.ltzsingapore.unofficialbird.comzcanada.unofficialbird.comzindia.unofficialbird.comznederland.unofficialbird.comzuk.unofficialbird.comzn.l5.caznitter.slipfox.xyzznitter.soopy.moeznitter.qwik.spacezread.whatever.socialznitter.rawbit.ninjaz
nt.vern.cczntr.odyssey346.devz	nitter.irznitter.privacytools.ioznitter.sneed.networkzn.sneed.networkznitter.manasiwibi.comznitter.smnz.deznitter.twei.spaceznitter.inpt.frznitter.d420.deznitter.caioalonso.comz	nitter.atznitter.drivet.xyzz	nitter.pwznitter.nicfab.euzbird.habedieeh.reznitter.hostux.netznitter.adminforge.deznitter.platypush.techznitter.mask.shznitter.pufe.orgznitter.us.projectsegfau.ltznitter.arcticfoxes.netzt.com.sbznitter.kling.ggznitter.ktachibana.partyznitter.riverside.rocksznitter.girlboss.ceoznitter.lunar.icuztwitter.moe.ngoznitter.freedit.euzntr.frail.duckdns.orgznitter.librenode.orgzn.opnxng.comznitter.plus.st),znitter.ethibox.frz
nitter.netzis-nitter.resolv.eezlu-nitter.resolv.eeznitter.13ad.deznitter.40two.appznitter.cattube.orgz	nitter.ccznitter.dark.failznitter.himiko.cloudznitter.koyu.spaceznitter.mailstation.deznitter.mastodont.catznitter.tedomum.netr   z nitter.weaponizedhumiliation.comznitter.vxempire.xyzr
   z	nitter.caznitter.42l.frznitter.pussthecat.orgznitter.nixnet.servicesz	nitter.euznitter.actionsack.comz	nitter.huztwitr.gqznittereu.moomoo.mezbird.from.tfztwitter.grimneko.deznitter.alefvanoon.xyzzn.hyperborea.cloudztwitter.mstdn.socialznitter.silkky.cloudznttr.streamzfuckthesacklers.networkznitter.govt.landznitter.datatunnel.xyzzde.nttr.streamztwtr.bch.barznitter.exonip.deznitter.mastodon.proznitter.notraxx.chznitter.skrep.inznitter.snopyta.orgz(?:|)z	https?://z//(?P<uploader_id>.+)/status/(?P<id>[0-9]+)(#.)?zhttps://z%/firefox/status/1314279897502629888#mZ1314279897502629888mp4z$md5:7890a9277da4639ab624dd899424c5d8z$md5:5fea96a4d3716c350f8b95b21b3111fezre:^https?://.*\.jpg$u   Firefox 🔥Zfirefoxz/firefoxZ20201008i(b_)idexttitledescription	thumbnailuploaderuploader_iduploader_urlupload_date	timestamp
like_countrepost_countcomment_count)url	info_dictz&/Le___Doc/status/1299715685392756737#mZ1299715685392756737u<   re:^.* - "Je ne prédis jamais rien"
D Raoult, Août 2020...u3   "Je ne prédis jamais rien"
D Raoult, Août 2020...zre:^Le *DocZLe___Docz	/Le___DocZ20200829i,fJ_)r   r   r   r   r   r   r   r   r   r   Z
view_countr   r   r   z%/mozilla/status/1321147074491092994#mZ1321147074491092994z$md5:8290664aabb43b9189145c008386bf12z$md5:9cf2762d49674bc416a191a689fb2aaaZMozillaZmozillaz/mozillaZ20201027i]_z2Ignoring subtitle tracks found in the HLS manifest)r   r   expected_warningsz%/firefox/status/1354848277481414657#mZ1354848277481414657z$md5:bef647f03bd1c6b15b687ea70dfc9700z$md5:5efba25e2f9dac85ebcd21160cb4341fZ20210128iX`z*/LocalBateman/status/1678455464038735895#mZ1678455464038735895zFYour Typical Local Man - Local man, what did Romanians ever do to you?z-Local man, what did Romanians ever do to you?zYour Typical Local ManZLocalBatemanz/LocalBatemanZ20230710i>dZskip_downloadZm3u8)r   r   r   paramsc                    s    |dd\}}tj|}|j d|j } |jdd  || }|	d}|dkrr||d  d
| d	d
}t|}	|	dkr j||dd}
n||	dg}
 j|d dpԈ jdddd }} jddddp|} jdddd}|r| d| } fdddD }dd | D } d|dpjtd
| jddddd fd!d"d#D } jd$d%d&dd'd&}||||t||| d(| |
|d)
|S )*Nr   r   z://ZhlsPlaybackonzclass="main-tweet"r   z{}{}z1(?:<video[^>]+data-url|<source[^>]+src)="([^"]+)"z	video urlZunknown_videor   )r   )r   r   )defaultz,<div class="tweet-content[^>]+>([^<]+)</div>r   Ffatalz(<a class="username"[^>]+title="@([^"]+)"zuploader idz'<a class="fullname"[^>]+title="([^"]+)"zuploader namez - c              	      s@   i | ]8}|d   d j d|d  d|d   dddqS )r   _countz<span[^>]+class="icon-r   z[^>]*></span>([^<]*)</div>z countFr"   )_html_search_regex).0x)selfwebpage ;/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/nitter.py
<dictcomp>G  s      z*NitterIE._real_extract.<locals>.<dictcomp>))viewZplay)likeZheart)ZrepostZretweet)commentr/   c                 S   s&   i | ]\}}||d krdnt |qS ) r   )r   )r&   fieldcountr*   r*   r+   r,   M  s      zog:imagezthumbnail urlz<video[^>]+poster="([^"]+)"z%3Asmallc                    s    g | ]}|  d | dqS )z%3A)r   r   r*   )r&   Zid_)r   r*   r+   
<listcomp>T  s   z*NitterIE._real_extract.<locals>.<listcomp>)ZthumbsmallZlargeZmediumorigz8<span[^>]+class="tweet-date"[^>]*><a[^>]+title="([^"]+)"zupload dater0      ·/)
r   r   r   r   r   r   r   formats
thumbnailsr   )Z_match_valid_urlgroupurllibparseurlparseschemenetlocZ_set_cookieZ_download_webpagefindformatr%   r   Z_extract_m3u8_formatsZ_og_search_descriptionitemsZ_html_search_metar   replacer   )r(   r   Zvideo_idr   
parsed_urlbase_urlZfull_webpageZmain_tweet_startZ	video_urlr   r8   r   r   r   countsr9   dater*   )r(   r   r)   r+   _real_extract$  s    

     
         
   zNitterIE._real_extractN)__name__
__module____qualname__ZNON_HTTP_INSTANCESZHTTP_INSTANCESZDEAD_INSTANCESZ	INSTANCESjoinmapreescapeZ_INSTANCES_REZ
_VALID_URLrandomchoiceZcurrent_instanceintZ_TESTSrH   r*   r*   r*   r+   r	      s   `3










ar	   )rP   rN   urllib.parser;   commonr   utilsr   r   r   r   r	   r*   r*   r*   r+   <module>   s
   