2016-12-06 281 views
2

我正在开发包含广播和播客的应用程序。在哪里我可以播放直播流媒体。此外,我正在从iTunes获取播客列表,但没有找到响应歌曲的流媒体链接。响应给出了收集音频文件的链接。那么如何获得链接到声音文件的实际路径?如何在iOS应用程序中播放播客文件

https://itunes.apple.com/search?term=song&country=IN&media=podcast&entity=podcast

import AFNetworking 

    class PodcastApi { 

     fileprivate let baseUrl = URL(string: "https://itunes.apple.com/") 
     /// Shared singletone object of WSApi 
     static let shared : PodcastApi = { 
      let instance = PodcastApi() 
      return instance 
     }() 


     private func showNetworkActivity(){ 
      // Turn on network indicator in status bar 
      UIApplication.shared.isNetworkActivityIndicatorVisible = true 
     } 

     private func hideNetworkActivity(){ 
      // Turn off network indicator in status bar 
      UIApplication.shared.isNetworkActivityIndicatorVisible = false 
     } 

     private func getPath(term:String)->String{ 
      return "search?term=\(term)&country=IN&media=podcast&entity=podcast" 
     } 

     func getPodcasts(term:String,completionHandler:@escaping (_ status:Bool, _ responseObject:Any)->()){ 

      if !ReachabilityManager.shared.isReachable { 
       let error = WSError() 
       error.errorTitle = "Network error" 
       error.errorDescription = "Unable to connect, please check your internet connectivity." 
       completionHandler(false,error) 
       return 
      } 

      self.showNetworkActivity() 
      let sessionManager = AFHTTPSessionManager(baseURL: baseUrl, sessionConfiguration: URLSessionConfiguration.default) 
      sessionManager.requestSerializer = AFJSONRequestSerializer() 
      sessionManager.responseSerializer = AFJSONResponseSerializer() 
      let urlPath = getPath(term: term) 

      sessionManager.get(urlPath, parameters: nil, progress: { progress in 

      }, success: { task, responseObject in 

       self.hideNetworkActivity() 
       var podcasts = [Podcast]() 
       if let disc = responseObject as? [String:Any]{ 
        podcasts.append(contentsOf: Podcast.GetPodcasts(disc: disc)) 
       } 
       completionHandler(true,podcasts) 

      }, failure: { operation, err in 
       self.hideNetworkActivity() 
       let error = WSError(error: err as NSError) 
       completionHandler(false,error) 

      }) 

     } 

} 

Response is 

{ 
     "wrapperType": "track", 
     "kind": "podcast", 
     "collectionId": 415636728, 
     "trackId": 415636728, 
     "artistName": "Kurt Nichols", 
     "collectionName": "New Song Fellowship", 
     "trackName": "New Song Fellowship", 
     "collectionCensoredName": "New Song Fellowship", 
     "trackCensoredName": "New Song Fellowship", 
     "collectionViewUrl": "https://itunes.apple.com/in/podcast/new-song-fellowship/id415636728?mt=2&uo=4", 
     "feedUrl": "http://lily.nowsprouting.com/newsongfellowship/podcast.php?pageID=10", 
     "trackViewUrl": "https://itunes.apple.com/in/podcast/new-song-fellowship/id415636728?mt=2&uo=4", 
     "artworkUrl30": "http://is4.mzstatic.com/image/thumb/Music62/v4/34/b0/16/34b016de-a98f-0bc2-38ca-45ed2f22fe65/source/30x30bb.jpg", 
     "artworkUrl60": "http://is4.mzstatic.com/image/thumb/Music62/v4/34/b0/16/34b016de-a98f-0bc2-38ca-45ed2f22fe65/source/60x60bb.jpg", 
     "artworkUrl100": "http://is4.mzstatic.com/image/thumb/Music62/v4/34/b0/16/34b016de-a98f-0bc2-38ca-45ed2f22fe65/source/100x100bb.jpg", 
     "collectionPrice": 0, 
     "trackPrice": 0, 
     "trackRentalPrice": 0, 
     "collectionHdPrice": 0, 
     "trackHdPrice": 0, 
     "trackHdRentalPrice": 0, 
     "releaseDate": "2015-12-04T18:00:00Z", 
     "collectionExplicitness": "cleaned", 
     "trackExplicitness": "cleaned", 
     "trackCount": 30, 
     "country": "IND", 
     "currency": "INR", 
     "primaryGenreName": "Christianity", 
     "contentAdvisoryRating": "Clean", 
     "artworkUrl600": "http://is4.mzstatic.com/image/thumb/Music62/v4/34/b0/16/34b016de-a98f-0bc2-38ca-45ed2f22fe65/source/600x600bb.jpg", 
     "genreIds": [ 
     "1439", 
     "26", 
     "1314" 
     ], 
     "genres": [ 
     "Christianity", 
     "Podcasts", 
     "Religion & Spirituality" 
     ] 
    } 

回答

0

据我所知没有iTunes商店播客自己的人。 相反,播客提供的(主要是rss-feeds)包含XML,其中包含指向播客节目文件的链接。

feed是您的回复中“feedUrl”的值。

"feedUrl": "http://lily.nowsprouting.com/newsongfellowship/podcast.php?pageID=10" 

这些提要类似于这种形式:

  • 一个 “头” 与XML版本,统一和iTunes DTD

  • 通道 -

  • 福 。 ...

    然后a(文字LY它的名字),每播客项目可用在饲料中的形式:

this is from the podcast you mentioned, url to mp3 highlighted

如果你想解析,要读入XMLParser的;-) https://developer.apple.com/documentation/foundation/xmlparser

相关问题