SYMBOL INDEX (276 symbols across 20 files) FILE: build_docs.py function install_docs_requirements (line 9) | def install_docs_requirements(): function build_html_docs (line 23) | def build_html_docs(): function main (line 50) | def main(): FILE: gplay_scraper/app.py class GPlayScraper (line 12) | class GPlayScraper: method __init__ (line 28) | def __init__(self, http_client: str = None): method app_analyze (line 45) | def app_analyze(self, app_id: str, lang: str = Config.DEFAULT_LANGUAGE... method app_get_field (line 59) | def app_get_field(self, app_id: str, field: str, lang: str = Config.DE... method app_get_fields (line 74) | def app_get_fields(self, app_id: str, fields: List[str], lang: str = C... method app_print_field (line 89) | def app_print_field(self, app_id: str, field: str, lang: str = Config.... method app_print_fields (line 101) | def app_print_fields(self, app_id: str, fields: List[str], lang: str =... method app_print_all (line 113) | def app_print_all(self, app_id: str, lang: str = Config.DEFAULT_LANGUA... method search_analyze (line 126) | def search_analyze(self, query: str, count: int = Config.DEFAULT_SEARC... method search_get_field (line 140) | def search_get_field(self, query: str, field: str, count: int = Config... method search_get_fields (line 155) | def search_get_fields(self, query: str, fields: List[str], count: int ... method search_print_field (line 170) | def search_print_field(self, query: str, field: str, count: int = Conf... method search_print_fields (line 182) | def search_print_fields(self, query: str, fields: List[str], count: in... method search_print_all (line 194) | def search_print_all(self, query: str, count: int = Config.DEFAULT_SEA... method reviews_analyze (line 207) | def reviews_analyze(self, app_id: str, count: int = Config.DEFAULT_REV... method reviews_get_field (line 223) | def reviews_get_field(self, app_id: str, field: str, count: int = Conf... method reviews_get_fields (line 240) | def reviews_get_fields(self, app_id: str, fields: List[str], count: in... method reviews_print_field (line 257) | def reviews_print_field(self, app_id: str, field: str, count: int = Co... method reviews_print_fields (line 271) | def reviews_print_fields(self, app_id: str, fields: List[str], count: ... method reviews_print_all (line 285) | def reviews_print_all(self, app_id: str, count: int = Config.DEFAULT_R... method developer_analyze (line 300) | def developer_analyze(self, dev_id: str, count: int = Config.DEFAULT_D... method developer_get_field (line 314) | def developer_get_field(self, dev_id: str, field: str, count: int = Co... method developer_get_fields (line 329) | def developer_get_fields(self, dev_id: str, fields: List[str], count: ... method developer_print_field (line 344) | def developer_print_field(self, dev_id: str, field: str, count: int = ... method developer_print_fields (line 356) | def developer_print_fields(self, dev_id: str, fields: List[str], count... method developer_print_all (line 368) | def developer_print_all(self, dev_id: str, count: int = Config.DEFAULT... method similar_analyze (line 381) | def similar_analyze(self, app_id: str, count: int = Config.DEFAULT_SIM... method similar_get_field (line 395) | def similar_get_field(self, app_id: str, field: str, count: int = Conf... method similar_get_fields (line 410) | def similar_get_fields(self, app_id: str, fields: List[str], count: in... method similar_print_field (line 425) | def similar_print_field(self, app_id: str, field: str, count: int = Co... method similar_print_fields (line 437) | def similar_print_fields(self, app_id: str, fields: List[str], count: ... method similar_print_all (line 449) | def similar_print_all(self, app_id: str, count: int = Config.DEFAULT_S... method list_analyze (line 462) | def list_analyze(self, collection: str = Config.DEFAULT_LIST_COLLECTIO... method list_get_field (line 477) | def list_get_field(self, collection: str, field: str, category: str = ... method list_get_fields (line 493) | def list_get_fields(self, collection: str, fields: List[str], category... method list_print_field (line 509) | def list_print_field(self, collection: str, field: str, category: str ... method list_print_fields (line 522) | def list_print_fields(self, collection: str, fields: List[str], catego... method list_print_all (line 535) | def list_print_all(self, collection: str = Config.DEFAULT_LIST_COLLECT... method suggest_analyze (line 549) | def suggest_analyze(self, term: str, count: int = Config.DEFAULT_SUGGE... method suggest_nested (line 563) | def suggest_nested(self, term: str, count: int = Config.DEFAULT_SUGGES... method suggest_print_all (line 577) | def suggest_print_all(self, term: str, count: int = Config.DEFAULT_SUG... method suggest_print_nested (line 588) | def suggest_print_nested(self, term: str, count: int = Config.DEFAULT_... FILE: gplay_scraper/config.py class Config (line 10) | class Config: method get_headers (line 97) | def get_headers(cls, user_agent: str = None) -> Dict[str, str]: method get_image_size (line 111) | def get_image_size(cls, size: str = None) -> str: FILE: gplay_scraper/core/gplay_methods.py class AppMethods (line 27) | class AppMethods: method __init__ (line 29) | def __init__(self, http_client: str = None): method app_analyze (line 39) | def app_analyze(self, app_id: str, lang: str = Config.DEFAULT_LANGUAGE... method app_get_field (line 62) | def app_get_field(self, app_id: str, field: str, lang: str = Config.DE... method app_get_fields (line 78) | def app_get_fields(self, app_id: str, fields: List[str], lang: str = C... method app_print_field (line 95) | def app_print_field(self, app_id: str, field: str, lang: str = Config.... method app_print_fields (line 112) | def app_print_fields(self, app_id: str, fields: List[str], lang: str =... method app_print_all (line 130) | def app_print_all(self, app_id: str, lang: str = Config.DEFAULT_LANGUA... class SearchMethods (line 146) | class SearchMethods: method __init__ (line 148) | def __init__(self, http_client: str = None): method search_analyze (line 158) | def search_analyze(self, query: str, count: int = Config.DEFAULT_SEARC... method search_get_field (line 181) | def search_get_field(self, query: str, field: str, count: int = Config... method search_get_fields (line 198) | def search_get_fields(self, query: str, fields: List[str], count: int ... method search_print_field (line 215) | def search_print_field(self, query: str, field: str, count: int = Conf... method search_print_fields (line 233) | def search_print_fields(self, query: str, fields: List[str], count: in... method search_print_all (line 253) | def search_print_all(self, query: str, count: int = Config.DEFAULT_SEA... class ReviewsMethods (line 270) | class ReviewsMethods: method __init__ (line 272) | def __init__(self, http_client: str = None): method reviews_analyze (line 282) | def reviews_analyze(self, app_id: str, count: int = Config.DEFAULT_REV... method reviews_get_field (line 315) | def reviews_get_field(self, app_id: str, field: str, count: int = Conf... method reviews_get_fields (line 334) | def reviews_get_fields(self, app_id: str, fields: List[str], count: in... method reviews_print_field (line 353) | def reviews_print_field(self, app_id: str, field: str, count: int = Co... method reviews_print_fields (line 373) | def reviews_print_fields(self, app_id: str, fields: List[str], count: ... method reviews_print_all (line 394) | def reviews_print_all(self, app_id: str, count: int = Config.DEFAULT_R... class DeveloperMethods (line 412) | class DeveloperMethods: method __init__ (line 414) | def __init__(self, http_client: str = None): method developer_analyze (line 424) | def developer_analyze(self, dev_id: str, count: int = Config.DEFAULT_D... method developer_get_field (line 447) | def developer_get_field(self, dev_id: str, field: str, count: int = Co... method developer_get_fields (line 464) | def developer_get_fields(self, dev_id: str, fields: List[str], count: ... method developer_print_field (line 481) | def developer_print_field(self, dev_id: str, field: str, count: int = ... method developer_print_fields (line 499) | def developer_print_fields(self, dev_id: str, fields: List[str], count... method developer_print_all (line 519) | def developer_print_all(self, dev_id: str, count: int = Config.DEFAULT... class SimilarMethods (line 535) | class SimilarMethods: method __init__ (line 537) | def __init__(self, http_client: str = None): method similar_analyze (line 547) | def similar_analyze(self, app_id: str, count: int = Config.DEFAULT_SIM... method similar_get_field (line 570) | def similar_get_field(self, app_id: str, field: str, count: int = Conf... method similar_get_fields (line 587) | def similar_get_fields(self, app_id: str, fields: List[str], count: in... method similar_print_field (line 604) | def similar_print_field(self, app_id: str, field: str, count: int = Co... method similar_print_fields (line 622) | def similar_print_fields(self, app_id: str, fields: List[str], count: ... method similar_print_all (line 642) | def similar_print_all(self, app_id: str, count: int = Config.DEFAULT_S... class ListMethods (line 658) | class ListMethods: method __init__ (line 660) | def __init__(self, http_client: str = None): method list_analyze (line 670) | def list_analyze(self, collection: str = Config.DEFAULT_LIST_COLLECTIO... method list_get_field (line 688) | def list_get_field(self, collection: str, field: str, category: str = ... method list_get_fields (line 706) | def list_get_fields(self, collection: str, fields: List[str], category... method list_print_field (line 724) | def list_print_field(self, collection: str, field: str, category: str ... method list_print_fields (line 743) | def list_print_fields(self, collection: str, fields: List[str], catego... method list_print_all (line 764) | def list_print_all(self, collection: str = Config.DEFAULT_LIST_COLLECT... class SuggestMethods (line 781) | class SuggestMethods: method __init__ (line 783) | def __init__(self, http_client: str = None): method suggest_analyze (line 793) | def suggest_analyze(self, term: str, count: int = Config.DEFAULT_SUGGE... method suggest_nested (line 816) | def suggest_nested(self, term: str, count: int = Config.DEFAULT_SUGGES... method suggest_print_all (line 842) | def suggest_print_all(self, term: str, count: int = Config.DEFAULT_SUG... method suggest_print_nested (line 858) | def suggest_print_nested(self, term: str, count: int = Config.DEFAULT_... FILE: gplay_scraper/core/gplay_parser.py class AppParser (line 18) | class AppParser: method parse_app_data (line 21) | def parse_app_data(self, dataset: Dict, app_id: str, scraper=None, ass... method format_app_data (line 142) | def format_app_data(self, details: dict) -> dict: class SearchParser (line 212) | class SearchParser: method parse_search_results (line 216) | def parse_search_results(self, dataset: Dict, count: int) -> List[Dict]: method extract_search_result (line 244) | def extract_search_result(self, data) -> Dict: method format_search_result (line 262) | def format_search_result(self, result: dict) -> dict: method extract_pagination_token (line 286) | def extract_pagination_token(self, dataset: Dict) -> str: method parse_html_content (line 308) | def parse_html_content(self, html_content: str) -> Dict: class ReviewsParser (line 345) | class ReviewsParser: method parse_reviews_response (line 349) | def parse_reviews_response(self, content: str) -> Tuple[List[Dict], Op... method extract_review_data (line 406) | def extract_review_data(self, review_raw) -> Optional[Dict]: method parse_multiple_responses (line 436) | def parse_multiple_responses(self, dataset: Dict) -> List[Dict]: method format_reviews_data (line 466) | def format_reviews_data(self, reviews_data: List[Dict]) -> List[Dict]: class DeveloperParser (line 493) | class DeveloperParser: method parse_developer_data (line 497) | def parse_developer_data(self, dataset: Dict, dev_id: str) -> List[Dict]: method format_developer_data (line 547) | def format_developer_data(self, apps_data: List[Dict]) -> List[Dict]: class SimilarParser (line 577) | class SimilarParser: method parse_similar_data (line 581) | def parse_similar_data(self, dataset: Dict) -> List[Dict]: method format_similar_data (line 620) | def format_similar_data(self, apps_data: List[Dict]) -> List[Dict]: class ListParser (line 650) | class ListParser: method parse_list_data (line 654) | def parse_list_data(self, dataset: Dict, count: int) -> List[Dict]: method format_list_data (line 684) | def format_list_data(self, apps_data: List[Dict]) -> List[Dict]: class SuggestParser (line 717) | class SuggestParser: method parse_suggestions (line 721) | def parse_suggestions(self, dataset: Dict) -> List[str]: method format_suggestions (line 733) | def format_suggestions(self, suggestions: List[str]) -> List[str]: FILE: gplay_scraper/core/gplay_scraper.py class AppScraper (line 16) | class AppScraper: method __init__ (line 30) | def __init__(self, rate_limit_delay: float = None, http_client: str = ... method fetch_playstore_page (line 39) | def fetch_playstore_page(self, app_id: str, lang: str = Config.DEFAULT... method fetch_fallback_data (line 52) | def fetch_fallback_data(self, app_id: str, gl: str = None, no_locale: ... method scrape_play_store_data (line 86) | def scrape_play_store_data(self, app_id: str, lang: str = Config.DEFAU... class SearchScraper (line 120) | class SearchScraper: method __init__ (line 133) | def __init__(self, rate_limit_delay: float = None, http_client: str = ... method fetch_playstore_search (line 143) | def fetch_playstore_search(self, query: str, count: int, lang: str = C... method scrape_play_store_data (line 169) | def scrape_play_store_data(self, query: str, count: int = Config.DEFAU... method _get_nested_value (line 216) | def _get_nested_value(self, data, path, default=None): class ReviewsScraper (line 235) | class ReviewsScraper: method __init__ (line 248) | def __init__(self, rate_limit_delay: float = None, http_client: str = ... method fetch_reviews_batch (line 257) | def fetch_reviews_batch(self, app_id: str, lang: str = Config.DEFAULT_... method scrape_reviews_data (line 278) | def scrape_reviews_data(self, app_id: str, count: int = Config.DEFAULT... class DeveloperScraper (line 337) | class DeveloperScraper: method __init__ (line 350) | def __init__(self, rate_limit_delay: float = None, http_client: str = ... method fetch_developer_page (line 359) | def fetch_developer_page(self, dev_id: str, lang: str = Config.DEFAULT... method scrape_play_store_data (line 375) | def scrape_play_store_data(self, dev_id: str, lang: str = Config.DEFAU... class SimilarScraper (line 408) | class SimilarScraper: method __init__ (line 421) | def __init__(self, rate_limit_delay: float = None, http_client: str = ... method fetch_similar_page (line 430) | def fetch_similar_page(self, app_id: str, lang: str = Config.DEFAULT_L... method scrape_play_store_data (line 446) | def scrape_play_store_data(self, app_id: str, lang: str = Config.DEFAU... class ListScraper (line 491) | class ListScraper: method __init__ (line 504) | def __init__(self, rate_limit_delay: float = None, http_client: str = ... method scrape_play_store_data (line 515) | def scrape_play_store_data(self, collection: str, category: str = Conf... class SuggestScraper (line 543) | class SuggestScraper: method __init__ (line 556) | def __init__(self, rate_limit_delay: float = None, http_client: str = ... method scrape_suggestions (line 568) | def scrape_suggestions(self, term: str, lang: str = Config.DEFAULT_LAN... FILE: gplay_scraper/exceptions.py class GPlayScraperError (line 7) | class GPlayScraperError(Exception): class InvalidAppIdError (line 12) | class InvalidAppIdError(GPlayScraperError): class AppNotFoundError (line 17) | class AppNotFoundError(GPlayScraperError): class RateLimitError (line 22) | class RateLimitError(GPlayScraperError): class NetworkError (line 27) | class NetworkError(GPlayScraperError): class DataParsingError (line 32) | class DataParsingError(GPlayScraperError): FILE: gplay_scraper/models/element_specs.py function parse_permissions (line 14) | def parse_permissions(perms_data: Any) -> Dict[str, List[str]]: function nested_lookup (line 108) | def nested_lookup(obj: Any, key_list: List) -> Any: function format_image_url (line 139) | def format_image_url(url: str, size: str = None) -> str: class ElementSpec (line 166) | class ElementSpec: method __init__ (line 197) | def __init__( method extract_content (line 212) | def extract_content(self, source: dict, assets: str = None) -> Any: class ElementSpecs (line 260) | class ElementSpecs: FILE: gplay_scraper/utils/error_handling.py function retry_on_not_found (line 12) | def retry_on_not_found(max_retries=Config.DEFAULT_RETRY_COUNT, delay=1.0): function handle_network_errors (line 53) | def handle_network_errors(return_empty=False): function handle_parsing_errors (line 85) | def handle_parsing_errors(return_empty=False): function handle_rate_limit (line 117) | def handle_rate_limit(): function validate_inputs (line 159) | def validate_inputs(): function safe_print (line 199) | def safe_print(): function comprehensive_error_handler (line 234) | def comprehensive_error_handler(return_empty=False): FILE: gplay_scraper/utils/helpers.py function unescape_text (line 20) | def unescape_text(s: Optional[str]) -> Optional[str]: function clean_json_string (line 44) | def clean_json_string(json_str: str) -> str: function alternative_json_clean (line 76) | def alternative_json_clean(json_str: str) -> str: function parse_release_date (line 137) | def parse_release_date(release_date_str: Optional[str]) -> Optional[date... function calculate_app_age (line 165) | def calculate_app_age(release_date_str: Optional[str], current_date: dat... function parse_installs_string (line 198) | def parse_installs_string(installs_str: str) -> Optional[int]: function calculate_daily_installs (line 229) | def calculate_daily_installs(install_count, release_date_str: Optional[s... function calculate_monthly_installs (line 272) | def calculate_monthly_installs(install_count, release_date_str: Optional... function tamp_to_date (line 319) | def tamp_to_date(value) -> str: function get_publisher_country (line 348) | def get_publisher_country(phone: Optional[str], address: Optional[str]) ... function add_count (line 392) | def add_count(address): function pho_count (line 435) | def pho_count(phone): FILE: gplay_scraper/utils/http_client.py class HttpClient (line 25) | class HttpClient: method __init__ (line 47) | def __init__(self, rate_limit_delay: float = None, client_type: str = ... method _setup_client (line 65) | def _setup_client(self): method _try_requests (line 100) | def _try_requests(self): method _try_curl_cffi (line 116) | def _try_curl_cffi(self): method _try_tls_client (line 138) | def _try_tls_client(self): method _try_urllib3 (line 162) | def _try_urllib3(self): method _try_cloudscraper (line 184) | def _try_cloudscraper(self): method _try_aiohttp (line 206) | def _try_aiohttp(self): method _try_httpx (line 230) | def _try_httpx(self): method fetch_app_page (line 254) | def fetch_app_page(self, app_id: str, lang: str = Config.DEFAULT_LANGU... method fetch_app_page_no_locale (line 296) | def fetch_app_page_no_locale(self, app_id: str) -> str: method fetch_search_page (line 316) | def fetch_search_page(self, query: str = None, token: str = None, need... method fetch_reviews_batch (line 379) | def fetch_reviews_batch(self, app_id: str, lang: str = Config.DEFAULT_... method fetch_developer_page (line 421) | def fetch_developer_page(self, dev_id: str, lang: str = Config.DEFAULT... method fetch_cluster_page (line 462) | def fetch_cluster_page(self, cluster_url: str, lang: str = Config.DEFA... method fetch_list_page (line 490) | def fetch_list_page(self, collection: str, category: str = Config.DEFA... method fetch_suggest_page (line 527) | def fetch_suggest_page(self, term: str, lang: str = Config.DEFAULT_LAN... method _make_request (line 563) | def _make_request(self, method: str, url: str, **kwargs): method _try_request_with_client (line 608) | def _try_request_with_client(self, client_type: str, method: str, url:... method _async_request (line 727) | async def _async_request(self, method: str, url: str, **kwargs): method _is_404_error (line 763) | def _is_404_error(self, error: Exception) -> bool: method _try_next_client (line 783) | def _try_next_client(self): method rate_limit (line 807) | def rate_limit(self): FILE: tests/test_app_methods.py class TestAppMethods (line 8) | class TestAppMethods(unittest.TestCase): method setUpClass (line 11) | def setUpClass(cls): method test_app_analyze (line 17) | def test_app_analyze(self): method test_app_get_field (line 35) | def test_app_get_field(self): method test_app_get_fields (line 48) | def test_app_get_fields(self): method test_app_print_field (line 63) | def test_app_print_field(self): method test_app_print_fields (line 75) | def test_app_print_fields(self): method test_app_print_all (line 87) | def test_app_print_all(self): FILE: tests/test_basic.py class TestBasicFunctionality (line 11) | class TestBasicFunctionality(unittest.TestCase): method test_import_gplay_scraper (line 14) | def test_import_gplay_scraper(self): method test_scraper_initialization (line 19) | def test_scraper_initialization(self): method test_scraper_initialization_with_http_client (line 24) | def test_scraper_initialization_with_http_client(self): method test_scraper_has_required_methods (line 38) | def test_scraper_has_required_methods(self): FILE: tests/test_developer_methods.py class TestDeveloperMethods (line 12) | class TestDeveloperMethods(unittest.TestCase): method setUp (line 15) | def setUp(self): method test_developer_analyze (line 23) | def test_developer_analyze(self): method test_developer_get_field (line 38) | def test_developer_get_field(self): method test_developer_get_fields (line 52) | def test_developer_get_fields(self): method test_developer_print_field (line 66) | def test_developer_print_field(self): method test_developer_print_fields (line 78) | def test_developer_print_fields(self): method test_developer_print_all (line 90) | def test_developer_print_all(self): FILE: tests/test_list_methods.py class TestListMethods (line 12) | class TestListMethods(unittest.TestCase): method setUp (line 15) | def setUp(self): method test_list_analyze (line 24) | def test_list_analyze(self): method test_list_get_field (line 39) | def test_list_get_field(self): method test_list_get_fields (line 53) | def test_list_get_fields(self): method test_list_print_field (line 67) | def test_list_print_field(self): method test_list_print_fields (line 79) | def test_list_print_fields(self): method test_list_print_all (line 91) | def test_list_print_all(self): FILE: tests/test_package.py class TestPackageFunctionality (line 17) | class TestPackageFunctionality(unittest.TestCase): method test_import_gplay_scraper (line 20) | def test_import_gplay_scraper(self): method test_scraper_initialization (line 25) | def test_scraper_initialization(self): method test_http_clients (line 30) | def test_http_clients(self): method test_all_methods_exist (line 46) | def test_all_methods_exist(self): FILE: tests/test_reviews_methods.py class TestReviewsMethods (line 12) | class TestReviewsMethods(unittest.TestCase): method setUp (line 15) | def setUp(self): method test_reviews_analyze (line 24) | def test_reviews_analyze(self): method test_reviews_get_field (line 40) | def test_reviews_get_field(self): method test_reviews_get_fields (line 54) | def test_reviews_get_fields(self): method test_reviews_print_field (line 68) | def test_reviews_print_field(self): method test_reviews_print_fields (line 80) | def test_reviews_print_fields(self): method test_reviews_print_all (line 92) | def test_reviews_print_all(self): FILE: tests/test_search_methods.py class TestSearchMethods (line 12) | class TestSearchMethods(unittest.TestCase): method setUpClass (line 15) | def setUpClass(cls): method test_search_analyze (line 22) | def test_search_analyze(self): method test_search_get_field (line 38) | def test_search_get_field(self): method test_search_get_fields (line 53) | def test_search_get_fields(self): method test_search_print_field (line 71) | def test_search_print_field(self): method test_search_print_fields (line 83) | def test_search_print_fields(self): method test_search_print_all (line 95) | def test_search_print_all(self): FILE: tests/test_similar_methods.py class TestSimilarMethods (line 12) | class TestSimilarMethods(unittest.TestCase): method setUp (line 15) | def setUp(self): method test_similar_analyze (line 23) | def test_similar_analyze(self): method test_similar_get_field (line 38) | def test_similar_get_field(self): method test_similar_get_fields (line 52) | def test_similar_get_fields(self): method test_similar_print_field (line 66) | def test_similar_print_field(self): method test_similar_print_fields (line 78) | def test_similar_print_fields(self): method test_similar_print_all (line 90) | def test_similar_print_all(self): FILE: tests/test_suggest_methods.py class TestSuggestMethods (line 12) | class TestSuggestMethods(unittest.TestCase): method setUp (line 15) | def setUp(self): method test_suggest_analyze (line 23) | def test_suggest_analyze(self): method test_suggest_nested (line 38) | def test_suggest_nested(self): method test_suggest_print_nested (line 52) | def test_suggest_print_nested(self): method test_suggest_print_all (line 64) | def test_suggest_print_all(self):