""" Configuration file for the app. """ from typing import Any from .constants import HeaderKeys from .environment_vars import SNOWFLAKE_CREDENTIALS # The Owner ID of Orchard as a YouTube Content ID partner. YT_OWNER_ID_ORCHARD: str = "J8vAyKuNSYBIN_9RIdxggQ" # Snowflake credentials. SNOWFLAKE_CREDENTIALS: dict[str, str] = { "user": "ORCHARD_YT_AUDITS", "account": "sme-delphi", "private_key": SNOWFLAKE_CREDENTIALS["private_key"], "warehouse": "DEV_ANALYTICS_ORCHARD", } # Define fake headers to use for requests when scraping data. # This way we can avoid being blocked by the server and also emulate a real user. _FAKE_HEADER_CONSTS: dict[str, str] = { "REFERER": "https://www.google.com", "ACCEPT_HTML": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "ACCEPT_HTML_IMAGE": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "ACCEPT_HTML_IMAGE_AVIF": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", "ACCEPT_LANGUAGE_EN": "en-US,en;q=0.9", "ACCEPT_LANGUAGE_EN_05": "en-US,en;q=0.5", "ACCEPT_ENCODING": "gzip, deflate, br", } FAKE_HEADERS: list[dict[HeaderKeys, Any]] = [ { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN_05"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML_IMAGE"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN_05"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML_IMAGE"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML_IMAGE_AVIF"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN_05"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML_IMAGE"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN_05"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML_IMAGE"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN_05"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML_IMAGE"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, { HeaderKeys.USER_AGENT: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:86.0) Gecko/20100101 Firefox/86.0", HeaderKeys.ACCEPT_LANGUAGE: _FAKE_HEADER_CONSTS["ACCEPT_LANGUAGE_EN"], HeaderKeys.ACCEPT_ENCODING: _FAKE_HEADER_CONSTS["ACCEPT_ENCODING"], HeaderKeys.ACCEPT: _FAKE_HEADER_CONSTS["ACCEPT_HTML"], HeaderKeys.REFERER: _FAKE_HEADER_CONSTS["REFERER"], }, ] # Define the temporary directory to store files. This must be compatible with AWS. # Usually, this is /tmp and should not be changed. TEMP_DIR: str = "/tmp"