Switched to dictionary for media file extensions

This commit is contained in:
Mark McDowall 2013-09-12 07:36:10 -07:00
parent cd12ccec94
commit 7c324b7cd2
1 changed files with 49 additions and 63 deletions

View File

@ -10,89 +10,75 @@ namespace NzbDrone.Core.MediaFiles
{ {
public static class MediaFileExtensions public static class MediaFileExtensions
{ {
private static HashSet<MediaFileExtension> _fileExtensions; private static Dictionary<String, Quality> _fileExtensions;
static MediaFileExtensions() static MediaFileExtensions()
{ {
_fileExtensions = new HashSet<MediaFileExtension> _fileExtensions = new Dictionary<String, Quality>
{ {
new MediaFileExtension(".m4v", Quality.SDTV), { ".m4v", Quality.SDTV },
new MediaFileExtension(".3gp", Quality.SDTV), { ".3gp", Quality.SDTV },
new MediaFileExtension(".nsv", Quality.SDTV), { ".nsv", Quality.SDTV },
new MediaFileExtension(".ty", Quality.SDTV), { ".ty", Quality.SDTV },
new MediaFileExtension(".strm", Quality.SDTV), { ".strm", Quality.SDTV },
new MediaFileExtension(".rm", Quality.SDTV), { ".rm", Quality.SDTV },
new MediaFileExtension(".rmvb", Quality.SDTV), { ".rmvb", Quality.SDTV },
new MediaFileExtension(".m3u", Quality.SDTV), { ".m3u", Quality.SDTV },
new MediaFileExtension(".ifo", Quality.SDTV), { ".ifo", Quality.SDTV },
new MediaFileExtension(".mov", Quality.SDTV), { ".mov", Quality.SDTV },
new MediaFileExtension(".qt", Quality.SDTV), { ".qt", Quality.SDTV },
new MediaFileExtension(".divx", Quality.SDTV), { ".divx", Quality.SDTV },
new MediaFileExtension(".xvid", Quality.SDTV), { ".xvid", Quality.SDTV },
new MediaFileExtension(".bivx", Quality.SDTV), { ".bivx", Quality.SDTV },
new MediaFileExtension(".vob", Quality.SDTV), { ".vob", Quality.SDTV },
new MediaFileExtension(".nrg", Quality.SDTV), { ".nrg", Quality.SDTV },
new MediaFileExtension(".pva", Quality.SDTV), { ".pva", Quality.SDTV },
new MediaFileExtension(".wmv", Quality.SDTV), { ".wmv", Quality.SDTV },
new MediaFileExtension(".asf", Quality.SDTV), { ".asf", Quality.SDTV },
new MediaFileExtension(".asx", Quality.SDTV), { ".asx", Quality.SDTV },
new MediaFileExtension(".ogm", Quality.SDTV), { ".ogm", Quality.SDTV },
new MediaFileExtension(".m2v", Quality.SDTV), { ".m2v", Quality.SDTV },
new MediaFileExtension(".avi", Quality.SDTV), { ".avi", Quality.SDTV },
new MediaFileExtension(".bin", Quality.SDTV), { ".bin", Quality.SDTV },
new MediaFileExtension(".dat", Quality.SDTV), { ".dat", Quality.SDTV },
new MediaFileExtension(".dvr-ms", Quality.SDTV), { ".dvr-ms", Quality.SDTV },
new MediaFileExtension(".mpg", Quality.SDTV), { ".mpg", Quality.SDTV },
new MediaFileExtension(".mpeg", Quality.SDTV), { ".mpeg", Quality.SDTV },
new MediaFileExtension(".mp4", Quality.SDTV), { ".mp4", Quality.SDTV },
new MediaFileExtension(".avc", Quality.SDTV), { ".avc", Quality.SDTV },
new MediaFileExtension(".vp3", Quality.SDTV), { ".vp3", Quality.SDTV },
new MediaFileExtension(".svq3", Quality.SDTV), { ".svq3", Quality.SDTV },
new MediaFileExtension(".nuv", Quality.SDTV), { ".nuv", Quality.SDTV },
new MediaFileExtension(".viv", Quality.SDTV), { ".viv", Quality.SDTV },
new MediaFileExtension(".dv", Quality.SDTV), { ".dv", Quality.SDTV },
new MediaFileExtension(".fli", Quality.SDTV), { ".fli", Quality.SDTV },
new MediaFileExtension(".flv", Quality.SDTV), { ".flv", Quality.SDTV },
new MediaFileExtension(".wpl", Quality.SDTV), { ".wpl", Quality.SDTV },
//DVD //DVD
new MediaFileExtension(".img", Quality.DVD), { ".img", Quality.DVD },
new MediaFileExtension(".iso", Quality.DVD), { ".iso", Quality.DVD },
//HD //HD
new MediaFileExtension(".mkv", Quality.HDTV720p), { ".mkv", Quality.HDTV720p },
new MediaFileExtension(".ts", Quality.HDTV720p), { ".ts", Quality.HDTV720p },
new MediaFileExtension(".m2ts", Quality.HDTV720p) { ".m2ts", Quality.HDTV720p }
}; };
} }
public static HashSet<String> Extensions public static HashSet<String> Extensions
{ {
get { return new HashSet<String>(_fileExtensions.Select(e => e.Extension.ToLower())); } get { return new HashSet<String>(_fileExtensions.Keys); }
} }
public static Quality FindQuality(string extension) public static Quality FindQuality(string extension)
{ {
var mediaFileExtension = _fileExtensions.SingleOrDefault(e => e.Extension.Equals(extension, StringComparison.InvariantCultureIgnoreCase)); if (_fileExtensions.ContainsKey(extension))
if (mediaFileExtension == null)
{ {
return Quality.Unknown; return _fileExtensions[extension];
} }
return mediaFileExtension.Quality; return Quality.Unknown;
}
}
public class MediaFileExtension
{
public string Extension { get; set; }
public Quality Quality { get; set; }
public MediaFileExtension(string extension, Quality quality)
{
Extension = extension;
Quality = quality;
} }
} }
} }