Giter Club home page Giter Club logo

flickrsync's Introduction

FlickrSync

A command line tool to synchronise pictures between the local file system and Flickr

Requirements

Python3
Pip
ImageMagick
A Flickr account

Install

$ sudo apt install python3-pip
$ sudo apt install libmagickwand-dev
$ sudo pip3 install flickrsync

References

Setup

  1. Create the configuration file

    • name the file $HOME/.flickrsync/config.ini
    • add your Flickr username, API Key and API Secret
    • edit your pictures directory as required
    • a template configuration file can be found somewhere in your python library ../flickrsync/etc/config.ini
  2. Authenticate the FlickrSync application with Flickr (see usage, below)

Usage

To see a full list of commands
$ flickrsync --help

To authenticate FlickrSync with Flickr
$ flickrsync auth

To perform a one way sync from the local file system to Flickr
$ flickrsync sync

To perform a two way sync between the local file system and Flickr
$ flickrsync sync2

To create Flickr photosets based upon the local file system
$ flickrsync photosets

Features

  1. Duplicate copies of the same picture on the local file system are identified.

    • Image hash signature of the picture is used
    • only a single copy of the picture will be uploaded
  2. Does not rely on the local pathname for identifying the picture.

    • moving a picture to a different directory will not cause the picture to be uploaded again
  3. A SQLite database is used to index local and Flickr pictures.

    • destroying the database will not result in any pictures being uploaded again
    • database is automatically recreated
  4. Perform a two way sync between the local file system and Flickr.

  5. Multi-threaded.

Sync Process

Local <==> Flickr
  1. Creates an index of pictures on the local file system.
  2. Creates an index of pictures on Flickr.
  3. Download and scan unmatchable Flickr pictures.
  4. Identify duplicate pictures on local file system.
  5. Match local pictures to Flickr.
  6. Upload unmatched local pictures to Flickr.
  7. Download pictures from Flickr that are missing on the local file system.
  8. Create Flickr photosets based upon the original filepath of the picture.

Picture Matching

Local Flickr
DateTimeOriginal Filename Signature DateTakenUnknown DateTaken Title Signature Match
x x   0 x x   yes
    x       x yes

Note: x indicates a match betwen local and Flickr

  1. Pictures will be matched by either:-

    • picture file name + date picture was taken, or
    • ImageMagick hash signature of picture
  2. Date matching is turned on by default and can be disabled using the option [--nodatematch]. Use this option if you have pictures which do not have correct DateTimeOriginal.

  3. Each uploaded picture is tagged with its ImageMagick hash signature.

  4. Pictures on Flickr have a datetaken, https://www.flickr.com/services/api/misc.dates.html.

  5. If the Flickr datetaken is generated from the pictures Exif data, then Flickr will set the DateTakenUnknown to 0.

  6. If it exists, the Exif DateTimeOriginal is extracted from each picture on the local file system.

  7. The Flickr title is based upon the original filename of the uploaded picture.

  8. File names are compared without the file extension. This is because Flickr does not always maintain the file extension during upload as it is dependent upon the upload client used.

Photosets

  1. A photoset is based upon a flattened directory path of each picture.

  2. Photosets created by FlickrSync are identified as such by their photoset description.

    • (re)creating the photosets could delete any photosets that are not being used
    • only photosets previously created by FlickrSync are deleted

Notes

  1. FlickrSync does NOT require sudo to run.
  2. Pictures will not be deleted on either the local file system or Flickr.

flickrsync's People

Contributors

danchal avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.