I am try to extract the audio file url from Shazamkit, it is deep inside the hierarchy of SHMediaItem > songs > previewAssets > url
when I access the url with like this:
let url = firstItem.songs[0].previewAssets?[0].url
I am getting a warning like this:
here is the Variable Viewer
this is what I have done so far:
struct MediaItems: Codable {
let title: String?
let subtitle: String?
let shazamId: String?
let appleMusicId: String?
let appleMusicUrL: URL?
let artworkUrl: URL?
let artist: String?
let matchOffset: TimeInterval?
let videoUrl: URL?
let webUrl: URL?
let genres: [String]
let isrc: String?
let songs: [Song]?
}
extension SwiftFlutterShazamKitPlugin: SHSessionDelegate{
public func session(_ session: SHSession, didFind match: SHMatch) {
let mediaItems = match.mediaItems
if let firstItem = mediaItems.first {
// extracting the url
let url = firstItem.songs[0].previewAssets?[0].url
let _shazamMedia = MediaItems(
title:firstItem.title!,
subtitle:firstItem.subtitle!,
shazamId:firstItem.shazamID!,
appleMusicId:firstItem.appleMusicID!,
appleMusicUrL:firstItem.appleMusicURL!,
artworkUrl:firstItem.artworkURL!,
artist:firstItem.artist!,
matchOffset:firstItem.matchOffset,
videoUrl:firstItem.videoURL!,
webUrl:firstItem.webURL!,
genres:firstItem.genres,
isrc:firstItem.isrc!,
songs:firstItem.songs
)
do {
let jsonData = try JSONEncoder().encode([_shazamMedia])
let jsonString = String(data: jsonData, encoding: .utf8)!
self.callbackChannel?.invokeMethod("matchFound", arguments: jsonString)
} catch {
callbackChannel?.invokeMethod("didHasError", arguments: "Error when trying to format data, please try again")
}
}
}