2012-06-20 3 views
3

При поиске подкастов с помощью iTunes API (http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html) результат содержит как аудио, так и видео подкасты. Есть ли способ получить только аудиоподкасты из API?Как фильтровать аудиоподкасты из API поиска iTunes?

Заранее спасибо :-)

+0

Вы когда-нибудь это выясняли? – Padraig

ответ

-1

Да. В обычном SERACH вы получите все: https://itunes.apple.com/search?term=jack+johnson

Но вы можете добавить некоторые Params запросить, например (для случая)

&entity=song 

Так запрос будет:

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

Для более посмотреть на Поиск seaction in this docs

0

От th e, похоже, что фильтрация аудио и видео подкастов возможна; однако вы можете прокручивать полученные элементы и проверять, является ли каждый элемент аудио или видео для фильтрации. Вы можете сделать это, чтобы найти дополнительную информацию из RSS-канала или путем другого вызова в iTunes с помощью URL-адреса subscribePodcast (см. Пример).

 
using System; 
     using System.Collections.Generic; 
     using System.Linq; 
     using System.Text; 
     using System.Net; 
     using System.Web.Script.Serialization; 
     using System.Xml.Linq; 
     using System.IO; 

     namespace ConsoleTest 
     { 
      class Program 
      { 
       static void Main(string[] args) 
       { 

        //Searching for Windows Weekly 
        string url = "https://itunes.apple.com/search?term=Windows%20Weekly&media=podcast&attibute=audio"; 

        string json = FetchHTML(url); 

        JavaScriptSerializer s = new JavaScriptSerializer(); 
        var result = s.Deserialize(json); 

        var audioOnly = new List(); 

        foreach (var item in result.Results) 
        { 

        if (!IsVideo(item.TrackId)) 
        { 
         audioOnly.Add(item); 
        } 

       } 

       foreach (var au in audioOnly) 
       { 
        Console.WriteLine(au.TrackName); 
       } 

       Console.ReadLine(); 
      } 

      static bool IsVideo(string id) 
      { 
       string req = "https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/com.apple.jingle.app.finance.DirectAction/subscribePodcast?id=" + id + "&wasWarnedAboutPodcasts=true"; 

       string xml = FetchHTML(req,true); 

       bool isVideo = false; 

       var re = XElement.Load(new StringReader(xml)).Elements("dict").Elements("dict"); 

       bool next = false; 
       foreach (var e in re.Elements()) 
       { 
        if (next) 
        { 
         //This is the is video value 
         isVideo = e.Name.LocalName.Trim().ToLower() == "true"; 
         next = false; 
         break; 
        } 
        if (e.Value == "is-video") 
        { 
         next = true; 
        } 
       } 

       return isVideo; 
      } 



      static string FetchHTML(string url,bool doItAsITunes = false) 
      { 
       string htmlCode = ""; 

       using (WebClient client = new WebClient()) 
       { 
        if (doItAsITunes) 
        { 
         client.Headers.Add("user-agent", "iTunes/9.1.1"); 
        } 

        htmlCode = client.DownloadString(url); 
       } 

       return htmlCode; 
      } 

     } 

     public class SearchResult 
     { 
      public SearchResult() 
      { 
       Results = new List(); 
      } 

      public int ResultCount { set; get; } 
      public List Results { set; get; } 
     } 

     public class Item 
     { 
      public Item() 
      { 
       GenreIDs = new List(); 
       Genres = new List(); 

      } 

      public string WrapperType { set; get; } 
      public string Kind { set; get; } 
      public string ArtistID { set; get; } 
      public string CollectionID { set; get; } 
      public string TrackId { set; get; } 
      public string ArtistName { set; get; } 
      public string CollectionName { set; get; } 
      public string TrackName { set; get; } 
      public string CollectionCensoredName { set; get; } 
      public string TrackCensoredName { set; get; } 
      public string ArtistViewUrl { set; get; } 
      public string FeedUrl { set; get; } 
      public string TrackViewUrl { set; get; } 
      public string PreviewUrl { set; get; } 
      public string ArtworkUrl60 { set; get; } 
      public string ArtworkUrl100 { set; get; } 
      public float CollectionPrice { set; get; } 
      public float TrackPrice { set; get; } 
      public string CollectionExplicitness { set; get; } 
      public string TrackExplicitness { set; get; } 
      public string DiscCount { set; get; } 
      public string DiscNumber { set; get; } 
      public string TrackCount { set; get; } 
      public string TrackNumber { set; get; } 
      public string TrackTimeMillis { set; get; } 
      public string Country { set; get; } 
      public string Currency { set; get; } 
      public string PrimaryGenreName { set; get; } 
      public List GenreIDs { set; get; } 
      public List Genres { set; get; } 
     } 

    } 

Смежные вопросы