oPromessa / flickr-uploader

Upload a directory of media to Flickr to use as a backup to your local storage
MIT License
38 stars 6 forks source link
flickr flickr-backup synology

flickr-uploader


by oPromessa, 2017, V2.8.6 Master Build Status Coverage Status

Description


PyPi Download stats (as of Sep/2018)


version system_name percent download_count
2.8.6 Linux 71.70% 38
2.8.6 Darwin 13.21% 7
2.8.7a1 Linux 7.55% 4
2.8.6 Windows 5.66% 3
2.8.6a9 Linux 1.89% 1

Features


THIS SCRIPT IS PROVIDED WITH NO WARRANTY WHATSOEVER. PLEASE REVIEW THE SOURCE CODE TO MAKE SURE IT WILL WORK FOR YOUR NEEDS. IF YOU FIND A BUG, PLEASE REPORT IT.

How it works! An example...

Sample file structure

Consider this example to explain how files are uploaded into Sets/Albums on Flickr.

If you have the following folders and pics (the name of the flickr Sets/Albums depends on the uploadr.ini file setting FULL_SET_NAME, but I normally use it as False):

/home/user/media/pic00.jpg
/home/user/media/Album1/pic01.jpg
/home/user/media/Album2/pic02.jpg
/home/user/media/Album3/pic03.jpg
/home/user/media/folder/Album4/pic04.jpg
/home/user/media/folder/Album4/Sub/pic041.jpg
/home/user/media/newfolder/Album4/pic042.jpg
/home/user/media/folderAlbum5/pic01.jpg
/home/user/media/folderAlbum5/Sub/pic051.jpg

Setting your source folder with FILES_DIR

And you setup FILES_DIR

FILES_DIR=/home/user/media

You should get the following depending on how the setting FULL_SET_NAME is set:

FilePathName Set/Album Name (FULL_SET_NAME=False) Set/Album Name (FULL_SET_NAME=True) Pic Remarks
/home/user/media/pic00.jpg media . pic00
/home/user/media/Album1/pic01.jpg Album1 Album1 pic01
/home/user/media/Album2/pic02.jpg Album2 Album2 pic02
/home/user/media/Album3/pic03.jpg Album3 Album3 pic03
/home/user/media/folder/Album4/pic04.jpg Album4 folder/Album4 pic04
/home/user/media/folder/Album4/Sub/pic041.jpg Sub folder/Album4/Sub pic041
/home/user/media/newfolder/Album4/pic042.jpg Album4 newfolder/Album4 pic042
/home/user/media/Album5/pic01.jpg Album5 Album5 pic01 Same pic as in Album01 is loaded twice as it's part of a different Album
/home/user/media/Album5/Sub/pic051.jpg Sub Album5/Sub pic051 With FULL_SET_NAME=False it will go into Album "Sub"

Requirements


Setup on Synology


  1. Enable SSH access to Synology DSM Server. (Optionally) install Python 3.
  2. Prepare a local folder location for Python modules install
  3. Download and install pip
  4. Download and install flickrapi
  5. Download and install flickr-uploader

1.Enable SSH access to Synology DSM Server. (Optionally) install Python 3.

2. Prepare a local folder location for Python modules install.

4.1 OPTION #1 (recommended): With PIP (installed in step #3 above)

$ cd
$ cd dev
dev$ export PYTHONPATH=~/apps/Python/lib/python2.7/site-packages
dev$ pip install flickrapi --prefix=~/apps/Python

4.2 OPTION #2: Mannually

Installed /xxxx/xxx/xxx/apps/Python/lib/python3.5/site-packages/certifi-2018.4.16-py3.5.egg Finished processing dependencies for flickrapi==2.4.0


###  5. Download and install flickr-uploader
#### 5.1 OPTION #1 (recommended): With PIP (installed in step #3 above)
- Now available on Pypi.org for installation also via PIP.
```bash
$ cd
$ cd dev
dev$ export PYTHONPATH=~/apps/Python/lib/python2.7/site-packages
dev$ pip install flickr-uploader --prefix=~/apps/Python

5.2 OPTION #2: Mannually to be run from local folder

5.3 OPTION #3: Mannually to be run from ~/apps/Python/bin

Configuration


Go to http://www.flickr.com/services/apps/create/apply and apply for an API key.

Refer to https://www.flickr.com/services/api/upload.api.html for what each of the upload arguments above correspond to for Flickr's API.

Usage/Arguments/Options


Place the file uploadr.py in any directory and run via ssh (execution privs required). It will crawl through all the files from the FILES_DIR directory and begin the upload process.

$ ./uploadr.py

To check what files uploadr.py would upload and delete you can run the script with option --dry-run:

$ ./uploadr.py --dry-run

Run ./uploadr.py --help for up to the minute information on arguments:

[961][2018.09.16 06:06:42]:[15221      ][PRINT   ]:[uploadr] ----------- (V2.8.7) Start -----------(Log:40)
usage: uploadr.py [-h] [-C filename.ini] [-a] [-v] [-x] [-m] [-n] [-i TITLE]
                  [-e DESCRIPTION] [-t TAGS] [-l N] [-r] [-p P] [-u]
                  [--no-delete-from-flickr [nodelete]] [-d] [-b] [-c] [-s]
                  [-g] [--add-albums-migrate]

Upload files to Flickr. Uses uploadr.ini as config file.

optional arguments:
  -h, --help            show this help message and exit

Configuration related options:
  -C filename.ini, --config-file filename.ini
                        Optional configuration file. Default
                        is:[/home/ruler/uploader/bin/uploadr.ini]
  -a, --authenticate    Performs/Verifies authentication with Flickr. To be
                        run on initial setup.Does not run any other option.

Verbose and dry-run options:
  -v, --verbose         Verbose output. Use -vv for more verbosity. See also
                        LOGGING_LEVEL value in INI file.
  -x, --verbose-progress
                        Provides progress indicator on each upload. See also
                        LOGGING_LEVEL value in INI file.
  -m, --mask-sensitive  Masks sensitive data on log files like your pics
                        filenames and set/albums names. (Uses SHA1 hashing
                        algorithm)
  -n, --dry-run         Dry run. No changes are actually performed.

Information options:
  -i TITLE, --title TITLE
                        Title for uploaded files. Overwrites title set in INI
                        config file. If not specified and not set in INI file,
                        it uses filename as title (*Recommended).
  -e DESCRIPTION, --description DESCRIPTION
                        Description for uploaded filesOverwrites description
                        set in INI file.
  -t TAGS, --tags TAGS  Space-separated tags for uploaded files. It appends to
                        the tags defined in INI file.
  -l N, --list-photos-not-in-set N
                        List as many as N photos (with tags) not in set.
                        Maximum listed photos is 500.

Processing related options:
  -r, --drip-feed       Wait a bit between uploading individual files.
  -p P, --processes P   Number of photos to upload simultaneously. Number of
                        process to assign pics to sets.
  -u, --not-is-already-uploaded
                        Do not check if file is already uploaded and exists on
                        flickr prior to uploading. Use this option for faster
                        INITIAL upload. Do not use it in subsequent uploads to
                        prevent/recover orphan pics without a set.
  --no-delete-from-flickr [nodelete]
                        Do not actually deletepics from flicr.com & mark them
                        with tag:[nodelete]
  -d, --daemon          Run forever as a daemon.Uploading every SLEEP_TIME
                        seconds. Please note it only performs upload/raw
                        convert/replace.

Handling bad and excluded files:
  -b, --bad-files       Save on database bad files to prevent continuous
                        uploading attempts. Bad files are files in your
                        Library that flickr does not recognize (Error 5) or
                        are too large (Error 8). Check also option -c.
  -c, --clean-bad-files
                        Resets the badfiles table/list to allow a new
                        uploading attempt for bad files. Bad files are files
                        in your Library that flickr does not recognize (Error
                        5) or are too large (Error 8). Check also option -b.
  -s, --list-bad-files  List the badfiles table/list.
  -g, --remove-excluded
                        Remove previously uploaded files, that are now being
                        excluded due to change of the INI file configuration
                        EXCLUDED_FOLDERS.NOTE: Option --remove-ignored was
                        dropped in favor of --remove-excluded.

Migrate to v2.7.0:
  --add-albums-migrate  From v2.7.0 onwards, uploadr adds to Flickr an album
                        tag to each pic. This option adds such tag to
                        previously loaded pics. uploadr v2.7.0 will perform
                        automatically such migration upon first run This
                        option is *only* available to re-run it, should it be
                        necessary.

by oPromessa, 2017, 2018

Task Scheduler (cron)


On Synology systems, run with Task Scheduler (Synology/Control Panel)

On Linux/Unix/Mac based systems, run via crontab

Launch from the command line in Daemon mode (-d option).

Recognition


Inspired by:

Makes dynamic use of the following libraries:

Final remarks


You may use this code however you see fit in any form whatsoever. And enjoy!!!

Questions & Answers