Ответы пользователя по тегу Python
  • Почему в данном примере запуска потока с переданным аргументом, есть разница между способом передачи аргумента?

    @dim5x
    ЗИ, ИБ.
    В любом замыкании в Python переменные связываются по имени.
    l = []
    for i in range(3):
        l.append(lambda: i)
    print([f() for f in l])
    >>> [2, 2, 2]


    Выход из ситуации — создание отдельной функции или передача аргументов по их имени:
    l = []
    for i in range(3):
        l.append(lambda i = i : i)
    print([f() for f in l])
    >>> [0, 1, 2]


    Т.е. это не вопрос в потоках.
    Ответ написан
    Комментировать
  • Как решить проблему с терминалом PyCharm?

    @dim5x
    ЗИ, ИБ.
    1. Не использовать пробелы в пути.
    2. Или заключить путь c пробелами в двойные кавычки.
    Ответ написан
    Комментировать
  • Почему не находит картинку pyautogui?

    @dim5x
    ЗИ, ИБ.
    Запускать как-нибудь так?
    while True:
        try:
            x = pa.locateCenterOnScreen(r"C:\Python Scripts\library\proga.png", confidence=0.5)
            print(x)
        except Exception as e:
            print(e)

    Если координаты получить нужно разово, то естественно без цикла.
    Ну и, как я понял, картинка должна касаться центра, если где-то в углах, то координаты не возвращаются.
    Ответ написан
  • Как перебрать список по одной итерации, задавая вопросы пользователю?

    @dim5x
    ЗИ, ИБ.
    for i in read:
        print(i['title'])
        user_answer = input('Это нужное объявление? (y/n) ')  # получаем ответ пользователя 
        if user_answer == 'y':
            ...
        else:
            ...
    Ответ написан
  • Почему не работает код?

    @dim5x
    ЗИ, ИБ.
    Потому что len_pass_numbers.lower() (и прочие) возвращает вам строку 'да', а вы сравниваете с 'Да'.
    Соответственно ваш "алфавит" - chars - пустой.

    Ну и, вероятно, удобнее пользоваться встроенными коллекциями, чем вручную набивать:
    from string import digits, ascii_lowercase, ascii_uppercase, punctuation
    Ответ написан
    3 комментария
  • Не могу получать ответ в авторизации через python?

    @dim5x
    ЗИ, ИБ.
    У меня работает так:
    1. Авторизация:
    import requests
    
    url = 'https://texttospeech.ru/api/v1/login'
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0',
        'Content-Type': 'text/plain;charset=UTF-8',
    }
    
    data = {"email": "sample@email.com", "pass": "password", "captcha": ""}
    
    session = requests.Session()
    response = session.post(url, json=data)
    
    print(response.text)

    65ee54c4e9c13651933899.png

    2. Код для генерации mp3 из текста:
    import requests
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0',
        'Content-Type': 'text/plain;charset=UTF-8',
    }
    
    
    def get_token() -> str:
        url = 'https://texttospeech.ru/api/v1/login'
        data = {"email": "sample@email.com", "pass": "password", "captcha": ""}
        with requests.Session() as session:
            response = session.post(url, headers=headers, json=data)
            token = response.json().get('data').get('token')
            return token
    
    
    headers['token'] = get_token()
    
    
    def synthesize(text: str) -> None:
        url = 'https://texttospeech.ru/api/v1/synthesize'
        data = {"rate": "0", "pitch": "0", "volume": "0", "hertz": "0", "shift": "0", "echo": "0",
                "text": f'{text}',
                "code": "ru-RU009",
                "format": "mp3"}
        with requests.Session() as session:
            response = session.post(url, headers=headers, json=data)
            if response.status_code == 200:
                print(response.json().get('message'))
                filelink = response.json().get('data').get('filelink')
                with open(f'{text[0:10]}.mp3', 'wb') as file:
                    response = session.get(f'https://texttospeech.ru/{filelink}', headers=headers)
                    file.write(response.content)
            else:
                print(response.text)
    
    
    synthesize('Привет мир')
    Ответ написан
  • Как узнать дату регистрации какого-либо аккаунта в вк с помощью питона?

    @dim5x
    ЗИ, ИБ.
    Так?
    import requests
    
    
    def parse(vk_id: int) -> str:
        url = f'https://vk.com/foaf.php?id={vk_id}'
        r = requests.get(url)
        for line in r.text.split('\n'):
            if 'ya:created' in line:
                return line.split('=')[1]
        else:
            return 'Not found.'
    
    
    print(parse(1))
    Ответ написан
  • Ошибка в коде как исправить?

    @dim5x
    ЗИ, ИБ.
    По первой: on_component - это не атрибут бота, а внутреннее событие.
    Писать надо как-то так:
    # Обработчик нажатия на кнопку присоединения к игре
    @bot.event
    async def on_component(interaction):
        global players
        if interaction.author not in players:
            players[interaction.author] = None
            await interaction.response.send_message(content=f"{interaction.author.mention} присоединился к игре!",
                                                    ephemeral=True)
        else:
            await interaction.response.send_message(content="Вы уже присоединились к игре!", ephemeral=True)

    По второй: intents = disnake.Intents.all()

    65ea40dbe196f490077828.png

    З.Ы. И, может быть, лучше делать на слэш командах? - чтобы пользователям не нужно было прописывать их текстом и помнить их формат, а просто тыкать мышой.
    Ответ написан
    Комментировать
  • Почему google colab завершает работу скрипта?

    @dim5x
    ЗИ, ИБ.
    Добавить while True: pass?

    ...
    for i in range(5):
        threading.Thread(target=write).start()
        
    while True:
        pass


    65e9ecc1f3807573089137.png
    Ответ написан
  • Python парсинг, скрипт перестал вытягивать информацию, как исправить?

    @dim5x
    ЗИ, ИБ.
    Такой вариант не подойдёт? Рендерится через Chromium.

    from requests_html import HTMLSession
    
    def download(url):
        session = HTMLSession()
        resp = session.get(url)
        resp.html.render()
    
        if resp.status_code == 200:
            list_of_img = resp.html.find('img')
            d = list_of_img[0].attrs
            image_url = d['srcset'].split(',')[-1].split(' ')[0]
            image_name = image_url.split('/')[-1]
            image = session.get(image_url).content
            with open(image_name, 'wb') as file:
                file.write(image)
        else:
            print(f"[ERROR] Не удалось загрузить изображение:\n{url}")
    
        session.close()
    
    download('https://scrolller.com/i-dragged-my-brother-out-at-1am-to-see-the-aogsmn8ihx')
    Ответ написан
    Комментировать
  • Как мне настроить pip в venv?

    @dim5x
    ЗИ, ИБ.
    Так импортировать надо lxml, а не lmxl.
    Ответ написан
    Комментировать
  • Не выходит сделать кликабельный номер телефона?

    @dim5x
    ЗИ, ИБ.
    Чтобы кликабельный для звонка - вряд ли.
    Кликабельный для копирования - да.
    ...
                text = '''Номер телефону: `+1111111`
    Сайт: auto-repair-shop-10715.business.site
    Робочий час: Понеділок - Субота / 08:00 - 18:00'''
                bot.edit_message_text(chat_id=call.message.chat.id,
                                      message_id=call.message.id,
                                      text=text,
                                      reply_markup=ans, parse_mode='MARKDOWN')
    ...


    65e2549a0af6b313680789.png
    Ответ написан
    Комментировать
  • Почему не работает тг бот(Telebot, python)?

    @dim5x
    ЗИ, ИБ.
    Ваш код работает вполне корректно:
    65e235c3793be882191990.png
    Вероятно, проблема не в данном коде.

    Неприятен таймаут для инлайн кнопок, но это уже другое...
    Ответ написан
  • Как решить ошибку библиотеки g4f?

    @dim5x
    ЗИ, ИБ.
    Вы используете пример кода, помеченный как Legacy API.
    Вероятно, имеет смысл использовать вот это.

    Если хотите, чтобы не появлялась ошибка именно в вашем коде, то укажите провайдера явным образом, например: provider=g4f.Provider.You, смотреть активные провайдеры здесь.
    import g4f
    
    response = g4f.ChatCompletion.create(
        model=g4f.models.gpt_4,
        messages=[{"role": "user", "content": "Hello"}],
        provider=g4f.Provider.You,
        stream=True,
    )
    
    for message in response:
        print(message, flush=True, end="")

    65e228db48f11024632094.png

    Естественно, чтобы работали всякие Bing, OpenAI и прочее, то нужно авторизовываться:
    from g4f.client import Client
    
    client = Client(
        api_key="...",
        ...
    )
    Ответ написан
    Комментировать
  • Создал код бота в дискорде с помощью ChatGPT почему бот не хочет отвечать на команду?

    @dim5x
    ЗИ, ИБ.
    Ваш код (без изменений) у меня отрабатывает корректно. Проверяйте права.
    Ответ написан
    Комментировать