Пример #1
0
 ///<summary> Открыть место хранения файла элемента. </summary>
 public override void OpenInExplorer()
 {
     EntAbsFile.Refresh();
     if (EntAbsFile.Exists)
     {
         CatalogEngine.OpenExplorer(EntAbsFile.FullName);
     }
 }
Пример #2
0
        ///<summary> Открыть место хранения файла элемента. </summary>
        public override void OpenInExplorer()
        {
            string path = GetFirstEntPath();

            if (!string.IsNullOrWhiteSpace(path))
            {
                CatalogEngine.OpenExplorer(path);
            }
        }
Пример #3
0
        /// <summary> Формирование обложки эпизода. </summary>
        public void LoadCover(bool forceUpdate = false)
        {
            EntAbsFile.Refresh();
            if (!EntAbsFile.Exists)
            {
                return;
            }
            // если облогу не находили или она перестала существовать
            if (coverArtPath == null || !File.Exists(coverArtPath))
            {
                SearchCoverArt();
            }

            if (CoverImage == null | forceUpdate)               // только если еще не грузили или нужно обновить принудительно
            {
                CoverImage = null;
                BitmapImage bmi;
                if (coverArtPath != null)
                {
                    // грузим ковер из папки
                    bmi = CatalogEngine.LoadBitMap(coverArtPath);
                }
                else
                {
                    var w = int.Parse(width);
                    if (Properties.Settings.Default.UseShellCover)
                    {
                        // грузим обложку/кадр, созданную виндой
                        bmi = CatalogEngine.GetBitMapFromShell(EntAbsFile.FullName, w);
                    }
                    else
                    {
                        // создаем ковер из кадра файла
                        float vidPos = 0;
                        if (duration > 1)
                        {
                            vidPos = (float)(duration / 2);                                             // если меньше секунды, кадр из середины выдернуть не может и выбрасывает
                        }
                        bmi = CatalogEngine.LoadBitMapFromVideo(EntAbsFile.FullName, w, vidPos);
                    }
                }
                CoverImage = bmi;
            }

            // принудительная перерисовка обложки после загрузки
            Action EmptyDelegate = delegate() { };

            vp?.Dispatcher?.Invoke(DispatcherPriority.Render, EmptyDelegate);
            lp?.Dispatcher?.Invoke(DispatcherPriority.Render, EmptyDelegate);
        }
Пример #4
0
        //---
        ///<summary> Получение метаданных из видеофайла. </summary>
        public void GetMetaData()
        {
            if (!EntAbsFile.Exists)
            {
                return;
            }

            duration   = CatalogEngine.GetDuration(EntAbsFile.FullName);
            DateCreate = EntAbsFile.CreationTime;
            DateModify = EntAbsFile.LastWriteTime;

            //+ загрузка данных через ShellFile
            //? для древних и не стандартных видеофайлов лучше поставить кодеки (иначе не сможет читать из них данные) !
            try {
                var file = ShellFile.FromFilePath(EntAbsFile.FullName);
                if (file != null)
                {
                    file.Properties.System.Video.FrameWidth.TryFormatForDisplay(PropertyDescriptionFormatOptions.None, out width);
                    file.Properties.System.Video.FrameHeight.TryFormatForDisplay(PropertyDescriptionFormatOptions.None, out height);
                }
            } catch (ArgumentException ex) {
                Console.WriteLine(ex.Message);
            } catch (IndexOutOfRangeException ex2) {
                Console.WriteLine(ex2.Message);
            }

            //+ на случай, если не смогли получить через шел или надпись "Нет данных"
            //! ! значительно медленней, чем через ShellFile
            if (string.IsNullOrWhiteSpace(width) || width.Any(x => char.IsLetter(x)) || string.IsNullOrWhiteSpace(height) || height.Any(x => char.IsLetter(x)))
            {
                //Console.WriteLine("" + _entRelPath);
                try {
                    var dataSrc = CatalogEngine.ffProbe.GetMediaInfo(EntAbsFile.FullName).Streams.First();
                    width  = "" + dataSrc.Width;
                    height = "" + dataSrc.Height;
                } catch (Exception ex) {
                    width  = "0";
                    height = "0";
                    Console.WriteLine(ex.Message);
                }
            }

            ChkVideoResolution();
        }