ffff
This commit is contained in:
parent
65aba280c5
commit
8bb337a9c3
@ -54,16 +54,6 @@ class TCGPlayerService:
|
|||||||
self.df_util = DataframeUtil()
|
self.df_util = DataframeUtil()
|
||||||
self.file_service = file_service
|
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):
|
def _insert_groups(self, groups):
|
||||||
for group in groups:
|
for group in groups:
|
||||||
db_group = TCGPlayerGroups(
|
db_group = TCGPlayerGroups(
|
||||||
@ -108,6 +98,16 @@ class TCGPlayerService:
|
|||||||
# Insert groups into db
|
# Insert groups into db
|
||||||
with db_transaction(self.db):
|
with db_transaction(self.db):
|
||||||
self._insert_groups(groups)
|
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]:
|
def _get_browser_cookies(self) -> Optional[Dict]:
|
||||||
"""Retrieve cookies from the specified browser"""
|
"""Retrieve cookies from the specified browser"""
|
||||||
@ -119,34 +119,45 @@ class TCGPlayerService:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to get browser cookies: {str(e)}")
|
logger.error(f"Failed to get browser cookies: {str(e)}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def is_in_docker(self) -> bool:
|
def is_in_docker(self) -> bool:
|
||||||
"""Check if we're running inside a Docker container"""
|
"""Check if we're running inside a Docker container"""
|
||||||
try:
|
try:
|
||||||
with open('/proc/1/cgroup', 'r') as f:
|
with open('/proc/1/cgroup', 'r') as f:
|
||||||
return 'docker' in f.read()
|
content = f.read()
|
||||||
except:
|
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
|
# 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:
|
def _send_request(self, url: str, method: str, data=None, except_302=False) -> requests.Response:
|
||||||
"""Send a request with the specified cookies"""
|
"""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:
|
if self.previous_request_time:
|
||||||
time_diff = (datetime.now() - self.previous_request_time).total_seconds()
|
time_diff = (datetime.now() - self.previous_request_time).total_seconds()
|
||||||
if time_diff < 10:
|
if time_diff < 10:
|
||||||
logger.info(f"Waiting 10 seconds before next request...")
|
logger.info(f"Waiting 10 seconds before next request...")
|
||||||
time.sleep(10 - time_diff)
|
time.sleep(10 - time_diff)
|
||||||
|
|
||||||
headers = self._set_headers(method)
|
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 not self.cookies:
|
||||||
if self.is_in_docker():
|
if self.is_in_docker():
|
||||||
|
logger.debug("Running in Docker - using cookies from file")
|
||||||
self.cookies = self.get_cookies_from_file()
|
self.cookies = self.get_cookies_from_file()
|
||||||
else:
|
else:
|
||||||
|
logger.debug("Not in Docker - using browser cookies")
|
||||||
self.cookies = self._get_browser_cookies()
|
self.cookies = self._get_browser_cookies()
|
||||||
|
|
||||||
if not self.cookies:
|
if not self.cookies:
|
||||||
raise ValueError("Failed to retrieve browser cookies")
|
raise ValueError("Failed to retrieve cookies")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
#logger.info(f"debug: request url {url}, method {method}, data {data}")
|
#logger.info(f"debug: request url {url}, method {method}, data {data}")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user