ios - youtube-mp3.org api 无法正常工作,仅下载缓存的视频

标签 ios download youtube mp3 httprequest

以前我可以通过 youtube-mp3.org 将 YouTube 视频下载为 mp3,使用此方法:

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

然后它返回视频 ID,他们开始在服务器上转换视频。然后,此请求将返回一个 JSON 字符串,其中包含有关视频和当前转换状态的信息:

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

重复请求直到 status 的值为“正在服务”后,我通过从上一个 JSON 响应中获取键 h 的值来启动最后一个请求请求,这将下载 mp3 文件。

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

现在第一个请求总是不返回任何内容。仅当请求的视频缓存在其服务器上(如流行音乐视频)时,第二个和第三个请求才会成功。如果情况并非如此,那么第二个请求将返回 nil,因此由于第二个请求中缺少 h 值,因此无法启动第三个请求。任何人都可以帮助我让网站开始转换吗?第一个 URL 需要有问题,我只是不知道是什么。谢谢

最佳答案

我刚刚测试过。对于第一个请求,您需要发送以下 header :

Accept-Location: *

否则,它将返回 500(内部服务器错误)。但是有了这个 header ,它将返回一个 YouTube 视频 id 的字符串,您可以使用第二个 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) 调试选项卡中跟踪 header 。

问候

关于ios - youtube-mp3.org api 无法正常工作,仅下载缓存的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8763141/

相关文章:

ios - iOS SDK 中带有 mov、3gp 和 mp4 的 RTSP 播放扩展

ios - 出现错误 tableView 的使用不明确(_ :numberOfRowsInSection:)

java - 如何使excel文件可下载

Youtube 嵌入式播放器 - 最后不显示推荐(视频)?

ios - 使用 3D 坐标的 SCNShape

ios - 将委托(delegate)从第三个设置为第一个 viewController

c++ - 如何创建一个带有搜索功能和 pdf 下载/上传的小数据库

ios 5 NSURLConnection 和待机模式下的 block 下载

iphone - YouTube WebView - 视频 ID

html - 无法嵌入/链接YouTube视频