Sunnify (загрузчик Spotify)
Sunnify — это приложение-загрузчик Spotify, которое позволяет загружать целые плейлисты локально на компьютер Mac/Linux/Windows.
Демонстрация программы
Ниже приведены скриншоты, демонстрирующие работу приложения Sunnify и загрузку моего личного плейлиста Spotify.
Установка
Предварительные условия
- В вашей системе установлен Python 3.6 или выше. Если он не установлен, загрузите и установите Python с сайта python.org.
- Убедитесь, что установлен pip, менеджер пакетов Python. Обычно он поставляется с Python. Вы можете проверить, запустив
pip --version
в своем терминале.
Исполняемый файл Sunnify (Windows)
Если вы используете Windows, вы можете напрямую загрузить исполняемый файл отсюда.
Сборка из исходного кода
Клонируем репозиторий:
git clone https://github.com/sunnypatell/sunnify-spotify-downloader.git
Перейдите в каталог проекта:
cd sunnify-spotify-downloader
Установите необходимые зависимости:
Запустите приложение:
python Spotify_Downloader.py
Использование
- Запустите приложение Sunnify.
- Введите URL-адрес своего плейлиста Spotify в соответствующем поле ввода.
- Установите флажок «Показать предварительный просмотр», чтобы увидеть прогресс
- Установите флажок метаданных, если вы хотите загрузить обложку, автора, альбом, дату выпуска и т. д.
- Нажмите Enter в поле URL, чтобы начать загрузку.
- Загруженные песни будут сохранены в медиа-каталоге (где бы ни находился ваш источник или исполняемый файл).
Используемые библиотеки
Sunnify использует следующие библиотеки Python:
- PyQt5: используется для графического интерфейса.
- веб-браузер: используется для обхода обнаружения сетевого трафика Spotify.
- запросы: используется для выполнения HTTP-запросов.
- mutagen.id3: используется для редактирования тегов ID3 и очистки метаданных.
Общая отладка
Если у вас возникли какие-либо проблемы при запуске Sunnify, попробуйте выполнить следующие действия:
- Убедитесь, что у вас стабильное подключение к Интернету.
- Убедитесь, что вы ввели правильный URL-адрес плейлиста Spotify.
- Проверьте, доступны ли какие-либо обновления для Sunnify. Вы можете вытащить последние изменения из репозитория и переустановить зависимости.
git pull
Запуск веб-приложения (если вы решите не использовать версию для настольного компьютера Windows)
Если вы хотите запустить веб-приложение Sunnify локально, выполните следующие действия, чтобы настроить как серверную, так и интерфейсную часть:
Настройка серверной части (бэкэнд Sunnify)
Перейдите в каталог web-app/sunnify-backend
в своем терминале:
cd web-app/sunnify-backend
Установите необходимые зависимости, если это еще не сделано:
pip install -r requirements.txt
Запустите внутренний сервер:
Альтернативно вы можете использовать:
Это запустит серверную часть по адресу http://127.0.0.1:5000
.
Бэкэнд взаимодействует с внешним интерфейсом с помощью Flask для создания конечных точек API и Flask-CORS для обработки совместного использования ресурсов между источниками (CORS), позволяя выполнять запросы API между внешним интерфейсом и серверной частью в разных доменах.
Настройка внешнего интерфейса (веб-клиент Sunnify)
После запуска серверной части перейдите в каталог web-app/sunnify-webclient
:
Установите необходимые зависимости внешнего интерфейса:
Запустите сервер фронтенд-разработки:
Интерфейс теперь будет работать локально по http://localhost:3000
и может взаимодействовать с сервером по адресу http://127.0.0.1:5000
.
Используемые технологии
Фронтенд-технологии:
- ⚛️ React : используется для создания компонентов пользовательского интерфейса.
- Next.js : предоставляет основу для рендеринга и маршрутизации на стороне сервера.
- ? Tailwind CSS : используется для стилизации и адаптивного дизайна.
- ? shadcn/ui : предоставляет готовые настраиваемые компоненты пользовательского интерфейса.
- ? Lucid React : используется для значков во всем приложении.
- React Hooks : используется для управления состоянием и побочных эффектов.
- Fetch API : используется для отправки HTTP-запросов к серверной части.
- API веб-аудио : реализован для функции воспроизведения звука.
Бэкэнд-технологии:
- ? Flask : веб-фреймворк Python для создания конечных точек API.
- ? Flask-CORS : обрабатывает совместное использование ресурсов между источниками (CORS) для запросов API.
- ? Запросы : используется для выполнения HTTP-запросов для получения данных списка воспроизведения.
- ? Мутаген : используется для редактирования тегов ID3 и очистки метаданных.
- ?️ BeautifulSoup : используется для очистки веб-страниц и анализа HTML-контента.
- ? UUID : генерирует уникальные идентификаторы для треков и процессов анализа.
- ♂️ Пользовательский агент : эмулирует реальную активность браузера для обхода механизмов защиты.
- ? Selenium : используется для автоматизации браузера и эмуляции взаимодействия с пользователем.
- ? FFmpeg : управляет преобразованием и обработкой звука.
Ключевые особенности
- Обработка CORS : реализовано для безопасного разрешения запросов между источниками.
- ? Генерация идентификаторов : для треков и процессов анализа генерируются уникальные идентификаторы.
- ?️ Эмуляция заголовков браузера : имитирует реальные заголовки браузера, чтобы избежать обнаружения.
- Получение метаданных списка воспроизведения : извлекает и обрабатывает информацию о списке воспроизведения.
- ?️ Веб-скрапинг : извлекает необходимые данные с веб-страниц.
- ? Эмуляция реальной активности браузера : имитирует человеческие шаблоны просмотра.
- Ротация пользовательского агента : регулярно меняет строки пользовательского агента, чтобы избежать блокировки.
- ?️ Flask Routing : обрабатывает различные конечные точки API для разных функций.
- ⚡ Асинхронная обработка : управляет одновременными загрузками и задачами обработки.
- Обработка ошибок : Надежное управление ошибками для различных сценариев.
Важное примечание
Серверная часть Sunnify размещается на Render по бесплатному плану вычислений. Если какое-то время не было вызова API к серверной части, размещенной на Render, она может «заснуть» и потребуется некоторое время, чтобы проснуться, когда внешний интерфейс отправит запрос (например, загрузку списка воспроизведения). Наберитесь терпения, поскольку серверной части может потребоваться несколько секунд, чтобы проснуться и обработать запрос.
Вскоре
В настоящее время я работаю над интеграцией Sunnify с iTunes для беспрепятственной передачи загруженной музыки на устройства iOS, в частности, добавляя ее в библиотеку Apple Music. Кроме того, я также работаю над добавлением поддержки файловых систем Android, чтобы обеспечить прямую передачу загруженной музыки на устройства Android.
Следите за этими интересными обновлениями, которые улучшат функциональность Sunnify и обеспечат более удобство работы для пользователей на разных платформах.
⚖️Юридическое и этическое уведомление⚖️
Sunnify (Spotify Downloader) предназначен только для образовательных целей. Вы несете ответственность за соблюдение законов и правил об авторском праве в вашей стране или регионе. Загрузка музыки, защищенной авторским правом, без надлежащего разрешения может быть незаконной в некоторых юрисдикциях.
Автор
Sunnify (Spotify Downloader) разработан и поддерживается Санни Джаендрой Патель. По вопросам, предложениям или отзывам обращайтесь к Санни по адресу [email protected].
Лицензия
Этот проект распространяется по Пользовательской лицензии. Подробности смотрите в файле ЛИЦЕНЗИИ.
Содействие
Если вы столкнулись с какими-либо ошибками, у вас есть запросы на добавление функций или вы хотите внести улучшения, смело отправляйте запрос на включение на GitHub.
Отчеты о проблемах
Если у вас возникнут какие-либо проблемы при использовании Sunnify, откройте вопрос на GitHub. Обязательно укажите подробную информацию о проблеме, включая действия по ее воспроизведению и сообщения об ошибках, с которыми вы могли столкнуться. Ваш отзыв помогает мне улучшить приложение для всех остальных.