예제 #1
0
 public static string GetResolution(SVR_VideoLocal videoLocal, SVR_AniDB_File aniFile = null)
 {
     if (aniFile == null)
     {
         aniFile = videoLocal?.GetAniDBFile();
     }
     return(MediaInfoUtils.GetStandardResolution(GetResolutionInternal(videoLocal, aniFile)));
 }
예제 #2
0
 public static string GetResolution(string res)
 {
     if (string.IsNullOrEmpty(res))
     {
         return(null);
     }
     string[] parts = res.Split('x');
     if (parts.Length != 2)
     {
         return(null);
     }
     if (!int.TryParse(parts[0], out int width))
     {
         return(null);
     }
     if (!int.TryParse(parts[1], out int height))
     {
         return(null);
     }
     return(MediaInfoUtils.GetStandardResolution(new Tuple <int, int>(width, height)));
 }
예제 #3
0
        private static bool CheckResolution(SVR_VideoLocal videoLocal, SVR_AniDB_File aniFile)
        {
            Tuple <int, int> resTuple = GetResolutionInternal(videoLocal, aniFile);
            string           res      = MediaInfoUtils.GetStandardResolution(resTuple);

            if (res == null)
            {
                return(true);
            }

            int resArea = resTuple.Item1 * resTuple.Item2;

            FileQualityFilterOperationType operationType = Settings.RequiredResolutions.Operator;

            switch (operationType)
            {
            case FileQualityFilterOperationType.EQUALS:
                return(res.Equals(Settings.RequiredResolutions.Value.FirstOrDefault()));

            case FileQualityFilterOperationType.GREATER_EQ:
                List <int> keysGT = MediaInfoUtils.ResolutionArea.Keys.Where(a => resArea >= a).ToList();
                keysGT.AddRange(MediaInfoUtils.ResolutionArea43.Keys.Where(a => resArea >= a));
                List <string> valuesGT = new List <string>();
                foreach (int key in keysGT)
                {
                    if (MediaInfoUtils.ResolutionArea.ContainsKey(key))
                    {
                        valuesGT.Add(MediaInfoUtils.ResolutionArea[key]);
                    }
                    if (MediaInfoUtils.ResolutionArea43.ContainsKey(key))
                    {
                        valuesGT.Add(MediaInfoUtils.ResolutionArea43[key]);
                    }
                }

                if (valuesGT.FindInEnumerable(Settings.RequiredResolutions.Value))
                {
                    return(true);
                }
                break;

            case FileQualityFilterOperationType.LESS_EQ:
                List <int> keysLT = MediaInfoUtils.ResolutionArea.Keys.Where(a => resArea <= a).ToList();
                keysLT.AddRange(MediaInfoUtils.ResolutionArea43.Keys.Where(a => resArea <= a));
                List <string> valuesLT = new List <string>();
                foreach (int key in keysLT)
                {
                    if (MediaInfoUtils.ResolutionArea.ContainsKey(key))
                    {
                        valuesLT.Add(MediaInfoUtils.ResolutionArea[key]);
                    }
                    if (MediaInfoUtils.ResolutionArea43.ContainsKey(key))
                    {
                        valuesLT.Add(MediaInfoUtils.ResolutionArea43[key]);
                    }
                }

                if (valuesLT.FindInEnumerable(Settings.RequiredResolutions.Value))
                {
                    return(true);
                }
                break;

            case FileQualityFilterOperationType.IN:
                return(Settings.RequiredResolutions.Value.Contains(res));

            case FileQualityFilterOperationType.NOTIN:
                return(!Settings.RequiredResolutions.Value.Contains(res));
            }

            return(false);
        }