http://www.youtube -mp3.org / api / itemInfo /? video_id = KMU0tzLwhbE & adloc = & r = 1314700829314 1011 *1011* 1011 Первый URL-адрес представляет собой очередь для обработки файла, второй - для получения статуса задания на обработку.
Второй URL-адрес принимает параметр GET video_id, который является идентификатором видео на YouTube (http://www.youtube.com/watch?v=KMU0tzLwhbE)), и возвращает состояние задания декодирования. Второе и третье для этой цели не имеют значения, которое можно проверить с помощьютестовая загрузка URL с дополнительными параметрами и без них.
Содержимое страницы:
info = { "title" : "Developers",
"image" : "http://i4.ytimg.com/vi/KMU0tzLwhbE/default.jpg",
"length" : "3", "status" : "serving", "progress_speed" : "",
"progress" : "", "ads" : "",
"h" : "a0aa17294103c638fa7f5e0606f839d3" };
. Это данные JSON. Интересным в этом является "a0aa17294103c638fa7f5e0606f839d3", которыйвыглядит как хеш, который веб-служба использует для ссылки на декодированный mp3-файл. Также проверьте, как выглядит ссылка для загрузки на главной странице:
http://www.youtube -mp3.org / get? video_id= KMU0tzLwhbE & h = a0aa17294103c638fa7f5e0606f839d3
Теперь мы собрали все недостающие фрагменты головоломки. Сначала мы возьмем URL-адрес видео на YouTube (http://www.youtube.com/watch?v=iKP7DZmqdbU) url цитирует его и передает его API, используя этоURL:
http://www.youtube -mp3.org / api / pushItem /? item = http% 3A // www.youtube.com / watch% 3Fv% 3DiKP7DZmqdbU & xy = trve
Тогда подождиза несколько секунд до завершения задания декодирования:
http://www.youtube -mp3.org / api / itemInfo /? video_id = iKP7DZmqdbU
Возьмите хеш, найденный вИнформационный URL для построения URL для загрузки:
http://www.youtube -mp3.org / get? video_id = iKP7DZmqdbU & h = 2e4b61b6ddc8bf83f5a0e4e4ee0635bb
Обратите внимание, что веб-мастер можетсайта не хочет быть вычеркнутым и примет контрмеры, если люди начнут (в глазах веб-мастеров) злоупотреблять сайтом.Например, кажется, что он использует защиту реферера, поэтому нажатие на ссылки в этом посте не сработает, их нужно скопировать и загрузить в новом окне браузера.
Тестовый код:
from re import findall
from time import sleep
from urllib import urlopen, quote
yt_code = 'gijypDkEqUA'
yt_url = 'http://www.youtube.com/watch?v=%s' % yt_code
push_url_fmt = 'http://www.youtube-mp3.org/api/pushItem/?item=%s&xy=trve'
info_url_fmt = 'http://www.youtube-mp3.org/api/itemInfo/?video_id=%s'
download_url_fmt = 'http://www.youtube-mp3.org/get?video_id=%s&h=%s'
push_url = push_url_fmt % quote(yt_url)
data = urlopen(push_url).read()
sleep(10)
info_url = info_url_fmt % yt_code
data = urlopen(info_url).read()
res = findall('"h" : "([^"]*)"', data)
download_url = download_url_fmt % (yt_code, res[0])
print 'Download here:', download_url