我想使用json请求从youtube api获取youtube视频。现在我使用json从youtube上获取视频。示例网址包含一些已删除的视频(http://www.youtube.com/watch?v=MlOHWLqgcoY&list=PLD62D6701B15FD3E1),但我只播放视频而非删除的视频。是否有可能或任何其他方式使用json结果处理youtube删除的视频。
这是我获取youtube视频的代码
string getPlaylistVideoUrl = https://gdata.youtube.com/feeds/api/playlists/PLD62D6701B15FD3E1?v=2&safeSearch=strict&orderby=position&start-index=1&max-results=25&alt=json;
var webRequest = (HttpWebRequest)WebRequest.Create(getPlaylistVideoUrl);
using (WebResponse response=await webRequest.GetResponseAsync())
using (Stream responseStream=response.GetResponseStream())
using (StreamReader reader = new StreamReader(responseStream))
{
var jsonResult = reader.ReadToEnd();
var videosList = JsonConvert.DeserializeObject<YouTubeVideosByPlaylist>(jsonResult);
if (videosList.Feed != null)
{
if (videosList.Feed.Entry != null)
{
//Add entries to class
}
}
提前致谢。
答案 0 :(得分:1)
我解决了youtube删除的视频问题。如果您在youtube api Url中获得 format = 6 的播放列表。
string getPlaylistVideoUrl = https://gdata.youtube.com/feeds/api/playlists/PLD62D6701B15FD3E1?v=2&safeSearch=strict&orderby=position&start-index=1&max-results=25&alt=json&format=6;
答案 1 :(得分:0)
使用数据API的v2检索时,无法播放的视频通常会在其JSON响应中设置app$control
个元素。以下是您的响应JSON中要查找的内容的示例:
"app$control": {
"app$draft": {
"$t": "yes"
},
"yt$state": {
"$t": "This video is not available in your region.",
"name": "restricted",
"reasonCode": "requesterRegion"
}
}
有other reasons为什么视频在给定的播放场景中可能无法播放,因此缺少app$control
并不能确保始终播放视频。但如果app$control
,那么视频将无法播放。
答案 2 :(得分:0)
来自Google文档“如果视频无法播放,则该视频的条目不会包含&lt; media:content&gt;标记。此外,该条目可能包含&lt; app:control&gt;标记,其中包含解释视频无法播放的原因“
https://developers.google.com/youtube/2.0/developers_guide_protocol_testing