Piwigo on Android

I’ve recently started using the Piwigo app (for Android). It’s getting good! Version 1.0.0 has just been released, and it has the thing that I’ve been wanting for ages: the ability to select multiple photos at once, to upload. Hoorah or what?

So I’ve got to get serious about organising my photo collection now, and make sure a) everything is in my Piwigo; and b) each photo is there only once. I might see if I can help with preventing duplicates at upload time.

Embed Piwigo 0.3.0

Embed Piwigo now has a home on WordPress.org, and I’ve announced it on the Piwigo forum. And you’ll notice it’s got a new name! It seems that WordPress plugins aren’t allowed to begin with a trademark, so piwigo-embeds was pooh-poohed and embed-piwigo suggested instead.

Now I want to make sure the caching is okay, and figure out what the captions should contain. There might be other problems too.

Piwigo Embeds (for WordPress)

Here’s my first draft at making Piwigo sites embeddable in WordPress: github.com/samwilson/piwigo-embeds

‘Embed’ here is what WordPress calls the ability to add a URL of a site on its own line in a post or page, and for a nice rendering of the site at that URL to be provided automatically. It works with core WordPress with sites like Youtube and Flickr, and somewhat for random other sites if they provide the right metadata. Piwigo does not yet provide particularly rich metadata (there are some ideas to do so, though), but anyway it’s nicer to be able to do something more complicated that uses the Piwigo API.

As a first hack at this, my plugin just shows the medium-sized image, with title below and description as the tooltip, and the image linked to the page on the Piwigo site. I plan on introducing caching, and perhaps some nicer display (dates, comment count, etc.). Ideas welcome!

Sorting duplicates in Piwigo

Piwigo has a duplicates-search feature, which allows you to search for duplicate photos by original filename, MD5 checksum, creation date & time, and/or image width & height. It’s slightly annoying though, because although it presents you with the duplicates, it doesn’t sort them so that potential duplicates are displayed next to each other. I’ve attempted to fix this.

Flickr2Piwigo 1.3.0

I thought I’d help out and try to update the Flickr2Piwigo plugin to support OAuth, but having done so I now seem to have become a maintainer of the thing. So that’s good. I’ve just released version 1.3.0.

I’ll try to see to all the outstanding bug reports (well, there’s only one at the moment). And then perhaps add some extra features (support for approximate dates? automatic downloading? download of other people’s photos?).

Updating Flickr2Piwigo

I’ve decided to try to bring the Flickr2Piwigo plugin up to date in order to support OAuth (Flickr’s old system of authentication was turned off in the middle of last year). I’ve been tinkering with getting the PhpFlickr library working properly lately (which is what Flickr2Piwigo uses to talk to Flickr), and although there’s lots more to do to it I’ve at least got the OAuth parts working (thanks to the lusitanian/oauth package). So now I’m going to add this to the Flickr2Piwigo.

There’s no support for Composer in Piwigo, so I’m not really sure how this is going to work. Probably some custom distribution-generation process; I’ll worry about that later. Hopefully we’ll not resort to committing vendor/.

Once this is working, I’ll go back to PhpFlickr and write some better documentation (probably Read The Docs) and fix up the caching system (it’s a bespoke oddity at the moment, that I think should be replaced with simple PSR-6 support).

Importing to Piwigo

Piwigo is pretty good!

I mean, I mostly use Flickr at the moment, because it is quick, easy to recommend to people, and allows photos to be added to Trove. But I’d rather host things myself. Far easier for backups, and so nice to know that if the software doesn’t do a thing then there’s a possibility of modifying it.

To bulk import into Piwigo one must first rsync all photos into the galleries/ directory. Then, rename them all to not have any unwanted characters (such as spaces or accented characters). To do this, first have a look at the files that will fail:

find -regex '.*[^a-zA-Z0-9\-_\.].*'

(The regex is determined by $conf['sync_chars_regex'] in include/config_default.inc.php which defaults to ^[a-zA-Z0-9-_.]+$.)

Then you can rename the offending files (replace unwanted characters with underscores) by extending the above command with an exec option:

find -regex '.*[^a-zA-Z0-9\-\._].*' -exec rename -v -n "s/[^a-zA-Z0-9\-\._\/]/_/g" {} \;

(I previously used a more complicated for-loop for this, that didn’t handle directories.)

Once this command is showing what you expect, remove the -n (“no action”) switch and run it for real. Note also that the second regex includes the forward slash, to not replace directory separators. And don’t worry about it overwriting files whose normalized names match; rename will complain if that happens (unless you pass the --force option).

Once all the names are normalized, use the built-in synchronization feature to update Piwigo’s database.

At this point, all photos should be visible in your albums, but there is one last step to take before all is done, for maximum Piwigo-grooviness. This is to use the Virtualize plugin to turn all of these ‘physical’ photos into ‘virtual’ ones (so they can be added to multiple albums etc.). This plugin comes with a warning to ensure that your database is backed up etc. but personally I’ve used it dozens of times on quite large sets of files and never had any trouble. It seems that even if it runs out of memory and crashes halfway, it doesn’t leave anything in an unstable state (of course, you shouldn’t take my word for it…).

Manually upgrading Piwigo

There’s a new version of Piwigo out, and so I must upgrade. However, I’ve got things installed so that the web server doesn’t have write-access to the application files (as a security measure), and so I can’t use the built-in automatic upgrader.

I decided to switch to using Git to update the files, to make future upgrades much easier and without having to make anything writable by the server (even for some short amount of time).

First lock the site, via Tools > Maintenance -> Lock gallery, then get the new code:

$ git clone https://github.com/Piwigo/Piwigo.git photos.samwilson.id.au
$ cd photos.samwilson.id.au
$ git checkout 2.8.3

Copy the following files:

/upload and /galleries (these are symlinks on my system)
/local/config/database.inc.php
/local/config/config.inc.php

The following directories must be writable by the web server: /_data and /upload (including /upload/buffer; I was getting an “error during buffer directory creation” error).

Then browse to /upgrade.php to run any required database changes.

I’ve installed these plugins using Git as well: Piwigo-BatchDownloader, Flickr2Piwigo, and piwigo-openstreetmap. The OSM plugin also requires /osmmap.php to be created with the following (the plugin would have created it if it was allowed):

<?php
define( 'PHPWG_ROOT_PATH', './' );
include_once( PHPWG_ROOT_PATH . 'plugins/piwigo-openstreetmap/osmmap.php' );
?>

That’s about. Maybe these notes will help me remember next time.

Piwigo rocks

I have been using Piwigo for a couple of years (photos.samwilson.id.au), and have been really happy with it. The ability to work with large numbers of photos (uploading lots, and bulk-editing) is what made it a pleasure to use to start with; these are usually the initial tasks one does with this photo-gallery software, and they’re usually where systems are not at their best. Now I’ve got a few thousand photos in it, I’ve gotten the hang of a reasonable workflow, and Piwigo has mostly receeded to the background and just carries on working without issue. I’ve added my albums’ URLs to all sorts of places, including in printed archival descriptions, and feel pretty committed to sticking with Piwigo.

So it was nice to recieve a newsletter from the Piwigo development team, talking about their recent shift of the codebase to GitHub, a new Java desktop synchronisation client, and other things. If one doesn’t actively haunt the forums, it’s hard to remember that Piwigo is still a going concern — but I’m very glad that it is!

Open source software is great, I love using it and contributing to it. But sometimes it goes away. :( Of course, that happens to proprietary apps too, but with FOSS failures I feel sad, because it feels like I’ve personally failed the project (I should’ve been more involved). It’s one of the reasons it’s good to pay for free software. I’m glad Piwigo makes money from their piwigo.com service (well, I assume that’s what keeps the lights on).

Anyway, all I wanted to say was: thanks for Piwigo.