youtube-mp3.org api工作不正常,只能下载caching的video
以前,我可以通过youtube-mp3.org将YouTubevideo下载为mp3。使用此方法:
http://www.youtube-mp3.org/api/pushItem/?item=http%3A//www.youtube.com/watch%3Fv%3D<VIDEOID>&xy=_
然后它返回videoID,他们开始转换他们的服务器上的video。 然后,这个请求将返回一个JSONstring,其中包含有关video和当前转换状态的信息:
http://www.youtube-mp3.org/api/itemInfo/?video_id=<VIDEOID>&adloc=
重复请求直到status
值为'serving'后,我通过从前一个请求的JSON响应中获取key的值来启动最后一个请求,这会下载一个mp3文件。
http://www.youtube-mp3.org/get?video_id=<VIDEOID>&h=<JSON string value for h>
现在第一个请求总是没有返回。 如果请求的videocaching在服务器上(如stream行音乐video),则第二个和第三个请求只能成功。 如果不是这种情况,那么第二个请求将返回nil,所以第三个请求不能被启动,因为第二个请求中缺lessh
值。 有没有人可以帮助我得到的网站开始转换的东西需要错误的第一个url,我只是不知道什么。 谢谢
我只是testing它。 对于第一个请求,你需要发送一个头:
Accept-Location: *
否则,它将返回一个500(内部服务器错误)。 但是有了这个头文件,它会返回一个YouTubevideoID的string,你可以使用第二个API来检查进度。
这里是我用于testing的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();
顺便说一句,你可以跟踪浏览器的networking(Chrome)debugging选项卡中的标题。
问候