
    +j,                         d dl Z d dlZd dlZd dlZd dlmZmZ ddlmZ ddl	m
Z
 d dlmZ d dlmZmZ d dlmZ  G d	 d
      Z G d de      Zy)    N)OptionalDict   )core)normalizeProxy)requests)	urlencodequote)BeautifulSoupc                   R   e Zd ZU ddddddddd	d
dddddddddZeeeeef   f   ed<   d(dedededdfdZdededej                  fdZ
d)dee   dedededee   f
dZdedee   fd Zded!edej                  fd"Zdedefd#Zdefd$Zdee   fd%Zdee   fd&Zdefd'Zy)*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                    t        |      }|r||dnd | _        |rz|j                         | j                  v r^| j                  |j                            }|j                         | _        |d   | _        || _        | j                  ||d         | _        y | j                  |      }|| _
        |d   | _        |d   | _        |d   | _        | j                  | j                  | j
                        | _        y )N)httphttpsr   r"   country_code)r   
proxy_dictupperr!   countryCoder   r"   '_AccountBuilder__buildSessionForCountrysessionbuildCookieDatacookieNonBuildcreateCookieJarFromString)selfr"   r#   r$   pxtargetcookieBuildeds          6C:\Users\Sxnti\OneDrive\Desktop\amz\amazon\metadata.py__init__zAccountBuilder.__init__   s    E"7923tw}}$*:*::%%gmmo6F&}}D *DK DK88AQRDL 008M"(D'1DK'1DK,^<D99$++t{{SDL    target_domainc                    t        j                  t        j                  t        j
                        | j                        }|j                  d      D ]x  }d|vrt        t        j                  |j                  dd            \  }}|j                  j                  |||d       |dk7  sZ|j                  j                  ||dd       z d|_        |j                  j                  d	d
i       |S )zHBuild session with cookies set on both amazon.com and the target domain.impersonateproxies;=r   /r   pathr   T
Connection
keep-alivecurlSessionrandomchoicer   IMPERSONATE_BROWSERSr*   splitmapstrstripcookiessetallow_redirectsheadersupdate)r2   r"   r9   r.   pairnamevalues          r6   __buildSessionForCountryz'AccountBuilder.__buildSessionForCountry   s    ,,6==9R9R+S]a]l]lmLL%D$ciiC);<KD%OOeML,##D%3#O & #'l;<r8   haystackstartendindexc                 t    |y 	 |j                  |      |   j                  |      d   S # t        $ r Y y w xY w)Nr   )rK   	Exception)r2   rX   rY   rZ   r[   s        r6   extractBetweenzAccountBuilder.extractBetween-   sF    	>>%(/55c:1== 		s   %+ 	77c                     t        j                  d|t         j                        }|r|j                  d      j	                         S d S )Nz\b(main|acb[a-z]{2})\br   )researchIgrouplower)r2   r"   ms      r6   extractRegionCodez AccountBuilder.extractRegionCode5   s7    II/>%&qwwqz!0D0r8   r   c                    t        j                  t        j                  t        j
                        | j                        }|j                  d      D ]S  }d|vrt        t        j                  |j                  dd            \  }}|j                  j                  |||d       U d|_        |j                  j                  dd	i       |S )
Nr;   r>   r?   r   r@   rA   TrC   rD   rE   )r2   r"   r   r.   rT   rU   rV   s          r6   r1   z(AccountBuilder.createCookieJarFromString9   s    ,,6==9R9R+S]a]l]lmLL%D$ciiC);<KD%OOeFE	 &
 #'l;<r8   c                 p   | j                  |j                               }|sdddS | j                  j                         D ci c]  }|d   |
 }}||vr	dd| ddS ||   | j                  j                         D ch c]  }|d   	 c}dhz  }g }|j	                  d      D ]  }|j                         }|sd	|vr|j                  |       ,|j	                  d	d
      \  }}	|j                         }t        |t        d      D ]-  }
|j                  d|
       s|d t        |
        d   z   } n |dk(  rd   }	|d   k(  rd   }	|j                  | d	|	         dj                  |      }d|d   t        fd| j                  j                         D              dS c c}w c c}w )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   4   K   | ]  \  }}|k(  s|  y w)N ).0kvr#   s      r6   	<genexpr>z1AccountBuilder.buildCookieData.<locals>.<genexpr>e   s      X/Gtq!1PW</Gs   )rj   r"   r   r)   )rf   rN   r!   valuesrK   appendsortedlenendswithjoinnextitems)r2   r"   region_coderu   country_map	all_codespartsrT   rU   rV   r   r#   s              @r6   r/   zAccountBuilder.buildCookieDataD   s   ,,V\\^<#0RSS-1-=-=-D-D-FG-Fqy!|-FGk)#2KK=XY0Z[[k*(,(8(8(?(?(AB(A1QvY(ABgYN	LL%D::<D$T"**S!,KD%::<Dyc4@==1TF,#d),wv>D A |#
+wt}$
+LLD65'*+# &$ 5!h'  Xt/?/?/E/E/G XX	
 	
3 H Cs   F.F3c           
      D   ddddddddddddddddddddddddd}|j                  | j                  j                         |d	         }d
| j                   d| j                   dddd}	 | j                  j                  d| j                   d|d      }|j
                  }| j                  |dd      }| j                  |ddd      }| j                  |dd      }| j                  |dd      }	| j                  |dd      }
| j                  |dd      }| j                  |dd      }|s|syddd| j                   d| j                   dd d!d"d#d$}i d%|xs d&d'd&d(|d)   d*|d+   d,|d-   d.|d/   d0|d1   d2|d3   d4|j                  d5d&      d6|d7   d8|	xs d&d9d:d;d<d=d<d>d?d@d<dAdB|
xs d&|xs d&|xs d&|xs d&|xs d&dC}| j                  j                  d| j                   dD||dEF      }|| _	        | j                  |j
                  dGd      xs< | j                  |j
                  dGd      xs | j                  |j
                  dHd      }|r|| _
        yI| j                         | _
        |j                  dJk(  S # t        $ r Y yw xY w)KNAFz
Ahmad Wali
0700123456zStreet 1 Wazir Akbar KhanKabul1001)r,   fullNamephoneline1citystate
postalCoder   r   zwww.https://www.z/a/addresses?ref_=ya_d_c_addroMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.361536)hostrefererz
user-agentzviewport-widthz//a/addresses/add?ref=ya_address_book_add_button   )urlrR   timeoutFz6name="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)
User-Agent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   )rR   datar   
addressId="addressId":"T   )getr,   r+   r   r.   textr]   r^   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                    r6   addBillingAddressz AccountBuilder.addBillingAddressh   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;;-(%dkk]2OP L$	
	,,"""4;;-/^_  # C
 xxH ((3kmpq
((3JCQRS
((3npst
))(  5H  JM  N))(4DcJ,,X7xz}~!00;cehi"4 LW$T[[M2%dkk]2ab),((+	

+1r

 -d=.A
 6tJ7G	

 3DM
 8l9K
 ;DM
 24<
 >txx
TV?W
 9$w-
 CKDUSU
 7
 8
 6v
 7
  <V!
" ,-E#
$ 9D8Ir,6,<"7A7GRAKAQr@N@TRT-
0 ||  4;;-'TU	 ! 
   		<= D""499lC@D""499osC 	
 %DO5573&&E  		s   /8J 	JJc                    	 ddi}| j                   j                  d| j                   d|d      }| j                  |j                  dd      }|r|S | j                  |j                  d	d
      }|r|S | j                  |j                  dd
      }|r|S | j                  |j                  dd      S # t
        $ r Y y w xY w)Nr   r   r   z/a/addressesr   )rR   r   zdata-addressid="r   r   r   z
addressID=r   )r.   r   r   r^   r   r]   )r2   rR   r   r   s       r6   __getAddressIdFromBookz%AccountBuilder.__getAddressIdFromBook   s    	#  &W  XG<<##l4;;-|$LV]gi#jD))$))5GMG))$))\3GG))$))\3GG&&tyy/3GG 		s$   AB2  B2 4 B2 B2 2	B>=B>c                 j    t        | d      r| j                  r| j                  S | j                         S )Nr   )hasattrr   r   )r2   s    r6   getBillingAddressIdz"AccountBuilder.getBillingAddressId   s+    4&4????"**,,r8   c                     | j                         }|sdddS | j                         }|s| j                         }|rdd| j                  |dS dddS )NFzFailed Adding Billing Addressri   TzBilling Address Added)rj   rk   r   	addressId)r   r   r   )r2   addedr   s      r6   handleBillingAddressz#AccountBuilder.handleBillingAddress   se    &&(#0OPP,,.	002I"/FPTP`P`oxyy,KLLr8   )NN)r   )__name__
__module____qualname__r!   r   rM   __annotations__r7   rF   rG   r-   r   intr^   rf   r1   dictr/   boolr   r   r   r   rr   r8   r6   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 "
HW'4 W'r "-Xc] -
	Md 	Mr8   r   c                       e Zd Zy)AmazonRegisterErrorN)r   r   r   rr   r8   r6   r   r      s    r8   r   )rH   r`   stringjsontypingr   r   r   r   helpersr   	curl_cffir   rF   urllib.parser	   r
   bs4r   r   r]   r   rr   r8   r6   <module>r      s8      !  # & ) VM VMr	) 	r8   