hh-applicant-tool 0.5.4__py3-none-any.whl → 0.5.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of hh-applicant-tool might be problematic. Click here for more details.
- hh_applicant_tool/main.py +2 -5
- hh_applicant_tool/operations/authorize.py +14 -6
- {hh_applicant_tool-0.5.4.dist-info → hh_applicant_tool-0.5.5.dist-info}/METADATA +6 -6
- {hh_applicant_tool-0.5.4.dist-info → hh_applicant_tool-0.5.5.dist-info}/RECORD +6 -6
- {hh_applicant_tool-0.5.4.dist-info → hh_applicant_tool-0.5.5.dist-info}/WHEEL +1 -1
- {hh_applicant_tool-0.5.4.dist-info → hh_applicant_tool-0.5.5.dist-info}/entry_points.txt +0 -0
hh_applicant_tool/main.py
CHANGED
|
@@ -21,8 +21,7 @@ logger = logging.getLogger(__package__)
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class BaseOperation:
|
|
24
|
-
def setup_parser(self, parser: argparse.ArgumentParser) -> None:
|
|
25
|
-
...
|
|
24
|
+
def setup_parser(self, parser: argparse.ArgumentParser) -> None: ...
|
|
26
25
|
|
|
27
26
|
def run(self, args: argparse.Namespace) -> None | int:
|
|
28
27
|
raise NotImplementedError()
|
|
@@ -99,9 +98,7 @@ class HHApplicantTool:
|
|
|
99
98
|
default=0.334,
|
|
100
99
|
help="Задержка между запросами к API HH",
|
|
101
100
|
)
|
|
102
|
-
parser.add_argument(
|
|
103
|
-
"--user-agent", help="User-Agent для каждого запроса"
|
|
104
|
-
)
|
|
101
|
+
parser.add_argument("--user-agent", help="User-Agent для каждого запроса")
|
|
105
102
|
parser.add_argument(
|
|
106
103
|
"--proxy-url", help="Прокси, используемый для запросов к API"
|
|
107
104
|
)
|
|
@@ -4,12 +4,18 @@ import time
|
|
|
4
4
|
from urllib.parse import parse_qs, urlsplit
|
|
5
5
|
import sys
|
|
6
6
|
from typing import Any
|
|
7
|
+
from ..utils import print_err
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
QT_IMPORTED = False
|
|
7
11
|
|
|
8
12
|
try:
|
|
9
13
|
from PyQt6.QtCore import QUrl
|
|
10
14
|
from PyQt6.QtWidgets import QApplication, QMainWindow
|
|
11
15
|
from PyQt6.QtWebEngineCore import QWebEngineUrlSchemeHandler
|
|
12
16
|
from PyQt6.QtWebEngineWidgets import QWebEngineView
|
|
17
|
+
|
|
18
|
+
QT_IMPORTED = True
|
|
13
19
|
except ImportError:
|
|
14
20
|
# Заглушки чтобы на сервере не нужно было ставить сотни мегабайт qt-говна
|
|
15
21
|
|
|
@@ -48,9 +54,7 @@ class HHAndroidUrlSchemeHandler(QWebEngineUrlSchemeHandler):
|
|
|
48
54
|
|
|
49
55
|
|
|
50
56
|
class WebViewWindow(QMainWindow):
|
|
51
|
-
def __init__(
|
|
52
|
-
self, url: str, oauth_client: OAuthClient, config: Config
|
|
53
|
-
) -> None:
|
|
57
|
+
def __init__(self, url: str, oauth_client: OAuthClient, config: Config) -> None:
|
|
54
58
|
super().__init__()
|
|
55
59
|
self.oauth_client = oauth_client
|
|
56
60
|
self.config = config
|
|
@@ -85,10 +89,14 @@ class Operation(BaseOperation):
|
|
|
85
89
|
pass
|
|
86
90
|
|
|
87
91
|
def run(self, args: Namespace) -> None:
|
|
92
|
+
if not QT_IMPORTED:
|
|
93
|
+
print_err(
|
|
94
|
+
"❗Критиническая Ошибка: PyQt6 не был импортирован, возможно, вы долбоеб и забыли его установить, либо же криворукие разрабы этой либы опять все сломали..."
|
|
95
|
+
)
|
|
96
|
+
sys.exit(1)
|
|
97
|
+
|
|
88
98
|
oauth = OAuthClient(
|
|
89
|
-
user_agent=(
|
|
90
|
-
args.config["oauth_user_agent"] or args.config["user_agent"]
|
|
91
|
-
),
|
|
99
|
+
user_agent=(args.config["oauth_user_agent"] or args.config["user_agent"]),
|
|
92
100
|
)
|
|
93
101
|
|
|
94
102
|
app = QApplication(sys.argv)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: hh-applicant-tool
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.5
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Senior YAML Developer
|
|
6
6
|
Author-email: yamldeveloper@proton.me
|
|
@@ -12,8 +12,8 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.13
|
|
13
13
|
Provides-Extra: qt
|
|
14
14
|
Requires-Dist: prettytable (>=3.6.0,<4.0.0)
|
|
15
|
-
Requires-Dist: pyqt6 (
|
|
16
|
-
Requires-Dist: pyqt6-webengine (
|
|
15
|
+
Requires-Dist: pyqt6 (==6.7.0) ; extra == "qt"
|
|
16
|
+
Requires-Dist: pyqt6-webengine (==6.7.0) ; extra == "qt"
|
|
17
17
|
Requires-Dist: requests[socks] (>=2.32.3,<3.0.0)
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
|
|
@@ -34,7 +34,7 @@ Description-Content-Type: text/markdown
|
|
|
34
34
|
|
|
35
35
|
> Утилита для генерации сопроводительного письма может использовать AI
|
|
36
36
|
|
|
37
|
-
Утилита для успешных волчат и старых волков с опытом, служащая для автоматизации действий на HH.RU таких как рассылка откликов на подходящие вакансии и обновление всех резюме (бесплатный аналог услуги на HH).
|
|
37
|
+
Утилита для успешных волчат и старых волков с опытом, служащая для автоматизации действий на HH.RU таких как рассылка откликов на подходящие вакансии и обновление всех резюме (бесплатный аналог услуги на HH). Утилита позволяет получить контактные данные работодателя, даже если тот не присылал приглашения. Для этого собираются данные о работодателях и их вакансиях (персональные данные пользователя не передаются ни в каком виде, а данные работодателя сами по себе персональными данными не являются, так как часто указаны на сайтах и так же доступны неограниченному кругу лиц на hh). Отправку этих данных на сервер разработчика можно отключить. У утилиты есть группа, с которой я еще не придумал, что делать: [Отзывы о работодателях с HH.RU](https://t.me/otzyvy_headhunter). Там сейчас постятся ссылки для отзывов на отказников.
|
|
38
38
|
|
|
39
39
|
Работает с Python >= 3.10. Нужную версию Python можно поставить через
|
|
40
40
|
asdf/pyenv/conda и что-то еще.
|
|
@@ -81,7 +81,7 @@ $ pipx upgrade hh-applicant-tool
|
|
|
81
81
|
Данная политика разрешает текущему пользователю (от которого зашли) запускать скрипты. Без нее не будут работать виртуальные окружения.
|
|
82
82
|
* Создайте и активируйте виртуальное окружение:
|
|
83
83
|
```ps
|
|
84
|
-
PS> python -m
|
|
84
|
+
PS> python -m venv hh-applicant-venv
|
|
85
85
|
PS> .\hh-applicant-venv\Scripts\activate
|
|
86
86
|
```
|
|
87
87
|
* Поставьте все пакеты в виртуальное окружение `hh-applicant-venv`:
|
|
@@ -251,7 +251,7 @@ https://hh.ru/employer/1918903
|
|
|
251
251
|
| **call-api** | Вызов произвольного метода API с выводом результата. |
|
|
252
252
|
| **refresh-token** | Обновляет access_token. |
|
|
253
253
|
| **config** | Редактировать конфигурационный файл. |
|
|
254
|
-
| **get-employer-contacts** | Получить список контактов работодателя, даже если тот не высылал приглашения.
|
|
254
|
+
| **get-employer-contacts** | Получить список контактов работодателя, даже если тот не высылал приглашения. В группе есть бесплатный бот с тем же функционалом. |
|
|
255
255
|
|
|
256
256
|
### Формат текста сообщений
|
|
257
257
|
|
|
@@ -7,11 +7,11 @@ hh_applicant_tool/api/client.py,sha256=um9NX22hNOtSuPCobCKf1anIFp-jiZlIXm4BuqN-L
|
|
|
7
7
|
hh_applicant_tool/api/errors.py,sha256=0SoWKnsSUA0K2YgQA8GwGhe-pRMwtfK94MR6_MgbORQ,1722
|
|
8
8
|
hh_applicant_tool/color_log.py,sha256=gN6j1Ayy1G7qOMI_e3WvfYw_ublzeQbKgsVLhqGg_3s,823
|
|
9
9
|
hh_applicant_tool/constants.py,sha256=lpgKkP2chWgTnBXvzxbSPWpKcfzp8VxMTlkssFcQhH4,469
|
|
10
|
-
hh_applicant_tool/main.py,sha256=
|
|
10
|
+
hh_applicant_tool/main.py,sha256=j4kG7H0qxJebGwVs3fjc4udOk7rVvffsB2114UgI9e8,4776
|
|
11
11
|
hh_applicant_tool/mixins.py,sha256=66LmyYSsDfhrpUwoAONjzrd5aoXqaZVoQ-zXhyYbYMk,418
|
|
12
12
|
hh_applicant_tool/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
hh_applicant_tool/operations/apply_similar.py,sha256=IYpf8PabOJF6vmbsKYir1NgW0Y2XviBanIGjsbz9AD4,16649
|
|
14
|
-
hh_applicant_tool/operations/authorize.py,sha256=
|
|
14
|
+
hh_applicant_tool/operations/authorize.py,sha256=e0V3uo9daCa4zZDb4vxoiQqtmSIRV04wzGSqCN280q0,3599
|
|
15
15
|
hh_applicant_tool/operations/call_api.py,sha256=qwPDrWP9tiqHkaYYWYBZtymj9AaxObB86Eny-Bf5q_c,1314
|
|
16
16
|
hh_applicant_tool/operations/clear_negotiations.py,sha256=GEsL1snxz8TJ3i7Nz6LkP4FZOzRBdAofX3xf3Ywj64k,4369
|
|
17
17
|
hh_applicant_tool/operations/config.py,sha256=PJpPPDJaQwqyZ_T55Mlf0oAoeNeMUG_yJoz605XZGxI,959
|
|
@@ -24,7 +24,7 @@ hh_applicant_tool/operations/whoami.py,sha256=sg0r7m6oKkpMEmGt4QdtYdS-1gf-1KKdnk
|
|
|
24
24
|
hh_applicant_tool/telemetry_client.py,sha256=wYLbKnx3sOmESFHqjLt-0Gww1O3lJiXFYdWnsorIhK8,3261
|
|
25
25
|
hh_applicant_tool/types.py,sha256=q3yaIcq-UOkPzjxws0OFa4w9fTty-yx79_dic70_dUM,843
|
|
26
26
|
hh_applicant_tool/utils.py,sha256=pKmyG55HGmOvOXtHK0x9JBdEfm-hd1b8XroG9tEPSPQ,3146
|
|
27
|
-
hh_applicant_tool-0.5.
|
|
28
|
-
hh_applicant_tool-0.5.
|
|
29
|
-
hh_applicant_tool-0.5.
|
|
30
|
-
hh_applicant_tool-0.5.
|
|
27
|
+
hh_applicant_tool-0.5.5.dist-info/METADATA,sha256=Pm-g4v1ZQtgwRSEzWxQJnjRo9gE77vioW4IvxlRcEtI,20166
|
|
28
|
+
hh_applicant_tool-0.5.5.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
29
|
+
hh_applicant_tool-0.5.5.dist-info/entry_points.txt,sha256=Vb7M2YaYLMtKYJZh8chIrXZApMzSRFT1-rQw-U9r10g,65
|
|
30
|
+
hh_applicant_tool-0.5.5.dist-info/RECORD,,
|
|
File without changes
|