Для запуска программы должен быть установлен Python. Также необходимо скачать ffmpeg (https://ffmpeg.org/download.html или прямая ссылка на одну из сборок https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip) - набор библиотек для обработки звука, эти библиотеки использует библиотека pydub Питона.
Скаченные файлы ffmpeg.exe и ffprobe.exe можно положить в папку ffmpeg, расположенную в той же папке, что и скрипт lepilka.py (путь этой папки добавляется в Path в файле lepilka.bat). Либо добавить путь до этих файлов в переменную окружения Path.
Для сохранения аудио с YouTube используется библиотека pytubefix.
pip install pydub
pip install pytubefix
Порядок наложения и объединения аудио фрагментов задаётся в виде json-файла, путь к котрому передаётся в качестве параметра скрипту.
Команды, которые поддерживает скрипт:
- Добавление фрагмента
{"method": "add"
,"url": "https://www.youtube.com/watch?v=YxIiPLVR6NA" - если задан, будет скачиваться аудио по ссылке. Поддерживаются YouTube и TikTok.
,"file": "Фоновая/Crazy Frog.mp3" - путь к файлу с наименованием (в данном случае путь относительный от папки откуда запущен скрипт)
,"start_second": 20 - начиная с какой секунды будет взят фрагмент из файла
,"duration": 5} - продолжительность фрагмента, сек.
- Тишина
{"method": "add"
,"silence": true
,"duration": 1} - продолжительность тишины, сек.
- Наложение фрагмента
{"method": "overlay"
,"file": "Бипы/beep_bass.wav"
,"song_gain": -8 - изменение громкости дБ исходного фрагмента. Позволяет сделать исходный фрагмент тише при наложении фрагмента.
,"position": -10 - с какой секунды исходного фрагмента будет наложен фрагмент
,"times": 2 - сколько раз подряд будет наложен фрагмент
,"vol": 50} - регулировка громкости фрагмента
- Цикл по файлам из папки import_folder, удовлетворяющим маске file_mask
{"method": "foreach"
,"import_folder": "Оригиналы"
,"export_folder": "Результат %Y%m%d/" - папка экспорта для каждой итерации цикла. Поддерживает вывод текущей даты и времени.
,"file_mask": ".+(mp3|wav)$"
,"do": [...]} - массив команд, выполняемых в каждой итерации
- Добавление файла в итерации цикла по файлам папки. Может являться только элементом массива do команды foreach.
{"method": "add_oneofeach"
,"duration": 10}
- Экспорт
{"method": "export"
"file": ""Результат %Y%m%d %H%M%S/"} - папка экспорта. Если есть родительский "method": "foreach", то путь экспорта берётся из его поля "export_folder". Поддерживает вывод текущей даты и времени.
Для запуска скрипта удобно использовать файл lepilka.bat, который прописывет путь до библиотек ffmpeg, запускает скрипт lepilka.py и передаёт ему json-файл с командами.