Url 0x00000015 http m vk com audio

Решил я как-то скачать свою музыкальную коллекцию из vkontakte (а это без малого 1000 песен). Связываться с vk.api не хотелось, поэтому решил использовать python + библиотека request. Что из этого получилось — под катом!

Сначала посмотрим, что делает наш браузер, когда мы обращаемся к странице своих аудиозаписей вконтакте. Открываем инструменты разработчика (я использовал Chrome, F12) и заходим на vk.com/audio. Мы можем видеть все запросы, которые совершает браузер:

Смысл действий браузера таков:

Первая строчка — GET запрос, который мы посылаем к серверу при первом заходе на страницу. В ответе сервер отдает нам html код страницы.
Затем браузер начинает подгружать все необходимые ресурсы: css, js и изображения.
Ближе к концу списка видим нестандартную строчку: это запрос типа POST с именем audio. Скорее всего, этот запрос посылает javascript для получения списка аудиозаписей.
В ответе сервер нам возвращает строчку типа:

Бинго! Это именно то что нам и надо. В ответе сервер возвращает нам JSON-список всех наших композиций и для каждой передает следующие параметры:

  • 0 — мой id
  • 1 — id композиции
  • 2 — ссылку на композицию
  • 3 — битрейт?
  • 4 — длительность
  • 5 — автор
  • 6 — название композиции
  • 7 — размер в байтах?
  • Остальные параметры непонятны.

Получаем список аудиозаписей

Как же нам получить желанный список? Посмотрим, какие headers отправляет браузер в нашем запросе:

Попробуем сымитировать наш запрос:

Функция request.post создает POST запрос к url. Ей можно передать несколько параметров. Вот главные из них:

  • headers — словарь хидеров, которые мы хотим отправиь серверу
  • data — словарь данных, которые надо передать в запросе

Функция нам выведет

Результат предсказуем — ведь мы никак не указали что мы авторизованный пользователь. Для этого надо передать серверу cookies. Исправим немного наш запрос:

Читайте также:  Easy photo pack e p50

Теперь получаем то что нужно.

Хорошо. Список мы получили. Теперь надо его отпарсить и скачать каждую песню по отдельности. Я решил не заморачиваться, и просто использовал регулярные выражения:

Основная функя здесь — OneDownload(). По сути, именно она скачивает песни. Делается это с помощью стандартной функции urllib.urlretrieve(url, file_path, . ). Эта функция скачивает данные, которые возвращает сервер при обращении к url и пишет в файл, который находится на пути file_path.

Все хорошо, все скачивается, но медленно!

Можем попробовать распараллелить наш алгоритм. Функции которые хотелось бы выполнять параллельно — это OneDownload. Создаем декоратор распараллеливания:

Декоратор в Python — это функция, которая принимает функцию в качестве аргумента и выполняет какие-то действия.
Данный декоратор просто запускает принятую функцию в отдельном потоке.

Добавляем глобальню переменную — число потоков. Напрямую из Thread-ов изменять эту переменную будет нельзя, поэтому добавляем функции

инкремента, и получения:

Теперь вносим изменения в код. Вот конечная версия программы:

Теперь все работает.

Исходники и компилированную версию можно скачать по этой ссылке:

#UPD
В компилированной версии был баг, качалась музыка только с моей страницы. Исправленная версия:
VKMusic

Простой способ скачать видеофайл из социальной сети "ВКонтакте" (он же ВК или VK), на свое мобильное устройство, телефон, планшет или персональный компьютер онлайн по ссылке. Чтобы сохранить видео, достаточно скопировать ссылку на страницу с видео из ВК и вставить в форму нашего сайта, после отправки ты сможешь выбрать файл в подходящем качестве. Для пользователей десктопной версии Google Chrome имеется возможность загрузки видеофайла с разрешением 1080p, на высокой скорости при помощи расширения. Все представленные возможности сайта предлагаются пользователю абсолютно бесплатно.

Читайте также:  Айпад стоимость в россии

Сайт не хранит файлы и не распространяет прямые ссылки. Поиск материалов осуществляется по идентификатору извлечённому из Вашей ссылки.

KissVK без рекламы навсегда

Разовый платеж — 0.99$

У Вас KissVK Premium

Нет рекламы

Качайте любимую музыку без назойливой рекламы.

Навсегда

Неограниченый доступ к любимой музыке.

Premium статус

Получите целый спектр новых уникальных возможностей в будущем.

Загрузка. Загрузка.

Войти и скачать музыку

Качают прямо сейчас

Почему именно мы

Бесплатно
Без СМС и платных установок

Без установки
Все происходит online через сайт

Безопасно
Без ввода паролей и вирусов. Подробнее

Быстро
Скорость соответствует сайту ВКонтакте

Легко
Не требует дополнительных навыков и знаний

Привычно
Используется привычный интерфейс ВКонтакте

kissvk.com — это простой, и самое главное, быстрый способ скачать свою любимую музыку с Вконтакте.

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

Kissvk позволяет онлайн скачивать музыку на компьютер, телефон или планшет под управлением Андроид.

Rate this post

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

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