
    [eDT                     T   S SK r S SKrS SKJr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SKrS SK	r	\	R                  R                  \R                  R                  S5      5        S\R                  S'   S SKr\R                  " 5         S SKJr  S SKJr  S SKJr  S SKrS	 rS
 rS rS\R2                  4S jrS\R2                  4S jrS\R2                  4S jrS\4S jrS\4S jr S\4S jr!S r"S r#S r$S r% S(S jr&S r'S r(S r)S r*S r+S  r,S! r-S" r.S# r/S$ r0S% r1S& r2S' r3g))    N)datetimez/home/alex/cs2sniperzcs2sniper.settingsDJANGO_SETTINGS_MODULE)cs2snipe_queries)cs2snipe_found)timezonec                 F   S/ 0/nSnSnU  H[  nUS:  a  US-  nUR                  S/ 05        Sn X   S   R                  S[        UR                  5       5      S   05        US-  nM]   U$ ! [         a*  n[	        U 5        [	        [        U5      5         S nAM  S nAff = f)Nlinksr   c      linkappendlistvalues	Exceptionprintstr)inspect_link_listbulk_inspect_link_listsplitted_list_indexinspect_link_counterinspect_linkes         1/home/alex/cs2sniper/MarketBot/HelperFunctions.py
bulkActionr   Y   s    &m_) "$1$"))7B-8#$ 	"7@GGl1134Q78 !A%  "!	  	#$#a&M	s   7A,,
B 6BB c                 \   0 nU S   S:X  a  SUS'   [        [        U S   5      5      [        [        US   5      5      :X  a$  [        U S   5      [        US   5      :X  a7  SUS'   O1[        [        US   5      S S 5      n[        U S   5      U:X  a  SUS'   U S   S:X  a  U S   S:X  a8  SUS'   [        US   5      R                  [        U S	   5      5      (       a  SUS'   U S   S
:X  a(  SUS
'   [        U S	   5      [        US   5      :  a  SUS
'   U S   S:X  a(  SUS'   [        U S	   5      [        US   5      :  a  SUS'   SU ; a(  SUS'   [	        U S   5      [	        US   5      :X  a  SUS'   SU ; a(  SUS'   [        US   5      [        U S   5      ::  a  SUS'   U H  nX5   SL d  M    g g)Nfilter_optionsexact_floatF
floatvalueTfloat_restrictionsstarts_withfloat_for_restriction	is_bigger
is_smallerpattern	paintseedprice)lenr   float
startswithint)result_jsoniteminfoskinfilters_dictcut_iteminfo_floatfs         r   checkFiltersr3   z   s    L#$5&+]#s;}-./3s8L;Q7R3SS[/0E(<:P4QQ.2]+!&s8L+A'B3B'G!H [/04FF.2]+#$(<<+,=*/L'8L)*55K 789  /3]++,;(-L%[!89:U&>  -1[)+,<).L&[!89:U&>  .2\*K"'Y{9%&#h{.C*DD&*L#+ %Wg5W)=#>>$(L! ?e#     c	                    [        [        U 5      5      n	[        U5      R                  S5      S   n
[        [        U
5      R                  S5      S   5      SS  n[        [        U
5      R                  S5      S   R                  S5      S   5      n[        XU5      n[	        [        U5      R                  SS5      5      n[        XX#XEXU5	        g )N%20r   Ar   D' )encodeItemNamer   splitgenerateMarketLinkr,   replaceinsertQueryResultWeapon)full_item_namer   r'   r   r(   ranksteamidqueryidr-   item_encodedall_market_paramsm_parama_param
market_urlint_steamids                  r   handleDBInsertrJ      s    !NL L)//6q9#'(..s3A67;G#'(..s3A6<<SA!DEG#L7CJc'l**334KN	QV^h  xC  Dr4   responsec                     U c  g U R                  5       nSU;a  g[	        US   5      S:X  a  gU$ ! [         a  n[        [        U5      5         S nAgS nAff = f)NFdatar   jsonr   r   r   r)   rK   response_jsonr   s      r   validateSkinportSearchrR      sc      ]"
= !Q&  c!fs   1 
AAAc                     U c  g  U R                  5       nUc  g SU; a
  US   S:X  a  g SU; a  [	        US   5      S:X  a  g U$ ! [         a  n[        [        U5      5         S nAg S nAff = f)Ntotal_countr   resultsrN   rP   s      r   validateResponseHashedNameListrV      s      %'1,M!}Y'(A-  c!fs   A 
A+A&&A+c                     U c  g U R                   S:X  a  g  U R                  5       nUc  g SU; a
  US   S:X  a  g SU;a  g [        US   5      S:X  a  g U$ ! [         a  n[        [	        U5      5         S nAg S nAff = f)NnullrT   r   listinginfo)textrO   r   r   r   r)   rP   s      r   validateResponseInspectListr[      s    }} 
 %'1,M)
='(A-  c!fs   A 
A=A88A=	conditionc                 J    U S:X  a  gU S:X  a  gU S:X  a  gU S:X  a  gU S	:X  a  g
g )NzFactory Newr   zMinimal Wearr   zField-Tested   z	Well-Worn   zBattle-Scarred    )r\   s    r   conditionToWearConversionrb      s=    M!N"N"K$$r4   r*   c                     U S:  a  U S:  a  gU S:  a  U S:  a  gU S:  a  U S:  a  gU S:  a  U S:  a  gU S:  a  U S:  a  g	g )
Nr   gQ?g333333?r   gRQ?r^   g?r_   r`   ra   r*   s    r   floatToWearConversionre     sU    qyUT\t|t|t|t|	r4   typec                 J    U S:X  a  gU S:X  a  gU S:X  a  gU S:X  a  gU S	:X  a  g
g )N	stat_onlytag_strangesouvenirtag_tournamentnon_stat_only
tag_normalstat_and_non_statz1tag_normal&category_730_Quality%5B%5D=tag_strangeallr:   ra   )rf   s    r   typeToURLPartrp     s>    {z""Bu} r4   c	           
      6   [        XXg[        R                  " [        R                  " 5       S9S9n	U	R                  5         U	R                  n
US   S:X  d	  US   S:X  a*  [         R                  R                  U
S9R                  US9  SU; a*  [         R                  R                  U
S9R                  US	9  S
U; a-  Ub*  [         R                  R                  U
S9R                  XQS9  SU; a+  [         R                  R                  U
S9R                  US9  g g )N)tz)r/   r   rH   rB   pub_dater   r   r!   pkrd   r&   )r&   rA   )rA   r*   r(   )r(   )
r   r   nowr   get_default_timezonesaveru   objectsfilterupdate)namer   r&   r   r(   rA   rH   rB   r-   	new_query
current_pks              r   r?   r?      sG    DPZv~  wC  wC  GO  Gd  Gd  Gf  wg  hINNJ#$5EU9VZn9n%%%4;; 	< 	
 K%%%4;; 	< 	
 !1%%%4;; 	< 	
 +%%%4;; 	< 	
 r4   c                 Z    [         R                  R                  U S9R                  XUS9  g )Nrt   )query_failedmessagequery_status)r   ry   rz   r{   )rC   r   r   query_messages       r   updateQueryr   @  s.    ##w#/66!| 7 r4   c                 f   SnSnSnU(       GdX  [         R                  " S5         UR                  U 5      R                  5       nUS-  nSU; a  SUS   ; a   SnUS   $ [	        S[        U 5      -   5        Mp  US:  a  [        R                  " S	S	S
SSS9nUR                  5       nSU; a  UR                  SUS   45        OUR                  SUS   45         UR                  5       S   n	UR                  5       nUR                  SU	45        UR                  5         US-  nUS:  a0  Sn[        S[        U 5      -   5        [	        S[        U 5      -   5        GMU  U(       d  GMW  g g !    GMg  = f! [         a5    Sn[        S[        U 5      -   5        [	        S[        U 5      -   5         GM  f = f)NFr   r   r.   floatidTz7iteminfo not in r_json with single_inspect_server_url: r`   postgreszMargarethe1!z46.101.132.1325432)databaseuserpasswordhostportitemidz(SELECT floatid FROM history WHERE a = %saz(FLOATID NOT IN AFTER 5 TRIES, GIVING UP z-FLOATID NOT IN AFTER 5 TRIES, GIVING UP WITH z$DELETE FROM items WHERE floatid = %sz-EXECUTED DB QUERY MULTIPLE TIMES, SKIPPING - )timesleepgetRequestNakedrO   writeErrorToLogr   psycopg2connectcursorexecutefetchone	TypeErrorr   commit)
single_inspect_server_url	bulk_at_jrequest_managerend_floatidcounter_floatidcounter_execr_jsonpostgresql_connpostgresql_curr   s
             r   floatidNotInBulkr   R  s   KOL

1	$445NOTTVF 	1F:.."j)) I/01 Q&..#'%O -335N9$&&>8AT@V &&>3@Q(113A6 -335N""#IG:V""$ALa"C345  C345 C k	B  
">345  C345 
s   E( E1 (E.1:F0/F0c                    [        U S   5      nU S   S   nSU S   ;a  g U S   S   S   S   n[        U5      R                  S5      n[        US   5      S	S  nS
[        U5      -   S-   [        U5      -   S-   [        U5      -   nSU ; a#  [        U S   5      S-  n[        U S   5      S-  nO"[        U S   5      S-  n[        U S   5      S-  nXx-   n	[        U	S5      n	UUUUU	S.$ )N	listingidassetidmarket_actionsr   r   %r   Csteam://rungame/730/76561202255233023/+csgo_econ_action_preview%20Mr7   r8   converted_priced   converted_feer(   feer^   r   mr   dr(   r   r<   r*   round)
listing_inforF   rG   full_inspect_linkspliced_inspect_linkd_paramfinal_inspect_linkr(   r   
full_prices
             r   buildListingInfoListr     sF   ,{+,G7#D)G|G44$W-.>?B6J0177<&r*+AB/GM
g,	
	 g,	 		
 g,	  L(l#456<L12S8 l7+,s2L'(3.Jz1%J # r4   c                 >   [        X   5      nU S   U   S   S   nSU S   U   S   ;a  g U S   U   S   S   S   S   n[        U5      R                  S5      n[        US   5      S	S  nS
[        U5      -   S-   [        U5      -   S-   [        U5      -   n	SU S   U   ; a/  [        U S   U   S   5      S-  n
[        U S   U   S   5      S-  nO.[        U S   U   S   5      S-  n
[        U S   U   S   5      S-  nX-   n[        US5      nUSL a  SU	0$ U	UUUUS.$ )NrY   r   r   r   r   r   r   r   r   r   r7   r8   r   r   r   r(   r   r^   Tr   r   )listings_page_json	temp_listtemp_list_entryinspect_link_onlyrF   rG   r   r   r   r   r(   r   r   s                r   buildListParamsr     s    ),-G /8A$GG1-@I'RR*=9'B7K		 0177<&r*+AB/GM
g,	
	 g,	 		
 g,	  .}=gFF$]3G<=NOPSVV 	 &}5g>OPSVV (7@IJSP&}5g>uEFLJz1%JD *++ '
 	
r4   c                    S/ 0/nU  H:  n US   S   R                  S[        UR                  5       5      S   S   05        M<   US   $ ! [         a*  n[	        U5        [	        [        U5      5         S nAMq  S nAff = f)Nr	   r   r   r   )splitted_bulkbulk_inspect_links_listir   s       r   getSplittedBulkListr     s     '}o 		#A&w/66ahhj)!,V45	 #1%%	  	!H#a&M	s   6A


A>A99A>c                     [         R                  R                  U 5      nUR                  SS5      nUR                  SS5      nU$ )Nz%28(z%29))urllibparsequoter>   )r@   rD   s     r   r;   r;     s@    <<%%n5L''s3L''s3Lr4   c                 ~    S nU  H  nUS   US   :X  d  M  US   nUs  $  US :X  a  [        S[        U5      -   5        gg )Nr   r(   zNO PRICE WITH: r   r   r   )listings_info_listbulk_response_json_on_jr(   r   s       r   getPricer     s[    E S6,S11gJEL })C0G,HHI r4   c                 ~    S nU  H  nUS   US   :X  d  M  US   nUs  $  US :X  a  [        S[        U5      -   5        g g )Nr   r   zNO INSPECT LINK WITH: r   )r   r   r   r   s       r   getRealInspectLinkr     s]    L  S6,S11V9L  t037N3OOP r4   c                 ^    S[        U 5      -   S-   [        U5      -   S-   [        U5      -   nU$ )Nz/https://steamcommunity.com/market/listings/730/z#buylisting|z|730|2|r   )rD   r   r   market_links       r   r=   r=     sM    9
l
	
	 a&	 		
 a&	  r4   c                     [        U 5      S:w  a.  S[        U 5      -   S-   [        U5      -   S-   [        U5      -   nU$ S[        U5      -   S-   [        U5      -   S-   [        U5      -   nU$ )N0r   r7   r8   r   )r   sr   r   r   s        r   generateInspectLinkr   %  s    
1v}Q!f !f 	
 !f 	$  R!f !f 	
 !f 	 r4   c                 d    [        U 5      R                  S5      S   R                  S5      S   nU$ )Nr6   r   r7   r   )r   r<   )r   m_ss     r   returnMorSfromInspectLinkr   =  s1    
l

!
!%
(
+
1
1#
6q
9CJr4   c                     [         R                  " SU 5      nUb:  UR                  5       n[         R                  " SS[	        U5      5      nUc  g SU-   $ g )Nz"Market_LoadOrderSpread\( [0-9]+ \)z\Dr:   zhhttps://steamcommunity.com/market/itemordershistogram?country=FR&language=german&currency=3&item_nameid=)researchgroupsubr   )listing_source_pagexaidsnameids       r   manuallyGetNameIDURLr   B  sZ    
		68KLA}wwyb#d),> { r4   c                     [        SS5       nXR                  5       ; a
   S S S 5        g S S S 5        g! , (       d  f       g = f)Nzexcluded_skins.txtrTF)openread)skin_name_with_conditionr2   s     r   checkIfSkinExcludedr   S  sB    	"C	( A#vvx/  	  s   44
Ac                     [        SSSS9nUR                  [        R                  " U SS95        UR                  S5        UR	                  5         g )Nzcheap_top_skins.txtr   utf-8encodingr`   indent,)r   writerO   dumpsclose)single_cheap_top_dictf_cheaps     r   writeSingleCheapSkinToFiler   [  s>    (#@GMM$**21=>MM#MMOr4   c                     [        [        U5      SSS9nUR                  [        R                  " U SS95        UR                  S5        UR                  5         g )Nr   r   r   r`   r   r   )r   r   r   rO   r   r   )single_dictfilenamer   s      r   writeSingleAnyToFiler   b  s@    3x=#8GMM$**[34MM#MMOr4   c                 &   [         R                  " 5       nUR                  S5      n[        SSSS9nUR	                  [        U5      S-   [        U 5      -   5        UR	                  S5        UR                  5         [        R                  " S5        g )	Nz%d/%m/%Y %H:%M:%Sz
errors.txtr   r   r   z: 
g      ?)	r   rv   strftimer   r   r   r   r   r   )errorrv   	dt_stringr2   s       r   r   r   i  sg    
,,.C01I\31AGGC	NT!CJ./GGDMGGIJJsOr4   c                     [        [        U 5      SSS9nUR                  [        U5      S-   5        UR                  5         g )Nr   r   r   r  )r   r   r   r   )r   logr2   s      r   writeAnythingToAnyFiler  s  s1    S]C'2AGGCHtOGGIr4   )T)4r   rO   r   r   urllib.parser   r   loggingossyspathr   abspathenvirondjangosetupsniper.modelsr   r   django.utilsr   requestsr   r3   rJ   ResponserR   rV   r[   r   rb   r*   re   rp   r?   r   r   r   r   r   r;   r   r   r=   r   r   r   r   r   r   r   r  ra   r4   r   <module>r     sB   	         	 
  67 8';

# $   * ( ! B"B3j
DX%6%6 X->-> &(*;*; 4  
 

@$EP"L GK+
\&	0
"r4   