Здравствуйте, дорогие пользователи хабра! Сегодня я расскажу как используя python можно скачивать треки со спотифая. Основано это на загрузки видео с ютуба. Да-да мы будем искать песни на ютубе и качать их оттуда. Ссылка на GitHub с репозиторием и интересным бонусом в конце.
Подготовка
Так как мы будем писать на языке программирования python его сначала нужно установить. Сделать это можно на официальном сайте. После установки питона нам нужно установить необходимые библиотеки. Для этого в консоли пропишем такую команду: pip install spotipy youtubesearchpython youtube_dl
. Также нам нужно установить ffmpeg. Как его установить вы можете найти в интернете.
Далее идем на эту страницу.
Нажимаем на кнопочку LOG IN и заходим через свой spotify аккаунт. Зашли? Создаем новое приложение нажав на кнопочку CREATE AN APP
Вводим любое название и описание. Создаем приложение нажав CREATE. После нажатия мы попадаем на страницу с информацией о приложении. Отсюда мы копируем Client ID и Client Secret. Записываем их куда-нибудь.
Пишем код
Для начала нам нужно импортировать библиотеки:from __future__ import unicode_literals
Добавляем переменные с нужными нам данными:
import spotipy
from spotipy.oauth2 import SpotifyOAuth, SpotifyClientCredentials
from youtubesearchpython import VideosSearch
import youtube_dlurl = input("Введи ссылку на трек: ")
client_id = "" # Сюда вводим полученные данные из панели спотифая
secret = "" # Сюда вводим полученные данные из панели спотифая
Начнем писать код:
1. Подключаемся к спотифаюauth_manager = SpotifyClientCredentials(client_id=client_id, client_secret=secret)
2. Функция для получения информации
spotify = spotipy.Spotify(auth_manager=auth_manager)
def music(result):
performers = ""
music = result['name']
for names in result["artists"]:
performers = performers + names["name"] + ", "
performers = performers.rstrip(", ")
video = search(music, performers)
name = f"{performers} - {music}"
print(name)
ydl_opts = {'format': 'bestaudio/best', 'postprocessors': [{'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', 'preferredquality': '192',}], 'outtmpl': f'./{name}.webm'}
download(video, ydl_opts)
print("Готово!")
3. Функция для поиска трекаdef search(music, performers):
videosSearch = VideosSearch(f'{performers} - {music}', limit = 1)
videoresult = videosSearch.result()["result"][0]["link"]
return videoresult
4. Функция для загрузки трекаdef download(videoresult, ydl_opts):
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download([videoresult])
5. Передаем ссылку и запускаем поиск.result = spotify.track(url)
music(result)
Вот пример работы кода:
Трек появится в папке из которой вы запускали код.
Конец
Вот и подошла моя первая статейка к концу. Не забывайте что код и бонус есть в этом репозитории на гитхабе. Удачного использования!
Комментарии (11)
gudvinr
07.10.2021 14:39+10Но ведь вы не со спотифая их загружаете...
Где гарантии, что вы вообще на ютубе нашли тот же самый трек? Порой даже у одного артиста один и тот же трек в разных исполнениях может быть в разных альбомах. Ремастеры, синглы, лайв-концерты. Называться могут одинаково, но находиться в разных альбомах.
Если вы кавер или ремикс ищете, тут вообще получится как повезёт.
Половина статьи — как 90% гайдов про ботов в телеграме — скриншоты про получения токена.
Содержательная часть — скрипт, который за полчаса на коленке можно собрать.
Можно же было аккуратнее сделать. Конфигурацию адекватно реализовать, а не в скрипте открытым текстом приватный токен предлагать писать.
Даже форматирование статьи такое, как будто вас заставляли под дулом пистолета опубликовать поскорее.LinCat Автор
07.10.2021 15:59Извиняюсь за все неровности в тексте. Пишу статьи впервые. В большинстве случаев качает нужный трек, но редко попадается и что-то не связанное с вашей песней.
k3NGuru
07.10.2021 14:59+4У меня главный вопрос - А зачем?
Spotify умеет из коробки загружать файлы (да конечно под свой формат и слушать в своем плеере, но все же возможность слушать оффлайн остается). Да и стоимость подписки уже равна бутылке хорошего пива :)
tommyangelo27
07.10.2021 15:53+1Особенно учитывая, что скачивается не то, что мы слушали в Spotify, а всего лишь трек с таким же названием.
moonz
07.10.2021 16:00Не ну это смешно.. А как же битрейт, а как же эксклюзивные треки. Надо заголовок статьи переписать. Идея неплохая конечно, но реализация требует доработки однозначно.
LinCat Автор
07.10.2021 16:01-1Статьи пишу впервые, да и программист я не очень. Просто хотелось показать как это можно реализовать.
avg
07.10.2021 22:33Впервые - это да, ощущается недостаток опыта ...
Так как мы будем писать на языке программирования python его сначала нужно установить. Сделать это можно на официальном сайте.
Наверное, всё-таки сделать это можно ПО ИНСТРУКЦИИ, РАЗМЕЩЕННОЙ на официальном сайте. Ибо не только лишь все, а очень даже немногие способны на том сайте взять да и установить-таки питон )
sklart
07.10.2021 16:22+3https://github.com/spotDL/spotify-downloader
не требует создания приложения
добавляет в скачанный трек метаданные из Spotify: название, исполнителя, обложку и т.д.
tangro
07.10.2021 16:50+1Аха-ха, какой же тупняк. Скрипт, который скачает с ютюба чёрти-что, похожее по названию на название трека в Спотифае. О качестве можно вообще забыть - Youtube не даст не то, что lossless, а даже качества уровня AAC/320 Kbps.
Скрипт подойдёт людям, которым медведь на ухо наступил, да и песни нужны не конкретные, а так, в подобном стиле.
randomm
Ещё недавно был бот в телеграме, но что-то он опять не работает. А было так удобно.