Dijji / FileMeta

Enable Explorer in Vista, Windows 7 and later to see, edit and search on tags and other metadata for any file type
Microsoft Public License
759 stars 69 forks source link

Properties not exported #50

Open Vpstr opened 5 years ago

Vpstr commented 5 years ago

Hello! I've recently installed FileMeta and tried to export some properties. I've set the handle for a file type (.mp4) and tried to export props to xml, but the resulting file turns out to be empty, although the file has plenty of unempty properties specified in the profile. The only thing in the xml is /<Metafile//> (had to escape characters).

Dijji commented 5 years ago

Have you set any properties on the file? Comments and Tags are good ones to try. They should appear in any exported meta data. At the moment, standard properties (those intrinsic to the file format) of files like MP4 will only be exported if you update their values.

Dijji

Vpstr commented 5 years ago

Yes, I have. I've put dozens of keywords into the file and my purpose for using this tool was to extract them. Some of the files I want to process also contain comments.

Dijji commented 5 years ago

Something special appears to be going on with MP4 files, and I suspect, also other video media files. As far as I can tell, the usual registry entries that specify the property handler to use are being ignored by Explorer for MP4. When properties are edited, the values are always written to the main body of the file, and not the alternate stream, which is why the XML shows up empty, and the file size increases when properties are added.

This holds even if you use the Association Manager to add properties for display in Explorer which have nothing to do with the format (for instance, I’ve tried System.Actions.ActionName, and was able to edit and store the value without trouble).

Arguably, this behaviour is actually better than that normally provided by File Meta, as arbitrary metadata can be written to the file without risk of loss when it is, for instance, sent via email (I tried it).

There is thus no need for backup to XML. However, I do have another outstanding request to export properties held within the file to XML, so if you think this would be useful to you, let me know.

Dijji

Vpstr commented 5 years ago

So you mean that MP4 has native properties for keywords and comments? I doubt that , because these properties are shown in the tag view of explorer libraries. I want to extract the properties anyway, because I need to convert these properties into some format that can be managed well by some program. Libraries are quite limited, for example I can't edit a keyword attached to several files for all these files at once. So I want to export them to a tagging program (I think of Hydrus) for this purpose. I presume I will find a possibility to push keywords into that program from XML file (though I'm not sure).

Dijji commented 5 years ago

As far as I can tell, the Microsoft supplied MP4 handler does indeed support tag and keyword properties out of the box. You can edit them in Property/Details, and add them as columns in the details view in the main Explorer window.

Thinking about your need to export these properties, why do you not edit the tags directly in the tag management program? Why apply them in Explorer and then export them?

However, if you do want to explore properties, exporting them all would be a bit noisy (I show the potential results below). Is what you want to means to extract a named property for multiple files into a single XML file?

Dijji

File: D:\Test\Prop1\white.mp4 System.ItemFolderNameDisplay : Value = Prop1 System.ItemTypeText : Value = MP4 File System.ItemNameDisplay : Value = white.mp4 System.Size : Value = 5.32 KB System.FileAttributes : Value = A System.DateModified : Value = ?13/?12/?2018 ??09:24 System.DateCreated : Value = ?19/?04/?2016 ??17:22 System.DateAccessed : Value = ?13/?12/?2018 ??09:24 System.ItemNameDisplayWithoutExtension : Value = white System.ContentType : Value = video/mp4 System.Subject : Value = subject is System.Comment : Value = File Meta updated System.Document.DateCreated : Value = ?19/?04/?2016 ??17:22 System.Document.DateSaved : Value = ?13/?12/?2018 ??09:24 System.MIMEType : Value = video/mp4 System.Audio.Format : Value = {00001610-0000-0010-8000-00AA00389B71} System.Media.Duration : Value = 00:00:05 System.Audio.EncodingBitrate : Value = ?1kbps System.Audio.SampleRate : Value = ?44.100 kHz System.Audio.SampleSize : Value = ?16 bit System.Audio.ChannelCount : Value = 1 (mono) System.Audio.StreamNumber : Value = 1 System.Video.FrameWidth : Value = 64 System.Video.FrameHeight : Value = 64 System.Video.FrameRate : Value = ?9.95 frames/second System.Video.EncodingBitrate : Value = ?1kbps System.Video.Compression : Value = {34363248-0000-0010-8000-00AA00389B71} System.Video.StreamNumber : Value = 2 System.Video.HorizontalAspectRatio : Value = 1 System.Video.TotalBitrate : Value = ?3kbps System.Video.FourCC : Value = 875967048 System.Video.VerticalAspectRatio : Value = 1 System.Video.IsStereo : Value = No System.Video.Orientation : Value = 0 System.Video.IsSpherical : Value = No System.FileOwner : Value = BIGBOX\Dave System.NetworkLocation : Value is empty. System.ComputerName : Value = BIGBOX (this PC) System.ItemPathDisplayNarrow : Value = white (D:\Test\Prop1) System.PerceivedType : Value = Video System.ItemType : Value = MP4 File System.ParsingName : Value = white.mp4 System.SFGAOFlags : Value = 1077936503 System.ParsingPath : Value = D:\Test\Prop1\white.mp4 System.FileExtension : Value = .mp4 System.ItemDate : Value = ?09/?10/?2015 ??13:39 System.Actions.ActionName : Value = action name System.KindText : Value = Video System.FileAttributesDisplay : Value is empty.

: Value = 0 System.IsShared : Value = No System.SharedWith : Value is empty. System.SharingStatus : Value = Not shared System.ShareScope : Value is empty. System.Security.EncryptionOwnersDisplay : Value is empty. System.ItemName : Value = white.mp4 System.Shell.SFGAOFlagsStrings : Value = filesys; stream System.Link.TargetSFGAOFlagsStrings : Value is empty. System.DRM.IsProtected : Value = No System.OfflineAvailability : Value is empty. System.ZoneIdentifier : Value = 0 System.LastWriterPackageFamilyName : Value is empty. System.AppZoneIdentifier : Value is empty. System.Media.DateEncoded : Value = ?09/?10/?2015 ??13:39 System.Kind : Value = Video System.Security.EncryptionOwners : Value is empty. System.ItemFolderPathDisplayNarrow : Value = Prop1 (D:\Test) System.DateAcquired : Value = ?09/?10/?2015 ??13:39 System.FileName : Value = white.mp4 System.Security.AllowedEnterpriseDataProtectionIdentities : Value = System.ThumbnailCacheId : Value = 13922023440133695379 System.VolumeId : Value = {351F78A9-A0AE-4FEA-A661-692A88516B4F} System.Link.TargetParsingPath : Value is empty. System.Link.TargetSFGAOFlags : Value is empty. System.ItemFolderPathDisplay : Value = D:\Test\Prop1 System.ItemPathDisplay : Value = D:\Test\Prop1\white.mp4 : Value = white.mp4 System.AppUserModel.ID : Value is empty. System.AppUserModel.ParentID : Value is empty. System.Link.TargetExtension : Value is empty. System.OfflineStatus : Value is empty. System.IsFolder : Value = Files System.NotUserContent : Value = No System.StorageProviderAggregatedCustomStates : Value is empty. System.SyncTransferStatusFlags : Value is empty. System.DateImported : Value = ?19/?04/?2016 ??17:22 System.ExpandoProperties : Value is empty. System.FilePlaceholderStatus : Value = 6
Vpstr commented 5 years ago

I can't edit them directly in the program, because they are already written into the files' properties and I don't want to extract them by hand. And I want to extract namely keywords and comments for each file separately i. e. I don't want them to mingle into a single file.

Dijji commented 5 years ago

Having thought about this, I decided that this was potentially too interesting a capability to bury somewhere deep in File Meta, so I implemented it as a new project which you can find here:

https://github.com/Dijji/ExtractFileProperties

Give it a try and let me know what you think. It probably makes sense to provide any feedback using Issues on the new project.

Dijji

Dijji commented 4 years ago

I have now investigated what is going on here. The results are described here. I include a description of what you can expect for now, and what File Meta is doing next.