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()
|
||||
|
||||
result.mediaType = getFlutterMediaType(mediaType: mediaMetadata?.metadataType)
|
||||
result.strings = [:]
|
||||
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
|
||||
let image = imageAny as? GCKImage
|
||||
if (image == nil) {
|
||||
|
|
@ -224,6 +230,69 @@ func getFlutterMediaMetadata(mediaMetadata: GCKMediaMetadata?) -> MediaMetadata
|
|||
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 {
|
||||
switch mediaType {
|
||||
case .generic:
|
||||
|
|
|
|||
|
|
@ -75,7 +75,10 @@ func getMetadata(metadata: MediaMetadata?) -> GCKMediaMetadata? {
|
|||
let mediaType = getMediaType(mediaType: metadata?.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
|
||||
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]? {
|
||||
if mediaTracks == nil {
|
||||
return nil
|
||||
|
|
|
|||
Loading…
Reference in a new issue