diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8cae48f..e550ca3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,7 +21,7 @@ repos: name: flake8 - repo: https://github.com/pycqa/isort - rev: 5.10.1 + rev: 5.12.0 hooks: - id: isort name: isort diff --git a/README.md b/README.md index d7d37ae..b44b099 100644 --- a/README.md +++ b/README.md @@ -53,3 +53,6 @@ A - Да. Для этого вам нужно перечислить ссылк Q - Можно ли уменьшить задержку между запросами?
A - Нет, это ограничение идет со стороны Market API и обойти его никак нельзя. + +Q - У меня при работе приложения вылезла ошибка "Получена неизвестная ошибка". Что делать?
+A - Конкретных решений данной проблемы нет. Но чаще всего она появляется из-за слишком частых запросов. Возможно, у вас работает дополнительно другое приложение, которое также взаимодействует с торговой площадкой. В данном случае вам придется отключить одно из приложений. diff --git a/pyproject.toml b/pyproject.toml index 8b59e9c..131e189 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "lolz-auto-buyer" -version = "1.1.1" +version = "1.1.2" description = "Application for buying accounts from market lolzteam forum" authors = ["ZeN220 "] diff --git a/src/__main__.py b/src/__main__.py index 40b10fe..42dae86 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -6,7 +6,7 @@ from src.telegram import TelegramAPI TELEGRAM_MESSAGE = ( - '👷 Приобретен аккаунт: ' + '🎊 Приобретен аккаунт: ' "{title}\n" "💲 Цена: {price}₽\n" '👷 Продавец: ' @@ -42,8 +42,7 @@ def main(): len(items), ) - for item in items: - item_id = item["item_id"] + for item_id, item in items.items(): market_item = MarketItem(item, lolzteam_token) try: logging.info("Покупаю аккаунт %s", item_id) diff --git a/src/market/base.py b/src/market/base.py index ef6541b..2237a97 100644 --- a/src/market/base.py +++ b/src/market/base.py @@ -1,4 +1,5 @@ import json +import logging import time from socket import error as socket_error from typing import Optional @@ -6,6 +7,8 @@ from .errors import MarketBuyError +logger = logging.getLogger(__name__) + class BaseMarketAPI: API_URL: str = "https://api.lzt.market/" @@ -45,7 +48,16 @@ def api_request( except error.HTTPError as http_error: error_response = http_error.read().decode("utf-8") - error_response = json.loads(error_response).get("errors") + logger.warning("Получена ошибка: %s", error_response) + try: + error_response = json.loads(error_response).get("errors") + except json.decoder.JSONDecodeError: + """ + Some errors return body as HTML, + so error is logged and called MarketBuyError + to stop application + """ + raise MarketBuyError("Получена неизвестная ошибка") raise MarketBuyError(error_response[0]) except (error.URLError, socket_error): """