Найти в Дзене

Розалия включает музыку. Часть 7

Оглавление
Python - включение музыки
Python - включение музыки

Уважаемый читатель, кто читает эту статью не прочитав предыдущие

<=====

учится ходить, не умея твёрдо стоять!

Продолжу наполнять Розалию новыми умениями. Она уже умеет искать в Wikipedia, теперь пусть научится включать музыку. Для этого я создам новое умение – новый файл с расширением py. Затем просто подключу это умение к Розалии, как делал это с поиском в Wikipedia. Для реализации задуманного воспользуюсь модулем os. В этом модуле описаны методы работы с функциями операционной системы, например, этот модуль, может запускать файлы. Модуль os является встроенным модулем Python. Его устанавливать с помощью менеджера пакетов pip не нужно, достаточно импортировать os в программу Python. Т.е. создам файл play_music.py и первое, что там напишу –

import os

Начало положено. Теперь поставлю задачи - что мне нужно сделать:

  1. Задать директорию с файлами музыки
  2. Получить список файлов из этой директории
  3. Выбрать файлы с расширением mp3
  4. Воспроизвести файл музыки

Данный алгоритм не совершенный:

  • Во-первых, мне в программе приходится задавать директорию с музыкой
  • Во-вторых, модуль os позволяет запустить только один файл для воспроизведения, а не список файлов.

По-сути я задаю Розалии примитивные действия, говорю «найди в Wikipedia» или «включи музыку», она выполняет. Розалия пока не умеет искать все музыкальные файлы, сортировать их по жанрам и т.д. Но это всё впереди.

Второе умение Розалии - воспроизведение музыки
Второе умение Розалии - воспроизведение музыки

Сначала ребенок учится твердо стоять, а затем твердо идет к своей цели

Задам директорию с музыкой

Начну с определения переменной musik_PLAY_dir , именно эта переменная будет хранить путь к папке с музыкой. На моем компьютере это путь – «d:/12». Обратите внимания имя переменой, которую я задал «PLAY» написано большими буквами. Этим я хочу подчеркнуть, сказанное раннее: Для Python PLAY и play это разные слова, он чувствительный к регистру символов.

musik_PLAY_dir = “d:/12”

Все, в musik_PLAY_dir я поместил строку “d:/12”.

Еще обращу внимание на строку “d:/12”, в которой косая черта стоит «/» не как в windows «\». Причина в том, что модуль os срабатывает на разных операционных системах. В Linix, например, для указания пути ставиться «/», а windows «\». В модуле os реализован механизм правильного получения пути к файлу или папки, независимо от операционной системы. Модуль os поймет меня правильно, если я укажу – «d:/12».

Теперь мне нужно получить список файлов из каталога «d:/12». Для этого у модуля os есть метод listdir, который возвращает список файлов внутри каталога. Чтобы обратится к этому методу, нужно указать имя модуля и через точку его метод:

LIST_FILE = os.listdir (musik_PLAY_dir)

Переменная равна os.listdir (Директория) – я сказал Python, что хочу получить список файлов в директории «d:/12» и результат поместить в переменную LIST_FILE. Таким образом, переменная LIST_FILE должна содержать список файлов из директории d:/12». Выведу эту переменную командой print и посмотрю, правильно ли меня понял Python:

print(LIST_FILE)
Список файлов
Список файлов

Что такое список в Python?

Я получил, то, что надо! Список файлов из директории «d:/12».

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

[“1.mp3”, ”2.mp3”, ”AlbumArtSmall.jpg”, ”folder.jpg”] - список. Каждый элемент списка имеет свой индекс, начиная с нуля.

  • “1.mp3” - 0 элемент
  • “2.mp3” - первый элемент
  • ”AlbumArtSmall.jpg” - второй элемент
  • ”folder.jpg” - третий элемент

Индекс определяет местоположение элемента в списке. Например, переменная LIST_FILE содержит список файлов и чтобы обратится к первому элементу этого списка, вывести его на экран, я запишу:

print( LIST_FILE[0] )

Python выведет - 1.mp3.

Как задавать список в Python?

В принципе, чтобы задать список файлов из директории «d:/12», я мог бы сам. открыть папку «d:/12», посмотреть список файлов и записать в Python такой код:

LIST_FILE=[“1.mp3”, “2.mp3”, ”AlbumArtSmall.jpg”, ”folder.jpg” ]

Но за меня это сделала функция listdir модуля os. Таким образом я могу задавать любой список в Python: числа, строки, да хоть воздушные шары - воздушный шар=["Красный","Синий","Зеленый"], а обратиться к элементу списка могу по индексу

воздушные шары[0] ="Красный"

Теперь соединим имя файла с его директорией

Итак, что я имею: переменная musik_PLAY_dir содержит директорию, в которой находятся моя музыка, а переменная LIST_FILE содержит список файлов внутри этой директории -

[“1.mp3”, ”2.mp3”, ”AlbumArtSmall.jpg”, ”folder.jpg”]

,где LIST_FILE[0] = 1.mp3. И мне нужно соединить директорию с именем файла.

Для этого у модуля os есть метод path, в котором реализованы алгоритмы работы с путями к директориям, одним из таких алгоритмов является алгоритм соединение пути с учетом операционной системы - join. Вот как это звучит по-русски:

в модуле os –реализованы алгоритмы работы с операционной системы, одним из таких алгоритмов является path, который позволяет работать с путями в операционной системе. А внутри path еще алгоритм, который соединяет пути с учетом особенностей операционной системы – join.

А на языке Python "все это родовое дерево", кто и куда вложен, я запишу так:

PLAY=os.path.join(musik_PLAY_dir, LIST_FILE[0])

join соединяет путь к файлу с его именем - d:/12\1.mp3 (LIST_FILE[0]=1.mp3) и результат я помещаю в переменную PLAY. Осталось теперь только запустить файл 1.mp3 по указному пути. Для этого у модуля os есть еще один козырь - функция startfile.

os.startfile(PLAY)

На этом пока все. Умение включать музыку (правда только одну песню) я описал в файле play_music.py. Осталось "влить" это умение Розалии. Об этом я поговорю уже в следующий раз.

Читатель оставайтесь на канале, будьте дерзкими в своих идеях. Этот канал не о скучном программировании и хилых "програймерах", которые кроме кода и цифр ничего не видят. Это канал о гармонично-развитой личности.