Ask HN: Personal photo library recommendations? Open source, browser-based
There seem to be lots of alternatives out there (Nextcloud, Piwigo, ...) but I'd love to hear about recommendations and experiences.
There seem to be lots of alternatives out there (Nextcloud, Piwigo, ...) but I'd love to hear about recommendations and experiences.
Installation is fairly simple with Docker, frontend is web-based (React), backend is Python with a sprinkling of Tensorflow. So far auto-tagging of photos by location, object detection and colour is fairly decent. UI is progressing and is useable on most devices, though quite minimal.
Please feel free to check out the demo site and the GitHub issues. I'd really appreciate feedback and help. Thanks.
I've been struggling to find a tool that handles that handles the duplicates problem within a web interface. I've been experimenting with some approaches including perceptual hashes and was wondering if that's something you'll include?
Is there any way to use metadata from Lightroom Catalogs, or enable people tagging in your current implementation?
I don't have any experience of Lightroom but I can have a go at reading the files if you think it's useful.
The UI for metadata is a bit unintuitive at the moment but you can scroll down to see it when you're viewing the fullscreen photos.
I have checked this out, running the docker-compose method, and kudos for your work. Looks great.
One issue I ran into was regarding videos (tried with a couple of MOV and MP4) - it doesn't generate a thumbnail and in fact throws an error along the lines of: File "/srv/photonix/photos/models.py", line 84, in base_image_path AttributeError: 'NoneType' object has no attribute 'base_image_path'
Happy to open a gitHub issue, but thought I'd drop you a line here to see if it was your intention to support videos (which would be cool!)
Cheers,
I'm looking at the docker-compose.yml and wanted to give it a go, but not allow it any way of deleting anything :)
The thinking behind GraphQL was to allow for advanced filtering, supporting all the attributes we store without a lot of extra API work. The GraphiQL web interface makes it quite nice to explore the data and is bundled in and accessible at /graphql . GraphQL also has "subscriptions" which allows for pushing data from the server. The Apollo JS library I used also provides built-in extras like caching.
PhotoStructure is browser-based (using Vue), and scales to hundreds of thousands of assets over millions of files. Your library can be created on a Mac, saved on your NAS, then later opened and managed by a Linux box, seamlessly. Raw images have highlight restoration before rendering previews. Videos are auto transcoded for mobile and desktop web use. Corrupt images are detected automatically and culled. Image source sets are used to minimize network data and maximize viewing quality. XMP sidecars are imported for metadata. Importing aggressively coalesces duplicate images and videos using direct and inferred metadata, so even your downsized Google photos takeout will be deduped with your originals.
Once you've got a huge library, though, it needs a novel UX. Scroll-reverse-chron and a search bar shouldn't cut it. PhotoStructure has a couple novel and unique approaches to navigation, which you can read about here: https://blog.photostructure.com/introducing-photostructure/
It scales down to odroids, and up to as many CPUs as you can throw at it, and self-throttles CPU during library sync so the machine is still useable. Installation takes under a minute, and updates are automatic.
It's closed-source because it's how I want to pay for my food and clothing, but it's a corporate mandate to open source in case of business closure, which is also explained in that blog post.
I'm sending out another wave of beta testers later today, and during the beta it's free. I'm giving heavy discounts to my beta testers that share feedback.
I'd love to hear what you think.
I am not making any judgement on the service, just that it is not an appropriate reply for what is being asked here.
Having written many open source libraries (my rubygems have been downloaded several million times, my node packages are close to that, and I've contributed to other libraries for over a decade), I personally will choose open source projects over closed-source because I don't want to be victimized by abandonware or corporate whims.
It seems like photo software (both closed and open source) is especially prone to dying on the vine. It's a common need, and it's easy (and fun) to write a simple script that makes thumbnails from a folder of images. I seen countless photo projects on github, but as complexity ramps up quickly, the installer script (if there is one) breaks, updates fail, there aren't any tests, and the author gets bored and moves on.
I guess I felt justified here because a) it is self-hosted, and b) I'd added my corporate mandate to open-source the codebase in case of business closure. (I don't remember a corporation doing this open-source-on-close before, do you?)
I've actually already open-sourced some of the trickier bits: https://exiftool-vendored.js.org/ and https://batch-cluster.js.org/. I expect that to continue.
I am essentially looking to leave the original photos on external drives and have an app that indexes them and stores a customizable thumbnail with the app to view them on my local machine. This way I can browse through all my photos and figure out the original file path if I want to retrieve them. The most important aspect is that I can take the drives offline while the thumbnails and index remains within the app and re-indexing when connected again.
My existing workflow is to import all photos on my mac to the Photos app. I pull them from different devices (phones, camera, etc). The photos app does an OK job at de-duping any matches. I also run PhotoSweeper to further de-dupe which analyzes the photos itself and I can leave the best ones remaining. After that I run some custom scripts to export the data as [year]-[month]/[year]-[month]-[day] [hour].[min].[sec].jpg. I then merge those onto my external drive and kick off my backup process to clone them to other drives and sync to cloud.
The closest I have come is Lightroom which indexed the drive a little bit but the "thumbnails" and catalog is huge. It allows some tagging and other features to discover old photos but some processes are a bit manual. This workflow seems to be common among digital asset management software which is expensive and way more then I am looking for.
After you install, the second question you should pick "No thanks, I like my photos and videos where they already are." See https://support.photostructure.com/automatic-library-organiz...
Email me at hello at photostructure.com or sign up for the beta. I'd love to hear what you think!
https://support.photostructure.com/how-much-disk-space-do-i-... > As an example, if you have 250,000 images and videos, your library metadata and previews will consume about a half a terabyte.
I assume this is mostly from the preview image size and not meta data? This is where I was hoping for a configurable image size because I would be willing to have smaller previews to be able to store more metadata.
If the goal is to archive my entire life's photos or even use it for business use then at some point it looks like I would need a dedicated drive / computer just to view the photos on the other drives. If it is configurable then I could push this limitation further.
I just added instructions for you to that post: https://support.photostructure.com/how-much-disk-space-do-i-...
https://github.com/srinathh/naspics
(edit: some data destination paths are probably hard coded since I wrote it for myself but can be easily broken out into command line options if needed)
> It is build on React using the Create React App tool, written in Javascript and requries a NodeJS development environment.
It was way ahead of it's time, and actually worked!
Best of all, it did everything locally... not cloud based and thus retained privacy of your personal photo collection.
It took multiple disparate photo directories and presented everything in a timeline of folders. And because everything was local, that happened quickly, rather than waiting for your browser to get the next 100 photo results from a javascript call or whatever.
Are there any photo clients for windows that present multiple folders as a single coherent timeline? And can manage tens of thousands of pictures? I've got stuff going back to the late 1990s and would love to be able to find all those old cat pictures or whatever.
PhotoStructure does this (and I believe is the only software that does robust time zone inference, as well). (I've posted elsewhere here with more details).
Doesn't help much for privacy, however.
I'd love to have you try out the beta and have you share feedback!
One question though - if you end up feeling it's unsustainable to continue developing PhotoStructure down the line do you have a plan? Obviously we would rather not be burned by it either, you you consider at that point making it open source so existing users can continue and make improvements?
Certainly I hope it never comes to it but it's nice to have a little reassurance.
1) There's a corporate mandate to open-source PhotoStructure for Desktop in the event of business closure.
2) Your library consists of industry-standard files. If you choose to do so, your originals are copied into a standard YYYY/YYYY-mm-dd/ folder hierarchy. XMP sidecars are added to hold inferred or novel metadata and store nondestructive edits, like rotation. A SQLite db (with commented schema! it's pretty, honest!) holds asset-file-tag relationships, albums, and other non-file metadata.
3) It's just me, and I love open source, so if I can get to the point where my licensing stream pays for food and shelter, I can open source then.
It's really the killer-feature that made Picassa so great - find all the photos over several years of a family member or friend.
Sadly, I've needed this feature for funeral photo albums lately and could really use the old Picassa!
Sorry if I missed it, but is it possible (API or directly) to control Photostructure via python?
That way we could extend the features in many interesting ways - including our own face/object detection.
Which is a shame because I really like Perkeep/Camlistore as a concept.
-- Edit --
Actually on checking, it doesn't seem like Perkeep is at all dead. I'm seeing several updates in the last month...
Which seems to me fairly definite about it no longer being actively maintained. There haven't been any updates to that posted on the @perkeeporg Twitter at least.
I'm actually going to check out perkeep when I get a chance and see if I can't help out some.
I can still take pics on the phone which will be synced via Dropbox and Shotwell picks them up immediately. The sync is faster than I’m used to on iCloud and finally I just have files that I can tag, again.
Shotwell is also super fast, has a similar UI to photos.app (automatic events for example), but it also had hierarchical tags which it can even write to the files itself. So it’s very simple and yet portable without lock-in. Couldn’t be happier. Of course ymmv.
Good luck!
It looks pretty good, has multi-user capability, metadata editing, etc. It would be nice if it had some geotagging integration and ability to group albums into sets.
I filed a bug report and the developers/maintainers fixed it very quickly.
Agreed. I guess I could've been more specific in my original comment, easy of installation/maintenance are the things I wish they'd have worked on before worrying about federation. At this point I'm thinking about what will e the least painful way to migrate from mediagoblin to something else.
https://github.com/hooram/ownphotos
Have not had that weekend to try these options myself.
One feature I'm missing at the moment is raw conversion support. It would be great if thumbnails and previews of raw photos could be automatically generated. I've solved this via generating previews with ImageMagick, but native raw support in Piwigo would be better.
Nextcloud photos is not a photo application. It's basically a shared gallery with thumbnails. There's no metadata support or editing. No true multiuser access other than granting sharing through Nextcloud like Dropbox. The only good part is you can autoupload from your phone.
I've looked at several webapps, like Piwigo. Most of them feel like a single user application or have limited upload and metadata support.
The closest I have found is Digikam using external SQL, but this requires a local application carefully configured with a DB and a fileshare.
Piwigo definitely supports having multiple users. What kind of metadata do you mean? It supports tagging and reads and displays EXIF data. It has extensions/plugins for adding capabilities.
easy to set up, looks decent, even shows exif data like exposure time, lens used etc.
It generates a static web site, creates thumbs, etc. I just run it on my laptop and rsync to my personal nginx server. You could probably host the output directly from S3 or similar.
Screenshot: https://i.imgur.com/F6w8Ixz.png (just took it now so I redacted some info)
It consists of 2 parts:
- a Python script to parse metadata from photos into json files and create thumbnails.
- A JS-based frontend that consumes the json files and thumbnails to provide a UI.
Features:
- Can be hosted completely statically making it ideal for low-power servers
- Serves up your photos in the same file structure as they are on the disk
- Works with many types of photos, including most raw files
- Parses and displays common EXIF data
- Works well on slower connections (minimal HTML+CSS+JS, small thumbnails, placeholders, preloads images as you view, etc)
For example, I've gone back to Shantsel's UX research several times over the course of thinking through app designs, eg:
* http://shnatsel.blogspot.com/2012/08/irc-client-new-tab-mock...
(I did take a brief look at it, it's fairly normal json)
I just went through and renamed all my pictures by the exif create date, adding any unique names to exif UserComment.
I'm working on scripting all of this, but it works for me and I can pull data from anything into the directory. Everyone in the house can access it via samba and view the pictures.
Unfortunately Ghost isn’t as modular as I hoped so it is involving lots of edits to the source, and automatically extracting album metadata from Photos.app has also turned out to be difficult.
My passion project, Odyssey, accomplishes something similar to what you're describing here.
With Odyssey, you can create stories that combine videos, photos, text, and drawings all on a digital canvas.
If you're interested, I encourage you to sign up for the closed beta. I'd love to get your feedback :)
I’ve used Lightroom and CaptureOne to manage my photo library but ended up using digiKam in the end because I can just mount a volume and use it from any desktop.
It was/is very good. But patching it and PHP became a chore and I eventually migrated away to a messy matrix of Dropbox, Flickr, Google Photos and Apple Photo...
I should look into consolidating them all. Always tempted to write my own, aimed at photo albums for non-photographers... but it will probably not move beyond a readme.md...
(EDIT: clarified that the issue is the license; the source is readable)
- Stores files by md5 hash and doesn't allow duplicates.
- Database is used to store tags and support searching and is not very large.
- Can tag pictures and search by tag.
- Is fast. Can handle large number of images and large number of search results.
- Can enable pools feature and arrange pictures in a pool.
- Can enable wiki feature, which while primitive, is nice for adding notes.
- Is multiuser.
https://github.com/whyboris/Video-Hub-App
Sorry unsure about good photo alternatives, but my first place to research is https://alternativeto.net
PhotoStructure can read iPhoto libraries (and LR XMPs), and will coalesce both "sidecar" dupes (like JPG/RAW pairs), as well as images that were downsampled from other photo services (like Google Photos). It can leave your originals where they are, or copy them into a single time-stamped folder hierarchy (yes, you can edit the format of the timestamp if you don't like the LR standard). Files with the same SHA are not copied, but referenced in your library db.
Your library's metadata is kept both on disk (in XMP sidecars) as well as a sqlite db for fast access, and you can run queries on the db to do anything more exotic.