
    L$j-                         S SK r S SKrS SKrS SKrS SKJrJr  SSKJr  S SK	J
r  S SKJrJr  S SKJr   " S S	5      r " S
 S\5      rg)    N)OptionalDict   )core)requests)	urlencodequote)BeautifulSoupc                   r   \ rS rSr% SSSSSS.SS	S
SSS.SSSSSS.S.r\\\\\4   4   \S'   S*S\S\S\SS4S jjrS\S\S\	R                  4S jrS+S\\   S\S\S\S\\   4
S  jjrS\S\\   4S! jrS\S"\S\	R                  4S# jrS\S\4S$ jrS\4S% jrS\\   4S& jrS\\   4S' jrS\4S( jrS)rg),AccountBuilder	   mainUSDzlc-mainen_US
amazon.com)codecurrencylclc_valuedomainacbcaCADzlc-acbcaen_CAz	amazon.caacbmxMXNzlc-acbmxes_MXzamazon.com.mxUSCAMXCOUNTRY_MAPNcookiecountryproxyreturnc                    U(       a  X3S.OS U l         U(       az  UR                  5       U R                  ;   a\  U R                  UR                  5          nUR                  5       U l        US   U l        Xl        U R                  XS   5      U l        g U R                  U5      nXl	        US   U l        US   U l        US   U l        U R                  U R
                  U R                  5      U l        g )N)httphttpsr   r"   country_code)
proxy_dictupperr!   countryCoder   r"   '_AccountBuilder__buildSessionForCountrysessionbuildCookieDatacookieNonBuildcreateCookieJarFromString)selfr"   r#   r$   targetcookieBuildeds         3C:\Users\Teconew\Desktop\TecoChk\amazon\metadata.py__init__AccountBuilder.__init__   s    =B59w}}$*:*::%%gmmo6F&}}D *DK K88AQRDL 008M"('1DK'1DK,^<D99$++t{{SDL    target_domainc                 6   [         R                  " [        R                  " [        R
                  5      U R                  S9nUR                  S5       Hu  nSU;  a  M  [        [        R                  UR                  SS5      5      u  pVUR                  R                  XVUSS9  US:w  d  MZ  UR                  R                  XVSSS9  Mw     SUl        UR                  R                  S	S
05         UR!                  SU S3SSS0S9  U$ ! ["         a     U$ f = f)zHBuild session with cookies set on both amazon.com and the target domain.impersonateproxies;=r   /r   pathr   T
Connection
keep-alivehttps://www.z/?ref_=nav_ya_signin   
User-AgentoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36)timeoutheaders)curlSessionrandomchoicer   IMPERSONATE_BROWSERSr*   splitmapstrstripcookiessetallow_redirectsrJ   updateget	Exception)r2   r"   r9   r.   pairnamevalues          r5   __buildSessionForCountry'AccountBuilder.__buildSessionForCountry   s   ,,6==9R9R+S]a]l]lmLL%D$ciiC);<KDOOML,##D3#O & #'l;<	KK,}o5IJTV  PaK 
   		s   1D
 

DDhaystackstartendindexc                 d    Uc  g UR                  U5      U   R                  U5      S   $ !    g = f)Nr   )rP   )r2   r_   r`   ra   rb   s        r5   extractBetweenAccountBuilder.extractBetween5   s5    DNN5)%066s;A>>ts   %+ /c                     [         R                  " SU[         R                  5      nU(       a  UR                  S5      R	                  5       $ S $ )Nz\b(main|acb[a-z]{2})\br   )researchIgrouplower)r2   r"   ms      r5   extractRegionCode AccountBuilder.extractRegionCode:   s7    II/>%&qwwqz!0D0r8   r   c                    [         R                  " [        R                  " [        R
                  5      U R                  S9nUR                  S5       HR  nSU;  a  M  [        [        R                  UR                  SS5      5      u  pVUR                  R                  XVUSS9  MT     SUl        UR                  R                  SS	05        U$ )
Nr;   r>   r?   r   r@   rA   TrC   rD   )rK   rL   rM   rN   r   rO   r*   rP   rQ   rR   rS   rT   rU   rV   rJ   rW   )r2   r"   r   r.   rZ   r[   r\   s          r5   r1   (AccountBuilder.createCookieJarFromString>   s    ,,6==9R9R+S]a]l]lmLL%D$ciiC);<KDOOFE & #'l;<r8   c                   ^ U R                  UR                  5       5      nU(       d  SSS.$ U R                  R                  5        Vs0 s H  o3S   U_M
     nnX$;  a	  SSU S3S.$ XB   mU R                  R                  5        Vs1 s H  o3S   iM	     snS1-  n/ nUR	                  S5       H  nUR                  5       nU(       d  M  S	U;  a  UR                  U5        M5  UR	                  S	S
5      u  pUR                  5       n[        U[        SS9 H3  n
UR                  SU
 35      (       d  M  US [        U
5      *  TS   -   n  O   US:X  a  TS   n	UTS   :X  a  TS   n	UR                  U S	U	 35        M     SR                  U5      nSUTS   [        U4S jU R                  R                  5        5       5      S.$ s  snf s  snf )NFz Region code not found in cookie.statusmessager   zUnsupported region code: .acbucr>   r?   r   T)keyreverse-z
i18n-prefsr   r   r   z; r   c              3   <   >#    U  H  u  pUT:X  d  M  Uv   M     g 7f)N ).0kvr#   s      r5   	<genexpr>1AccountBuilder.buildCookieData.<locals>.<genexpr>]   s<       d\  sKjnjk  OP  T[  O[dede  sKs   	)rs   r"   r   r)   )rm   rS   r!   valuesrP   appendsortedlenendswithjoinnextitems)r2   r"   region_coder~   country_map	all_codespartsrZ   r[   r\   r   r#   s              @r5   r/   AccountBuilder.buildCookieDataH   s   ,,V\\^<e@b#cc-1-=-=-D-D-FG-Fy!|-FG)UQjkvjwwxOy2z+z*(,(8(8(?(?(AB(A1vY(ABgYN	LL%D::<D$T 2H**S!,KD::<Dyc4@==1TF,,#d),wv>D A |#WZ-@Uwt}$gj.AeLLD65'*+ & 5!&GH<M_c  d\rv  sC  sC  sI  sI  sK  d\  `\  ]  	]% H Cs   	GGc           
         SSSSSSSS.SSSSSSSS.SSSSSSSS.S.nUR                  U R                  R                  5       US	   5      nS
U R                   3SU R                   S3SSS.n U R                  R                  SU R                   S3US9nUR
                  nU R                  USS5      nU R                  USSS5      nU R                  USS5      nU R                  USS5      n	U R                  USS5      n
U R                  USS5      nU R                  USS5      nU(       d  U(       d  gSSSU R                   3SU R                   S3SS S!S"S#.n0 S$U=(       d    S%_S&S%_S'US(   _S)US*   _S+US,   _S-US.   _S/US0   _S1US2   _S3UR                  S4S%5      _S5US6   _S7U	=(       d    S%_S8S9_S:S;_S<S;_S=S>_S?S;_S@SA_U
=(       d    S%U=(       d    S%U=(       d    S%U=(       d    S%U=(       d    S%SB.EnU R                  R                  SU R                   SC3XSD9nX l	        U R                  UR
                  SES5      =(       dA    U R                  UR
                  SES5      =(       d    U R                  UR
                  SFS5      nU(       a  UU l
        gGU R                  5       U l
        UR                  SH:H  $ ! [         a     gf = f)INAFz
Ahmad Wali
0700123456zStreet 1 Wazir Akbar KhanKabul1001)r,   fullNamephoneline1citystate
postalCoder   r   zwww.rE   z/a/addresses?ref_=ya_d_c_addrrH   1536)hostrefererz
user-agentzviewport-widthz//a/addresses/add?ref=ya_address_book_add_button)urlrJ   Fz6name="address-ui-widgets-form-load-start-time" value=""z=AddView&hostPageRID=&r   z9type="hidden" name="address-ui-widgets-csrfToken" value="zQtype="hidden" name="address-ui-widgets-previous-address-form-state-token" value="z"customerID":"z?name="address-ui-widgets-address-wizard-interaction-id" value="z&type='hidden' name='csrfToken' value=''z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.81documentnavigatezsame-origin)rG   AcceptOriginRefererzUpgrade-Insecure-RequestszSec-Fetch-DestzSec-Fetch-ModezSec-Fetch-Site	csrfToken 	addressIDzaddress-ui-widgets-countryCoder,   z'address-ui-widgets-enterAddressFullNamer   z$address-ui-widgets-enterAddressLine1r   z)address-ui-widgets-enterAddressPostalCoder   z,address-ui-widgets-enterAddressStateOrRegionr   z#address-ui-widgets-enterAddressCityr   z/address-ui-widgets-enterAddressDistrictOrCountydistrictz*address-ui-widgets-enterAddressPhoneNumberr   z4address-ui-widgets-previous-address-form-state-tokenz(address-ui-widgets-addressFormButtonTextsavez)address-ui-widgets-addressFormHideHeadingtruez'address-ui-widgets-enableAddressDetailsz(address-ui-widgets-returnLegacyAddressIDfalsez-address-ui-widgets-enableDeliveryInstructionszaddress-ui-widgets-clientNameYourAccountAddressBook)z(address-ui-widgets-obfuscated-customerIdzaddress-ui-widgets-csrfTokenz'address-ui-widgets-form-load-start-timez1address-ui-widgets-clickstream-related-request-idz0address-ui-widgets-address-wizard-interaction-idz-/a/addresses/add?ref=ya_address_book_add_post)rJ   data
addressId="addressId":"T   )rX   r,   r+   r   r.   textrY   rd   postcountryData
_addressId%_AccountBuilder__getAddressIdFromBookstatus_code)r2   COUNTRY_DATAr   headers1reqrequest1
start_time
request_id
csrf_tokenaddress_jwtcustomer_idinteraction_idcsrf_token_addressheaders3payload3respaddr_ids                    r5   addBillingAddress AccountBuilder.addBillingAddress_   s   "&L<b}  HO  Za  qw  x"&L<b}  HO  Za  qw  x"&L<b}  HO  Za  qw  x

  0 0 6 6 8,t:LM"4;;-0|DKK=Xu=v  Gx  LR  S	,,""dkk]Bq'r  }E"  FCxxH ((3kmpq
((3JCQRS
((3npst
))(  5H  JM  N))(4DcJ,,X7xz}~!00;cehi"4 #T  `a  o{  |@  |G  |G  {H  mI  Xd  ei  ep  ep  dq  q`  Va  @C  Wa  u  S`  a EK!3!9r  E;  ELlnr  tA  oB  E  Dm  os  t~  o  E  Ag  im  nu  iv  E  xc  ei  jv  ew  E  yg  im  nu  iv  E  x]  _c  dj  _k  E  m^  `d  `h  `h  is  uw  `x  E  zf  hl  mt  hu  E  wm	  o	z	  o	@
  ~	@
  E  B
l
  n
t
  E  v
a  ci  E  kT  V\  E  ^H  JQ  E  SB  DJ  E  Lk  mE  E  s~  sD  BD  fp  fv  tv  cm  cs  qs  jt  jz  xz  p~  pD  BD  E||  <}<i!jt|   M %%diisC  qtGZGZ[_[d[dfrtwGx  q  }A  }P  }P  QU  QZ  QZ  \k  mp  }q%DO 5573&&7  		s   /4K 
KKc                     SS0nU R                   R                  SU R                   S3USS9nU R                  UR                  SS5      nU(       a  U$ U R                  UR                  S	S
5      nU(       a  U$ U R                  UR                  SS
5      nU(       a  U$ U R                  UR                  SS5      nU$ ! [
         a     gf = f)zDGet address ID from the address book page (works for all countries).rG   rH   rE   z/a/addressesrF   )rJ   rI   zdata-addressid="r   r   r   z
addressID=r   N)r.   rX   r   rd   r   rY   )r2   rJ   r   r   s       r5   __getAddressIdFromBook%AccountBuilder.__getAddressIdFromBook   s    	#  &W  XG<<##l4;;-|$LV]gi#jD))$))5GMGw))$))\3GGw))$))\3GGw))$))_cJGN 		s$   AC  %C  ;%C  !C   
CCc                 ~    [        U S5      (       a  U R                  (       a  U R                  $ U R                  5       $ )Nr   )hasattrr   r   )r2   s    r5   getBillingAddressId"AccountBuilder.getBillingAddressId   s.    4&&4????"**,,r8   c                     U R                  5       nU(       d  SSS.$ U R                  5       nU(       d  U R                  5       nU(       a  SSU R                  US.$ SSS.$ )NFzFailed Adding Billing Addressrr   TzBilling Address Added)rs   rt   r   	addressId)r   r   r   )r2   addedr   s      r5   handleBillingAddress#AccountBuilder.handleBillingAddress   se    &&(#0OPP,,.	002I"/FPTP`P`oxyy,KLLr8   )r   r"   r0   r,   r   r   r*   r.   )NN)r   )__name__
__module____qualname____firstlineno__r!   r   rR   __annotations__r6   rK   rL   r-   r   intrd   rm   r1   dictr/   boolr   r   r   r   __static_attributes__r{   r8   r5   r   r   	   s   =CQV^gu|  IU  5V  gn  |A  IS  ah  t  ^@  QX  fk  s}  KR  ^m  Hn  .oKc4S>)*  oTs TS T Tt T$s 3 4<< ,x} S s SV _ghk_l 
1 1 1 S T\\ ]c ]d ].''4 ''R $-Xc] -	Md 	Mr8   r   c                       \ rS rSrSrg)AmazonRegisterError   r{   N)r   r   r   r   r   r{   r8   r5   r   r      s    r8   r   )rM   rg   stringjsontypingr   r   r   r   	curl_cffir   rK   urllib.parser   r	   bs4r
   r   rY   r   r{   r8   r5   <module>r      s5      !  & ) aM aMJ	) 	r8   