Программирование Python

Статья Парсинг страницы с треками, формирование плейлистов и использование mutagen для чтения метаданных аудиофайлов в Python

  • 3 836
  • 1
Давайте сегодня займемся парсингом, а заодно посмотрим, как работает библиотека для извлечения IDv3 тегов из аудиофайлов. Парсить будем сайт, с которого можно бесплатно скачать музыкальные треки. Скажем так, совместим приятное с полезным. Попрактикуемся немного в парсинге, а заодно скачаем себе несколько треков, для прослушивания локально. Ну или не совсем. Давайте посмотрим, как это сделать с помощью Python.

000.png

Предыстория у создания этого скрипта простая. Захотелось послушать музыку. Слушать в браузере не хотелось. Тем более, что мне понравился консольный медиаплеер mpv. Шустрый и легкий. Я и подумал, а почему бы мне не найти сайт, забрать оттуда ссылки на треки, сделать плейлист, а потом слушать эти треки в плеере? Так я и сделал. Заодно добавил возможность скачивать эти треки и делать плейлист уже из загруженных локальных файлов.

На самом деле, простейший плейлист сделать совсем несложно. Нужно создать файл с...

Статья Используем двухэтапную (двухфакторную) аутентификацию в Python

  • 5 140
  • 0
Двухфакторную аутентификацию в том или ином виде используют уже довольно давно. Изначально, данный способ предусматривал аутентификацию с помощью SMS-кода. Однако, такой способ не является достаточно надежным, поэтому с некоторых пор стали использовать аутентификацию на базе одноразового пароля. Не обязательно он должен отправляться на смартфон клиента. Возможны и другие решения. Давайте рассмотрим способ реализации аутентификации такого рода с помощью Python.

000_0.png

Для создания небольшого демонстрационного приложения мы будем использовать библиотеку, которая как раз и предназначена для создания и валидации одноразового пароля. В англоязычном варианте такая аутентификация называется OTP, то есть, аббревиатура от слов one time password. Так как этот пароль одноразовый, то действует он только лишь в течении одного сеанса аутентификации. Также, действие пароля ограничено определенным промежутком времени. В нашем случае...

Статья Создание меню выбора клавишами в терминале с помощью Python

  • 6 673
  • 4
Когда мы пишем какое-то консольное приложение подразумевающее пользовательский выбор, хорошо было бы иметь такой инструмент, который бы создавал нужное нам меню и позволял перемещаться по нему с помощью стрелок на клавиатуре. Ведь это гораздо удобнее, чем просить пользователя ввести какую-либо цифру, соответствующую тому или иному пункту. И такой инструмент есть. Давайте посмотрим, как его реализовать в скрипте Python.

000.png

К сожалению, все, что будет описано далее не работает в ОС Windows. Поэтому, речи о кросплатформенности тут не идет. Однако, в Linux данный код работает прекрасно. Давайте создадим небольшой скрипт, который будет использовать меню для пользовательского выбора и запускать те или иные файлы или ссылки в консольном медиаплеере mpv.

Следует сразу же сказать, что данный код не будет работать в терминале IDE PyCharm. В VSCode не знаю, не проверял. В терминале все работает в лучшем виде.

Статья Немного об IPTV или проверка m3u с помощью Python. Часть 02

  • 8 329
  • 25
Это вторая часть статьи о проверке плейлистов на работоспособность. Небольшие пояснения для тех, кто не читал первую часть. В прошлой статье мы создали небольшие инструменты для обработки плейлистов. Такие скрипты как: разбиение плейлиста на части, объединение, сортировка по именам каналов. А также проверка плейлистов с помощью плеера VLC. В этой же части я попробую рассказать, как я пытался сделать чекер и, что из этого получилось.

000_01.png

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

Статья Определение типа файла по его сигнатуре с помощью Python

  • 6 308
  • 0
Вполне возможно, что при разработке приложений вам может понадобиться определение типа файла. И не всегда тип файла можно узнать по расширению. Если в ОС Linux это не составляет больших проблем, так как данная операционная система распознает тип файла не по расширению, а по содержимому, то вот в Windows отсутствие расширения иногда вызывает множество вопросов. Давайте попробуем понять, как можно определить тип файла с помощью Python.

68416866.jpg

К сожалению, в Python встроенного модуля для определения типа файлов нет. Но есть модули сторонних разработчиков. Да, в стандартной поставке есть mimetypes, однако распознавать содержимое файла без расширения он не умеет.

Из сторонних модулей можно выделить magic. С ее помощью довольно точно можно узнать mime-тип файла. Вот только работа данного модуля завязана на библиотеку libmagic1. То есть, по сути это просто оболочка вокруг данной библиотеки. И для работы модуля требуется ее наличие. И если в...

Статья [Selenium] Взаимодействие и регистрации аккаунта. Part ⅠⅠ

  • 4 234
  • 1
selenium.png

Приветствую, дамы и господа

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

Вы узнаете про:
  • Взаимодействие с сайтом (DropDown, Entry)
  • Осуществление поиска YouTube
  • Создание аккаунта с помощью Selenium + JSON
Присаживайтесь поудобнее, начинаем кодить!

Глава I: Взаимодействие с сайтом

Как я и говорил в прошлой статье, у Selenium существуют веб-локаторы...

Статья Сканируем случайные адреса Интернет. Получаем баннеры и протоколы с помощью Python

  • 4 582
  • 4
О каждой из этих тем по отдельности я писал в этой: баннеры, и этой: сканирование, статьях. Но давайте попробуем объединить два этих скрипта, чтобы использовать для сканирования адресов возможности scapy, а также получать баннеры с открытых портов с помощью socket.

000.png

Дисклеймер: Все данные, предоставленные в данной статье, взяты из открытых источников, не призывают к действию и являются только лишь данными для ознакомления, и изучения механизмов используемых технологий.

На самом деле это тема в общем-то не нова. И никто...

Статья Парсинг вывода команд операционной системы и немного о получении параметров сетевых адаптеров с помощью Python

  • 3 215
  • 0
В данной статье речь пойдет о парсинге. Не о том, когда получаются данные веб-сайта. Этот парсинг, в более правильном варианте, все же называется scrapping. А о том, который подразумевает под собой парсинг данных. В данном случае текстовых. Ну и немного о получении данных о сетевых адаптерах, установленных в системе.

000.jpg

Почему я решил написать данную статью? Дело в том, что не так давно я столкнулся с тем, что многие новички, в частности присутствующие, здесь, на форуме, не умеют парсить текстовые данные. Самый первый способ, с помощью которого они пытаются вытащить данные из километровой портянки, это использование регулярных выражений. И да, я не спорю, если уметь пользоваться регулярными выражениями, найти можно что угодно. Да и получить тот же самый e-mail или веб-адрес гораздо легче. Но иногда использование регулярных выражений попросту излишне. Давайте рассмотрим, как можно распарсить вывод команды «ipconfig /all», с помощью...

Статья Получение базовых параметров сетевых интерфейсов по-умолчанию для использования в проектах Python

  • 5 624
  • 0
Очень часто, в начале изучения Python, многие сталкиваются с необходимостью поиска способа получения тех или иных параметров сетевого интерфейса, используемого операционной системой по-умолчанию. Конечно же, поиск - это дело хорошее, но учитывая свой небольшой опыт, я попытался собрать код, с помощью которого можно это сделать, в этой статье.

00.jpg

Начнем с самого простого, но, в случае с питоном, как оказалось, такого неоднозначного способа получения локального IP-адреса используемого сетевым интерфейсом по-умолчанию. В стандартной документации сказано, что можно использовать следующий код:

Python:
from socket import gethostbyname, gethostname

print(gethostbyname(gethostname()))

Однако, в большинстве случаев, вывод данного кода в терминале будет выглядеть так:

127.0.0.1

то есть, мы увидим адрес локальной петли (localhost). А это не является настоящим...