diff --git a/Harmony/Common/AudioFile.swift b/Harmony/Common/AudioFile.swift index 9c76451..67adbd0 100644 --- a/Harmony/Common/AudioFile.swift +++ b/Harmony/Common/AudioFile.swift @@ -8,6 +8,10 @@ import Foundation import AVFoundation +enum FilePlayable { + case fileNotPlayable, fileMaybePlayable, filePlayable +} + func playableFileExtensions() -> [String] { let avTypes = AVURLAsset.audiovisualTypes() let avExtensions = avTypes @@ -20,3 +24,16 @@ func fileHasPlayableExtension(fileURL: URL) -> Bool { let fileExtension = fileURL.pathExtension.lowercased() return playableFileExtensions().contains(fileExtension) } + +func filePlayability(fileURL: URL) -> FilePlayable { + guard fileHasPlayableExtension(fileURL: fileURL) else { return .fileNotPlayable } + do { + let fileAttributes = try fileURL.resourceValues(forKeys:[.isRegularFileKey]) + if fileAttributes.isRegularFile! { + return .filePlayable + } + } catch { + print("Error reading file attributes for \(fileURL): \(error).") + } + return .fileMaybePlayable +}