コード例 #1
0
        /// <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();
            }


        }
コード例 #2
0
        /// <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();
            }
        }