Coverage for amazonorders/constants.py: 100.00%
55 statements
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-07 21:56 +0000
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-07 21:56 +0000
1__author__ = "Alex Laird"
2__copyright__ = "Copyright 2024, Alex Laird"
3__version__ = "1.0.7"
5##########################################################################
6# General URL
7##########################################################################
9BASE_URL = "https://www.amazon.com"
11##########################################################################
12# URLs for AmazonSession
13##########################################################################
15SIGN_IN_URL = "{}/gp/sign-in.html".format(BASE_URL)
16SIGN_IN_REDIRECT_URL = "{}/ap/signin".format(BASE_URL)
17SIGN_OUT_URL = "{}/gp/sign-out.html".format(BASE_URL)
19##########################################################################
20# URLs for AmazonOrders
21##########################################################################
23ORDER_HISTORY_LANDING_URL = "{}/gp/css/order-history".format(BASE_URL)
24ORDER_HISTORY_URL = "{}/your-orders/orders".format(BASE_URL)
25ORDER_DETAILS_URL = "{}/gp/your-account/order-details".format(BASE_URL)
26HISTORY_FILTER_QUERY_PARAM = "timeFilter"
28##########################################################################
29# Headers
30##########################################################################
32BASE_HEADERS = {
33 "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
34 "Accept-Encoding": "gzip, deflate, br",
35 "Accept-Language": "en-US,en;q=0.9",
36 "Cache-Control": "max-age=0",
37 "Content-Type": "application/x-www-form-urlencoded",
38 "Origin": BASE_URL,
39 "Referer": SIGN_IN_REDIRECT_URL,
40 "Sec-Ch-Ua": '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
41 "Sec-Ch-Ua-Mobile": "?0",
42 "Sec-Ch-Ua-Platform": "macOS",
43 "Sec-Ch-Viewport-Width": "1393",
44 "Sec-Fetch-Dest": "document",
45 "Sec-Fetch-Mode": "navigate",
46 "Sec-Fetch-Site": "same-origin",
47 "Sec-Fetch-User": "?1",
48 "Viewport-Width": "1393",
49 "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
50}
52##########################################################################
53# CSS selectors for AuthForms
54##########################################################################
56SIGN_IN_FORM_SELECTOR = "form[name='signIn']"
57MFA_DEVICE_SELECT_FORM_SELECTOR = "form#auth-select-device-form"
58MFA_DEVICE_SELECT_INPUT_SELECTOR = "input[name='otpDeviceContext']"
59MFA_FORM_SELECTOR = "form#auth-mfa-form"
60CAPTCHA_1_FORM_SELECTOR = "form.cvf-widget-form-captcha"
61CAPTCHA_2_FORM_SELECTOR = "form:has(input[id^='captchacharacters'])"
62CAPTCHA_OTP_FORM_SELECTOR = "form#verification-code-form"
63DEFAULT_ERROR_TAG_SELECTOR = "div#auth-error-message-box"
64CAPTCHA_1_ERROR_SELECTOR = "div.cvf-widget-alert"
65CAPTCHA_2_ERROR_SELECTOR = "div.a-alert-info"
67##########################################################################
68# CSS selectors for pagination
69##########################################################################
71NEXT_PAGE_LINK_SELECTOR = "ul.a-pagination li.a-last a"
73##########################################################################
74# CSS selectors for Entities and Fields
75#
76# A ``FIELD_`` selector can be either a ``str`` or a ``list``. If a
77# ``list`` is given, each selector in the list will be tried. The
78# ``Parsable`` contains helper functions for parsing fields, including
79# ``simple_parse()``, which is suitable for most fields when a ``FIELD_``
80# is passed.
81##########################################################################
83ORDER_HISTORY_ENTITY_SELECTOR = "div.order"
84ORDER_DETAILS_ENTITY_SELECTOR = "div#orderDetails"
85ITEM_ENTITY_SELECTOR = "div:has(> div.yohtmlc-item)"
86SHIPMENT_ENTITY_SELECTOR = "div.shipment"
88#####################################
89# CSS selectors for Item fields
90#####################################
92FIELD_ITEM_IMG_LINK_SELECTOR = "a img"
93FIELD_ITEM_QUANTITY_SELECTOR = "span.item-view-qty"
94FIELD_ITEM_TITLE_SELECTOR = ".yohtmlc-item a"
95FIELD_ITEM_LINK_SELECTOR = ".yohtmlc-item a"
96FIELD_ITEM_TAG_ITERATOR_SELECTOR = ".yohtmlc-item div"
98#####################################
99# CSS selectors for Order fields
100#####################################
102FIELD_ORDER_DETAILS_LINK_SELECTOR = "a.yohtmlc-order-details-link"
103FIELD_ORDER_NUMBER_SELECTOR = "bdi[dir='ltr']"
104FIELD_ORDER_GRAND_TOTAL_SELECTOR = "div.yohtmlc-order-total span.value"
105FIELD_ORDER_PLACED_DATE_SELECTOR = ["span.order-date-invoice-item", "div.a-span3"]
106FIELD_ORDER_PAYMENT_METHOD_SELECTOR = "img.pmts-payment-credit-card-instrument-logo"
107FIELD_ORDER_PAYMENT_METHOD_LAST_4_SELECTOR = "img.pmts-payment-credit-card-instrument-logo"
108FIELD_ORDER_SUBTOTALS_TAG_ITERATOR_SELECTOR = "div#od-subtotals div.a-row"
109FIELD_ORDER_SUBTOTALS_INNER_TAG_SELECTOR = "div.a-span-last"
110FIELD_ORDER_ADDRESS_SELECTOR = "div.displayAddressDiv"
111FIELD_ORDER_ADDRESS_FALLBACK_1_SELECTOR = "div.recipient span.a-declarative"
112FIELD_ORDER_ADDRESS_FALLBACK_2_SELECTOR = "script[id^='shipToData']"
113FIELD_ORDER_SHIPPED_DATE_SELECTOR = "#orderDetails div.a-box.a-last div div div.a-row:not(.a-color-success)"
114FIELD_ORDER_REFUND_COMPLETED_DATE = "#orderDetails div.a-box.a-last div div div.a-row.a-color-success"
116#####################################
117# CSS selectors for Shipment fields
118#####################################
120FIELD_SHIPMENT_TRACKING_LINK_SELECTOR = "span.track-package-button a"
121FIELD_SHIPMENT_DELIVERY_STATUS_SELECTOR = "div.js-shipment-info-container div.a-row"
123#####################################
124# CSS selectors for Recipient fields
125#####################################
127FIELD_RECIPIENT_NAME_SELECTOR = ["li.displayAddressFullName", "div:nth-child(1)"]
128FIELD_RECIPIENT_ADDRESS1_SELECTOR = "li.displayAddressAddressLine1"
129FIELD_RECIPIENT_ADDRESS2_SELECTOR = "li.displayAddressAddressLine2"
130FIELD_RECIPIENT_ADDRESS_CITY_STATE_POSTAL_SELECTOR = "li.displayAddressCityStateOrRegionPostalCode"
131FIELD_RECIPIENT_ADDRESS_COUNTRY_SELECTOR = "li.displayAddressCountryName"
132FIELD_RECIPIENT_ADDRESS_FALLBACK_SELECTOR = "div:nth-child(2)"
134#####################################
135# CSS selectors for Seller fields
136#####################################
138FIELD_SELLER_NAME_SELECTOR = ["a", "span"]
139FIELD_SELLER_LINK_SELECTOR = "a"