diff --git a/hh_applicant_tool/operations/apply_similar.py b/hh_applicant_tool/operations/apply_similar.py index ee886d5..38586f0 100644 --- a/hh_applicant_tool/operations/apply_similar.py +++ b/hh_applicant_tool/operations/apply_similar.py @@ -134,7 +134,7 @@ def _apply_similar( if getenv("TEST_TELEMETRY"): break - if vacancy["has_test"]: + if vacancy.get("has_test"): print("🚫 Пропускаем тест", vacancy["alternate_url"]) continue @@ -147,16 +147,23 @@ def _apply_similar( ) continue - employer_id = vacancy["employer"]["id"] - employer = api.get(f"/employers/{employer_id}") + try: + employer_id = vacancy["employer"]["id"] + except IndexError: + logger.warning( + f"Вакансия без работодателя: {vacancy['alternate_url']}" + ) + else: + employer = api.get(f"/employers/{employer_id}") + + telemetry_data["employers"][employer_id] = { + "name": employer.get("name"), + "type": employer.get("type"), + "description": employer.get("description"), + "site_url": employer.get("site_url"), + "area": employer.get("area", {}).get("name"), # город + } - telemetry_data["employers"][employer_id] = { - "name": employer.get("name"), - "type": employer.get("type"), - "description": employer.get("description"), - "site_url": employer.get("site_url"), - "area": employer.get("area", {}).get("name"), # город - } # Задержка перед отправкой отклика interval = random.uniform( apply_min_interval, apply_max_interval @@ -242,7 +249,11 @@ def _collect_vacancy_telemetry( "contacts": vacancy.get( "contacts" ), # пиздорванки там телеграм для связи указывают - "employer_id": int(vacancy["employer"]["id"]), + # HH с точки зрения перфикциониста — кусок говна, где кривые + # форматы даты, у вакансий может не быть работодателя... + "employer_id": int(vacancy["employer"]["id"]) + if "employer" in vacancy and "id" in vacancy["employer"] + else None, # Остальное неинтересно } @@ -250,7 +261,9 @@ def _send_telemetry( self, telemetry_client, telemetry_data: defaultdict ) -> None: try: - res = telemetry_client.send_telemetry("/collect", dict(telemetry_data)) + res = telemetry_client.send_telemetry( + "/collect", dict(telemetry_data) + ) logger.debug(res) except TelemetryError as ex: logger.error(ex) diff --git a/pyproject.toml b/pyproject.toml index 99c6213..ebda9f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "hh-applicant-tool" -version = "0.3.3" +version = "0.3.4" description = "" authors = ["Senior YAML Developer "] readme = "README.md"