예제 #1
0
파일: MediaMap.cs 프로젝트: leechdraw/ytm
        public static MediaMap Generate(MainConfig config)
        {
            // получаем список всех mp3
            // получаем список всех mp4
            // пытаемся сопоставить имена
            var mp3 = GetMFiles(config.Mp3Root, "*.mp3")
                      .Select(x =>
            {
                x.ImageFile = FindImage(x.FullPath);
                return(x);
            });
            var mp4    = GetMFiles(config.VideoRoot, "*.mp4");
            var result = new MediaMap();

            foreach (var audio in mp3)
            {
                var video = mp4.FirstOrDefault(vid => vid.IsSame(audio));
                if (video == null)
                {
                    result.UnmappedMp3.Add(audio);
                    continue;
                }

                result.Mapped.Add(audio, video);
            }

            result.UnmappedMp4.AddRange(mp4.Where(vid => !result.Mapped.Values.Contains(vid)));
            return(result);
        }
예제 #2
0
파일: YtManager.cs 프로젝트: leechdraw/ytm
        public void Init(MainConfig config)
        {
            _mainConfig = config;
            _map        = MediaMap.Generate(config);
            if (IsInitialized)
            {
                return;
            }

            InternalInit();
        }
예제 #3
0
파일: Program.cs 프로젝트: leechdraw/ytm
        private static void ValidateMap(MainConfig config)
        {
            var map = MediaMap.Generate(config);

            if (map.UnmappedMp3.Count > 0)
            {
                var report = string.Empty;
                foreach (var file in map.UnmappedMp3.GroupBy(f => f.Album))
                {
                    report += $"\r\n Album: {file.Key}:\r\n";
                    foreach (var mFile in file)
                    {
                        report += $"\t - {mFile.Name}.mp3\r\n";
                    }
                }

                if (report.Trim().Length > 0)
                {
                    Lg($"Не смогли найти видео для: {report}");
                }
            }

            if (map.UnmappedMp4.Count > 0)
            {
                var report = string.Empty;
                foreach (var file in map.UnmappedMp4.GroupBy(f => f.Album))
                {
                    report += $"\r\n Album: {file.Key}:\r\n";
                    foreach (var mFile in file)
                    {
                        report += $"\t - {mFile.Name}.mp4\r\n";
                    }
                }

                if (report.Trim().Length > 0)
                {
                    Lg($"Не смогли найти исходный mp3 для: {report}");
                }
            }

            if (map.Mapped.Count + map.UnmappedMp3.Count + map.UnmappedMp4.Count == 0)
            {
                Lg("В папках видео и аудио не обнаружено.", true);
            }
            else if (map.Mapped.Count == 0)
            {
                Lg("В итоге ни одного сопоставленного файла!", true);
                return;
            }

            ValidateImages(map.UnmappedMp3);
        }
예제 #4
0
 public Mp3Converter(MainConfig config, Action <string, bool> logFunc)
 {
     _config  = config;
     _logFunc = logFunc;
     _map     = MediaMap.Generate(config);
 }