Алексей
Напиши мне в личку) также 3 месяца изучаю python можем что нибудь попробовать сделать
𝙨𝙧
Кто нибудь знает как сделать что-то типа прокси сервера через советы. В UE5 есть udp поток. Задача этот поток перенаправить другим клиентам я написал в пайтоне сервер для прослушивания соединения и пересылки всем клиентам. Но почему то не работает ничего пакеты пересылаются но в игре не показывается другой клиент
𝙨𝙧
Как вообще сделать так чтобы клиент подключился к сокету и уже был от этой сети. Задача сделать что-то вроде Radmin
𝙨𝙧
import socket import cbor addr = '0.0.0.0' port = 7777 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udp_socket.bind((addr, port)) players = [] while True: data, addr = udp_socket.recvfrom(1024) print(data) print(f"Отправлено {addr} {data}") print(f"Получено от {addr} {data}") if addr not in players: players.append(addr) print(players) # Отправляем данные каждому клиенту в списке for player in players: if player != addr: # Не отправляем данные обратно тому, кто отправил их send_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) send_socket.sendto(data, player) print(data, type(data)) print(f"Отправлено к {player}")
ƙαƙƚყƈ
как сделать ежедневную прибавку монет с прокачкой в телеграм боте? Типо можно купить за определенное колво монеток и оно будет приносить пассивно доход
Loork
Всем привет. Столкнулся с проблемой с Celery в телеграмм боте. У меня есть функция, которая всегда 24/7 должна читать сообщения из гугл почты. Для этого я использую Celery. У меня почему-то Celery не видит таску при команде celery -A celery_app worker -l info --pool solo
Loork
Loork
Nik
Всем привет из Сшарпа, по долгу службы нужно использовать Питон, решил зайти на огонек. Вызываю питон из шарпа
ㅤㅤㅤㅤㅤ
telethon.errors.rpcerrorlist.ChannelInvalidError: Invalid channel object. Make sure to pass the right types, for instance making sure that the request is designed for channels or otherwise look for a different one more suited (caused by JoinChannelRequest) помогите
ㅤㅤㅤㅤㅤ
sqlite3.OperationalError: attempt to write a readonly database как исправить
ㅤㅤㅤㅤㅤ
Loork
Вопрос, может ли функция для task celery быть async? А то таска в моём телеграмм боте не совсем работает. Когда гугл почта получает письмо с темой "code", то таска отправляет в личное сообщение пользователю "Отправьте код для авторизации". Как правильно это реализовать? async def send_telegram_message(): await bot.send_message('1991750740', "Отправьте код для авторизации") @app.task(name="check_email") async def check_email(): """Получает последнее письмо из Входящих""" mail = imaplib.IMAP4_SSL('smtp.gmail.com') login = config.EMAIL_HOST_USER password = config.EMAIL_HOST_PASSWORD mail.login(login, password) mail.list() mail.select("inbox") result, data = mail.search(None, '(UNSEEN SUBJECT "code")') ids = data[0] id_list = ids.split() try: latest_email_id = id_list[-1] result, data = mail.fetch(latest_email_id, "(RFC822)") raw_email = data[0][1] raw_email_string = raw_email.decode('utf-8', errors='ignore') email_message = email.message_from_string(raw_email_string) if email_message.is_multipart(): for payload in email_message.get_payload(): body = payload.get_payload(decode=True).decode('utf-8') await send_telegram_message() print('есть письмо') return True except: return False
Loork
Всем привет. Всплывает ошибка при вызове асинхронной функции. Говорю сразу, разыми способами пытался закрывать, но все равно всплывает ошибка мой код: async def send_auth_code(): await bot.send_message('1991750740', "Отправьте код для авторизации") @shared_task(name="check_email") def check_email(): """Получает последнее письмо из Входящих""" mail = imaplib.IMAP4_SSL('smtp.gmail.com') login = config.EMAIL_HOST_USER password = config.EMAIL_HOST_PASSWORD mail.login(login, password) mail.list() mail.select("inbox") result, data = mail.search(None, '(UNSEEN SUBJECT "code")') ids = data[0] id_list = ids.split() if len(id_list) != 0: latest_email_id = id_list[-1] result, data = mail.fetch(latest_email_id, "(RFC822)") raw_email = data[0][1] raw_email_string = raw_email.decode('utf-8', errors='ignore') email.message_from_string(raw_email_string) asyncio.run(send_auth_code())
Loork
А разве smtp.gmail.com не для отправки? Я для получения пользовал imap
смысл в том, что таска читает сообщение из почты, если ловит сообщение с темой "code", то отправляет сообщение пользователю в тг, используя функцию send_auth_code
Сергей
смысл в том, что таска читает сообщение из почты, если ловит сообщение с темой "code", то отправляет сообщение пользователю в тг, используя функцию send_auth_code
Это всё сразу понятно. Я высказал сомнение в получении почты через smtp. Вот сейчас ради интереса прогнал вопрос через пару сеток и везде получение пишут через imap
Сергей
Это всё сразу понятно. Я высказал сомнение в получении почты через smtp. Вот сейчас ради интереса прогнал вопрос через пару сеток и везде получение пишут через imap
# Параметры для входа в почтовый ящик username = 'your_email@gmail.com' password = 'your_password' # Создаем подключение к серверу IMAP mail = imaplib.IMAP4_SSL('imap.gmail.com') # Авторизуемся mail.login(username, password)
Сергей
# Параметры для входа в почтовый ящик username = 'your_email@gmail.com' password = 'your_password' # Создаем подключение к серверу IMAP mail = imaplib.IMAP4_SSL('imap.gmail.com') # Авторизуемся mail.login(username, password)
# Подключение к серверу IMAP imap_client = imaplib.IMAP4_SSL('imap.gmail.com') imap_client.login('your_email@gmail.com', 'your_password') imap_client.select('inbox', readonly=True)
Сергей
IMAP (Internet Message Access Protocol) и SMTP (Simple Mail Transfer Protocol) - это два различных протокола, используемых для разных целей в электронной почте. IMAP используется для получения и управления электронной почтой непосредственно на почтовом сервере. Это позволяет пользователям подключаться к своему почтовому ящику с любого устройства и видеть одни и те же сообщения, так как они хранятся на сервере. IMAP поддерживает работу с письмами в режиме онлайн, а также синхронизацию состояния сообщений (например, прочитано/не прочитано, помечено звездочкой и т.д.) между разными устройствами. SMTP, с другой стороны, используется для отправки электронных писем. Когда вы отправляете письмо, ваш почтовый клиент использует SMTP для передачи сообщения на почтовый сервер, который затем отправляет его на почтовый сервер получателя. SMTP работает только в одну сторону - для отправки сообщений, и не предназначен для их получения или управления. Вкратце: - IMAP используется для чтения и управления письмами, которые хранятся на почтовом сервере. - SMTP используется для отправки писем на почтовый сервер и дальнейшей их доставки получателям.
Loork
IMAP (Internet Message Access Protocol) и SMTP (Simple Mail Transfer Protocol) - это два различных протокола, используемых для разных целей в электронной почте. IMAP используется для получения и управления электронной почтой непосредственно на почтовом сервере. Это позволяет пользователям подключаться к своему почтовому ящику с любого устройства и видеть одни и те же сообщения, так как они хранятся на сервере. IMAP поддерживает работу с письмами в режиме онлайн, а также синхронизацию состояния сообщений (например, прочитано/не прочитано, помечено звездочкой и т.д.) между разными устройствами. SMTP, с другой стороны, используется для отправки электронных писем. Когда вы отправляете письмо, ваш почтовый клиент использует SMTP для передачи сообщения на почтовый сервер, который затем отправляет его на почтовый сервер получателя. SMTP работает только в одну сторону - для отправки сообщений, и не предназначен для их получения или управления. Вкратце: - IMAP используется для чтения и управления письмами, которые хранятся на почтовом сервере. - SMTP используется для отправки писем на почтовый сервер и дальнейшей их доставки получателям.
понял
Tim
А там вроде у Гугла ещё надо разрешать доступ к почте по имап
Сергей
А там вроде у Гугла ещё надо разрешать доступ к почте по имап
Также убедитесь, что у вас включен доступ к вашей почте через IMAP в настройках Gmail и разрешен доступ ненадежных приложений, если вы не используете OAuth 2.0 для аутентификации.
Gleb
нужна помощь. пытаюсь в DRF собрать новый queryset по получаемому queryset'у. Есть две модели, Session берется из built-in джанго. У меня есть вот такая вот функция, но есть проблема, она заключается в том, что я получаю повторяющиеся записи, а мне хочется, чтобы было что-то вроде distinct только по полю title из таблицы Product. def get_suggestion(queryset, session: Session) -> dict: suggestions = {"first_five": queryset[:5]} qs = ( queryset.prefetch_related( "searchhistory_set" ).filter(searchhistory__session_id=session.session_key).order_by("-searchhistory__timestamp") ) Я пробовал добавлять values('title).distinct(), но не помогло. Какие у вас есть идеи, подскажите, пожалуйста?
Gleb
так у тебя в описании столбца стоит unique=True, откуда там дубликаты возьмутся? он должен индекс создать уникальный по идее на столбец. глянь в схеме таблицы
а причем тут таблица Product? я сделал таблицу для m2m мануально, чтобы можно было добавлять одинаковые записи
Gleb
ибо если делать просто через m2m поле без through параметра, то записи добавляются в set()
Aleksandr
иди от обратного тогда. составь SQL запрос выполняющий то что тебе нужно. потом уже по нему - через ORM
Gleb
сырой запрос проще написать, чем через ОРМ, если честно
Aleksandr
еще бы
Aleksandr
но поддерживать потом в среднем сложнее
Gleb
но поддерживать потом в среднем сложнее
ну, понятное дело, если другие БД те же или контроль версий
Gleb
как всегда, свои нюансы
Gleb
не могу найти примеры актуальных проектов или просто литературу, где можно про орм дрф почитать, кроме поваренной книги, доки и старых постов на различных форумах
Aleksandr
я сделал уже, но мне не очень не нравится
если оно стабильно и более-менее оптимально работает - значит оставь как есть. зарефакторишь если конкретно в этом месте начнутся проблемы
Aleksandr
не могу найти примеры актуальных проектов или просто литературу, где можно про орм дрф почитать, кроме поваренной книги, доки и старых постов на различных форумах
открываешь офф сайт либы ОРМ, там смотришь где юзается, у любой приличной либы есть список опенсорсных проектов. открываешь и втыкаешь
Aleksandr
или чё еще нужно то не пойму) и так хочешь - пироженное, хочешь - мороженное вон. чтоб код написал кто то готовый
Aleksandr
гуглится за 30 секунд https://builtwithdjango.com/projects/
Хасбулат
Привет. Кто-нибудь может подсказать best-practice по деплою python-приложения в кубер. Сейчас docker-образ со всеми зависимостями весит больше 500МБ. Может, есть варианты, как размер можно уменьшить? 500МБ на 1 под кажется слишком много
Хасбулат
пытался прислать свой докерфайл в блоке код, он удаляется. В общем я использую базовый образ python:3.11.9-slim, alpine не могу использовать, тк зависимости не собираются. при установке использую флаги no-cache
Хасбулат
Я не знаю, может есть механизм readonly шеринга динамических библиотек для Python в докере или кубере, потому что они занимают основное место. Образ python:3.11.9-slim весит около 100МБ, остальное – это как раз дин. либы
Nik
Anatoliy
Подскажите пожалуйста реализацию task queue над postgres и asyncpg. Не гуглится у меня пока чего-то с больше, чем 7 звёздочками
Loork
Всем привет. У меня есть функция для чтения письма из гугл почты def check_email_for_subject(): # Подключаемся к почтовому ящику mail = imaplib.IMAP4_SSL('imap.gmail.com', 993) mail.login(email_address, password) mail.select('inbox') # Ищем письма с указанной темой result, data = mail.search(None, f'(SUBJECT "{email_subject}")') email_body = None if result == 'OK': for num in data[0].split(): result, data = mail.fetch(num, '(RFC822)') raw_email = data[0][1] msg = email.message_from_bytes(raw_email) # Получаем тело письма if msg.get_content_maintype() == 'text': email_body = msg.get_payload() else: for part in msg.walk(): if part.get_content_maintype() == 'text': email_body = part.get_payload() mail.close() mail.logout() return email_body в строке result, data = mail.search(None, f'(SUBJECT "{email_subject}")') идёт поиск письма с темой "Создать документ". При запуске возникает ошибка " File "C:\Users\RRM\AppData\Local\Programs\Python\Python312\Lib\imaplib.py", line 987, in _command arg = bytes(arg, self._encoding) ^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-23: ordinal not in range(128)" Я так понял, что библиотеки не нравится, что тема письма на русском языке. Если указать на английском, то ошибки не возникает. Как мне сделать так, чтобы код мог искать письма с темой на русском языке? Может есть другая библиотека для чтения и поиска писем? Или можно какие-то параметры указать?
Иван
Всем привет. У меня есть функция для чтения письма из гугл почты def check_email_for_subject(): # Подключаемся к почтовому ящику mail = imaplib.IMAP4_SSL('imap.gmail.com', 993) mail.login(email_address, password) mail.select('inbox') # Ищем письма с указанной темой result, data = mail.search(None, f'(SUBJECT "{email_subject}")') email_body = None if result == 'OK': for num in data[0].split(): result, data = mail.fetch(num, '(RFC822)') raw_email = data[0][1] msg = email.message_from_bytes(raw_email) # Получаем тело письма if msg.get_content_maintype() == 'text': email_body = msg.get_payload() else: for part in msg.walk(): if part.get_content_maintype() == 'text': email_body = part.get_payload() mail.close() mail.logout() return email_body в строке result, data = mail.search(None, f'(SUBJECT "{email_subject}")') идёт поиск письма с темой "Создать документ". При запуске возникает ошибка " File "C:\Users\RRM\AppData\Local\Programs\Python\Python312\Lib\imaplib.py", line 987, in _command arg = bytes(arg, self._encoding) ^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-23: ordinal not in range(128)" Я так понял, что библиотеки не нравится, что тема письма на русском языке. Если указать на английском, то ошибки не возникает. Как мне сделать так, чтобы код мог искать письма с темой на русском языке? Может есть другая библиотека для чтения и поиска писем? Или можно какие-то параметры указать?
f'(SUBJECT "{email_subject}")'.encode('utf-8') ?
Loork
Прописал, но теперь возникает другая ошибка " File "C:\Users\RRM\AppData\Local\Programs\Python\Python312\Lib\imaplib.py", line 1055, in _command_complete raise self.error('%s command error: %s %s' % (name, typ, data)) imaplib.IMAP4.error: SEARCH command error: BAD [b'Could not parse command']"
Max
Max
Max
Каким образом можно описать проблему и выслать код?
Jasur Abdumavlonov
good
Argishti
всем привет кто шарит за деплои проектов на python django
Сергей
Всем привет. У меня есть функция для чтения письма из гугл почты def check_email_for_subject(): # Подключаемся к почтовому ящику mail = imaplib.IMAP4_SSL('imap.gmail.com', 993) mail.login(email_address, password) mail.select('inbox') # Ищем письма с указанной темой result, data = mail.search(None, f'(SUBJECT "{email_subject}")') email_body = None if result == 'OK': for num in data[0].split(): result, data = mail.fetch(num, '(RFC822)') raw_email = data[0][1] msg = email.message_from_bytes(raw_email) # Получаем тело письма if msg.get_content_maintype() == 'text': email_body = msg.get_payload() else: for part in msg.walk(): if part.get_content_maintype() == 'text': email_body = part.get_payload() mail.close() mail.logout() return email_body в строке result, data = mail.search(None, f'(SUBJECT "{email_subject}")') идёт поиск письма с темой "Создать документ". При запуске возникает ошибка " File "C:\Users\RRM\AppData\Local\Programs\Python\Python312\Lib\imaplib.py", line 987, in _command arg = bytes(arg, self._encoding) ^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-23: ordinal not in range(128)" Я так понял, что библиотеки не нравится, что тема письма на русском языке. Если указать на английском, то ошибки не возникает. Как мне сделать так, чтобы код мог искать письма с темой на русском языке? Может есть другая библиотека для чтения и поиска писем? Или можно какие-то параметры указать?
Чтобы ваш код корректно искал письма на русском языке, вам нужно убедиться, что строка с темой письма (email_subject) корректно обрабатывается и передается в запрос к серверу. В Python 3 все строки по умолчанию в кодировке UTF-8, но для IMAP запроса нужно использовать правильную кодировку. Вот пример того, как можно модифицировать вашу функцию: import imaplib import email from email.header import decode_header def check_email_for_subject(email_address, password, email_subject): # Подключаемся к почтовому ящику mail = imaplib.IMAP4_SSL('imap.gmail.com', 993) mail.login(email_address, password) mail.select('inbox') # Кодируем тему письма в UTF-8 и оборачиваем в двойные кавычки subject = f'"{email_subject.encode("utf-8").decode()}"' # Ищем письма с указанной темой result, data = mail.search(None, f'(SUBJECT {subject})') email_body = None if result == 'OK': for num in data[0].split(): result, data = mail.fetch(num, '(RFC822)') raw_email = data[0][1] msg = email.message_from_bytes(raw_email) # Получаем тело письма if msg.get_content_maintype() == 'text': email_body = msg.get_payload(decode=True).decode() else: for part in msg.walk(): if part.get_content_maintype() == 'text': email_body = part.get_payload(decode=True).decode() mail.close() mail.logout() return email_body В этом примере я добавил параметры email_address, password и email_subject в определение функции, чтобы вы могли передать их при вызове функции. Также я добавил кодирование темы письма в UTF-8 и декодирование содержимого письма, чтобы обеспечить корректное отображение русских символов.
Loork
Чтобы ваш код корректно искал письма на русском языке, вам нужно убедиться, что строка с темой письма (email_subject) корректно обрабатывается и передается в запрос к серверу. В Python 3 все строки по умолчанию в кодировке UTF-8, но для IMAP запроса нужно использовать правильную кодировку. Вот пример того, как можно модифицировать вашу функцию: import imaplib import email from email.header import decode_header def check_email_for_subject(email_address, password, email_subject): # Подключаемся к почтовому ящику mail = imaplib.IMAP4_SSL('imap.gmail.com', 993) mail.login(email_address, password) mail.select('inbox') # Кодируем тему письма в UTF-8 и оборачиваем в двойные кавычки subject = f'"{email_subject.encode("utf-8").decode()}"' # Ищем письма с указанной темой result, data = mail.search(None, f'(SUBJECT {subject})') email_body = None if result == 'OK': for num in data[0].split(): result, data = mail.fetch(num, '(RFC822)') raw_email = data[0][1] msg = email.message_from_bytes(raw_email) # Получаем тело письма if msg.get_content_maintype() == 'text': email_body = msg.get_payload(decode=True).decode() else: for part in msg.walk(): if part.get_content_maintype() == 'text': email_body = part.get_payload(decode=True).decode() mail.close() mail.logout() return email_body В этом примере я добавил параметры email_address, password и email_subject в определение функции, чтобы вы могли передать их при вызове функции. Также я добавил кодирование темы письма в UTF-8 и декодирование содержимого письма, чтобы обеспечить корректное отображение русских символов.
Не помогло(
Unit
множества в питоне реализованы на основе структуре хеш-сет или на основе хеш-таблица как и словари?
Unit
Просто некоторые источники утверждают, что в питоне set - это словарь, у которого все значения None.
Unit
хеш-сет является в своем роде хеш-таблицей
основные отличия хеш сета от хеш таблицы только в том что в хеш сете хранятся одни ключи, а в таблице ключи со значениями?
ㅤㅤㅤㅤㅤ
привет всем мне нужно получить Page Public Content. для своего приложения но я не могу найти его как мне его получить
Oleksandr
Самая простая реализация сета будет hashtable[key] = True
Loork
Всем привет. Решил изучить pytest. Возникает ошибка "ERROR: not found: D:\pythonProject\tests\test_builder_car.py::test_builder_car (no match in any of [<Module test_builder_car.py>])" я так понял, pytest не видит функцию для теста, хотя на скрине видно, что она существует. Через консоль пробовал запускать и через зелёный указатель, но результат тот же.
Unit
Что означает сделать ИИ на ПК?
🐍Yaroo🐍
хаваю
Legolas
Legolas
почему пайтон не дает ошибку и показывает 0 когда сделаю принт sys.maxsize ?
Vladimir
А раньше выдавало ошибку?
Legolas
потому что ты присвоил значение 0 в строке 3
я это знаю но в документації я прочитал он константа
Vladimir
я это знаю но в документації я прочитал он константа
да, это функция, которая возвращает значение А ты зачем-то присвоил ноль
Vladimir
проверил могу ли изменить константу
скорее всего ты просто создал переменную и она возвращает тебе значение быстрее, а до функции вообще не доходит
Vladimir
пиши свою проблему, ошибку, что уже пробовал
Vladimir
какой фреймворк и прочее, версия