Для скачки музыки вк: Скачать музыку с Вконтакте — KissVK

Как получать музыку из ВКонтакте в 2022 году / Хабр

Началось все с того, что мне захотелось написать музыкального бота для своего discord сервера.

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

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

Я решил посмотреть что сейчас отдает ВКонтакте при воспроизведении записи и полез во вкладку network, вот что я там увидел:

ФотоНас интересует index.m3u8Открыв его мы видим GET запрос на сгенерированный ВКонтакте urlА ответ этого запроса представляет из себя просто HLS формат, с сегментами и их ключами декодирования если они закодированы

Теперь передо мной стояла новая задача, как получить с определенного аудио нужную ссылку на m3u8 файл и уже потом думать как его разбирать и собирать в дальнейшем в цельным mp3 файл.

В ходе раздумий был найден довольно простой вариант в виде библиотеки для питона vk_api и реализация получения такой ссылки через эту библиотеку выглядит так:

from vk_api import VkApi
from vk_api.audio import VkAudio
login = "+7XXXXXXXXXX"
password = "your_password"
vk_session = VKApi(
  login=login,
  password=password,
  api_version='5.81'
)
vk_session.auth()
vk_audio = VKAudio(vk_session)
# Делаем поиск аудио по названию
# Так же можно получать аудио со страницы функцией .get_iter(owner_id)
# где owner_id это айди страницы
# или же можно получить аудио с альбома, где мы сначала получаем айди альбомов
# функцией .get_albums_iter()
# и после снова вызываем .get_iter(owner_id, album_id), где album_id полученный
# айди альбома
q = "audio name"
audio = next(vk_audio.search_iter(q=q))
url = audio['url'] # получаем ту длиннющую ссылку на m3u8 файл

Вот мы и получили ссылку на этот файл и встал вопрос, а что делать дальше. Я попробовал запихнуть эту ссылку в ffmpeg и уже было обрадовался, ведь он скачал мой заветный аудиофайл и сразу же сделал конвертацию в mp3, однако, счастье мое длилось не долго, ведь ffmpeg хоть и скачал все сегменты, самостоятельно склеив их, но зашифрованные сегменты он не расшифровал, поэтому давайте еще раз взглянем на внутренности m3u8 файла

#EXTM3U
#EXT-X-TARGETDURATION:25
#EXT-X-ALLOW-CACHE:YES
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="https://cs1-66v4. vkuseraudio.net/s/v1/ac/wYaompMqHNQpBIh283wK68QVW45tvaJLaznkPiqES66JM-xzffiiM4KQx5WPS0Vg99U9ggCDronPKO8bzit3v_j8fH6LymN2pngBXYTv5uaDnFiAfc2aXv848bhRJEyFVB1gaJw1VR4BS9WnSb8jIMd0haPgfvJMcWC7FW7wpFkGU14/key.pub"
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:2.000,
seg-1-a1.ts
#EXT-X-KEY:METHOD=NONE
#EXTINF:4.000,
seg-2-a1.ts
#EXTINF:20.000,
seg-3-a1.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://cs1-66v4.vkuseraudio.net/s/v1/ac/wYaompMqHNQpBIh283wK68QVW45tvaJLaznkPiqES66JM-xzffiiM4KQx5WPS0Vg99U9ggCDronPKO8bzit3v_j8fH6LymN2pngBXYTv5uaDnFiAfc2aXv848bhRJEyFVB1gaJw1VR4BS9WnSb8jIMd0haPgfvJMcWC7FW7wpFkGU14/key.pub"
#EXTINF:20.000,
seg-4-a1.ts
#EXT-X-KEY:METHOD=NONE
#EXTINF:25.444,
seg-5-a1.ts
#EXT-X-ENDLIST

Мы видим, что перед зашифрованными сегментами в EXT-X-KEY указан метод шифровки AES-128 и ссылка на скачку ключа для расшифровки.

Для решения уже этой проблемы была найдена прекрасная библиотека m3u8 и pycryptodome:

import m3u8
import requests
from Crypto.Cipher import AES
from Crypto. Util.Padding import unpad
# Получаем этот самый m3u8 файл
m3u8_data = m3u8.load(
  url="" # Вставляем наш полученный ранее url
)
segments = m3u8.data.get("segments")
# Парсим файл в более удобный формат
segments_data = {}
for segment in segments:
  segment_uri = segment.get("uri")  
  extended_segment = {
    "segment_method": None,
    "method_uri": None
  }
  if segment.get("key").get("method") == "AES-128":
    extended_segment["segment_method"] = True
    extended_segment["method_uri"] = segment.get("key").get("uri")
    
	segments_data[segment_uri] = extended_segment
  
# И наконец качаем все сегменты с расшифровкой
uris = segments_data.keys()
downloaded_segments = []
for uri in uris:
  # Используем начальный url где мы подменяем index.m3u8 на наш сегмент
  audio = requests.get(url=index_url.replace("index.m3u8", uri))
  # Сохраняем .ts файл
  downloaded_segments.append(audio.content)
  # Если у сегмента есть метод, то расшифровываем его
  if segments_data.get(uri).get("segment_method") is not None:
    # Качаем ключ
    key_uri = segments_data.
get(uri).get("method_uri") key = requests.get(url=key_uri) iv = downloaded_segments[-1][0:16] ciphered_data = downloaded_segments[-1][16:] cipher = AES.new(key, AES.MODE_CBC, iv=iv) data = unpad(cipher.decrypt(ciphered_data), AES.block_size) downloaded_segments[-1] = data complete_segments = b''.join(downloaded_segments)

И наконец конвертируем все в mp3 формат, для чего нам понадобится установленный ffmpeg на ПК.

import os
with open('../m3u8_downloader/segments/temp.ts', 'w+b') as f:
  f.write(complete_segments)
os.system(f'ffmpeg -i "media/music/segments/temp.ts" -vcodec copy '
          f'-acodec copy -vbsf h364_mp4toannexb "media/music/mp3/temp.wav"')
os.remove("../m3u8_downloader/segments/temp.ts")

Для меня это был довольно интересный опыт, поскольку я никогда до этого в своей жизни не работал с зашифрованными файлами и HLS протоколом, надеюсь Вам тоже было интересно читать это. Так же надеюсь я смог помочь другим людям, ведь никаких решений по скачиванию аудио с ВКонтакте на питоне в 2022 году я не нашел.

Так же выложу весь код:

Hidden text
import os
import m3u8
import requests
from vk_api import VkApi
from vk_api.audio import VkAudio
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
class M3U8Downloader:
    def __init__(self, login: str, password: str):
        self._vk_session = VkApi(
            login=login,
            password=password,
            api_version='5.81'
        )
        self._vk_session.auth()
        self._vk_audio = VkAudio(self._vk_session)
    def download_audio(self, q: str):
        url = self._get_audio_url(q=q)
        segments = self._get_audio_segments(url=url)
        segments_data = self._parse_segments(segments=segments)
        segments = self._download_segments(segments_data=segments_data, index_url=url)
        self._convert_ts_to_mp3(segments=segments)
    @staticmethod
    def _convert_ts_to_mp3(segments: bytes):
        with open(f'media/music/segments/temp.ts', 'w+b') as f:
        		f.write(segments)
        os.system(f'ffmpeg -i "media/music/segments/temp.
ts" -vcodec copy ' f'-acodec copy -vbsf h364_mp4toannexb "media/music/mp3/temp.wav"') os.remove("../m3u8_downloader/segments/temp.ts") def _get_audio_url(self, q: str): self._vk_audio.get_albums_iter() audio = next(self._vk_audio.search_iter(q=q)) url = audio['url'] return url @staticmethod def _get_audio_segments(url: str): m3u8_data = m3u8.load( uri=url ) return m3u8_data.data.get("segments") @staticmethod def _parse_segments(segments: list): segments_data = {} for segment in segments: segment_uri = segment.get("uri") extended_segment = { "segment_method": None, "method_uri": None } if segment.get("key").get("method") == "AES-128": extended_segment["segment_method"] = True extended_segment["method_uri"] = segment.get("key").get("uri") segments_data[segment_uri] = extended_segment return segments_data @staticmethod def _download_segments(segments_data: dict, index_url: str) -> bin: downloaded_segments = [] for uri in segments_data.
keys(): audio = requests.get(url=index_url.replace("index.m3u8", uri)) downloaded_segments.append(audio.content) if segments_data.get(uri).get("segment_method") is not None: key_uri = segments_data.get(uri).get("method_uri") key = download_key(key_uri=key_uri) iv = downloaded_segments[-1][0:16] ciphered_data = downloaded_segments[-1][16:] cipher = AES.new(key, AES.MODE_CBC, iv=iv) data = unpad(cipher.decrypt(ciphered_data), AES.block_size) downloaded_segments[-1] = data return b''.join(downloaded_segments) @staticmethod def download_key(key_uri: str) -> bin: return requests.get(url=key_uri).content login = "" # phone password = "" # password md = M3U8Downloader(login=login, password=password) q = "Воллны Волны" # Запрос музыки по названию md.download_audio()

Скачать загрузчик музыки ВК для Windows 10, 7, 8/8.1 (64 бит/32 бит)

Загрузчик музыки ВК — это простое в использовании и совершенно бесплатное расширение, созданное для браузера Opera, которое позволяет буквально скачать музыкальные файлы из социальной сети ВКонтакте в пару кликов.

Для установки плагина в браузере достаточно нажать на исполняемый файл программы, также в процессе установки будет произведена интеграция в интерфейс социальной сети ВКонтакте. Плагин не имеет никаких настроек, так как они не нужны, а все функции

Загрузчик музыки ВК работает в автоматическом режиме.

Чтобы скачать нужную песню, наведите курсор мыши на значок воспроизведения рядом с музыкальным треком (синяя иконка с белым треугольником) и щелкните правой кнопкой мыши, чтобы открыть контекстное меню, в котором можно выбрать опцию «Сохранить». Далее вам нужно указать папку на жестком диске, куда вы хотите сохранить загруженный музыкальный файл. При желании вы также можете переименовать трек в процессе сохранения. Как видите, это действительно просто. Используйте этот плагин и слушайте хорошую музыку!

image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner

Logan


Расширение для Microsoft Edge, позволяющее клиентам скачивать музыку из ВКонтакте всего в пару кликов

image/svg+xmlBotttsPablo Stanleyhttps://bottts. com/Florian Körner

Samuel


Загрузчик музыки ВКонтакте, пожалуй, главная идея для пользователей. ОС Windows идеальна, так как она хорошо запускает программу. Скачивайте музыку, а затем управляйте файлами с большей точностью. Эту программу можно установить за короткое время. Загрузчик музыки ВКонтакте заработал, и люди хотят, чтобы он продолжал работать. Следите за обновлениями, которые выходят для загрузчика музыки ВКонтакте.

image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner

Kayden F.


VK Music Downloader — это программа, которая позволяет пользователям скачивать музыку с популярной платформы социальных сетей VK (ранее известной как VKontakte). . Программное обеспечение поддерживает несколько форматов, таких как MP3, M4A и OGG, и может использоваться для загрузки целых списков воспроизведения или отдельных песен. Программное обеспечение также позволяет пользователям искать музыку, а также создавать свои собственные плейлисты.

image/svg+xmlBotttsПабло Стэнлиhttps://bottts. com/Florian Körner

Jayden Mastropieri


1. VK Music Downloader — отличная программа для скачивания музыки из ВКонтакте. 2. Он прост в использовании и удобен для пользователя. 3. Вы можете скачать музыку в разных форматах и ​​качестве. 4. Это позволяет загружать целые альбомы сразу. 5. Он поддерживает множество языков. 6. Это быстро и надежно. 7. Встроенная поисковая система поможет вам найти то, что вам нужно. 8. Хороший выбор музыки, доступной для скачивания. 9. Скорость загрузки хорошая. 10. Интерфейс интуитивно понятен и прост в использовании.

image/svg+xmlBotttsPablo Stanleyhttps://bottts.com/Florian Körner

Tyler L.


VK Music Downloader — отличная и простая в использовании программа. Быстро и качественно скачивает музыку из ВК. Интерфейс интуитивно понятен и удобен для пользователя. Качество песен тоже очень хорошее. Программное обеспечение поддерживает несколько аудиоформатов, что позволяет легко выбрать формат, который лучше всего соответствует вашим потребностям. Скорость загрузки также достаточно высока.

image/svg+xmlBotttsПабло Стэнлиhttps://bottts.com/Florian Körner

Brodie X.


Это программное обеспечение позволяет пользователям скачивать музыку с платформы социальных сетей ВКонтакте (ВК). Он предназначен для извлечения аудиофайлов из профилей ВКонтакте и сохранения их в различных аудиоформатах, включая MP3, FLAC и WAV. Он также поддерживает пакетную загрузку нескольких треков одновременно, что позволяет пользователям загружать целые плейлисты и альбомы за один раз. Кроме того, он предоставляет простой и удобный интерфейс, который делает процесс загрузки быстрым и легким. Программное обеспечение совместимо с операционными системами Windows, Mac и Linux.

Ваше имя

Ваш комментарий

EPUBReader

Планиуэй

Наведите Zoom+

кофейники

Undo Closed Tabs Button

vk-downloader — Google

AlleVideosBilderBücherMapsNewsShopping

Tipp: Begrenze diesuche auf deutschsprachige Ergebnisse. Du kannst deinesuchsprache in den Einstellungen ändern.

Загрузчик видео ВКонтакте онлайн — MP3, MP4, HD!

www.downloadvideosfrom.com › …

Бесплатный онлайн-загрузчик видео из ВКонтакте — скачивайте видео из ВКонтакте в MP3, MP4 и HD без какого-либо программного обеспечения. Очень прост в использовании!

Скачать Вк Аудио и Видео — PasteDownload

pastedownload.com › vk-downloader

Скачать Вк Аудио и Видео. PasteDownload — это, по сути, онлайн-приложение для загрузки видео, которое поддерживает несколько видеосайтов в одном месте.

Einfach VK Videos und Music Downloaden — Savefrom.net

de.savefrom.net Это видео, музыка и фотографии от VK.com. Einfach das kostenlose Add-on SaveFrom.net … Загрузчик видео и музыки ВК.

Загрузчик музыки ВК

chrome.google.com › подробно › скачать-музыку-с-вк

14.12.2022 · Это расширение поможет скачать вашу музыку в русскоязычной социальной сети Вк. ком. Во время загрузки он сохраняет оригинальное название саундтрека.

Загрузчик видео ВКонтакте — ВКонтакте MP4 и MP3 — SteptoDown

steptodown.com › vk-video-downloader

Загрузчик видео ВКонтакте действует как мост между вашим компьютером и серверами социальных сетей. Просто скачивает видео из ВК и отправляет …

Онлайн-загрузчик видео ВКонтакте для MP4 и MP3 бесплатно

fastsavenow.com › vk-video-downloader

1. · Скопируйте URL-адрес видео ВКонтакте · 2. · Вставьте URL-адрес в окно загрузки · 3. · Загрузите и сохраните файл. · Часто задаваемые вопросы о VK Downloader …

Vk Online-Konverter — Конвертировать видео Vk HD kostenlos

youtube4kdownloader.com › convert-vk-video

Vk Video Downloader от YouTube4KDownloader. Mit unserem kostenlosen Tool können Sie ganz einfach herunterladen Vk Videos erhältlich in verschiedenen Formaten ( …

Загрузчик видео для ВКонтакте — Вкон – Приложения в Google Play

play.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Закрыть
Menu