/// <summary> /// ライブラリにファイルを登録します。 /// </summary> /// <param name="registFiles"></param> /// <param name="progressInfo"></param> public void Regist(IEnumerable<string> registFiles, IProgressInfo progressInfo) { using (var tran = _databaseAccessor.BeginTransaction()) { var existsFiles = _databaseAccessor.SelectAllLibraryFilePaths().ToList(); var i = 1; var regfiles = registFiles.ToArray(); foreach (var registFile in regfiles) { progressInfo.UpdateProgressMessage("Regist Files", Path.GetFileName(registFile), i++, regfiles.Length); if (!existsFiles.Contains(registFile)) { // 未登録の場合のみ登録する var mediaFile = new MediaFile(registFile); if (mediaFile.Duration == TimeSpan.Zero) continue; // 不完全ファイルは追加しない。 _movselexGroup.SetMovGroup(mediaFile); var isSuccess = _databaseAccessor.InsertMediaFile(mediaFile); if (isSuccess) { _log.Info("Registed Media File. Id:{0} Title:{1} Group:{2}", mediaFile.Id, mediaFile.MovieTitle, mediaFile.GroupName); mediaFile.DebugWriteJson("RegistMedia"); existsFiles.Add(registFile); } else { _log.Error("Fail Regist Media File. Id:{0} Title:{1} Group:{2} Detail:{3}", mediaFile.Id, mediaFile.MovieTitle, mediaFile.GroupName, mediaFile.ToJson()); } } else { // TODO: 同じものがあればファイルパス更新 } } tran.Commit(); } }
/// <summary> /// 不完全なものを再スキャンします。 /// </summary> /// <param name="iddic"></param> public void ReScan(Dictionary<long, string> iddic) { using (var tran = _databaseAccessor.BeginTransaction()) { foreach (var kv in iddic) { var mediaFile = new MediaFile(kv.Value); mediaFile.UpdateId(kv.Key); var isSuccess = _databaseAccessor.UpdateMediaFile(mediaFile); if (isSuccess) { _log.Info("Updated Media File. Id:{0} Title:{1}", mediaFile.Id, mediaFile.MovieTitle); mediaFile.DebugWriteJson("UpdateMedia"); // ライブラリ更新 var item = GetLibraryItem(mediaFile.Id); if (item != null) item.UpdateMediaInfo(mediaFile); } else { _log.Error("Updated Regist Media File. Id:{0} Title:{1} Detail:{2}", mediaFile.Id, mediaFile.MovieTitle, mediaFile.ToJson()); } } tran.Commit(); } }