Вопрос о том как скачать музыку из контакта гуляет на просторах интернета не первый день. Один список популянрых запросов чего стоит:
| как скачать музыку из контакта | 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