Install IO::String to decode compressed ZIP information from a pipe or socket

Started by kieranjol, March 20, 2020, 11:16:45 AM

Previous topic - Next topic

kieranjol

Hi,

we use exiftool in the Irish Film Institute in order store information about images and documents in JSON format in our archival packages. It's amazing!
We often have issues with unicode characters in Windows, but I now just read the file in our python scripts and pipe the information to exiftool which works well.
This doesn't work for docx files or any other zip files as I get this warning:
Install IO::String to decode compressed ZIP information from a pipe or socket

Do I need to install something else, perhaps something perl related?

Here's the full output and an attempt to replicate in git-bash which I think is just mingw

$ cat '/c/Users/kier/Desktop/Sweet/Logline"Synopsis/Logline_Synopsis.docx' | exiftool -
ExifTool Version Number         : 11.91
Warning                         : Install IO::String to decode compressed ZIP information from a pipe or socket
File Type                       : ZIP
File Type Extension             : zip
MIME Type                       : application/zip
Zip Required Version            : 20
Zip Bit Flag                    : 0x0006
Zip Compression                 : Deflated
Zip Modify Date                 : 1980:01:01 00:00:00
Zip CRC                         : 0x6cd2a4df
Zip Compressed Size             : 346
Zip Uncompressed Size           : 1312
Zip File Name                   : [Content_Types].xml


I may not be able to send the file to you but I could possibly make a fake file - but I think the solution here is some sort of library or something?

Best,

Kieran O'Leary

Phil Harvey

Hi Kieran,

If you are running a Perl version of exiftool then you should be able to solve this by installing IO::String from here.

But if you are using the Windows EXE version then it may be a bit more complicated.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

kieranjol

Hi Phil,

I should have said, it's the windows exe.. Is this something that requires a custom build while linking to that other library, or is there another workaround?

Thanks for getting back to me,

Kieran

StarGeek

In my case, I have a line at the top of my .exiftool_config that includes the libraries in the search path for exiftool.exe.  Since I also have Strawberry Perl installed, my line looks like this:
BEGIN{ push @INC, 'C:\Strawberry\perl\lib'; push @INC, 'C:\Strawberry\perl\site\lib'; push @INC, 'C:\Strawberry\perl\vendor\lib'}
You could make a lib directory and drop the IO::String files inside it, then include the path to the lib directory similar to how I do above.

The one caveat is that any Perl module that includes a .DLL file needed to work, for example, Net::SSLeay which includes the SSL functions needed for a secure internet connection, won't work with the Windows executable.
"It didn't work" isn't helpful. What was the exact command used and the output.
Read FAQ #3 and use that cmd
Please use the Code button for exiftool output

Please include your OS/Exiftool version/filetype

Phil Harvey

Hi Kieran,

Let me look into this.  If IO::String isn't too large, maybe I can include it in the ExifTool EXE package.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

kieranjol

Thanks both, I can look into the lib work around, but I'm hoping that the exe update can happen.

obetz

Hi Kieran,

IO::String is a simple, small Perl module. I added it to my newest package available from https://oliverbetz.de/pages/Artikel/ExifTool-for-Windows).

Oliver

kieranjol


kieranjol

The latest version of exiftool has added this and now it works perfectly, thank you so much!

Phil Harvey

Great.   Glad it works for you.  Thanks for the confirmation.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).