API-интерфейс youtube-mp3.org не работает должным образом, загружаются только кэшированные видео - PullRequest
0 голосов
/ 06 января 2012

Ранее я мог загружать видео с YouTube в формате mp3 через youtube-mp3.org, используя этот метод:

http://www.youtube-mp3.org/api/pushItem/?item=http%3A//www.youtube.com/watch%3Fv%3D<VIDEOID>&xy=_

Затем он вернул идентификатор видео, и они начали конвертировать видео на своих серверах.Затем этот запрос вернет строку JSON с информацией о видео и текущем статусе преобразования:

http://www.youtube-mp3.org/api/itemInfo/?video_id=<VIDEOID>&adloc=

После повторения запроса до тех пор, пока значение для status не станет «обслуживающим», я запустил последний запрос,беря значение для ключа h из ответа JSON от предыдущего запроса, и это будет загружать файл mp3.

http://www.youtube-mp3.org/get?video_id=<VIDEOID>&h=<JSON string value for h>

Теперь первый запрос всегда ничего не возвращает.Второй и третий запросы выполняются только в том случае, если запрошенное видео кэшируется на их серверах (например, популярные музыкальные клипы).Если это не так, то второй запрос вернет nil, и поэтому третий запрос не может быть запущен из-за пропущенного значения h из второго запроса.Может ли кто-нибудь помочь мне с получением веб-сайта для начала конверсии, что-то должно быть неправильно с первым URL, я просто не знаю, что.Спасибо

1 Ответ

1 голос
/ 20 января 2012

Я только что проверил это.Для первого запроса вам необходимо отправить с ним заголовок:

Accept-Location: *

В противном случае он вернет 500 (Внутренняя ошибка сервера).Но с этим заголовком он вернет строку идентификатора видео YouTube, и вы можете использовать 2-й API для проверки прогресса.

Вот код C #, который я использовал для тестирования:

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("FIRST_API_URL");
wr.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7";
wr.Headers.Add("Accept-Location", "*");
string res = (new StreamReader(wr.GetResponse().GetResponseStream())).ReadToEnd();

Кстати, вы можете отслеживать заголовки на вкладке отладки сети (Chrome) браузера.

С уважением

...