{"nodes": [{"id": "backend_app_scraper_base_py", "label": "base.py", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L1"}, {"id": "base_basescraper", "label": "BaseScraper", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L14"}, {"id": "abc", "label": "ABC", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "base_basescraper_init", "label": ".__init__()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L15"}, {"id": "base_basescraper_create_session", "label": "._create_session()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L29"}, {"id": "base_basescraper_rate_limit", "label": "._rate_limit()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L51"}, {"id": "base_basescraper_get", "label": "._get()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L59"}, {"id": "base_basescraper_post", "label": "._post()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L80"}, {"id": "base_scrape", "label": "scrape()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L102"}, {"id": "base_basescraper_log_scrape", "label": ".log_scrape()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L105"}, {"id": "base_seleniumscraper", "label": "SeleniumScraper", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L109"}, {"id": "base_seleniumscraper_init", "label": ".__init__()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L110"}, {"id": "base_seleniumscraper_init_playwright", "label": "._init_playwright()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L114"}, {"id": "base_seleniumscraper_get_playwright", "label": "._get_playwright()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L123"}, {"id": "base_seleniumscraper_get_browser_page", "label": ".get_browser_page()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L127"}, {"id": "base_seleniumscraper_cleanup", "label": ".cleanup()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L133"}], "edges": [{"source": "backend_app_scraper_base_py", "target": "time", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L2", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "abc", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "urllib_parse", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "requests", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "requests_adapters", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L8", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "urllib3_util_retry", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "base_basescraper", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L14", "weight": 1.0}, {"source": "base_basescraper", "target": "abc", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L14", "weight": 1.0}, {"source": "base_basescraper", "target": "base_basescraper_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L15", "weight": 1.0}, {"source": "base_basescraper", "target": "base_basescraper_create_session", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L29", "weight": 1.0}, {"source": "base_basescraper", "target": "base_basescraper_rate_limit", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L51", "weight": 1.0}, {"source": "base_basescraper", "target": "base_basescraper_get", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L59", "weight": 1.0}, {"source": "base_basescraper", "target": "base_basescraper_post", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L80", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "base_scrape", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L102", "weight": 1.0}, {"source": "base_basescraper", "target": "base_basescraper_log_scrape", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L105", "weight": 1.0}, {"source": "backend_app_scraper_base_py", "target": "base_seleniumscraper", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L109", "weight": 1.0}, {"source": "base_seleniumscraper", "target": "base_basescraper", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L109", "weight": 1.0}, {"source": "base_seleniumscraper", "target": "base_seleniumscraper_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L110", "weight": 1.0}, {"source": "base_seleniumscraper", "target": "base_seleniumscraper_init_playwright", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L114", "weight": 1.0}, {"source": "base_seleniumscraper", "target": "base_seleniumscraper_get_playwright", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L123", "weight": 1.0}, {"source": "base_seleniumscraper", "target": "base_seleniumscraper_get_browser_page", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L127", "weight": 1.0}, {"source": "base_seleniumscraper", "target": "base_seleniumscraper_cleanup", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L133", "weight": 1.0}, {"source": "base_basescraper_init", "target": "base_basescraper_create_session", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L27", "weight": 1.0}, {"source": "base_basescraper_get", "target": "base_basescraper_rate_limit", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L60", "weight": 1.0}, {"source": "base_basescraper_post", "target": "base_basescraper_rate_limit", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L81", "weight": 1.0}, {"source": "base_seleniumscraper_get_playwright", "target": "base_seleniumscraper_init_playwright", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L124", "weight": 1.0}, {"source": "base_seleniumscraper_get_browser_page", "target": "base_seleniumscraper_get_playwright", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L128", "weight": 1.0}], "raw_calls": [{"caller_nid": "base_basescraper_init", "callee": "rstrip", "source_file": "backend/app/scraper/base.py", "source_location": "L22"}, {"caller_nid": "base_basescraper_create_session", "callee": "Session", "source_file": "backend/app/scraper/base.py", "source_location": "L30"}, {"caller_nid": "base_basescraper_create_session", "callee": "Retry", "source_file": "backend/app/scraper/base.py", "source_location": "L32"}, {"caller_nid": "base_basescraper_create_session", "callee": "HTTPAdapter", "source_file": "backend/app/scraper/base.py", "source_location": "L39"}, {"caller_nid": "base_basescraper_create_session", "callee": "mount", "source_file": "backend/app/scraper/base.py", "source_location": "L40"}, {"caller_nid": "base_basescraper_create_session", "callee": "mount", "source_file": "backend/app/scraper/base.py", "source_location": "L41"}, {"caller_nid": "base_basescraper_create_session", "callee": "update", "source_file": "backend/app/scraper/base.py", "source_location": "L43"}, {"caller_nid": "base_basescraper_rate_limit", "callee": "time", "source_file": "backend/app/scraper/base.py", "source_location": "L52"}, {"caller_nid": "base_basescraper_rate_limit", "callee": "debug", "source_file": "backend/app/scraper/base.py", "source_location": "L55"}, {"caller_nid": "base_basescraper_rate_limit", "callee": "sleep", "source_file": "backend/app/scraper/base.py", "source_location": "L56"}, {"caller_nid": "base_basescraper_rate_limit", "callee": "time", "source_file": "backend/app/scraper/base.py", "source_location": "L57"}, {"caller_nid": "base_basescraper_get", "callee": "startswith", "source_file": "backend/app/scraper/base.py", "source_location": "L62"}, {"caller_nid": "base_basescraper_get", "callee": "urljoin", "source_file": "backend/app/scraper/base.py", "source_location": "L62"}, {"caller_nid": "base_basescraper_get", "callee": "range", "source_file": "backend/app/scraper/base.py", "source_location": "L64"}, {"caller_nid": "base_basescraper_get", "callee": "debug", "source_file": "backend/app/scraper/base.py", "source_location": "L66"}, {"caller_nid": "base_basescraper_get", "callee": "get", "source_file": "backend/app/scraper/base.py", "source_location": "L67"}, {"caller_nid": "base_basescraper_get", "callee": "raise_for_status", "source_file": "backend/app/scraper/base.py", "source_location": "L68"}, {"caller_nid": "base_basescraper_get", "callee": "warning", "source_file": "backend/app/scraper/base.py", "source_location": "L72"}, {"caller_nid": "base_basescraper_get", "callee": "error", "source_file": "backend/app/scraper/base.py", "source_location": "L74"}, {"caller_nid": "base_basescraper_get", "callee": "sleep", "source_file": "backend/app/scraper/base.py", "source_location": "L76"}, {"caller_nid": "base_basescraper_post", "callee": "startswith", "source_file": "backend/app/scraper/base.py", "source_location": "L83"}, {"caller_nid": "base_basescraper_post", "callee": "urljoin", "source_file": "backend/app/scraper/base.py", "source_location": "L83"}, {"caller_nid": "base_basescraper_post", "callee": "range", "source_file": "backend/app/scraper/base.py", "source_location": "L85"}, {"caller_nid": "base_basescraper_post", "callee": "debug", "source_file": "backend/app/scraper/base.py", "source_location": "L87"}, {"caller_nid": "base_basescraper_post", "callee": "post", "source_file": "backend/app/scraper/base.py", "source_location": "L88"}, {"caller_nid": "base_basescraper_post", "callee": "raise_for_status", "source_file": "backend/app/scraper/base.py", "source_location": "L89"}, {"caller_nid": "base_basescraper_post", "callee": "warning", "source_file": "backend/app/scraper/base.py", "source_location": "L93"}, {"caller_nid": "base_basescraper_post", "callee": "error", "source_file": "backend/app/scraper/base.py", "source_location": "L95"}, {"caller_nid": "base_basescraper_post", "callee": "sleep", "source_file": "backend/app/scraper/base.py", "source_location": "L97"}, {"caller_nid": "base_basescraper_log_scrape", "callee": "info", "source_file": "backend/app/scraper/base.py", "source_location": "L106"}, {"caller_nid": "base_seleniumscraper_init", "callee": "super", "source_file": "backend/app/scraper/base.py", "source_location": "L111"}, {"caller_nid": "base_seleniumscraper_init_playwright", "callee": "start", "source_file": "backend/app/scraper/base.py", "source_location": "L117"}, {"caller_nid": "base_seleniumscraper_init_playwright", "callee": "sync_playwright", "source_file": "backend/app/scraper/base.py", "source_location": "L117"}, {"caller_nid": "base_seleniumscraper_init_playwright", "callee": "launch", "source_file": "backend/app/scraper/base.py", "source_location": "L118"}, {"caller_nid": "base_seleniumscraper_init_playwright", "callee": "new_context", "source_file": "backend/app/scraper/base.py", "source_location": "L119"}, {"caller_nid": "base_seleniumscraper_get_browser_page", "callee": "new_page", "source_file": "backend/app/scraper/base.py", "source_location": "L129"}, {"caller_nid": "base_seleniumscraper_get_browser_page", "callee": "goto", "source_file": "backend/app/scraper/base.py", "source_location": "L130"}, {"caller_nid": "base_seleniumscraper_cleanup", "callee": "close", "source_file": "backend/app/scraper/base.py", "source_location": "L135"}, {"caller_nid": "base_seleniumscraper_cleanup", "callee": "stop", "source_file": "backend/app/scraper/base.py", "source_location": "L137"}]}