通过使用 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
有关更多信息,请查看本文档中的搜索部分