Python Academy
49.5K subscribers
1.08K photos
2 videos
374 links
Python Academy — один канал вместо тысячи учебников

Чат канала: @python_academy_chat

Сотрудничество: @zubar89

Канал включён в перечень РКН: https://rkn.link/TVu
加入频道
Валидаторы данных

Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.

Модуль validators позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.

Помимо этого, validators позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.

#python #validators
Использование OpenCV для работы с веб-камерой

Библиотека OpenCV это инструмент для работы с компьютерным зрением, обработки изображений и видео. Её можно легко установить через pip, используя команду: pip install opencv-python.

В качестве примера давайте рассмотрим, как можно захватить изображение с веб-камеры и отобразить его в окне. Для начала, инициализируем веб-камеру с помощью команды cap = cv2.VideoCapture(0), где число обозначает индекс камеры.

Далее, с помощью строки ret, frame = cap.read(), мы извлекаем текущее изображение с камеры в переменную frame, а также получаем статус захвата в переменную ret. Если ret == True, это означает, что захват прошёл успешно.

Следующим шагом, команда cv2.imshow('webcam', frame) открывает графическое окно с полученным изображением.

Для выхода из цикла просмотра и завершения работы скрипта, используется проверка нажатия клавиши 'q': if cv2.waitKey(1) & 0xFF == ord('q'):.

Наконец, для освобождения веб-камеры и закрытия всех графических окон, используются команды cap.release() и cv2.destroyAllWindows() соответственно.

#python #opencv
Скачиваем видео с YouTube

Пакет pytube предоставляет всю небходимую функциональность для скачивания видео с YouTube, а также для сбора всей информации о нем.

Для работы нам необходимо создать объект класса YouTube. Помимо ссылки на видео в конструктор можно передать в качестве параметров функции для обработки прогресса загрузки и завершения.

Большинство видео на ютубе не имеют аудиодорожки на потоках с высоким разрешением, свыше 720p — это связано с технологией передачи DASH, которую использует YouTube.

На картинке мы показали как отфильтровать потоки с прогрессивной передачей и выбрать из полученного списка с максимальным доступным разрешением до 720p.

Для загрузки выбранного потока используем функцию download(), в функцию можно передать в качестве параметров путь до директории для сохранения и имя файла.

#python #youtube
Преобразование аудиофайлов с помощью Python

В Python существует множество способов для выполнения конвертации аудиофайлов из одного формата в другой. Одним из наиболее удобных инструментов для этого является модуль pydub. Этот модуль служит оболочкой для ffmpeg и предоставляет возможности по загрузке, редактированию и сохранению аудиофайлов в различных форматах, поддерживаемых ffmpeg.

Для начала работы с файлом, используем метод from_ с указанием необходимого формата из класса AudioSegment, или же обратимся к более универсальному методу from_file, предоставляя путь к файлу и его формат.

Когда файл загружен, для его конвертации и сохранения в желаемом формате применяем метод export объекта класса AudioSegment, созданного на предыдущем шаге.

#python #pydub
Используйте dict.get() вместо dict[]

Есть несколько способов получения значений из словарей, и даже по такой теме разработчики часто спорят.

Многие получают значения по ключам через квадратные скобки, но если такого ключа нет, то будет вызвано исключение.

Поэтому мы считаем, что лучше использовать метод get у словарей. Его основной плюс заключается в том, что он принимает опциональный аргумент, отвечающий за значение по умолчанию.

Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.

В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.

#python #dict
Логирование в Python используя Loguru

Сегодня мы расскажем вам о библиотеке loguru, которая предоставляет простые и эффективные средства для логирования ваших приложений на Python. loguru призвана упростить процесс создания и анализа логов, делая его более интуитивно понятным и гибким.

Что такое loguru?
loguru - это библиотека для логирования в Python, созданная с упором на простоту использования и выразительность. Она предоставляет удобный синтаксис для настройки логирования и поддерживает различные форматы вывода, а также обеспечивает автоматическую ротацию лог-файлов.

Преимущества loguru:
1. Простота использования: loguru предлагает чистый и интуитивно понятный синтаксис для логирования, что упрощает его внедрение в ваши проекты.

2. Гибкость: Вы можете легко настраивать формат вывода, выбирать уровни логирования и добавлять собственные обработчики.

3. Автоматическая ротация: Библиотека автоматически управляет ротацией лог-файлов, предотвращая переполнение дискового пространства.

4. Поддержка различных форматов вывода: loguru поддерживает вывод в различных форматах, включая JSON, CSV, и прочие.

#python #loguru #логирование
Локализация в Python с помощью модуля gettext

В процессе разработки программ иногда необходимо предоставить поддержку разных языков. Модуль gettext в Python предоставляет удобный механизм локализации, который позволяет адаптировать ваше приложение для различных языковых сообществ.

Что такое gettext?
gettext - это модуль Python, предназначенный для обеспечения поддержки интернационализации и локализации. Он позволяет создавать переводы строк на различные языки, обеспечивая легкость адаптации приложения под разные культурные контексты.

Пример использования gettext:
import gettext
from pathlib import Path
translations = gettext.translation('your_app', localedir=Path('locales'), languages=['ru'])
translations.install()
print(_("Hello, gettext!"))

В данном примере мы используем модуль gettext для загрузки файлов перевода из директории 'locales' для русского языка. Функция _() используется для обозначения строк, подлежащих локализации.

Создание файлов перевода:
Для создания файлов перевода можно воспользоваться утилитой pybabel:
pybabel extract -F babel.cfg -o messages.pot your_app
pybabel init -i messages.pot -d locales -l ru


gettext также предоставляет множество возможностей для более сложных сценариев локализации, таких как форматирование чисел, дат и поддержка множественных форм.
#python #gettext #i18n
Слияние аудио и видео потоков

Проблема с получением видео в высоком качестве со звуком с YouTube связана с использованием технологии DASH (Dynamic Adaptive Streaming over HTTP), которая не предусматривает наличие звуковой дорожки в потоке.

Решением является отдельное получение аудио и видео потоков и их последующее объединение с использованием программы ffmpeg.

Необходимо выбрать соответствующие аудио и видео потоки, затем использовать полученные URL в команде ffmpeg для запуска процесса загрузки и слияния потоков.

#python #ffmpeg #pytube
Функция itertools.chain()

Функция itertools.chain() в Python объединяет несколько итераторов в один. Она принимает в качестве аргумента один или несколько итераторов, и возвращает итератор, который последовательно возвращает элементы из этих итераторов.

Например, код сверху объединяет две строки в одну.

#python
Декоратор override

@override используется для переопределения методов в классах-наследниках. Он позволяет указать, что метод в подклассе переопределяет метод базового класса.

Это может быть полезно для:

— Повышения читабельности кода, так как сразу видно, какие методы переопределены.

— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.

— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.

#python #decorators
Перебираем все возможные 8 значные пароли состоящие из букв и цифр с помощью Python

В этом примере используется модуль itertools, который позволяет генерировать все возможные комбинации символов из списка characters длиной password_length. Затем перебираются все комбинации и выводятся на экран.

Обратите внимание, что перебор всех возможных 8-значных паролей может занять большое количество времени, особенно если количество символов в characters большое. Будьте осторожны и убедитесь, что ваше намерение соответствует законам и этическим правилам.

#python #itertools
This media is not supported in your browser
VIEW IN TELEGRAM
Создаем интерактивные веб-приложения с Streamlit

Streamlit позволяет превращать скрипты Python в интерактивные веб-приложения за считанные минуты, а не за недели. Создавайте информационные панели, генерируйте отчеты или создавайте приложения для чата.

Создав приложение, вы можете использовать облачную платформу Community Cloud для развертывания, управления и распространения приложения.

Почему стоит выбрать Streamlit?

— Простота и питоничность: Пишите красивый, легко читаемый код.
— Быстрое интерактивное создание прототипов: Позвольте другим людям взаимодействовать с вашими данными и быстро предоставлять отзывы.
— Редактирование в реальном времени: Видите, как ваше приложение мгновенно обновляется по мере редактирования кода.

#python #streamlit
Отправка писем с использованием SMTP в Python

SMTP (Simple Mail Transfer Protocol) - это протокол, который обеспечивает отправку электронных писем. В Python для работы с этим протоколом доступен модуль smtplib из стандартной библиотеки.

Для начала соединения с почтовым сервером мы можем использовать класс SMTP_SSL, который обеспечивает защищенное соединение. Этому классу мы передаем адрес сервера и порт.

Чтобы авторизоваться на сервере, используем метод login, куда передаем логин и пароль пользователя. Для отправки электронной почты мы используем метод sendmail. Он принимает адрес отправителя, адрес получателя и текст сообщения. Важно помнить, что после отправки сообщения необходимо закрыть соединение с сервером с помощью метода quit().

Стоит учитывать, что некоторые почтовые сервисы могут иметь ограничения и дополнительные требования безопасности. Например, для работы с Gmail может понадобиться включить поддержку "доступа к ненадежным приложениям" и настроить двухфакторную аутентификацию.

#python #smtp
Тестирование на pytest

pytest — ближе по духу к языку Python нежели unittest, которая накладывает определенные обязательства при разработке тестов. Например, создание классов-наследников от TestCase или выполнение определенной процедуры запуска тестов.

Но при разработке на pytest ничего этого делать не нужно. Вы просто пишете функции, которые должны начинаться с "test_" и используете assert, встроенные в Python.

Также он поддерживает запуск тестов на unittest и nose, то есть полная обратная совместимость с ними.

#python #pytest #assert