我正在开发包含广播和播客的应用。我可以在哪里播放直播电台。此外,我从iTunes获取播客列表,但没有找到歌曲的流媒体链接作为回应。响应提供音频文件集合的链接。那么如何获得声音文件的实际路径链接?
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 :(得分:1)
据我所知,没有iTunes将播客存储起来。 相反,播客们提供(主要是rss-feeds)包含 XML ,其中包含播客的剧集文件的链接。
Feed是" feedUrl"的值在你的回复中。
"feedUrl": "http://lily.nowsprouting.com/newsongfellowship/podcast.php?pageID=10"
这些Feed看起来与此形式类似:
a"标题"使用xml版本,unicode和itunes dtd
频道 -
复 ...
然后以Feed格式提供的每个播客的一个(字面上的名称)项目:
如果你想解析那个,你想读入XMLParser ;-) https://developer.apple.com/documentation/foundation/xmlparser