This commit is contained in:
zman 2025-02-07 21:31:13 -05:00
parent 65aba280c5
commit 8bb337a9c3

View File

@ -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}")