Swift MediaPlayer ミュージック検索で取得
概要
ミュージック検索で取得。
example
検索用ベース
import UIKit import MediaPlayer class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let filter1 = MPMediaPropertyPredicate(value: "BOOWY", forProperty: MPMediaItemPropertyArtist) let filterSet = Set([filter1]) let mPMediaQuery = MPMediaQuery(filterPredicates: filterSet) if let collections = mPMediaQuery.collections { print(MPMediaType.music) print(collections.count) for collection in collections { print("-/\\-") print("\(collection.mediaTypes)") collection.items[0].toString() } } } } extension MPMediaItem { func toString() { print("MPMediaItem") let keys = [MPMediaItemPropertyAlbumTitle, MPMediaItemPropertyAlbumArtist, MPMediaItemPropertyArtist, MPMediaItemPropertyIsCloudItem, MPMediaItemPropertyAlbumTrackNumber, MPMediaItemPropertyAlbumTrackCount, MPMediaItemPropertyPlayCount, MPMediaItemPropertySkipCount, MPMediaItemPropertyTitle, MPMediaItemPropertyUserGrouping] for key in keys { let value = self.value(forKey: key) if let value = value as? Bool { print("- Bool \(key):\(value)") } else if let value = value as? String { print("- String \(key):\(value)") } else if let value = value as? Int { print("- Int \(key):\(value)") } } } }
アーティスト名で検索
MPMediaPropertyPredicateを使用する。
let filter1 = MPMediaPropertyPredicate(value: "BOOWY", forProperty: MPMediaItemPropertyArtist) let filterSet = Set([filter1]) let mPMediaQuery = MPMediaQuery(filterPredicates: filterSet)
フィルタはAnd条件
アーティスト名2つは検索が0件になる。
let filter1 = MPMediaPropertyPredicate(value: "BOOWY", forProperty: MPMediaItemPropertyArtist) let filter2 = MPMediaPropertyPredicate(value: "sinon", forProperty: MPMediaItemPropertyArtist) let filterSet = Set([filter1, filter2]) let mPMediaQuery = MPMediaQuery(filterPredicates: filterSet)
検索結果をアルバム単位にする
groupingTypeを指定。
let filter1 = MPMediaPropertyPredicate(value: "渡辺美里", forProperty: MPMediaItemPropertyArtist) let filterSet = Set([filter1]) let mPMediaQuery = MPMediaQuery(filterPredicates: filterSet) mPMediaQuery.groupingType = MPMediaGrouping.album