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); }
public void Init(MainConfig config) { _mainConfig = config; _map = MediaMap.Generate(config); if (IsInitialized) { return; } InternalInit(); }
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); }
public Mp3Converter(MainConfig config, Action <string, bool> logFunc) { _config = config; _logFunc = logFunc; _map = MediaMap.Generate(config); }