コード例 #1
0
ファイル: MainPresenter.cs プロジェクト: punker76/Moviebase
        public void SingleSavePersistData(MovieEntryFacade entry)
        {
            var manager = _kernel.Get <IPersistentDataManager>();

            entry.InternalMovieData.Id = -2;
            manager.SaveData(entry.InternalMovieData, Path.GetDirectoryName(entry.FullPath));
        }
コード例 #2
0
        protected override void InternalRunWorker(object arg)
        {
            _log.Info("Processing: " + arg);
            TmdbResult newData = null;

            try
            {
                var name = _guessit.RealGuessName(Path.GetFileName(arg.ToString()));
                if (name?.ImdbId != null)
                {
                    newData = _tmdb.GetByImdbId(name.ImdbId);
                }
                else if (name?.Title != null)
                {
                    newData = _tmdb.GetByTmdbId(_tmdb.SearchMovies(name.Title, name.Year).First());
                }
            }
            catch (Exception e)
            {
                _log.Error(e, "Process error: " + arg);
            }

            newData = newData ?? _tmdb.GetByFilename(Path.GetFileName(arg.ToString()));
            var result = new MovieEntryFacade(newData, arg.ToString());

            _log.Info("Processed: " + arg);
            IncrementWorkDone();
            OnProgressChanged(this, new ProgressChangedEventArgs(GetPercentage(), new  DirectoryAnalyzeWorkerState
            {
                Entry = result
            }));
        }
コード例 #3
0
        protected override void InternalRunWorker(object arg)
        {
            try
            {
                _log.Info("Processing: " + arg);
                var currentFolder = new PowerPath(arg.ToString());

                // check for ignore pattern
                var lastName = currentFolder.GetLastDirectoryName();
                if (lastName.StartsWith("[") && lastName.EndsWith("]"))
                {
                    _log.Debug("Process skipped due to directory name.");
                    return;
                }

                // find first movie
                var currentMoviePath = _persistentDataManager.FindFirstMovieFile(arg.ToString());
                if (currentMoviePath == null)
                {
                    _log.Debug("Process skipped due to unavaliable movie file.");
                    return;
                }

                // find metadata
                TmdbResult entry;
                if (_persistentDataManager.HasPersistentData(currentMoviePath.GetDirectoryPath()))
                {
                    _log.Debug("Using saved presist data.");
                    entry = _persistentDataManager.LoadData(currentMoviePath);
                }
                else
                {
                    _log.Debug("Creating new data using GetByFilename.");
                    entry = _tmdb.GetByFilename(currentMoviePath.GetFileNameWithoutExtension());
                }

                // pop to event
                var result = new MovieEntryFacade(entry, currentMoviePath);
                OnProgressChanged(this, new ProgressChangedEventArgs(-1, new DirectoryAnalyzeWorkerState
                {
                    Entry = result
                }));

                _log.Info("Processed: " + arg);
            }
            catch (Exception e)
            {
                _log.Error(e, "Process error. Path: " + arg);
            }
        }
コード例 #4
0
        private void RenameFile(PowerPath fileInfo, MovieEntryFacade entry)
        {
            var originalFilePath = fileInfo.GetFullPath();
            var renamedFile      = fileInfo.RenameFileByPattern(FileRenamePattern, entry);

            if (SwapThe)
            {
                renamedFile.SwapFileName(Commons.TheName);
            }
            var name = renamedFile.GetFileName();

            var destFilePath = Path.Combine(fileInfo.GetDirectoryPath(), name);

            if (originalFilePath == destFilePath)
            {
                return;
            }
            File.Move(originalFilePath, destFilePath);
            entry.FullPath = destFilePath;
        }
コード例 #5
0
        private void RenameDirectory(PowerPath fileInfo, MovieEntryFacade entry)
        {
            var originalFilePath = fileInfo.GetDirectoryPath();
            var renamedPath      = fileInfo.RenameLastDirectoryByPattern(FolderRenamePattern, entry);

            if (SwapThe)
            {
                renamedPath.SwapLastDirectoryName(Commons.TheName);
            }
            var directoryPath = renamedPath.GetDirectoryPath();

            if (originalFilePath == directoryPath)
            {
                return;
            }
            Directory.Move(originalFilePath, directoryPath);

            var name = Path.GetFileName(entry.FullPath);

            Debug.Assert(name != null);
            entry.FullPath = Path.Combine(directoryPath, name);
        }