§
    šŠtjá  ã                   óZ   — d Z ddlmZmZ ddlmZmZmZ ddlm	Z	m
Z
  G d„ de¦  «        ZdS )zUtil that calls Steam-WebAPI.é    )ÚAnyÚList)Ú	BaseModelÚ
ConfigDictÚmodel_validator)ÚSTEAM_GET_GAMES_DETAILSÚSTEAM_GET_RECOMMENDED_GAMESc                   óT  — e Zd ZU dZdZeed<   ddedœddedœgZ	e
e         ed	<    ed
¬¦  «        Zde
e         fd„Z ed¬¦  «        ededefd„¦   «         ¦   «         Zdedefd„Zdedefd„Zdedefd„Zdedefd„Zdedefd„Zdede
e         fd„Zdedefd„Zdededefd „ZdS )!ÚSteamWebAPIWrapperzWrapper for Steam API.NÚsteamÚget_game_detailszGet Game Details)ÚmodeÚnameÚdescriptionÚget_recommended_gameszGet Recommended GamesÚ
operationsÚforbid)ÚextraÚreturnc                 ó   — | j         S )zReturn a list of operations.)r   )Úselfs    úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/utilities/steam.pyÚget_operationsz!SteamWebAPIWrapper.get_operations%   s
   € àŒÐó    Úbefore)r   Úvaluesc                 óÐ   — 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w	 ddlm} n# t          $ r t          d¦  «        ‚w xY w |d¦  «        } ||¦  «        }||d<   |S )z8Validate api key and python package has been configured.r   )ÚSteamz+python-steam-api library is not installed. )Úconfigz#decouple library is not installed. Ú	STEAM_KEYr   )r   r   ÚImportErrorÚdecoupler   )Úclsr   r   r   ÚKEYr   s         r   Úvalidate_environmentz'SteamWebAPIWrapper.validate_environment)   sÀ   € ð	MØ#Ð#Ð#Ð#Ð#Ð#Ð#øÝð 	Mð 	Mð 	MÝÐKÑLÔLÐLð	Møøøð	EØ'Ð'Ð'Ð'Ð'Ð'Ð'øÝð 	Eð 	Eð 	EÝÐCÑDÔDÐDð	Eøøøð ˆf�[Ñ!Ô!ˆØ��c‘
”
ˆØˆˆw‰Øˆs   ‚	 ‰#§. ®AÚdetailsc                 ó”   — d}|                      ¦   «         D ]0\  }}|dt          |¦  «        z   dz   t          |¦  «        z   dz   z  }Œ1|S )zParse the details result.Ú zThe z is: ú
)ÚitemsÚstr)r   r&   ÚresultÚkeyÚvalues        r   Úparse_to_strzSteamWebAPIWrapper.parse_to_str?   sU   € àˆØ!Ÿ-š-™/œ/ð 	Fð 	F‰JˆC�Ø�f�s 3™xœxÑ'¨'Ñ1µC¸±J´JÑ>ÀÑEÑEˆFˆFØˆr   Úgamesc                 ób   — i }|d         D ]#}|d         |d<   |d         |d<   |d         |d<    |S )zjThe response may contain more than one game, so we need to choose the right
        one and return the id.ÚappsÚidÚlinkÚprice© )r   r0   Ú	game_infoÚapps       r   Úget_id_link_pricez$SteamWebAPIWrapper.get_id_link_priceF   sN   € ð ˆ	Ø˜”=ð 	ð 	ˆCØ! $œiˆI�d‰OØ # F¤ˆI�fÑØ!$ W¤ˆI�gÑØØÐr   Úhtml_stringc                 óN   — ddl m}  ||d¦  «        }|                     ¦   «         S )Nr   )ÚBeautifulSoupzhtml.parser)Úbs4r<   Úget_text)r   r:   r<   Úsoups       r   Úremove_html_tagsz#SteamWebAPIWrapper.remove_html_tagsR   s3   € Ø%Ð%Ð%Ð%Ð%Ð%àˆ}˜[¨-Ñ8Ô8ˆØ�}Š}‰ŒÐr   r   c                 ó`  — | j         j                             |¦  «        }|                      |¦  «        }|                      |¦  «        }t          |                     d¦  «        ¦  «        }| j         j                             |¦  «        }|                     |¦  «                             d¦  «        }|                     d¦  «        }|                      |¦  «        }|                     |¦  «                             d¦  «                             d¦  «        }	d|z   dz   dz   |	z   dz   }
||
z   }|S )Nr3   ÚdataÚdetailed_descriptionÚsupported_languageszThe summary of the game is: r)   z)The supported languages of the game are: )	r   r2   Úsearch_gamesr9   r/   r+   ÚgetÚget_app_detailsr@   )r   r   r0   Úinfo_partOne_dictÚinfo_partOner3   Ú	info_dictrB   rC   rD   Úinfo_partTwoÚinfos               r   Údetails_of_gamesz#SteamWebAPIWrapper.details_of_gamesX   s3  € Ø”
”×,Ò,¨TÑ2Ô2ˆØ ×2Ò2°5Ñ9Ô9ÐØ×(Ò(Ð):Ñ;Ô;ˆÝÐ"×&Ò& tÑ,Ô,Ñ-Ô-ˆØ”J”O×3Ò3°BÑ7Ô7ˆ	Ø�}Š}˜RÑ Ô ×$Ò$ VÑ,Ô,ˆØ#ŸxšxÐ(>Ñ?Ô?Ðð  $×4Ò4Ð5IÑJÔJÐØ'Ÿmšm¨BÑ/Ô/×3Ò3°FÑ;Ô;×?Ò?Ð@UÑVÔVÐà*Ø"ñ#àñð :ñ:ð "ñ	"ð
 ñð 	ð ˜lÑ*ˆØˆr   c                 ó`   — | j         j                             |¦  «        }|d         d         }|S )NÚplayerÚsteamid)r   ÚusersÚsearch_user)r   r   ÚuserÚsteam_ids       r   Úget_steam_idzSteamWebAPIWrapper.get_steam_idp   s-   € ØŒzÔ×+Ò+¨DÑ1Ô1ˆØ˜”> )Ô,ˆØˆr   rT   c                 óD   — | j         j                             |dd¦  «        S )NF)r   rQ   Úget_owned_games)r   rT   s     r   Úget_users_gamesz"SteamWebAPIWrapper.get_users_gamesu   s   € ØŒzÔ×/Ò/°¸%ÀÑGÔGÐGr   c                 óÀ  ‡— 	 dd l }n# t          $ r t          d¦  «        ‚w xY w|                      |¦  «        }i }d}d}|d         D ]‚}|d         }d|dœ}	|                     |	¦  «        }
|
                     dd¦  «                             d	¦  «        }|D ]2}||v r||xx         d
z  cc<   nd
||<   ||         |k    r
||         }|}Œ3Œƒt          ¦   «         }	d|	d<   ||	d<   |                     |	¦  «        }t          |                     ¦   «         d„ d¬¦  «        }d„ |d         D ¦   «         Šˆfd„|D ¦   «         }d„ |d d…         D ¦   «         }t          |¦  «        S )Nr   z$steamspypi library is not installed.r(   r0   ÚappidÚ
appdetails)ÚrequestrZ   Úgenrez, é   r\   c                 ó.   — |                       dd¦  «        S )NÚaverage_foreverr   )rF   )Úxs    r   ú<lambda>z6SteamWebAPIWrapper.recommended_games.<locals>.<lambda>•   s   € ¨¯ªÐ/@À!Ñ)DÔ)D€ r   T)r-   Úreversec                 ó   — g | ]
}|d          ‘ŒS ©rZ   r6   ©Ú.0Úgames     r   ú
<listcomp>z8SteamWebAPIWrapper.recommended_games.<locals>.<listcomp>—   s   € ÐFÐFÐF¨�t˜G”}ÐFÐFÐFr   c                 ó(   •— g | ]}|d          ‰v¯|‘ŒS re   r6   )rg   rh   Úowned_gamess     €r   ri   z8SteamWebAPIWrapper.recommended_games.<locals>.<listcomp>˜   s.   ø€ ð 
ð 
ð 
Ø¨D°¬MÀÐ,LÐ,LˆDÐ,LÐ,LÐ,Lr   c                 ó   — g | ]
}|d          ‘ŒS )r   r6   rf   s     r   ri   z8SteamWebAPIWrapper.recommended_games.<locals>.<listcomp>›   s   € Ð"PÐ"PÐ"P°D 4¨¤<Ð"PÐ"PÐ"Pr   é   )
Ú
steamspypir!   rX   ÚdownloadrF   ÚsplitÚdictÚsortedr   r+   )r   rT   rn   Úusers_gamesr,   Úmost_popular_genreÚmost_popular_genre_countrh   rZ   Údata_requestÚ
genreStoreÚ	genreListr]   rB   Úsorted_dataÚremaining_gamesÚtop_5_popular_not_ownedrk   s                    @r   Úrecommended_gamesz$SteamWebAPIWrapper.recommended_gamesx   sò  ø€ ð	FØÐÐÐÐøÝð 	Fð 	Fð 	FÝÐDÑEÔEÐEð	Føøøà×*Ò*¨8Ñ4Ô4ˆØ!#ˆØÐØ#$Ð Ø Ô(ð 	/ð 	/ˆDØ˜”MˆEØ'3¸eÐDÐDˆLØ#×,Ò,¨\Ñ:Ô:ˆJØ"Ÿš w°Ñ3Ô3×9Ò9¸$Ñ?Ô?ˆIà"ð /ð /�Ø˜F�?�?Ø˜5�M�M”M QÑ&�M�M‘M�Mà$%�F˜5‘MØ˜%”=Ð#;Ò;Ð;Ø/5°e¬}Ð,Ø).Ð&øð/õ ‘v”vˆØ")ˆ�YÑØ 2ˆ�WÑØ×"Ò" <Ñ0Ô0ˆÝØ�KŠK‰MŒMÐDÐDÈdð
ñ 
ô 
ˆð GÐF°¸WÔ1EÐFÑFÔFˆð
ð 
ð 
ð 
Ø(ð
ñ 
ô 
ˆð #QÐ"P¸OÈBÈQÈBÔ<OÐ"PÑ"PÔ"PÐÝÐ*Ñ+Ô+Ð+s   ƒ ˆ"r   rh   c                 ó”   — |dk    r|                       |¦  «        S |dk    r|                      |¦  «        S t          d|› d�¦  «        ‚)NÚget_games_detailsr   zInvalid mode z for Steam API.)rM   r|   Ú
ValueError)r   r   rh   s      r   ÚrunzSteamWebAPIWrapper.runž   s\   € ØÐ&Ò&Ð&Ø×(Ò(¨Ñ.Ô.Ð.ØÐ,Ò,Ð,Ø×)Ò)¨$Ñ/Ô/Ð/åÐB¨TÐBÐBÐBÑCÔCÐCr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r	   r   r   rq   r   Úmodel_configr   r   Úclassmethodr%   r+   r/   r9   r@   rM   rU   rX   r|   r€   r6   r   r   r   r      s  € € € € € € Ø Ð à€Eˆ3ÐÐÑð 'Ø&Ø2ð	
ð 	
ð ,Ø+Ø6ð	
ð 	
ð€J��T”
ð ð ñ ð �:Øðñ ô €Lð  T¤
ð ð ð ð ð €_˜(Ð#Ñ#Ô#Øð¨$ð °3ð ð ð ñ „[ñ $Ô#ðð( Dð ¨Sð ð ð ð ð
 tð 
°ð 
ð 
ð 
ð 
ð¨Cð °Cð ð ð ð ð Sð ¨Sð ð ð ð ð0 ð ¨ð ð ð ð ð
H¨ð H°°S´	ð Hð Hð Hð Hð$,¨#ð $,°#ð $,ð $,ð $,ð $,ðLD˜ð D 3ð D¨3ð Dð Dð Dð Dð Dð Dr   r   N)r„   Útypingr   r   Úpydanticr   r   r   Ú&langchain_community.tools.steam.promptr   r	   r   r6   r   r   ú<module>r‹      s±   ðØ #Ð #à Ð Ð Ð Ð Ð Ð Ð à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ðWDð WDð WDð WDð WD˜ñ WDô WDð WDð WDð WDr   