通过使用 iTunes API (http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html) 搜索播客,结果包含音频和视频播客。有没有办法从 API 中只检索音频播客?
提前致谢 :-)
从文档看来,过滤音频和视频播客似乎是不可能的。但是,您可以遍历生成的项目并检查每个项目是音频还是视频以进行过滤。您可以从 RSS 提要中查找其他信息,或者使用 subscribePodcast url 再次调用 iTunes(参见示例)。
使用系统; 使用 System.Collections.Generic; 使用 System.Linq; 使用 System.Text; 使用 System.Net; 使用 System.Web.Script.Serialization; 使用 System.Xml.Linq; 使用 System.IO; 命名空间 ConsoleTest { 课堂节目 { 静态无效主要(字符串 [] 参数) { //搜索 Windows 周刊 字符串 url = "https://itunes.apple.com/search?term=Windows%20Weekly&media=podcast&attibute=audio"; 字符串 json = FetchHTML(url); JavaScriptSerializer s = new JavaScriptSerializer(); var 结果 = s.Deserialize(json); var audioOnly = new List(); foreach(结果中的变量项。结果) { if (!IsVideo(item.TrackId)) { audioOnly.Add(item); } } foreach(audioOnly 中的 var au) { Console.WriteLine(au.TrackName); } Console.ReadLine(); } 静态布尔 IsVideo(字符串 id) { string req = "https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/com.apple.jingle.app.finance.DirectAction/subscribePodcast?id=" + id + "&wasWarnedAboutPodcasts=true"; 字符串 xml = FetchHTML(req,true); 布尔 isVideo = false; var re = XElement.Load(new StringReader(xml)).Elements("dict").Elements("dict"); 布尔下一个=假; foreach(re.Elements() 中的变量 e) { 如果(下一个) { //这是视频值 isVideo = e.Name.LocalName.Trim().ToLower() == "true"; 下一个=假; 休息; } if (e.Value == "is-video") { 下一个=真; } } 返回是视频; } 静态字符串 FetchHTML(字符串 url,bool doItAsITunes = false) { 字符串 htmlCode = ""; 使用(WebClient 客户端 = 新 WebClient()) { 如果(doItAsITunes) { client.Headers.Add("user-agent", "iTunes/9.1.1"); } htmlCode = client.DownloadString(url); } 返回html代码; } } 公共类搜索结果 { 公共搜索结果() { 结果=新列表(); } 公共 int ResultCount { 设置;得到; } 公开列表结果{集;得到; } } 公共类项目 { 公共项目() { GenreIDs = 新列表(); 流派 = 新列表(); } 公共字符串 WrapperType { 设置;得到; } 公共字符串种类 { 设置;得到; } 公共字符串 ArtistID { 设置;得到; } 公共字符串 CollectionID { 设置;得到; } 公共字符串 TrackId { 设置;得到; } 公共字符串 ArtistName { 设置;得到; } 公共字符串 CollectionName { 设置;得到; } 公共字符串 TrackName { 设置;得到; } 公共字符串 CollectionCensoredName { 设置;得到; } 公共字符串 TrackCensoredName { 设置;得到; } 公共字符串 ArtistViewUrl { 设置;得到; } 公共字符串 FeedUrl { 设置;得到; } 公共字符串 TrackViewUrl { 设置;得到; } 公共字符串 PreviewUrl { 设置;得到; } 公共字符串 ArtworkUrl60 { 设置;得到; } 公共字符串 ArtworkUrl100 { 设置;得到; } 公共浮动 CollectionPrice { set; 得到; } 公共浮动 TrackPrice { 设置;得到; } 公共字符串 CollectionExplicitness { set; 得到; } 公共字符串 TrackExplicitness { 设置;得到; } 公共字符串 DiscCount { 设置;得到; } 公共字符串 DiscNumber { 设置;得到; } 公共字符串 TrackCount { 设置;得到; } 公共字符串 TrackNumber { 设置;得到; } 公共字符串 TrackTimeMillis { 设置;得到; } 公共字符串国家{集; 得到; } 公共字符串货币 { 设置;得到; } 公共字符串 PrimaryGenreName { 设置;得到; } 公共列表 GenreIDs { set; 得到; } 公共列表流派{设置;得到; } } }
是的。在常规搜索中,您会得到一切: https ://itunes.apple.com/search?term=jack+johnson
但是您可以添加一些参数来请求例如(针对您的情况)
&entity=song
所以请求将是:
https://itunes.apple.com/search?term=jack+johnson&entity=song
有关更多信息,请查看本文档中的搜索部分