ZenSync is a tool to transfer images from the local file system to your Zenfolio galleries. ZenSync parses the root folder and all containing subfolders for supported images and uploads all newly added images to the related gallery on Zenfolio. If images are removed from your local file system they are not deleted from Zenfolio. ZenSync helps you to keep the local image library and your Zenfolio galleries in sync.
The images can be organized in arbitrary folder tree structures as long as there is one single root folder. The tree structure of folders and subfolders on the local file system is mapped to groups and galleries on the Zenfolio account.
ZenSync is developed in PHP5 and as such runs on any desktop- or server-platform with PHP installed. ZenSync is a command line utility which can be widely configured editing one single configuration file. When creating shell scripts or links it even can be started from the GUI of the used operation system.
ZenSync was originally created by Dan Richardson. In May 2009 Harald Maida teamed up with Dan to enhance the tool and develop the new major version ZenSync2.
ZenSync2 offers a couple of new features to be usable for a wider range of use cases and better integration in various workflows. The centralized configuration offers a more comfort in user experience.
The main new features are:
- Support of international languages in titles of photos, galleries and groups.
- Support of all image types that can be uploaded to Zenfolio (JPEG, TIFF, PNG, GIF)
- Support for other image types such as PCD that are converted to JPEG before uploading to Zenfolio.
- Generating and uploading of thumbnails for AVI- and MPEG-videos.
- Copying of a configurable metadatafield to the title field of photos.
- Configurable default sort order for galleries.
- Synchronization session report containing information such as number of uploaded images and average upload speed.
Download ZenSync2 from here. Current version is 20100820.24
For intructions on installing and running ZenSync2 read the README.txt in the downloaded archive.
For questions and feedback contact us here.
Additional information about ZenSync can also be found on Dan’s blog here.
There are ideas for features that may come in future versions. The top listed features are:
- Integration with Adobe Lightroom to allow starting a sync session immediately after export from LR.
- Create Zenfolio collections of photos from a list of images.
- Update of images that have been modified since last upload.
Let us know what you think about ZenSync2 and write your comments and feedback here.










I’m getting the following error. Any solutions? Thanks.
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn’t load from ‘http://www.zenfolio.com/api/1.1/zfapi.asmx?wsdl‘ : failed to load external entity “http://www.zenfolio.com/api/1.1/zfapi.asmx?wsdl”
in /Volumes/WD500/zensync2/zensync.php:82
Stack trace:
#0 /Volumes/WD500/zensync2/zensync.php(82): SoapClient->SoapClient(‘http://www.zenf…‘)
#1 {main}
thrown in /Volumes/WD500/zensync2/zensync.php on line 82
Harald,
Thanks that worked great I can now login and upload files. This is a great tool.
Well… I can upload small jpegs. If I try to upload Jpegs that are about 5mb in size and 5270 pixels wide I get these errors…
has 0 subdirectories
Creating Gallery: stuff
-> returned Gallery Id: 243729634
Set sort order for PhotoSet 243729634 to FileNameAsc
Uploading Scan0001.jpg (5270306 Bytes) to Zenfolio…
-> returned Photo Id: 936047709
Fatal error: Uncaught SoapFault exception: [HTTP] Failed Sending HTTP SOAP request in /Volumes/SSPvol1Drobo/zensync2/dirobj.class.php:411
Stack trace:
#0 [internal function]: SoapClient->__doRequest(‘__call(‘LoadPhoto’, Array)
#2 /Volumes/SSPvol1Drobo/zensync2/dirobj.class.php(411): SoapClient->LoadPhoto(Array)
#3 /Volumes/SSPvol1Drobo/zensync2/dirobj.class.php(134): DirObj->UpdatePhoto(Object(SoapClient), ’936047709′)
#4 /Volumes/SSPvol1Drobo/zensync2/dirobj.class.php(76): DirObj->ScanDir(Object(SoapClient), ‘IeOR4PuyFHy4IMl…’, NULL, Array, Array, ‘stuff’)
#5 /Volumes/SSPvol1Drobo/zensync2/dirobj.class.php(70): DirObj->ScanDir(Object(SoapClient), ‘IeOR4PuyFHy4IMl…’, NULL, Array, Array)
#6 /Volumes/SSPvol1Drobo/zensync2/dirobj.class.php(44): DirObj->ScanDir(Object(SoapClient), ‘IeOR4PuyFHy4IMl…’, Object(stdClass), Array, Array, ‘upload to zensy…’)
#7 /Volumes/SSPvol1Drobo/zensync2/zensync.php(108): DirObj->Lo in /Volumes/SSPvol1Drobo/zensync2/dirobj.class.php on line 411
Any hints there?
This is a sporadic problem of the connection to the Zenfolio server. It impacts the feature that updates the title of just uploaded photos with the values set for the parameter ‘photo_title_default’ in config.php.
With the great help of Lars who reported this issue I could find a solution that retries once a failed loading of photo details and continues with the script. Only if the second attempt fails the photo title is not updated according the settings in config.php.
If this parameter is left on the default setting ‘photo_title_default’ => “” then this issue is not relevant because actually the script leaves the title untouched and the preferences on the Zenfolio account are effective.
If someone faces this problem download the new version of ZenSync2 from the download link provided on this page above and replace the file dirobj.class.php in your setup with the one from the Zip-archive.
Hi,
I keep getting this error…
Getting user’s existing Hierarchy
Fatal error: Uncaught SoapFault exception: [zf:E_NOSUCHOBJECT] 50018: There is no such folder. in /Volumes/SSPvol1Drobo/zensync2/zensync.php:94
Stack trace:
#0 [internal function]: SoapClient->__call(‘LoadGroupHierar…’, Array)
#1 /Volumes/SSPvol1Drobo/zensync2/zensync.php(94): SoapClient->LoadGroupHierarchy(Array)
#2 {main}
thrown in /Volumes/SSPvol1Drobo/zensync2/zensync.php on line 94
the config file looks like this….
#
# Specify your image depot directory
#
“localpath” => “/upload to zenfolio/”,
“title” => “”,
#
and yes there really is a folder called “upload to zenfolio” with the images in it in the same folder as zensync.php
any ideas?
TIA
The operation that fails is loading of the Group Hierarchy from Zenfolio. So I guess the error message from Zenfolio is missleading. Did you double check if you specified the correct login name (parameter “userlogin” in config.php? You also need to specify the title of an existing group in the “title” parameter. This group is the one that will be synced with the “/upload to zenfolio/” folder.
[...] ZenSync2 [...]