Вопрос о том как скачать музыку из контакта гуляет на просторах интернета не первый день. Один список популянрых запросов чего стоит:
как скачать музыку из контакта | 153018 |
---|---|
скачать музыку из контакта программа | 46596 |
скачивание музыки из контакта скачать | 35727 |
контакт программы скачать бесплатно музыку | 31869 |
скачать музыку с контакта бесплатно | 29299 |
На днях я поймал себя на мысли, что хорошо бы записать свежий список песен в флешку. У меня возникло сразу несколько трудностей.
- Какие песни записать?
- Как их сохранять?
- Как сэкономить время на составление плейлиста и скачку композиций?
Немного автоматизации.
Создаем приложение в контакте Standalone
Заходим в контакт Создать приложение. Получаем app_id=номер. Теперь нужно дать дать доступ своему приложению от лица вашего Аккаунта в в vk.com. Для этого нужно поправить URL и вставить его в браузерhttp://api.vkontakte.ru/oauth/authorize?client_id=НОМЕР_APP_ID&scope=wall,photos,offline,audio,video&redirect_uri=&display=page&response_type=token
После принятия прав нас редиректит на адрес вида
http://oauth.vk.com/blank.html#access_token=ТУТ_ТОКЕН_НЕОБОДИМЫЙ_НАМ&expires_in=0&user_id=IDUSER.
Открываем страничку например со списком песен BESTFM на сайте просто плеер. Смотрим разметку страницы и делаем простой парсинг по DOM документу. Имея названия композиции и исполнителя можно с большой вероятностью утверждать что поиск по контакту будет удачным.
Простой скрипт на ruby для сохранения музыки из вконтака
1 #encoding: utf-8 2 require 'rubygems' 3 require 'uri' 4 require 'net/http' 5 require 'nokogiri' 6 require 'cgi' 7 require 'json' 8 9 10 def download(text) 11 12 #Sidorov 13 @vk_token = 'ТУТ_ТОКЕН_ИЗ_АДРЕСНОЙ_СТРОКИ' 15 16 http = Net::HTTP.new('api.vkontakte.ru', 443) 17 http.use_ssl = true 18 req = Net::HTTP::Get.new("/method/audio.search?q=#{URI.escape(text)}&access_token=#{@vk_token}&sort=2&count=1") 19 r = http.request(req) 20 puts "vk: #{text}" 21 m = JSON.parse( r.body ) 22 url = m['response'][1]['url'] 23 24 mp3 = Net::HTTP.get URI.parse( url ) 25 s = text.gsub(/\s+/, '_').gsub("/", "_") 26 File.open("./download/#{s}.mp3", 'w') do |f| 27 f.write mp3 28 end 29 30 31 end 32 33 34 url = "http://prostopleer.com/top/msk/bestfm" 35 html = Net::HTTP.get(URI.parse(url)) 36 doc = Nokogiri::HTML(html) 37 doc.css('ol[id="search-results"] > li').each do |li| 38 39 singl = "#{li[:singer]} #{li[:song]}" 40 puts singl 41 download singl 42 end