예제 #1
0
        public virtual void readMetadata(MediaProbe mediaProbe, Stream data, MetadataFactory.ReadOptions options, BaseMetadata media, CancellationToken token, int timeoutSeconds)
        {
            XMPLib.MetaData.ErrorCallbackDelegate errorCallbackDelegate = new XMPLib.MetaData.ErrorCallbackDelegate(errorCallback);

            //XMPLib.MetaData xmpMetaDataReader = new XMPLib.MetaData(errorCallbackDelegate, null);
            XMPLib.MetaData xmpMetaDataReader = new XMPLib.MetaData(null, null);

            try
            {
                FileInfo info = new FileInfo(media.Location);
                info.Refresh();
                media.LastModifiedDate = info.LastWriteTime < sqlMinDate ? sqlMinDate : info.LastWriteTime;
                media.FileDate         = info.CreationTime < sqlMinDate ? sqlMinDate : info.CreationTime;
                media.MimeType         = MediaFormatConvert.fileNameToMimeType(media.Name);

                if (media.SupportsXMPMetadata == false)
                {
                    return;
                }

                xmpMetaDataReader.open(media.Location, Consts.OpenOptions.XMPFiles_OpenForRead);

                readXMPMetadata(xmpMetaDataReader, media);
            }
            catch (Exception e)
            {
                Logger.Log.Error("Cannot read XMP metadata for: " + media.Location, e);
                media.MetadataReadError = e;
            } finally {
                xmpMetaDataReader.Dispose();
                xmpMetaDataReader = null;
            }
        }
예제 #2
0
        protected BaseMetadata(String location, Stream data)
        {
            Tags = new List <Tag>();



            MimeType = MediaFormatConvert.fileNameToMimeType(location);

            Location  = location;
            Data      = data;
            Thumbnail = null;

            isReadOnly        = false;
            isImported        = false;
            isModified        = false;
            metadataReadError = null;
        }
예제 #3
0
        public MainWindowViewModel()
        {
            WindowTitle = "MediaViewer";

            // recieve messages requesting the display of media items

/*
 *          GlobalMessenger.Instance.Register<string>("MainWindowViewModel.ViewMediaCommand", new Action<string>((fileName) =>
 *          {
 *              ViewMediaCommand.DoExecute(fileName);
 *          }));
 */
            ViewMediaCommand = new Command <String>(new Action <String>((location) =>
            {
                if (String.IsNullOrEmpty(location))
                {
                    return;
                }

                String mimeType = MediaFormatConvert.fileNameToMimeType(location);

                if (mimeType.StartsWith("image"))
                {
                    CurrentImageLocation = location;
                }
                else if (mimeType.StartsWith("video"))
                {
                    CurrentVideoLocation = location;
                }
                else
                {
                    Logger.Log.Warn("Trying to view media of unknown mime type: " + (string)location + ", mime type: " + mimeType);
                }
            }));

            TagEditorCommand = new Command(() =>
            {
                //TagEditorView tagEditor = new TagEditorView();
                //tagEditor.ShowDialog();
            });


            ShowLogCommand = new Command(() =>
            {
                //log4net.Appender.IAppender[] appenders = log4net.LogManager.GetRepository().GetAppenders();
                //VisualAppender appender = (VisualAppender)(appenders[0]);

                LogView logView = new LogView();
                //logView.DataContext = appender.LogViewModel;

                logView.Show();
            });

            ClearHistoryCommand = new Command(() =>
            {
                if (MessageBox.Show("Clear all history?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    Settings.Default.Reset();
                }
            });
        }