4

通过使用 iTunes API (http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html) 搜索播客,结果包含音频和视频播客。有没有办法从 API 中只检索音频播客?

提前致谢 :-)

4

2 回答 2

0

从文档看来,过滤音频和视频播客似乎是不可能的。但是,您可以遍历生成的项目并检查每个项目是音频还是视频以进行过滤。您可以从 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; 得到; }
            公共列表流派{设置;得到; }
        }

    }

于 2014-07-21T18:24:41.027 回答
-1

是的。在常规搜索中,您会得到一切: https ://itunes.apple.com/search?term=jack+johnson

但是您可以添加一些参数来请求例如(针对您的情况)

&entity=song

所以请求将是:

https://itunes.apple.com/search?term=jack+johnson&entity=song

有关更多信息,请查看本文档中的搜索部分

于 2012-12-30T13:32:37.570 回答