MediaMetadata: strings workaround ios
This commit is contained in:
parent
b02d66c7d5
commit
a2ea319dd4
3 changed files with 207 additions and 1 deletions
71
ios/Classes/FlutterEnumHelper.swift
Normal file
71
ios/Classes/FlutterEnumHelper.swift
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
//
|
||||||
|
// FlutterEnumHelper.swift
|
||||||
|
// flutter_cast_framework
|
||||||
|
//
|
||||||
|
// Created by Gianluca Paradiso on 02/08/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
func getEnumLabelFor(key: MediaMetadataKey) -> String {
|
||||||
|
switch key {
|
||||||
|
case MediaMetadataKey.albumArtist:
|
||||||
|
return "albumArtist"
|
||||||
|
case MediaMetadataKey.albumTitle:
|
||||||
|
return "albumTitle"
|
||||||
|
case MediaMetadataKey.artist:
|
||||||
|
return "artist"
|
||||||
|
case MediaMetadataKey.bookTitle:
|
||||||
|
return "bookTitle"
|
||||||
|
case MediaMetadataKey.broadcastDate:
|
||||||
|
return "broadcastDate"
|
||||||
|
case MediaMetadataKey.chapterNumber:
|
||||||
|
return "chapterNumber"
|
||||||
|
case MediaMetadataKey.chapterTitle:
|
||||||
|
return "chapterTitle"
|
||||||
|
case MediaMetadataKey.composer:
|
||||||
|
return "composer"
|
||||||
|
case MediaMetadataKey.creationDate:
|
||||||
|
return "creationDate"
|
||||||
|
case MediaMetadataKey.discNumber:
|
||||||
|
return "discNumber"
|
||||||
|
case MediaMetadataKey.episodeNumber:
|
||||||
|
return "episodeNumber"
|
||||||
|
case MediaMetadataKey.height:
|
||||||
|
return "height"
|
||||||
|
case MediaMetadataKey.locationLatitude:
|
||||||
|
return "locationLatitude"
|
||||||
|
case MediaMetadataKey.locationLongitude:
|
||||||
|
return "locationLongitude"
|
||||||
|
case MediaMetadataKey.locationName:
|
||||||
|
return "locationName"
|
||||||
|
case MediaMetadataKey.queueItemId:
|
||||||
|
return "queueItemId"
|
||||||
|
case MediaMetadataKey.releaseDate:
|
||||||
|
return "releaseDate"
|
||||||
|
case MediaMetadataKey.seasonNumber:
|
||||||
|
return "seasonNumber"
|
||||||
|
case MediaMetadataKey.sectionDuration:
|
||||||
|
return "sectionDuration"
|
||||||
|
case MediaMetadataKey.sectionStartAbsoluteTime:
|
||||||
|
return "sectionStartAbsoluteTime"
|
||||||
|
case MediaMetadataKey.sectionStartTimeInContainer:
|
||||||
|
return "sectionStartTimeInContainer"
|
||||||
|
case MediaMetadataKey.sectionStartTimeInMedia:
|
||||||
|
return "sectionStartTimeInMedia"
|
||||||
|
case MediaMetadataKey.seriesTitle:
|
||||||
|
return "seriesTitle"
|
||||||
|
case MediaMetadataKey.studio:
|
||||||
|
return "studio"
|
||||||
|
case MediaMetadataKey.subtitle:
|
||||||
|
return "subtitle"
|
||||||
|
case MediaMetadataKey.title:
|
||||||
|
return "title"
|
||||||
|
case MediaMetadataKey.trackNumber:
|
||||||
|
return "trackNumber"
|
||||||
|
case MediaMetadataKey.width:
|
||||||
|
return "width"
|
||||||
|
@unknown default:
|
||||||
|
return "default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -208,8 +208,14 @@ func getFlutterMediaMetadata(mediaMetadata: GCKMediaMetadata?) -> MediaMetadata
|
||||||
let result = MediaMetadata()
|
let result = MediaMetadata()
|
||||||
|
|
||||||
result.mediaType = getFlutterMediaType(mediaType: mediaMetadata?.metadataType)
|
result.mediaType = getFlutterMediaType(mediaType: mediaMetadata?.metadataType)
|
||||||
|
result.strings = [:]
|
||||||
result.webImages = []
|
result.webImages = []
|
||||||
|
|
||||||
|
mediaMetadata?.allKeys().forEach({ key in
|
||||||
|
let flutterKey = getFlutterMediaMetadataKey(mediaMetadataKey: key)
|
||||||
|
result.strings?[flutterKey] = mediaMetadata?.string(forKey: key)
|
||||||
|
})
|
||||||
|
|
||||||
mediaMetadata?.images().forEach({ (imageAny: Any) in
|
mediaMetadata?.images().forEach({ (imageAny: Any) in
|
||||||
let image = imageAny as? GCKImage
|
let image = imageAny as? GCKImage
|
||||||
if (image == nil) {
|
if (image == nil) {
|
||||||
|
|
@ -224,6 +230,69 @@ func getFlutterMediaMetadata(mediaMetadata: GCKMediaMetadata?) -> MediaMetadata
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getFlutterMediaMetadataKey(mediaMetadataKey: String) -> String {
|
||||||
|
switch mediaMetadataKey {
|
||||||
|
case kGCKMetadataKeyAlbumArtist:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.albumArtist)
|
||||||
|
case kGCKMetadataKeyAlbumTitle:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.albumTitle)
|
||||||
|
case kGCKMetadataKeyArtist:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.artist)
|
||||||
|
case kGCKMetadataKeyBookTitle:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.bookTitle)
|
||||||
|
case kGCKMetadataKeyBroadcastDate:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.broadcastDate)
|
||||||
|
case kGCKMetadataKeyChapterNumber:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.chapterNumber)
|
||||||
|
case kGCKMetadataKeyChapterTitle:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.chapterTitle)
|
||||||
|
case kGCKMetadataKeyComposer:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.composer)
|
||||||
|
case kGCKMetadataKeyCreationDate:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.creationDate)
|
||||||
|
case kGCKMetadataKeyDiscNumber:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.discNumber)
|
||||||
|
case kGCKMetadataKeyEpisodeNumber:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.episodeNumber)
|
||||||
|
case kGCKMetadataKeyHeight:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.height)
|
||||||
|
case kGCKMetadataKeyLocationLatitude:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.locationLatitude)
|
||||||
|
case kGCKMetadataKeyLocationLongitude:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.locationLongitude)
|
||||||
|
case kGCKMetadataKeyLocationName:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.locationName)
|
||||||
|
case kGCKMetadataKeyQueueItemID:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.queueItemId)
|
||||||
|
case kGCKMetadataKeyReleaseDate:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.releaseDate)
|
||||||
|
case kGCKMetadataKeySeasonNumber:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.seasonNumber)
|
||||||
|
case kGCKMetadataKeySectionDuration:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.sectionDuration)
|
||||||
|
case kGCKMetadataKeySectionStartAbsoluteTime:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.sectionStartAbsoluteTime)
|
||||||
|
case kGCKMetadataKeySectionStartTimeInContainer:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.sectionStartTimeInContainer)
|
||||||
|
case kGCKMetadataKeySectionStartTimeInMedia:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.sectionStartTimeInMedia)
|
||||||
|
case kGCKMetadataKeySeriesTitle:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.seriesTitle)
|
||||||
|
case kGCKMetadataKeyStudio:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.studio)
|
||||||
|
case kGCKMetadataKeySubtitle:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.subtitle)
|
||||||
|
case kGCKMetadataKeyTitle:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.title)
|
||||||
|
case kGCKMetadataKeyTrackNumber:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.trackNumber)
|
||||||
|
case kGCKMetadataKeyWidth:
|
||||||
|
return getEnumLabelFor(key: MediaMetadataKey.width)
|
||||||
|
default:
|
||||||
|
return "default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func getFlutterMediaType(mediaType: GCKMediaMetadataType?) -> MediaType {
|
func getFlutterMediaType(mediaType: GCKMediaMetadataType?) -> MediaType {
|
||||||
switch mediaType {
|
switch mediaType {
|
||||||
case .generic:
|
case .generic:
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,10 @@ func getMetadata(metadata: MediaMetadata?) -> GCKMediaMetadata? {
|
||||||
let mediaType = getMediaType(mediaType: metadata?.mediaType)
|
let mediaType = getMediaType(mediaType: metadata?.mediaType)
|
||||||
let result = GCKMediaMetadata.init(metadataType: mediaType)
|
let result = GCKMediaMetadata.init(metadataType: mediaType)
|
||||||
|
|
||||||
// metadata.strings // TODO map this
|
metadata?.strings?.forEach({ (key: String, value: String) in
|
||||||
|
let resultKey = getMediaMetadataKey(key: key)
|
||||||
|
result.setString(value, forKey: resultKey)
|
||||||
|
})
|
||||||
|
|
||||||
metadata?.webImages?.forEach({ (img: WebImage) in
|
metadata?.webImages?.forEach({ (img: WebImage) in
|
||||||
if img.url == nil {
|
if img.url == nil {
|
||||||
|
|
@ -113,6 +116,69 @@ func getMediaType(mediaType: MediaType?) -> GCKMediaMetadataType {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getMediaMetadataKey(key: String) -> String {
|
||||||
|
switch key {
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.albumArtist):
|
||||||
|
return kGCKMetadataKeyAlbumArtist
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.albumTitle):
|
||||||
|
return kGCKMetadataKeyAlbumTitle
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.artist):
|
||||||
|
return kGCKMetadataKeyArtist
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.bookTitle):
|
||||||
|
return kGCKMetadataKeyBookTitle
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.broadcastDate):
|
||||||
|
return kGCKMetadataKeyBroadcastDate
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.chapterNumber):
|
||||||
|
return kGCKMetadataKeyChapterNumber
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.chapterTitle):
|
||||||
|
return kGCKMetadataKeyChapterTitle
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.composer):
|
||||||
|
return kGCKMetadataKeyComposer
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.creationDate):
|
||||||
|
return kGCKMetadataKeyCreationDate
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.discNumber):
|
||||||
|
return kGCKMetadataKeyDiscNumber
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.episodeNumber):
|
||||||
|
return kGCKMetadataKeyEpisodeNumber
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.height):
|
||||||
|
return kGCKMetadataKeyHeight
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.locationLatitude):
|
||||||
|
return kGCKMetadataKeyLocationLatitude
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.locationLongitude):
|
||||||
|
return kGCKMetadataKeyLocationLongitude
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.locationName):
|
||||||
|
return kGCKMetadataKeyLocationName
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.queueItemId):
|
||||||
|
return kGCKMetadataKeyQueueItemID
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.releaseDate):
|
||||||
|
return kGCKMetadataKeyReleaseDate
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.seasonNumber):
|
||||||
|
return kGCKMetadataKeySeasonNumber
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.sectionDuration):
|
||||||
|
return kGCKMetadataKeySectionDuration
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.sectionStartAbsoluteTime):
|
||||||
|
return kGCKMetadataKeySectionStartAbsoluteTime
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.sectionStartTimeInContainer):
|
||||||
|
return kGCKMetadataKeySectionStartTimeInContainer
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.sectionStartTimeInMedia):
|
||||||
|
return kGCKMetadataKeySectionStartTimeInMedia
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.seriesTitle):
|
||||||
|
return kGCKMetadataKeySeriesTitle
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.studio):
|
||||||
|
return kGCKMetadataKeyStudio
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.subtitle):
|
||||||
|
return kGCKMetadataKeySubtitle
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.title):
|
||||||
|
return kGCKMetadataKeyTitle
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.trackNumber):
|
||||||
|
return kGCKMetadataKeyTrackNumber
|
||||||
|
case getEnumLabelFor(key: MediaMetadataKey.width):
|
||||||
|
return kGCKMetadataKeyWidth
|
||||||
|
default:
|
||||||
|
return "default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func getMediaTracks(mediaTracks: [MediaTrack]?) -> [GCKMediaTrack]? {
|
func getMediaTracks(mediaTracks: [MediaTrack]?) -> [GCKMediaTrack]? {
|
||||||
if mediaTracks == nil {
|
if mediaTracks == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue