All Projects → wiringbits → My Photo Timeline

wiringbits / My Photo Timeline

A simple command-line app to organize your local photos by dates (year/month) on your local file system, for those who don't store photos in the cloud

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to My Photo Timeline

Mue
Fast, open and free-to-use new tab page for modern browsers
Stars: ✭ 56 (+64.71%)
Mutual labels:  hacktoberfest, photos
Maps
🌍🌏🌎 The whole world fits inside your cloud!
Stars: ✭ 253 (+644.12%)
Mutual labels:  hacktoberfest, photos
Photos
📸 Your memories under your control
Stars: ✭ 157 (+361.76%)
Mutual labels:  hacktoberfest, photos
Faceaware
An extension that gives UIImageView the ability to focus on faces within an image.
Stars: ✭ 3,004 (+8735.29%)
Mutual labels:  hacktoberfest, photos
Facerecognition
Nextcloud app that implement a basic facial recognition system.
Stars: ✭ 226 (+564.71%)
Mutual labels:  hacktoberfest, photos
Lychee
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.
Stars: ✭ 816 (+2300%)
Mutual labels:  hacktoberfest, photos
Openhospital Core
Open Hospital Core library
Stars: ✭ 31 (-8.82%)
Mutual labels:  hacktoberfest
Neural Network From Scratch
Implementation of a neural network from scratch in python.
Stars: ✭ 32 (-5.88%)
Mutual labels:  hacktoberfest
Wowonewsletterbundle
Newsletter Bundle for Symfony2 (with messages queuing in beanstalkd)
Stars: ✭ 31 (-8.82%)
Mutual labels:  hacktoberfest
Wire Desktop
💻 Wire for desktop
Stars: ✭ 961 (+2726.47%)
Mutual labels:  hacktoberfest
Pencil
Pencil2D is an easy, intuitive tool to make 2D hand-drawn animations. Pencil2D is open source and cross-platform.
Stars: ✭ 968 (+2747.06%)
Mutual labels:  hacktoberfest
Photo Affix
📷 Stitch your photos together vertically or horizontally easily!
Stars: ✭ 969 (+2750%)
Mutual labels:  photos
Women World Wide
Stars: ✭ 33 (-2.94%)
Mutual labels:  hacktoberfest
Gridly
⚡️ The minimal (~100-170 bytes) grid system for modern browsers.
Stars: ✭ 962 (+2729.41%)
Mutual labels:  hacktoberfest
Vbridge
X11 Cloud desktop software
Stars: ✭ 33 (-2.94%)
Mutual labels:  hacktoberfest
Sql To Graphql Schema Generator
⚛️ Generate GraphQL Scheme Online From SQL Query - https://sql-to-graphql.now.sh/
Stars: ✭ 32 (-5.88%)
Mutual labels:  hacktoberfest
Svelte Preprocess
A ✨ magical ✨ Svelte preprocessor with sensible defaults and support for: PostCSS, SCSS, Less, Stylus, Coffeescript, TypeScript, Pug and much more.
Stars: ✭ 970 (+2752.94%)
Mutual labels:  hacktoberfest
Bonita Doc
This repository contains the sources of the Bonita documentation site. It uses Markdown to create the documentation content.
Stars: ✭ 31 (-8.82%)
Mutual labels:  hacktoberfest
Training
Various Plone Trainings
Stars: ✭ 32 (-5.88%)
Mutual labels:  hacktoberfest
Photon
⚡ Rust/WebAssembly image processing library
Stars: ✭ 963 (+2732.35%)
Mutual labels:  hacktoberfest

My Photo Timeline

My Photo Timeline is a simple command-line application to organize your photos by dates on your local file system.

The app works in Linux/Windows/MacOs, just go to the releases and download the latest binary for your system.

Why?

While not storing your photos in the cloud, you usually end up with lots of directories with unorganized photos, and lots of duplicated ones. My Photo Timeline can take a all such directories, and organize the photos by its creation date (year/month) excluding duplicates.

I initially created this to be able to fill a family album, where I needed to choose some pictures per month, unfortunately, I wasn't able to find any software doing this while holding my photos out of the cloud, and ended up writing it.

Example

You can collect all your photo directories in a single root directory, and just run the app (--dry-run doesn't alter your file system, it's recommended to try that first):

  • ./my-photo-timeline --source ~/Desktop/test-photos --output ~/Desktop/test-output --dry-run

The test-photos directory could look like:

test-photos
├── img1.jpg
├── img1-again.jpg
├── invalid
│   ├── img2-no-metadata.jpg
├── img3.jpg
├── img4.jpg
├── img5.jpg

Producing the test-output directory like:

test-output
├── duplicated
│   ├── img1-again.jpg
├── invalid
│   ├── img2-no-metadata.jpg
└── organized
    ├── 2009
    │   └── 03-march
    │       ├── img1.jpg
    ├── 2010
    │   ├── 07-july
    │   │   ├── img3.jpg
    │   │   └── img4.jpg
    │   ├── 09-september
    │   │   ├── img5.jpg

Where:

  • test-output/duplicated has the photos were detected as duplicated.
  • test-output/invalid has the photos (or non-photos) where the app couldn't detect the creation date.
  • test-output/organized has the photos organized by date, the format being year/month/photo-name.

How?

The source directory is analyzed recursively to find all files including the proper creation date metadata, the duplicate detection uses a SHA-256 to speed up the comparison process.

Currently, the app looks into several potential metadata tags, which could even organize some video files, but such feature is not supported properly yet, when the metadata is not available, the app tries to get the creation date from the filename (yyyymmdd...).

Development

You will need to install sbt, IntelliJ is the recommended IDE, be sure to setup your IntelliJ to format the code with scalafmt to keep the code consistent.

Compile

Just run sbt compile to compile the app.

Test

To test manually, you can launch the sbt interactive console with sbt, and then, run commands there with run --dry-run --source /home/dell/projects/mine/photo-organizer/test-data --output /home/dell/projects/mine/photo-organizer/output (replace the directories).

Native package

Package the native image with sbt nativeImage, which you can try by running target/native-image/my-photo-timeline (append .exe if you are on Windows).

Troubleshooting

There may be images with proper metadata that aren't being organized, the recommended way to fix the issue is to isolate those images, and use the --debug flag while running the app (lookg for the Failed to find metadata pattern), you can take the output to create an issue so that we can fix the bug.

Another way is to run the app without the native image to see if you see the same effect, it is very likely that the issue relates to underlying libraries using reflection to invoke classes that aren't in the native build.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].