https://github.com/sergi/coconut
An idempotent photo organizer
https://github.com/sergi/coconut
cli golang golang-application photography utility
Last synced: over 1 year ago
JSON representation
An idempotent photo organizer
- Host: GitHub
- URL: https://github.com/sergi/coconut
- Owner: sergi
- License: mpl-2.0
- Created: 2019-12-22T22:26:09.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-02-04T21:28:43.000Z (over 6 years ago)
- Last Synced: 2025-03-26T08:13:55.508Z (over 1 year ago)
- Topics: cli, golang, golang-application, photography, utility
- Language: Go
- Size: 3.13 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Coconut automatically organizes photos in a hardrive without much intervention from the user. It is non-destructive and deterministic.
### Installation
Make sure you have a working Go environment. Go version 1.11+ is supported. [See the install instructions for Go](http://golang.org/doc/install.html).
Go Modules are strongly recommended when using this package. [See the go blog guide on using Go Modules](https://blog.golang.org/using-go-modules).
```
$ GO111MODULE=on go get github.com/sergi/coconut
```
### How it works
Given one or more source folders and a destination folder, Coconut goes through all the image files in the source folders and organizes them in the destination folder using their EXIF metadata, de-duplicating them during the process.Coconut **never** deletes or modifies files in the source folders.
Coconut organizes photos using a folder hierarchy. The default hierarchy is as follows:
```
Year
└──Year-Month
└──Geographical Place
└──original_filename.jpeg
```
An example folder hierarchy could look like this, realistically:
```
2018
└──September
└───South Lake Tahoe-US
│ ├──DSC_1735.jpeg
│ └──DSC_2187.raw
└───Sonoma-US
├──DSC_2395.jpeg
└──DSC_0934.cr3
```
The folder hierachy can be changed in `config.yml`. Instructions on how to change it are in "Changing the path template".
### Usage
```
coconut /source_folder1 /source_folder2 --destination /destination_folder
```
### Changing the path template
TBD
###License
MPL 2.0