-
Notifications
You must be signed in to change notification settings - Fork 3
V4.0.0 beta release #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
bumped version and fixed breaking changes
Pull request in deprecated repo is pending. It makes sense to include it locally to be able to bump version of ffi and win32.
Working on the TODOs next.
Can now write coordinates and DateTime in exif data for: JPG, PNG / Animated APNG, GIF / Animated GIF, BMP, TIFF, TGA and PVR. See changelog.
code is very slow. working on it.
did hide new experimental slow functrionality behind "write-exif" flag
Added steps, so it's easier to debug.
added tests and better error handling. Also moved the date_extractor type definition in the date_extractor folder and added a FillingBar for the removeDuplicates operation for better user experience.
Next commit will be fixes for lint
Applied best practices to code
…t end Want to have overview at end what happened to better how much a flag/a new version fixed. Also changed a print() to log()
Updated Changelog, project version, bumped dart min SDK version and minor changes to output. This is a release candidate. Please test and provide feedback.
the lookupMimeType() did give back "tif" for tiff and null for tga. Fixed by just looking at the extension of path instead file type.
The Exif_reader package is a fork of the exif package which is maintained.
… .mp4 through ffprobe ffprobe has to be manually downloaded and needs to be present in $PATH variable. Updated changelog.
Release candidate 2. Made some significant changes to support more file formats.
group.dart was just changed because of lint rule. Otherwise just changed and added some logs and comments to catch more edge cases during debuging and get better log messages on what is happening.
Those stats can be compared with a run of the last stable release with the same TakeOut to quickly see the improvements this version brings to the table.
I think we should leave "--write-exif" as an optional flag which isn't active by default for the time being. Once it is thoroughly tested we can add it to the interactive mode. I also leave the maxFileSize of 64MB in place for videos and photos for now. But if you agree that we shouldn't limit it by default and only give the option to limit it (e.g. on a NAS), I will implement that before the release/merge. Currently the behaviour is, that ffprobe will be attempted for every video file. If it's not available in the environment, it will simply fail. I think we don't need a flag for that. In a stable release, we could also add some interactive output which simplifies things for the not so tech-savy users. |
Now again wayyyy faster and I handled more cases. Because of growing complexity I handle everything in a switch case. Also added a bit more logging.
This is a big one! Didn't refactor the code correctly before. Now the heap corruption is fixed and the folders are also created correctly! Needed changing because of those major upgrades of ffi and win32.
I'm tired of trying to make the com objects work. They cause the heap corruption in the createshortcutWin() function. Powershell handles this now. Works more reliably.
Also remembered to add the powershell symlink change to changelog
Because of the complexity of the removingduplicate operation we don't have a reliable iterable to go over. The creation of the iterable is what takes so long. So rather not have any progress bar but a bit more logging.
Helps identify if changes caused performance improvements or decay by testing them against same dataset with same options.
… now deactivated by default to support larger files like videos
Before a process was created for every video file, even if it was destined to fail because ffprobe was not installed. Now it is being checked intially and if ffprobe is not installed, it is being skipped, which should be way more performant.
I want to share some statistics for running my 140GB diverse dataset through different modis: 3.6.2-wachee:
4.0.0 without any flags and ffprobe unavailable:
4.0.0 with write-exif flag and ffprobe available:
4.0.0 with write-exif flag and ffprobe unavailable:
4.0.0 without any flags and ffprobe available:
4.0.0 without any flags and ffprobe unavailable and enforce-max-filesize:
Interestingly with ffprobe available, the script is faster for me than without... |
Hey, thanks! I have reviewed some changes and noticed that you switched shortcut creation on Windows from ffi/win32 to PowerShell. This causes problems when creating a large number of shortcuts, as shown in this PR: TheLastGimbus#390 Also, PowerShell has issues encoding certain characters |
Hey thanks for the info! But now we're in a bit of a pickle as ffi/win32 in the newest version definitely cause the heap exception with the exact same code in the createShortcutWin() function. So we need to fix that somehow. |
Currently causes heap exception! Just deleted redundant memory freeing
The heap exception likely occurs because the Release() function from previous versions is missing. For the new ffi/win32 version, you must call release() before the finally block, and call it directly on the variable rather than on the interface //...
if (FAILED(hrSave)) {
throw 'Error trying to save shortcut: $hrSave';
}
persistFilePtr.release();
shellLinkPtr.release();
} finally {
// .... There may be other issues with freeing memory that should be reviewed. |
@Wacheee The missing release() is definitely not the problem. I removed them very consciously as I suspected them to cause the heap exception. Removing them didn't help unfortunately. But I am quite sure that the memory is freed twice because of the free() function, so the release() are redundant. But I am not too familiar with ffi/win32. |
4.0.0-wacheee (by Xentraxx)
Fork/Alternate version
This change is a big overhaul of the project, so only the major improvements or potential breaking changes are mentioned
Tl;dr
General improvements
Bug fixes
Added functionality
Support for writing coordinates and DateTime to EXIF
Moved from the stale "exif" package to the exif_reader package which is a maintained fork of the exif package
Added the ffmpeg_cli package and logic to attempt to extract exif data from videos using ffprobe.
Previous fixes and improvement (from 3.4.3-wacheee to 4.0.0-wacheee)
shortcut
option is selected, shortcut creation will be 10 times faster on Windows platforms (new creation method that avoids using PowerShell). For more details: TheLastGimbus#390More granular date folders #299
)Limitations: