
    VGha                         d dl Z d dlZd dlZd dlZddlmZ ddlmZ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 G d de      Z G d de      Z G d de      Zy)    N   )InfoExtractor   )determine_extformat_fieldint_or_nonestr_or_nonetraverse_objtry_getc                   (    e Zd ZdZd Zd Zd Zd Zy)GameJoltBaseIEzhttps://gamejolt.com/site-api/c                     |j                  di       j                  ddi        | j                  | j                  |z   g|i |d   S )NheadersAcceptzimage/webp,*/*payload)
setdefaultupdate_download_json	_API_BASE)selfendpointargskwargss       b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/gamejolt.py	_call_apizGameJoltBaseIE._call_api   sN    )R(//;K0LM"t""4>>H#<NtNvNyYY    c                    |j                  d      xs g g }}|D ]  }|j                  d      dk7  r!|j                  | j                  |             8|j                  d      xs g d}}|D ]6  }|j                  d      r	||d   z  }|j                  d      dk(  s2|dz  }8 |j                  |        dj                  |      S )Ncontenttype	paragraph text	hardBreak
)getappend_parse_content_as_textjoin)r   r   outer_contentsjoined_contentsouter_contentinner_contentsinner_content_textinner_contents           r   r'   z%GameJoltBaseIE._parse_content_as_text   s    *1++i*@*FB+ 
	7M  (K7&&t'B'B='QR1>1B1B91M1SQSUW.N!/ / $$V,&-*??&"&&v.+=&$.&	/
 ""#56
	7 yy))r   c              #     K   | j                  ddgt        j                               d   d}}|dv }t        j                  d      D ]  }| j                  d|||rd	nd
|r|n|fz  |d|       }|j                  d      s y t        |dt              D ]  }|d   | j                  | j                  |d   |            t        |j                  d      d      |j                  d      t        |dt        d      t        |dt              t        |dt              |j                  d      xs d d  t        |d   d   j                  d            } y w)Ncomment_sorthot)ie_keyr   )newyour   z"comments/Fireside_Post/%s/%s?%s=%d	scroll_idpagezDownloading comments list page )notecomments))r9   childComments.expected_typeidcomment_content	posted_on  scalevotes)user)display_namenameFr<   get_all)rD   username)rD   image_avatar	parent_id)r=   r"   	timestamp
like_countauthor	author_idauthor_thumbnailparent)_configuration_arg
GameJoltIEr2   	itertoolscountr   r%   r
   dictr'   _parse_jsonr   r	   )	r   post_num_idpost_hash_idsort_byr6   is_scrolledr7   comments_datacomments	            r   _get_commentszGameJoltBaseIE._get_comments(   s    !44^eWU_UfUfUh4ijklnp/OOA& 	TD NN4#.KFIZ^8` ` %DTF#K	 + MM
 !$$Z0'7[kop !$- 77((1B)C\RT!,W[[-ET!R")++g"6*74Vfq  |A  B!-g7K[f!g(4W>Vfq(r%kk+6>$
 
 $M*$=b$A$E$Ek$RSI)	Ts   EEc                 
   |d   }| j                  |j                  d      xs d|d      xs i }|j                  d      xs0 | j                  | j                  |j                  d      |            d }}|j                  d      rn| j                  |j                  d      xs8 | j                  d	|j                  d
|       |ddd      j                  d      |d      }| j                  |      }|j                  d      xs i }i dt        j                         dddt        |j                  d            xs d| d
|d|d|xs |d|j                  d      d|j                  d      xs |j                  d      d|j                  d      dt        |dd       d!|j                  d"      xs g D cg c]  }t        |d#        c}d$t        |d%t        &      d't        |j                  d'            d(t        |j                  d(      d)*      d+t        |j                  d,      d-.      d/t        |j                  d0      d-.      d1| j                  |j                  d
      |      }	t        |d2t        d3      xs i }
g i g }}}|
j                  d4      xs g D ]Z  }|d5   |j                  d6d7      t        |d5         |j                  d8      f\  }}}}|d9k(  s|d:k(  r;| j                  ||d;|<      \  }}|j                  |       |j!                  |       |d=k(  s|d>k(  r:| j#                  |||?      \  }}|j                  |       |j!                  |       d@|v rF|j%                  |||j                  dA      |j                  dB      |j                  dC      dD       |j%                  |||j                  dA      |j                  dB      |j                  dC      dE|v rdFnd dG       ] |r#i |	|||t        |
j                  dH            dIS g }|j                  d4g       D ]  }t        |d5         dJk7  sdJ|j                  d6d7      vr)|j%                  |d   |dK   j'                  dL      d)   dMD cg c]a  }|j                  |      rN|||   |d5k(  r|j                  dA      nd |d5k(  r|j                  dB      nd |d5k(  r|j                  dC      nd dFdGc c}dN        |r
dOdPi|	dQ|iS t        |dRt        d3      }|r| j)                  |      S |	S c c}w c c}w )SNhashlead_content{}FfatalleadStrhas_articlearticle_contentzweb/posts/article/r=   zDownloading article metadataz#Unable to download article metadatar8   errnoterd   articlerD   extractor_key	extractorGameJoltwebpage_urlurlzhttps://gamejolt.com/p/titledescription
display_idsluguploaderrE   rF   uploader_idrI   uploader_urlzhttps://gamejolt.com%s
categoriescommunitiesc                 j    dj                  | d   d   | d   j                  d      xs | d   d         S )Nz{} - {}	communityrF   channeldisplay_titlerp   )formatr%   )xs    r   <lambda>z,GameJoltBaseIE._parse_post.<locals>.<lambda>Z   se    y7G7G+W]H^`abk`l`p`p  rA  aB  a[  FG  HQ  FR  SZ  F[  8\ r   tags)r   .r   .marks.attrstagr;   rM   comment_countr   )defaultrL   added_onr@   rA   release_timestamppublished_on__post_extractor)videos.rG   mediaimg_urlfiletyper!   r   zapplication/vnd.apple.mpegurlm3u8mp4)m3u8_idzapplication/dash+xmlmpd)mpd_idimagewidthheightfilesize)r=   ro   r   r   r   z
video-cardnone)	format_idro   r   r   r   acodec
view_count)formats	subtitles
thumbnailsr   giffilename.)r   mediaserver_urlmediaserver_url_mp4mediaserver_url_webm)r=   rp   r   _typeplaylistentries)embeds.ro   )rW   r%   r'   r   rS   r2   r	   r   r   r
   r   extract_commentsrV   r   #_extract_m3u8_formats_and_subtitlesextendr   "_extract_mpd_formats_and_subtitlesr&   split
url_result)r   	post_datapost_idra   rq   full_descriptionrg   	user_datacategory	info_dict
video_datar   r   r   r   	media_urlmimetypeextmedia_idhls_formatshls_subsdash_formats	dash_subsgif_entriesurl_key	embed_urls                             r   _parse_postzGameJoltBaseIE._parse_postA   sI   F#''	n(E(Mw^c'djhj(1i(@ )FDD_D_Y]]>:GDEFGK &=='"../0 R>>$6y}}T77S6T"UW^'EOt  }B " C DG  DG  HQ  DRu	 / &O
  $::?KMM&)/R	
Z..0

 ;y}}U';<cBYZaYb@c
 '	

 [
 +:{
 )--/
 	n5Nv9N
 9==4
 LE;ST
 +4==+G+M2O' #8  .\  ] O
 L\lwy
 +immL&AB
  [)GQRS!
" Y]]:%>dK#
$  Y]]>-JRV!W%
&  5 5immD6I7 S'
	. ")_DZ_`fdf
)+RJ^^G,2 	E16y1A599ZY[C\^klqr{l|^}  @E  @I  @I  JP  @Q  2Q.Ixh::cVm(,(P(PQZ\cejt|(P(}%X{+  *33se|*.*Q*QR[]dmu*Q*v'i|,  +H$!!"$"YYw/#ii1 %		* 5#  !)$"YYw/#ii1 %		* 5(4	(Aft  '	8 "&()*..*FG  ]]7B/ 	EU9-.%75		R\^`Ha;aFmz*005a8 "oF rwr{r{  }D  sE ") >3:i3GUYYw/T5<	5Ieii1t9@I9M		* 5SW$ F  	  ;  !,BR]glm	??9--[OtFs   U A&UN)__name__
__module____qualname__r   r   r'   r^   r    r   r   r   r      s    0IZ* T2fr   r   c                      e Zd ZdZddi dddddd	d
dddddddddddgdddgddddddddddd ed!ed"eid#d$d%i dd&d
d'dd(dddddd)ddd*d+dg d,d ed-d.dd/gd0d1dd2d3d4d5d6d7d8dd9d:ed;d<d#d=d>i dd?dddd@d
dAddBddCddDddEddgddFddGddHddGddId ed!ed"ed#dJdKdLdMdMdNdOdPg dQdRdSeedTdUdVdWdXdYigdZd[d\d]d^d_d`d`dadadbdcgdddeeedTdfgZdg Zyh)irS   z<https?://(?:www\.)?gamejolt\.com/p/(?:[\w-]*-)?(?P<id>\w{8})z`https://gamejolt.com/p/introducing-ramses-jackson-some-fnf-himbo-i-ve-been-animating-fo-c6achnzu cd5f733258f6678b0ce500dd88166d86r=   c6achnzur   r   rr   zIintroducing-ramses-jackson-some-fnf-himbo-i-ve-been-animating-fo-c6achnzurp   ux   Introducing Ramses Jackson, some FNF himbo I’ve been animating for the past few days, hehe.
#fnfmod #fridaynightfunkinrq   rt   Jakeneutronru   rv   z!https://gamejolt.com/@Jakeneutronrw   Friday Night Funkin' - Videosr   fnfmodfridaynightfunkinrL   i9]aupload_date20211006r   i:]arelease_date	thumbnailzre:^https?://.+wgch9mhq.png$rM   r   r   )ro   md5r   z^https://gamejolt.com/p/hey-hey-if-there-s-anyone-who-s-looking-to-get-into-learning-a-n6g4jzpq 79a931ff500a5c783ef6c3bda3272e32XsNA_mzC0q4z5Adobe Animate CC 2021 Tutorial || Part 1 - The Basicsz$md5:9d1ab9e2625b3fe1f42b2a44c67fdd13z'http://www.youtube.com/user/Jakeneutrondurationi  )zAdobe Animate CCTutorial	Animationz
The BasicszFor Beginnersplayable_in_embedT	Educationavailabilitypublicz:https://i.ytimg.com/vi_webp/XsNA_mzC0q4/maxresdefault.webp	age_limitr   live_statusnot_livechannel_urlz8https://www.youtube.com/channel/UC6_L7fnczNalFZyBthUE9oAUC6_L7fnczNalFZyBthUE9oA20211015zcount:18)r{   
channel_idr   r   chaptersz4https://gamejolt.com/p/i-fuckin-broke-chaos-d56h3eue 786c1ccf98fde02c03a2768acb4258d0d56h3euezi-fuckin-broke-chaos-d56h3euezI fuckin broke Chaos.z@I moved my tab durning the cutscene so now it's stuck like this.Jeff____________The_Nyesh_Manz#https://gamejolt.com/@The_Nyesh_Mani]a20211218i
^azre:^https?://.+euksy8bd.png$zahttps://gamejolt.com/p/hello-everyone-i-m-developing-a-pixel-art-style-mod-for-fnf-and-i-vs4gdrd8vs4gdrd8zJhello-everyone-i-m-developing-a-pixel-art-style-mod-for-fnf-and-i-vs4gdrd8z$md5:cc3d8b031d9bc7ec2ec5a9ffc707e1f9QuesoguyCheeseguyDevz"https://gamejolt.com/@CheeseguyDev)zGame Dev - GeneralzArts n' Crafts - CreationszPixel Art - showcasezFriday Night Funkin' - Modsz&Newgrounds - Friday Night Funkin (13+)iaia)r=   rr   rp   rq   rt   ru   rv   rw   rL   r   rM   r   r   dszyjnwiwebmz"gif-presentacion-mejorado-dszyjnwi)r=   r   rp   r   ro   r   r   playlist_countz#https://gamejolt.com/p/gif-yhsqkumq#   yhsqkumqzgif-yhsqkumqGIFDaniilTvmanz!https://gamejolt.com/@DaniilTvmanz2Five Nights At The AGK Studio Comunity - NEWS gameiaia)ro   r   r   c                 v    | j                  |      }| j                  d| |      d   }| j                  |      S )Nzweb/posts/view/post)	_match_idr   r   )r   ro   r   r   s       r   _real_extractzGameJoltIE._real_extract%  sC    ..%NNgY'228:		**r   N)r   r   r   
_VALID_URLint_TESTSr   r   r   r   rS   rS      s   PJ r1
*
5
 e
   Q	

   W
 
 =
 ?
 ;<
 X23
 
 :
  
 J
 7
  #!
" S#
$ #%
	4 p1
-
L
 A
 	

 =
 E
 5
 
 `
 #
  
 ;-
 H
 U
 
  :!
" U#
$ %4%"-
	< F1
*
5
 9
 ,	

 ^
 *
 ?
 A
 ;<
 
 :
  
 J
 7
 #
  S!
" ##
	2 sf;A")@e#!+ 
   =
  38 5( %(?OP#!+ 
	KwFr+r   rS   c                       e Zd Zddg fdZy)GameJoltPostListBaseIEzDownloading post listzUnable to download post listc              #   J  K   d\  }}|xs | j                  ||||      d   }|r||D ]  }	| j                  |	d           |d   d   }|dz  }| j                  ||| d| |t        j                  d	|d
      j	                               j                  d      }|r{y y w)N)r   Nr8   ri   itemsaction_resource_modelr3   r6   r   z page from)scrollDirectionscrollId)r8   ri   data)r   r   jsondumpsencoder%   )
r   r   list_idr8   ri   initial_itemspage_numr6   r   items
             r   _entrieszGameJoltPostListBaseIE._entries-  s     %)g'V]!^_f!g F&&t,C'DEEFb	+.IMHNN'4&xj(A7Y]YcYc'- )e Z 68	 #  !S\	  s   BB#!B#N)r   r   r   r
  r   r   r   r   r   ,  s    /FPn  A *r   r   c                   8    e Zd ZdZdddddddd	ig d
dgZd Zy)GameJoltUserIEz0https?://(?:www\.)?gamejolt\.com/@(?P<id>[\w-]+)z'https://gamejolt.com/@BlazikenSuperStarr   6116784zS. Blazez$md5:5ba7fbbb549e8ea2545aafbfe22eb03ar=   rp   rq   ignore_no_formats_errorTzskipping formatzNo video formats foundz!Requested format is not availablero   playlist_mincountr   paramsexpected_warningsc                    | j                  |      }| j                  d| |dd      d   }| j                  | j                  |j	                  dd      |d	      xs i       }| j                  | j                  d
| d|dd      t        |j	                  d            |j	                  d      xs |j	                  d      |      S )Nzweb/profile/@zDownloading user infozUnable to download user infor   rD   bio_contentrb   Frc   zweb/posts/fetch/user/@z?tab=activezDownloading user postszUnable to download user postsr=   rE   rF   )r   r   r'   rW   r%   playlist_resultr
  r	   )r   ro   user_idr   bios        r   r   zGameJoltUserIE._real_extractL  s    ..%NNG9%w5LVt # vv|~	))Y]]=$?PUV\Z\^##MM27);GRj  mL  M	d+,immN.K.dy}}]cOdfik 	kr   Nr   r   r   r   r   r   r   r   r   r  r  <  s?    DJ8A
 &t
 p Fkr   r  c                   8    e Zd ZdZdddddddd	ig d
dgZd Zy)GameJoltGameIEz9https?://(?:www\.)?gamejolt\.com/games/[\w-]+/(?P<id>\d+)z,https://gamejolt.com/games/Friday4Fun/655124r   655124z"Friday Night Funkin': Friday 4 Funz$md5:576a7dd87912a2dcf33c50d2bd3966d3r  r  Tr  r  c                 8   | j                  |      }| j                  d| |dd      d   }| j                  | j                  |j	                  dd      |d	      xs i       }| j                  | j                  d
| |dd      ||j	                  d      |      S )Nzweb/discover/games/zDownloading game infozUnable to download game infor   gamedescription_contentrb   Frc   zweb/posts/fetch/game/zDownloading game postszUnable to download game postsrp   )r   r   r'   rW   r%   r  r
  )r   ro   game_id	game_datarq   s        r   r   zGameJoltGameIE._real_extractg  s    ..%NN!'+W;R\z # | }CD	11Y]]+@$GX]^dbdf##MM1';WF^`  AY]]7+[: 	:r   Nr  r   r   r   r  r  W  s>    MJ=:A
 &t
 p F:r   r  c                   h    e Zd ZdZdddddddd	d
dddiddddddddiddddddddigddgZd Zy)GameJoltGameSoundtrackIEz\https?://(?:www\.)?gamejolt\.com/get/soundtrack(?:\?|\#!?)(?:.*?[&;])??game=(?P<id>(?:\d+)+)z7https://gamejolt.com/get/soundtrack?foo=bar&game=657899657899zFriday Night Funkin': Vs Oswaldr=   rp   r   184434mp3zGettin' Lucky (Menu Music)z(re:^https://.+vs-oswald-menu-music\.mp3$i wa20211025)r=   r   rp   ro   r   r   184435z Rabbit's Luck (Extended Version)z0re:^https://.+rabbit-s-luck--full-version-\.mp3$i9wa185228z
Last Strawzre:^https://.+last-straw\.mp3$ia20211102   r   c                    | j                  |      }| j                  d| |dd      }| j                  |j                  d      xs g D cg c]k  }t	        |j                  d            t	        |j                  d            t	        |j                  d            t        |j                  d	      d
      dm c}|t        |ddt        d            S c c}w )Nzweb/discover/games/overview/zDownloading soundtrack infoz"Unable to download soundtrack infor   songsr=   rp   ro   r?   r@   rA   )r=   rp   ro   r   )	microdatarF   ))twitterfbrp   FrG   )r   r   r  r%   r	   r   r
   )r   ro   r!  game_overviewsongs        r   r   z&GameJoltGameSoundtrackIE._real_extract  s    ..%*7)4gDa  lP ' Q##
 $''06B%8
 	 dhhtn- '!23txx/!,TXXk-B$!O	&
 %8
 :A,02N^isxCz{ 	{ %8s   A0CNr  r   r   r   r$  r$  r  s    pJH7

 6B%/ *	
 <J%/ *	
 %8%/ *	
%8 E# #FJ
{r   r$  c                   Z    e Zd ZdZddddddddd	g d
dddddddddd	g d
dgZd Zy)GameJoltCommunityIEzhttps?://(?:www\.)?gamejolt\.com/c/(?P<id>(?P<community>[\w-]+)(?:/(?P<channel>[\w-]+))?)(?:(?:\?|\#!?)(?:.*?[&;])??sort=(?P<sort>\w+))?z!https://gamejolt.com/c/fnf/videos2   z
fnf/videosr   z$md5:6d8c06f27460f7d35c1554757ffe53c8r  Tplaylistendr  r  r  z https://gamejolt.com/c/youtuberszyoutubers/featuredzYoutubers - featuredz$md5:53e5582c93dcc467ab597bfca4db17d4c           
      *   | j                  |      j                  dddd      \  }}}}|xs d|xs d}}| j                  d| |dd	
      d   }t        | j                  d| d| |ddd      d      xs i }|j	                  d      xs | d|j	                  d      xs | }| j                  | j                  |j	                  d      xs d|d      xs i       }	| j                  | j                  d| d| d| |dd      | d| ||	      S )Nr=   rz   r{   sortfeaturedr4   zweb/communities/view/zDownloading community infoz!Unable to download community infor   zweb/communities/view-channel//zDownloading channel infozUnable to download channel infoFrh   rF   z - r|   r   rb   rc   zweb/posts/fetch/community/z?channels[]=z&channels[]=zDownloading community postsz"Unable to download community posts)	_match_valid_urlgroupr   r
   r%   r'   rW   r  r
  )
r   ro   rr   community_idr   rZ   community_datachannel_datarp   rq   s
             r   r   z!GameJoltCommunityIE._real_extract  s   8<8M8Mc8R8X8XY]_jluw}8~5
L*g(6J8H5G
#L>2J-7Z ( \\gi $DNN+L>:,G+5V^c %3 %efoq wtv 	 "%%f-=>c,BRBRSbBcBqgqArs11^//0EFN$PZbghnlnp##MM,\N,wi|\f[gh9;_a nAj\*E;	@ 	@r   Nr  r   r   r   r6  r6    sq     ]J25A
 '+
 p 2&+A
 '+
 pF8@r   r6  c                   z    e Zd ZdZddddZ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gZd Zd Zy)GameJoltSearchIEz}https?://(?:www\.)?gamejolt\.com/search(?:/(?P<filter>communities|users|games))?(?:\?|\#!?)(?:.*?[&;])??q=(?P<id>(?:[^&#]+)+)z https://gamejolt.com/@{username}zhttps://gamejolt.com/c/{path}z&https://gamejolt.com/games/{slug}/{id})usersrx   gamesz,https://gamejolt.com/search?foo=bar&q=%23fnfr7  z#fnfr&  Tr8  r  r  z6https://gamejolt.com/search/communities?q=cookie%20run
   z
cookie run)ro   r  r   z'https://gamejolt.com/search/users?q=mlpi  mlpz*https://gamejolt.com/search/games?q=robloxi  robloxc           	   #     K   | j                  d| d| |d| dd| d      }t        |d| d      }|sy t        d	t        j                  ||d
   z        d	z         D ]d  }| j                  d| d| d| |d| d| d| d      }||   D ]2  }| j                   | j                  |   j                  di |       4 f y w)Nzweb/search/z?q=zDownloading z listzUnable to download r   rU   Countr   perPagez&page=z list page r   )r   r
   rangemathceilr   _URL_FORMATSr}   )	r   queryfilter_modedisplay_queryinitial_search_dataentries_numr7   search_resultsresults	            r   _search_entriesz GameJoltSearchIE._search_entries  s'    "nn+c%1=}E2>QR]Q^^c<d - f ##6K=PUAVW!TYY{5H5S'STWXXY 	WD!^^k]#eWF4&A=#K=D6BNabmannsLt , vN )5 Woo&Kd&7&7&D&K&K&Uf&UVVW		Ws   CC	c                 @   | j                  |      j                  dd      \  }}t        j                  j	                  |      }| j                  |r| j                  |||      ||      S | j                  d| || j                  d| |dd      d   	      ||      S )
Nfilterr=   zweb/posts/fetch/search/zweb/search?q=zDownloading initial post listz$Unable to download initial post listr   posts)r  )	r>  r?  urllibparseunquoter  rX  r
  r   )r   ro   rR  rQ  rS  s        r   r   zGameJoltSearchIE._real_extract  s    !2237==hMU,,U3##GRD  ]C =* 	*X\XeXe)%1=PTP^P^#E7+]8Bh Q_ QjjqQs Yf Yt =* 	*r   N)r   r   r   r   rP  r   rX  r   r   r   r   rD  rD    s     RJ369L >

 '+
 p H!
 9 
 < 
5!FFW*r   rD  )rT   r  rN  urllib.parser\  commonr   utilsr   r   r   r	   r
   r   r   rS   r   r  r  r$  r6  rD  r   r   r   <module>rb     s        ! V] Vr+ +D*^ * k+ k6:+ :61{~ 1{h0@0 0@f@*- @*r   