Почему перестает работать код без каких-либо ошибок Python?
Ставлю брейкпоинт на объявление переменной send_sms в main(). Но отладчик не останавливается на данном месте. Если его поставить на любую строку до этой, то отладчик откроется, но на этой строке все перестает работать.
Ниже фото, на котором видно консоль.
Запустил код и не останавливал работу, спустя минут 10 все заработало, но почему такая задержка?
import re
from json import JSONDecodeError
import requests
import json
from time import sleep
import pyautogui as pag
api = 'api'
service = 'tg'
def url_to_dict(url):
response = requests.get(url).content
try:
return json.loads(response)
except JSONDecodeError:
return response.decode('utf-8')
def find_cheapest(dictionary):
best_country_key = ''
best_price_float = 100000
for i in dictionary:
country_dict = dictionary.get(i)
# 66 = pakistan (no pakistan)
if len(country_dict) == 0 or i == '66' or i == '90' or i == '79' or i == '98':
continue
prices = country_dict.get(service)
first_price = float(list(prices.keys())[0])
if first_price < best_price_float:
best_country_key = i
best_price_float = first_price
return best_country_key
def handle_errors(element):
if element == 'BAD_ACTION':
raise Exception('Общее неправильное формирование запроса')
elif element == 'BAD_SERVICE':
raise Exception('Некорректное наименование сервиса')
elif element == 'BAD_KEY':
raise Exception('Неверный API-ключ')
elif element == 'ERROR_SQL':
raise Exception('Ошибка базы SQL-сервера')
elif element == 'NO_NUMBERS':
pag.doubleClick(1898, 931)
sleep(1)
pag.click(1576, 336)
main()
elif element == 'NO_BALANCE':
raise Exception('Закончились деньги на API-ключе')
elif element == 'WRONG_SERVICE':
raise Exception('Не верный идентификатор сервиса')
def main():
sleep(3)
print('поспал')
pag.click(937, 909)
print('открыл')
data = url_to_dict(
f'https://smshub.org/stubs/handler_api.php?api_key={api}&action=getPri'
f'ces&service={service}'
)
best_country = find_cheapest(data)
print('нашел лучшую страну')
bought = url_to_dict(
f'https://smshub.org/stubs/handler_api.php?api_key={api}&action=getNum'
f'ber&service={service}&operator=any&country={best_country}'
)
print('купил')
handle_errors(bought)
print('проверил ошибки')
splitted_bought = bought.split(':')
print('разделил')
sleep(1)
print('поспал')
pag.press('backspace', 30)
print('отчистил')
sleep(1)
print('поспал')
pag.write(splitted_bought[2], interval=0.4)
print('написал телефон')
pag.click(1732, 934)
print('продолжил')
sleep(1)
print('поспал перед ошибкой')
error1 = pag.locateOnScreen('screenshots\\error_tg1.png')
print('проверил 1 ошибку')
error2 = pag.locateOnScreen('screenshots\\error_tg2.png')
print('проверил 2 ошибку')
if error1 is not None or error2 is not None:
pag.click(1246, 663)
sleep(1)
pag.doubleClick(1898, 931)
sleep(1)
pag.click(1576, 336)
url_to_dict(
f'https://smshub.org/stubs/handler_api.php?api_key={api}&action=se'
f'tStatus&status=8&id={splitted_bought[1]}'
)
if error1 is not None:
sleep(120)
else:
sleep(2)
main()
send_sms = pag.locateOnScreen('screenshots\\send_sms_tg.png')
print('проверил смс кнопку')
if send_sms is not None:
pag.click(send_sms)
print('нажал смс кнопку')
info = url_to_dict(
f'https://smshub.org/stubs/handler_api.php?api_key={api}&action=getSta'
f'tus&id={splitted_bought[1]}'
)
print('нашел инфу')
code = re.findall(r'\d+', info)
print('нашел полукод')
time = 0
while len(code) == 0:
info = url_to_dict(
f'https://smshub.org/stubs/handler_api.php?api_key={api}&action=ge'
f'tStatus&id={splitted_bought[1]}'
)
code = re.findall(r'\d+', info)
sleep(1)
time += 1
print(time)
print(code)
if time == 120:
pag.doubleClick(1898, 931)
sleep(1)
pag.click(1036, 682)
sleep(1)
pag.doubleClick(1898, 931)
sleep(1)
pag.click(1576, 336)
sleep(1)
url_to_dict(
f'https://smshub.org/stubs/handler_api.php?api_key={api}&actio'
f'n=setStatus&status=8&id={splitted_bought[1]}'
)
main()
pag.write(code[0], interval=0.4)
print(1)
if __name__ == '__main__':
main()
Работа останавливается после сообщения print('поспал перед ошибкой') в main().
