From 8bb337a9c35e830ef9ce3dac0a0f2df3fe9bc5a0 Mon Sep 17 00:00:00 2001 From: zman Date: Fri, 7 Feb 2025 21:31:13 -0500 Subject: [PATCH] ffff --- app/services/tcgplayer.py | 45 ++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/app/services/tcgplayer.py b/app/services/tcgplayer.py index c921014..3f1052f 100644 --- a/app/services/tcgplayer.py +++ b/app/services/tcgplayer.py @@ -54,16 +54,6 @@ class TCGPlayerService: self.df_util = DataframeUtil() self.file_service = file_service - def get_cookies_from_file(self) -> Dict: - # check if cookies file exists - if not os.path.exists('cookies/tcg_cookies.json'): - raise ValueError("Cookies file not found") - with open('cookies/tcg_cookies.json', 'r') as f: - logger.debug("Loading cookies from file") - cookies = json.load(f) - logger.debug(f"Loaded cookies: {cookies}") - return cookies - def _insert_groups(self, groups): for group in groups: db_group = TCGPlayerGroups( @@ -108,6 +98,16 @@ class TCGPlayerService: # Insert groups into db with db_transaction(self.db): self._insert_groups(groups) + + def get_cookies_from_file(self) -> Dict: + # check if cookies file exists + if not os.path.exists('cookies/tcg_cookies.json'): + raise ValueError("Cookies file not found") + with open('cookies/tcg_cookies.json', 'r') as f: + logger.debug("Loading cookies from file") + cookies = json.load(f) + logger.debug(f"Loaded cookies: {cookies}") + return cookies def _get_browser_cookies(self) -> Optional[Dict]: """Retrieve cookies from the specified browser""" @@ -119,34 +119,45 @@ class TCGPlayerService: except Exception as e: logger.error(f"Failed to get browser cookies: {str(e)}") return None - def is_in_docker(self) -> bool: """Check if we're running inside a Docker container""" try: with open('/proc/1/cgroup', 'r') as f: - return 'docker' in f.read() - except: + content = f.read() + is_docker = 'docker' in content + logger.debug(f"Docker detection via cgroup: {is_docker}") + return is_docker + except Exception as e: + logger.debug(f"Could not read cgroup file: {e}") # If we can't read the file, check for common Docker env vars - return os.environ.get('DOCKER_CONTAINER', False) or os.environ.get('IN_DOCKER', False) + env_check = bool(os.environ.get('DOCKER_CONTAINER', False) or + os.environ.get('IN_DOCKER', False)) + logger.debug(f"Docker detection via env vars: {env_check}") + return env_check def _send_request(self, url: str, method: str, data=None, except_302=False) -> requests.Response: """Send a request with the specified cookies""" - # if previous request was made less than 10 seconds ago, wait until current time is 10 seconds after previous request + # Rate limiting logic if self.previous_request_time: time_diff = (datetime.now() - self.previous_request_time).total_seconds() if time_diff < 10: logger.info(f"Waiting 10 seconds before next request...") time.sleep(10 - time_diff) + headers = self._set_headers(method) - # only get cookies on mac os not in docker container + + # Move cookie initialization outside and make it more explicit if not self.cookies: if self.is_in_docker(): + logger.debug("Running in Docker - using cookies from file") self.cookies = self.get_cookies_from_file() else: + logger.debug("Not in Docker - using browser cookies") self.cookies = self._get_browser_cookies() + if not self.cookies: - raise ValueError("Failed to retrieve browser cookies") + raise ValueError("Failed to retrieve cookies") try: #logger.info(f"debug: request url {url}, method {method}, data {data}")