public VideoMetadata(string contentId, string contentTitle, MediaQualityEnum quality, string downloadUrl)
        {
            ContentId    = contentId;
            ContentTitle = contentTitle;
            Quality      = quality;
            Itag         = (int)Quality;
            MimeType     = Quality.GetMimeType();
            FileType     = Quality.GetFileType();
            FileExt      = Quality.GetShortName();

            DownloadUrl = downloadUrl;
        }
 public static FileTypeEnum GetFileType(this MediaQualityEnum quality)
 {
     if (quality == MediaQualityEnum.Unknown)
     {
         return(FileTypeEnum.Unknown);
     }
     foreach (FileTypeEnum ft in Enum.GetValues(typeof(FileTypeEnum)))
     {
         if (quality.GetShortName().ToLower() == ft.GetShortName().ToLower())
         {
             return(ft);
         }
     }
     return(FileTypeEnum.Unknown);
 }
 public static MimeTypeEnum GetMimeType(this MediaQualityEnum quality)
 {
     if (quality == MediaQualityEnum.Unknown)
     {
         return(MimeTypeEnum.Unknown);
     }
     foreach (MimeTypeEnum mt in Enum.GetValues(typeof(MimeTypeEnum)))
     {
         if (quality.GetDescription().ToLower() == mt.GetDescription().ToLower())
         {
             return(mt);
         }
     }
     return(MimeTypeEnum.Unknown);
 }
        // Alternate version of 'MediaQualityEnumHelpers.MapItagToEnum'.
        public static bool TryMapItagToEnum(string input, out MediaQualityEnum quality)
        {
            quality = MediaQualityEnum.Unknown;

            // Check if there is an itag before continuing using finer regex pattern.
            Match match1 = Regex.Match(input, _basicItagPattern);

            if (!match1.Success || (match1.Success && match1.Value != input))
            {
                return(false);
            }

            // Get only the enum value of the itag.
            Match match2 = Regex.Match(input, _itagEnumValuePattern);

            if (!match2.Success)
            {
                return(false);
            }
            if (!int.TryParse(match2.Value, out int value))
            {
                return(false);
            }

            // Iterate through 'Resources.MediaQualityEnum'.
            // <see cref="http://stackoverflow.com/questions/105372/how-do-i-enumerate-an-enum"/>
            foreach (MediaQualityEnum itag in Enum.GetValues(typeof(MediaQualityEnum)))
            {
                if ((int)itag == value)
                {
                    quality = itag;
                    return(true);
                }
            }
            return(false);
        }