Скрипт для скачивания музыки вконтакте

Скрипт для скачивания музыки вконтакте

Привет. Давно я не появлялся, соскучились?:) Сегодня дам всем желающим скачать скрипт для скачивания музыки из вконтакте бесплатно. Идея скрипта родилась совершенно внезапно.

Мы сидели с девушкой и слушали музыку на вконтакте. Интернет работал нестабильно, поэтому мы захотели скачивать музыку на комп и слушать с него. Вспомнили что раньше был такой скрипт, который дорисовывал кнопочки "Save" ко всем трекам. Но потом он перестал работать, потому что изменился дизайн и вообще много чего изменилось на вконтакте.

Не долго думая, я наваял первую версию greasemonkey скрипта, который выполнял ту же задачу.

Скрипт скачивания музыки с вконтакте

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

Видим две составляющие. Во-первых, ссылки "DL" у каждой мелодии на странице. Если кликнуть по этой ссылке — браузер либо откроет музыкальный плеер и начнет играть мелодию, либо начнет скачивать файл. Если ваш браузер открывает медиа-плеер, а вам надо скачать — просто нажмите на эту ссылку правой кнопкой и нажмите "Сохранить объект как. ".

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

Второй элемент — это иконка ноты, появившаяся в шапке сайта. Если нажать на нее — появляются ссылки "DL" если их раньше не было. Это все ее функции, собственно.

Как установить скрипт

Установка простая, но скрипт требует наличия плагина Greasemonkey. Если он у вас уже есть — все отлично. Просто перетащите скрипт на окно браузера и подтвердите установку. Если грисманки у вас нет — установите. Это полезная штука.

После установки он сразу начнет работать.

Как работает скрипт

Для любознательных я опишу как скрипт устроен и работает. Ведь у меня тут блог про веб-разработку;) Кстати, я уже писал про greasemonkey-скрипты на этом блоге и давал один, которым пользуюсь до сих пор весьма успешно. Это скрипт выделения nofollow и noindex ссылок.

А сейчас поговорим про этот. Для начала, вот код.

Расскажу сначала идею. Ссылки для прослушивания файлов вконтакте доступны каждому залогиненому пользователю. Беда в том, что они зависят от сессий. То есть, пока сессия есть — ссылка работает и может быть открыта даже другим пользователем. Как сессия разрушается (пользователь выходит) — ссылка перестает работать. В этом одна из трудностей использования вконтакта в качестве медиа-сервера на своем сайте. А что, удобно было бы — музыка лежит там, ссылки получаешь, встраиваешь в свой сайт и играешь на нем. Ан нет.

Читайте также:  Ошибка 0x00000109 windows 7 x64

Но мы-то выполняем JS будучи залогинеными! Так что ссылки у нас всегда есть. Осталось только найти их в коде и нарисовать ссылки на них в явном виде.

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

Теперь по коду. Главная строчка в шапке greasemonkey — require. Она подключает jquery из репозитория Яндекса.

Дальше идет создание функции отладки GMlog. Если доступен объект console — его функция log становится доступна внутри GM-скрипта под именем GMlog. Эта функция просто выводит в консоль файрбага какие-то данные.

Дальше мы регистрируем функцию определения ссылок и рисования их в объекте окна, а не в локальном пространстве имен GM-скрипта.

А дальше мы определяем две функции. Одна — собственно нахождение музыки и отображение ссылок на скачивание. Вторая — рисование иконки в виде ноты.

Функция detect_audio делает следующее:

  1. Находит и удаляет ссылки на скачивание музыки, если уже такие есть. Это нужно чтобы ссылки не плодились при повторном нажатии на кнопку.
  2. Ищет все input, где id начинается с "audio_info" и перебирает их.
  3. Для каждого такого элемента ищется значение атрибута value. Оно содержит ссылку на файл и какое-то число через запятую.
  4. Поэтому мы разбиваем эту строку по запятой
  5. И берем только первую часть.
  6. Дальше формируем html-код ссылки, которую будем отображать.
  7. И вставляем ее сразу после найденного input.

В общем, ничего сложного. Самый инетересный момент — это нахождение input с id, начинающимися с сaudio_info.

Функция true_load вообще не обязательна и сделана для красоты. Она делает вообще простую вещь. Если иконка еще не отображается — генерируется html-код этой иконки и вставляется в код страницы.

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

Второй момент — сама иконка. Я решил использовать иконку самого вконтакта. Но оказалось, что она является частью спрайта из двух иконок — знака плюс и ноты. Это был мой первый опыт работы со спрайтами) Ничего сложного на самом деле. Берем иконку, ставим ее в фон div-а и при помощи background-position добиваемся ее отображения.

Читайте также:  Стартовые страницы для интернета

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

Буду благодарен, если вы будете использовать этот скрипт и оставите свои отзывы и пожелания ниже. На вопросы тоже постараюсь ответить как можно оперативней. Еще, конечно, буду благодарен если поделитесь ссылкой на этот пост с друзьями вконтакте. Ну и подписывайтесь, не стесняйтесь, мне нравится писать GM-скрипты и я намерен раздавать их бесплатно. Не пропустите!

/*
Инструкция по использованию:
— заходим в раздел с аудиозаписями
— листаем в самый низ (чтобы прогрузились все аудиозаписи)
— открываем консоль браузера (F12 -> Консоль)
— вставляем код и нажимаем ENTER
— скачивание началось.
— браузер может потребовать разрешение на сохранение файлов, необходимо подтвердить действие
Важно! С открытой вкладкой ничего не делаем!
Проверено в Google Chrome
*/
var script = document . createElement ( ‘script’ ) ;
script . src = "https://code.jquery.com/jquery-3.2.1.min.js" ;
document . getElementsByTagName ( ‘head’ ) [ 0 ] . appendChild ( script ) ;
script = document . createElement ( ‘script’ ) ;
script . src = "https://cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.7/download.min.js" ;
document . getElementsByTagName ( ‘head’ ) [ 0 ] . appendChild ( script ) ;
// Количество одновременных загрузок
const DOWNLOAD_COUNT = 5 ;
function download_file ( url , name , type , callback ) <
var xhr = new XMLHttpRequest ( ) ;
xhr . open ( "GET" , url , true ) ;
xhr . responseType = "blob" ;
xhr . onload = function ( ) <
download ( xhr . response , name + ".mp3" , type ) ;
callback ( ) ;
> ;
/*xhr.onprogress = function (e) <
var progress = e.loaded * 100 / e.total;
console.log( name, Math.round(progress, 2) + "%" );
>;*/
xhr . send ( ) ;
>
setTimeout ( function ( ) <
var ids = $ ( ‘._audio_row’ ) . map ( function ( ) <
return $ ( this ) . data ( ‘full-id’ ) ;
> ) . get ( ) ;
var progress = 0 ;
window . download_audio = function ( ) <
if ( progress > ( ids . length — 1 ) ) <
console . log ( "Все аудиозаписи скачаны!" ) ;
return ;
>
$ . post ( "al_audio.php" , <
act : "reload_audio" ,
al : 1 ,
ids : ids [ progress ++ ]
> , function ( data ) <
var matches = data . match ( / [ ( . + ) ] / ) ;
if ( matches == null || matches [ 1 ] == null ) <
download_audio ( ) ;
console . log ( "Не удалось скачать аудиозапись, идём дальше. " ) ;
return ;
>
data = JSON . parse ( matches [ 1 ] ) ;
var name = data [ 4 ] + " — " + data [ 3 ] ;
name = $ ( ‘

‘ ) . html ( name ) . text ( ) ;

download_file ( data [ 2 ] , name , "audio/mp3" , window . download_audio ) ; console . log ( "Скачиваем. " , name ) ; > ) ; > for ( var i = 0 ; i DOWNLOAD_COUNT ; i ++ ) < download_audio ( ) ; > > , 2000 ) ;

This comment has been minimized.

Copy link Quote reply

pabelIfn commented Feb 14, 2018

in 14.02.2018 don’t work

This comment has been minimized.

Copy link Quote reply

Medvedoc commented Feb 24, 2018

Отличный скрипт и при том рабочий =))) Спасибо огромное автор
А можно его на php переписать? Или чтобы он автоматически сохранял в папку
И еще такой вопрос — как например аудио с поста скачать? Я так понимаю нужно взять название мелодии, потом найти ее в аудиои потом парсить.

Читайте также:  Область определения и множество значений

This comment has been minimized.

Copy link Quote reply

metalurgus commented Mar 1, 2018

К сожалению, больше не работает 🙁
Вместо музыки скачивает заглушку, которая говорит "к сожалению музыка недоступна. "

Социальная сеть Вконтакте – это одна из самых больших социальных сетей во всём интернете. Бесплатная музыка и множество музыкальных групп делают своё дело. Ежедневно социальная сеть Вконтакте пополняется миллионами новых треков и видеозаписей. Удобный проигрыватель музыки и безграничное пространство для хранения, заинтересует любого человека. Но не тут то было. Везде, где есть положительные стороны, к сожалению, есть и отрицательные. Чтобы уменьшить количество пиратов и не нарушать права исполнителей, функции скачивания треков никогда не было и не будет. Это огромнейший минус, но их тоже можно понять.

Именно поэтому, сегодня будет рассмотрена статья на тему, как скачать музыку из ВК.
Наверняка у вас в аудио записях есть любимые треки, которые вы бы хотели скачать к себя на компьютер, а затем на телефон. Я расскажу о разных способах, которые я проверил на себе, на момент написания статьи 20 июня 2017 года, все работает отлично. Скачивать музыку можно несколькими различными способами, каждый из вас должен сделать выбор, какой вариант ему больше подходит.

  • Установка программ для Windows.
  • Установка расширений или плагинов для браузеров.
  • Прослушивание и скачивание музыки онлайн.
  • Скачивание музыки на телефоны Андроид или Айфон.

Как скачать музыку с помощью расширений для браузеров?

Именно расширениями для браузера Google Chrome я пользуюсь лично, когда хочу скачать музыку без использования программ, это очень удобно и быстро. Установил один раз расширение и возле каждого трека теперь находиться кнопка для его загрузки. Функций меньше по сравнению с программами, но есть самое главное. Расширений очень много, а устанавливаются и работают они одинаково, сейчас я вкратце расскажу о самых популярных. Кстати расширения от Google Chrome подходят для Яндекс браузера, поэтому можете смело их устанавливать!

VkOpt для Google Chrome, Opera и Mozilla Firefox

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

Ссылка на основную публикацию
Сколько рублей получают ютуберы
Видеохостинг YouTube — не только развлекательная площадка, но и хороший источник дохода. Тысячи пользователей выкладывают ролики, пытаясь привлечь внимание аудитории....
Самый дорогой самсунг 2018
Samsung / Самсунг - южнокорейская компания, ведущий производитель смартфонов в мире. В первом квартале 2018 года доля Самсунг на мировом...
Самый лучший smart tv
Ежегодные обновления телевизионных технологий делают телевизоры уже больше, чем обычным экраном для демонстрации каналов. Растет популярность функции Smart TV, которая...
Сколько света мотает компьютер
Выбирая комплектующие для персонального компьютера (ПК) обычно обращают внимание на производительность и объем памяти, порой забывая о том, сколько же...
Adblock detector