Flickr Incremental Backup
=========================
A tool to incrementally backup your photos from `Flickr <http://flickr.com>`_.
Installation
-------------
Requires Python 3 and `pip`.
$ pip install flickrbackup
For the web session authentication feature (see below, you'll also need
Selenium and a compatible web driver (Chrome or Firefox)::
$ pip install selenium
Make sure you have Chrome/Chromium or Firefox installed, as these are used
for capturing authenticated sessions.
Usage
-----
Note: You must have a Flickr Pro account to use this tool, since Flickr only
allows access to original-scale images for Pro members.
The first time you run flickrbackup, you should specify a start date, using the
format ``YYYY-MM-DD``::
$ flickrbackup.py -f 2012-02-28 photos
This will ask you to visit a URL to authorize flickrbackup with your
Flickr account, if you haven't already. You will then be given a short token
by Flickr, which you must type into the console. This token is saved for future
use so you shouldn't need any manual intervention again, unless you or Flickr
revoke the token.
Once authorised, flickrbackup will download all photos and videos for the
authorised account that have been created or updated on or after the "from" date
(February 28th, 2012 in this case) into the directory specified (``photos`` in
this case). Items are organised into subfolders by set and the year, month and
day they were taken. If an item appears in multiple sets, it will be copied into
both set directories. Metadata such as the title, description, tags and other
information will be placed in a file with a ``.txt`` extension next to the image
file. The image file name is based on the Flickr id of the image.
After the first successful run, a special file named ``.stamp`` will be placed
in the download directory, containing the date of the last backup. This allows
flickrbackup to be run again without the ``-f`` argument, for example in a
scheduled nightly "cron" job, picking up from where it left off::
$ flickrbackup.py /path/to/photos
Here, we have also omitted the "-v" (verbose) flag, which means only errors and
important messages are output to the console, as well as a log of the ids of the
photos that have been processed (mostly as a progress indicator).
It may be useful to log important messages to a file. In this case, use the
``--log-file`` (``-l``) option (with or without the ``-v`` flag to control the
amount of information output)::
$ flickrbackup.py -l /var/log/flickrbackup.log /path/to/photos
The log file will contain the type of message (e.g. ``INFO`` for informational
messages or ``WARN`` for warnings) and the date and time of the message as well.
What if there are errors, e.g. due to a temporary conneciton problem?
flickrbackup will attempt to download them again (you can control how many times
or turn this off using the ``--retry`` option; the default is to retry once),
but if there are still errors they will be printed to the console/log file.
We can store a list of the ids of the photos and videos that were not correctly
processed by using the ``--error-file`` (``-e``) flag::
$ flickrbackup.py -e /path/to/photos/errors.txt /path/to/photos
Later, we can attempt to manually re-process just these photos using the
``--download`` (``-d``) option::
$ flickrbackup.py --download /path/to/photos/errors.txt /path/to/photos
If this succeeds, you should delete ``errors.txt``, since the ``-e`` option
will always append to, not replace, this file.
As of version 0.10 it is also possible to download the authenticated user'
favorite photos (which could be uploaded by another user). In this case,
files are always organised by date and not set::
$ flickrbackup.py --favorites /path/to/faves
Web Session Authentication
~~~~~~~~~~~~~~~~~~~~~~~~~~
Some photos and videos on Flickr may require additional authentication beyond
the API token. It is a little unclear why this happens, but it seems to relate
to videos, especially ones uploaded some time ago. It is possible that this is
an unresolved issue with the way Flickr manages its media files in CDNs, but
there is no official support channel for the API so we have to make some guesses.
As of version 0.11, flickrbackup will notice when this happens and log a
warning. As of version 0.12, there is support to identify the relevant missing
files in a large download directly to make it easier to attempt to re-download
them (see below).
To make a redownload attempt more likely to work, flickrbackup supports using
authenticated browser session data. This requires a manual log-in via a web
browser (Chrome or Firefox), but for as long as this session remains valid,
(a Flickr policy) it should then work without a browser (and potentially on
a different machine, which means it is possible to performt the authentication
on a desktop and copy the session file to a NAS or server that is performing
regular backups).
First, capture an authenticated session by launching a browser and logging in::
$ flickrbackup.py --obtain-web-session session.json
This will open a browser window to Flickr's login page. Log in to your account,
then press Enter in the console. The session data (including cookies) will be
saved to ``session.json``.
**Note:** This will only work in a windowed environment e.g. MacOS, Windows or
a Linux desktop.
**WARNING:** The session file contains sensitive authentication data, so it
should be kept secure. Saving this data in plain text is not really great
security practice, but there are few good generic options that would not make
this script significantly more complicated to deploy and use. However, you are
recommended to set file permissions so that only the user who will be running
the script can read it, e.g.::
$ chmod 600 session.json
You can then use this session data for downloads::
$ flickrbackup.py --web-session session.json <other options as needed> /path/to/photos
By default, Chrome is used for session capture, but you can specify Firefox::
$ flickrbackup.py --obtain-web-session session.json --browser firefox
Finding Missing Files
~~~~~~~~~~~~~~~~~~~~~
If you suspect some media files failed to download but have metadata files,
you can find them using::
$ flickrbackup.py --find-missing missing.csv /path/to/photos
This will search for ``.txt`` metadata files that don't have corresponding
media files and output a CSV file with photo IDs, URLs, and directories.
You can then use this information to retry downloads or investigate issues.
If you want to specifically download these files, you can copy the first
column of the CSV file to a text file and use it with the
``--download`` option. To do this on the command line::
$ cut -d',' -f1 missing.csv > redownload_missing.txt
$ flickrbackup.py --download redownload_missing.txt --web-session session.json /path/to/photos
In this example, we have also used the ``--web-session`` option to make it more
likely to work (see above). There is no particular reason you can't pass
`--web-session` to the script every time you run it, though it might be difficult to
detect if and when the session is no longer valid. The return of unexpected 404 errors
might be a good indication. In this case, authenticate again as above and replace the
session file.
If you are using the ``--favorites`` mode and have failed downloads
(saved via ``--error-file``), you can retry them while preserving the favorites behavior
by combining ``--download`` and ``--favorites``::
$ flickrbackup.py --download errors.txt --favorites /path/to/photos
This ensures that retried downloads behave consistently with the original favorites
backup (no set directories, store-once behavior).
Known limitations
-----------------
* Movie files will always get the extension ``.mov``, even if originally
uploaded as e.g. ``.avi`` or ``.mpg``, because Flickr doesn't provide a
means of discovering the original file extension.
* Photos that are deleted or moved between sets after being backed up will
remain in the backup.
Logging out
-----------
OAuth tokens are stored in a database in `~/.flickr/oauth-tokens.sqlite`. If
you need to, you can delete this file to force re-authorization. You can also
use the ``--token-cache`` option to specify a different location for this database,
including an empty directory, which will again force re-authentication.
Changelog
---------
Version 0.12.6, released 2025-07-23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fix an error with --keep mode
Version 0.12.5, released 2025-07-20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fix retry logic even when there is an early Flickr error.
Version 0.12.4, released 2025-07-20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Added support for combining ``--favorites`` and ``--download`` options to ensure consistent
behavior when retrying failed favorites downloads. When both flags are used together,
the download mode will behave like favorites mode (no set directories, store-once behavior).
Version 0.12.3, released 2025-07-17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Be more careful with error codes when failing due to invalid parameters
Version 0.12.2, released 2025-07-17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fix a bug where the start date was not being set correctly when running
the script without a ``--from-date`` argument in favourites mode
Version 0.12.1, released 2025-07-17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Avoid the need to specify the photos directory when using ``--obtain-web-session``
Version 0.12, released 2025-07-17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Added web session support for authenticated downloads to help with photos/videos that require browser authentication
* Added ``--obtain-web-session`` option to capture authenticated browser session data
* Added ``--web-session`` option to use captured session data for downloads
* Added ``--find-missing`` option to identify missing media files (which may require)
a web session to work
* Modernized HTTP operations by replacing ``urllib`` with ``requests`` library
* Enhanced cookie handling for better authentication support
Version 0.11.3, released 2025-07-15
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Write the download url to the metadata file, to make it easier to manually
download files that flickrbackup could not download (e.g. due to a 404 error)
* Save metadata files even if the download fails with a 404 error. This, plus
logging that indicates when this happens, should make it possible to manually
download videos that Flickr refuses to let the script download.
Version 0.11.2, released 2025-07-14
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fix a typo in an error message
Version 0.11.1, released 2025-07-14
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Return exit status 2 if the script completed but some items had errors
(status 1 will still mean an unexpected error occurred)
Version 0.11, released 2025-07-13
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fix video image download issue (see below)
* Improve logging of errors when Flickr flat out refuses to let you download a video
**NOTICE**: It is likely that previous versions of ``flickrbackup`` incorrectly
downloaded videos as images. That is, the ``.mov`` file might contain an image
(a thumbnail) rather than the video itself. This has now been fixed, but you
may need to re-download the affected videos. If you have a lot of files, this
could be tricky. The following Bash shell commands can help you identify which
images are suspicious:
.. code-block:: bash
# Go to the root of the directory where flickrbackup will have downloaded its files
$ cd /backups/directory
# Run the following command from this directory, all in one go
$ find . -type f -name "*.mov" | while read -r filepath; do
mimetype=$(file --mime-type -b "$filepath")
if [[ "$mimetype" != video/* ]]; then
id=$(basename "$filepath" .mov)
size=$(du -h "$filepath" | cut -f1)
echo "$id,$filepath,$size"
fi
done | tee movie_files.csv
# This will create a file named `movie_files.csv` in the current directory
# that shows files, path, and sizes of videos with the wrong MIME type.
# If you want to re-download all these files, do the following:
$ cat movie_files.csv | cut -d',' -f1 > redownload_movies.txt
$ flickrbackup.py --download redownload_movies.txt <other options> .
Please make sure the ``file`` utility is installed on your system.
Version 0.10.3, released 2025-07-11
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Make the downloader more resilient to missing files
* Add new `--single-threaded` option to disable threading for easier debugging
* Fix a defect whereby "download" mode would not correctly use the `--token-cache` option
Version 0.9.1, released 2019-08-15
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Make metadata files use UTF-8 by default
Version 0.9.0, released 2019-08-15
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Migrate to Python 3 and new `flickrapi` library
* Make use of new command line solution for getting the auth token, thereby
making it easier to run on a remote server.
Version 0.8.4, released 2019-01-08
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fix README to stop referring to a defunct website in the installation instructions
Version 0.8.3, released 2018-10-03
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fix encoding error with set names
Version 0.8.2, released 2013-07-29
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Attempt to fix missing README.rst issue in tarball
Version 0.8.1, released 2013-06-01
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fixed potential issue with copying directories to sets they are already in
Version 0.7, released 2013-01-01
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Added ``--log-file`` option
* Added ``-download`` option
* Added ``--retry`` and ``--error-file`` options
Version 0.6, released 2012-12-31
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Exit with a nonzero return code on failure
Version 0.5, released 2012-12-31
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Allow set names with characters that are not valid directory names
* Print erroneous items at the end of the run
Version 0.4, released 2012-12-31
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* In non-verbose mode, print photo id instead of just "." for each completed
download.
Version 0.3, released 2012-12-31
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Added ``--store-once`` and ``--keep-existing`` options
* Removed ``--username`` option - you must authenticate as the user to use
Raw data
{
"_id": null,
"home_page": "http://github.com/optilude/flickrbackup",
"name": "flickrbackup",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "flickr backup",
"author": "Martin Aspeli",
"author_email": "optilude@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/32/52/7cba8df7671f26a906a2c9e8df40f6c6a111499f7a62c80b9642f7b8524f/flickrbackup-0.12.6.tar.gz",
"platform": null,
"description": "Flickr Incremental Backup\n=========================\n\nA tool to incrementally backup your photos from `Flickr <http://flickr.com>`_.\n\nInstallation\n-------------\n\nRequires Python 3 and `pip`.\n\n $ pip install flickrbackup\n\nFor the web session authentication feature (see below, you'll also need\nSelenium and a compatible web driver (Chrome or Firefox)::\n\n $ pip install selenium\n\nMake sure you have Chrome/Chromium or Firefox installed, as these are used\nfor capturing authenticated sessions.\n\nUsage\n-----\n\nNote: You must have a Flickr Pro account to use this tool, since Flickr only\nallows access to original-scale images for Pro members.\n\nThe first time you run flickrbackup, you should specify a start date, using the\nformat ``YYYY-MM-DD``::\n\n $ flickrbackup.py -f 2012-02-28 photos\n\nThis will ask you to visit a URL to authorize flickrbackup with your\nFlickr account, if you haven't already. You will then be given a short token\nby Flickr, which you must type into the console. This token is saved for future\nuse so you shouldn't need any manual intervention again, unless you or Flickr\nrevoke the token.\n\nOnce authorised, flickrbackup will download all photos and videos for the\nauthorised account that have been created or updated on or after the \"from\" date\n(February 28th, 2012 in this case) into the directory specified (``photos`` in\nthis case). Items are organised into subfolders by set and the year, month and\nday they were taken. If an item appears in multiple sets, it will be copied into\nboth set directories. Metadata such as the title, description, tags and other\ninformation will be placed in a file with a ``.txt`` extension next to the image\nfile. The image file name is based on the Flickr id of the image.\n\nAfter the first successful run, a special file named ``.stamp`` will be placed\nin the download directory, containing the date of the last backup. This allows\nflickrbackup to be run again without the ``-f`` argument, for example in a\nscheduled nightly \"cron\" job, picking up from where it left off::\n\n $ flickrbackup.py /path/to/photos\n\nHere, we have also omitted the \"-v\" (verbose) flag, which means only errors and\nimportant messages are output to the console, as well as a log of the ids of the\nphotos that have been processed (mostly as a progress indicator).\n\nIt may be useful to log important messages to a file. In this case, use the\n``--log-file`` (``-l``) option (with or without the ``-v`` flag to control the\namount of information output)::\n\n $ flickrbackup.py -l /var/log/flickrbackup.log /path/to/photos\n\nThe log file will contain the type of message (e.g. ``INFO`` for informational\nmessages or ``WARN`` for warnings) and the date and time of the message as well.\n\nWhat if there are errors, e.g. due to a temporary conneciton problem?\nflickrbackup will attempt to download them again (you can control how many times\nor turn this off using the ``--retry`` option; the default is to retry once),\nbut if there are still errors they will be printed to the console/log file.\n\nWe can store a list of the ids of the photos and videos that were not correctly\nprocessed by using the ``--error-file`` (``-e``) flag::\n\n $ flickrbackup.py -e /path/to/photos/errors.txt /path/to/photos\n\nLater, we can attempt to manually re-process just these photos using the\n``--download`` (``-d``) option::\n\n $ flickrbackup.py --download /path/to/photos/errors.txt /path/to/photos\n\nIf this succeeds, you should delete ``errors.txt``, since the ``-e`` option\nwill always append to, not replace, this file.\n\nAs of version 0.10 it is also possible to download the authenticated user'\nfavorite photos (which could be uploaded by another user). In this case,\nfiles are always organised by date and not set::\n\n $ flickrbackup.py --favorites /path/to/faves\n\nWeb Session Authentication\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSome photos and videos on Flickr may require additional authentication beyond\nthe API token. It is a little unclear why this happens, but it seems to relate\nto videos, especially ones uploaded some time ago. It is possible that this is\nan unresolved issue with the way Flickr manages its media files in CDNs, but\nthere is no official support channel for the API so we have to make some guesses.\n\nAs of version 0.11, flickrbackup will notice when this happens and log a\nwarning. As of version 0.12, there is support to identify the relevant missing\nfiles in a large download directly to make it easier to attempt to re-download\nthem (see below).\n\nTo make a redownload attempt more likely to work, flickrbackup supports using\nauthenticated browser session data. This requires a manual log-in via a web\nbrowser (Chrome or Firefox), but for as long as this session remains valid,\n(a Flickr policy) it should then work without a browser (and potentially on\na different machine, which means it is possible to performt the authentication\non a desktop and copy the session file to a NAS or server that is performing\nregular backups).\n\nFirst, capture an authenticated session by launching a browser and logging in::\n\n $ flickrbackup.py --obtain-web-session session.json\n\nThis will open a browser window to Flickr's login page. Log in to your account,\nthen press Enter in the console. The session data (including cookies) will be\nsaved to ``session.json``.\n\n**Note:** This will only work in a windowed environment e.g. MacOS, Windows or\na Linux desktop.\n\n**WARNING:** The session file contains sensitive authentication data, so it\nshould be kept secure. Saving this data in plain text is not really great\nsecurity practice, but there are few good generic options that would not make\nthis script significantly more complicated to deploy and use. However, you are\nrecommended to set file permissions so that only the user who will be running\nthe script can read it, e.g.::\n\n $ chmod 600 session.json\n\nYou can then use this session data for downloads::\n\n $ flickrbackup.py --web-session session.json <other options as needed> /path/to/photos\n\nBy default, Chrome is used for session capture, but you can specify Firefox::\n\n $ flickrbackup.py --obtain-web-session session.json --browser firefox\n\nFinding Missing Files\n~~~~~~~~~~~~~~~~~~~~~\n\nIf you suspect some media files failed to download but have metadata files,\nyou can find them using::\n\n $ flickrbackup.py --find-missing missing.csv /path/to/photos\n\nThis will search for ``.txt`` metadata files that don't have corresponding\nmedia files and output a CSV file with photo IDs, URLs, and directories.\nYou can then use this information to retry downloads or investigate issues.\n\nIf you want to specifically download these files, you can copy the first\ncolumn of the CSV file to a text file and use it with the\n``--download`` option. To do this on the command line::\n\n $ cut -d',' -f1 missing.csv > redownload_missing.txt\n $ flickrbackup.py --download redownload_missing.txt --web-session session.json /path/to/photos\n\nIn this example, we have also used the ``--web-session`` option to make it more\nlikely to work (see above). There is no particular reason you can't pass\n`--web-session` to the script every time you run it, though it might be difficult to\ndetect if and when the session is no longer valid. The return of unexpected 404 errors\nmight be a good indication. In this case, authenticate again as above and replace the\nsession file.\n\nIf you are using the ``--favorites`` mode and have failed downloads\n(saved via ``--error-file``), you can retry them while preserving the favorites behavior\nby combining ``--download`` and ``--favorites``::\n\n $ flickrbackup.py --download errors.txt --favorites /path/to/photos\n\nThis ensures that retried downloads behave consistently with the original favorites\nbackup (no set directories, store-once behavior).\n\nKnown limitations\n-----------------\n\n* Movie files will always get the extension ``.mov``, even if originally\n uploaded as e.g. ``.avi`` or ``.mpg``, because Flickr doesn't provide a\n means of discovering the original file extension.\n* Photos that are deleted or moved between sets after being backed up will\n remain in the backup.\n\nLogging out\n-----------\n\nOAuth tokens are stored in a database in `~/.flickr/oauth-tokens.sqlite`. If\nyou need to, you can delete this file to force re-authorization. You can also\nuse the ``--token-cache`` option to specify a different location for this database,\nincluding an empty directory, which will again force re-authentication.\n\nChangelog\n---------\n\nVersion 0.12.6, released 2025-07-23\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Fix an error with --keep mode\n\nVersion 0.12.5, released 2025-07-20\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Fix retry logic even when there is an early Flickr error.\n\nVersion 0.12.4, released 2025-07-20\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Added support for combining ``--favorites`` and ``--download`` options to ensure consistent\n behavior when retrying failed favorites downloads. When both flags are used together,\n the download mode will behave like favorites mode (no set directories, store-once behavior).\n\nVersion 0.12.3, released 2025-07-17\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Be more careful with error codes when failing due to invalid parameters\n\nVersion 0.12.2, released 2025-07-17\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Fix a bug where the start date was not being set correctly when running\n the script without a ``--from-date`` argument in favourites mode\n\nVersion 0.12.1, released 2025-07-17\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Avoid the need to specify the photos directory when using ``--obtain-web-session``\n\nVersion 0.12, released 2025-07-17\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Added web session support for authenticated downloads to help with photos/videos that require browser authentication\n* Added ``--obtain-web-session`` option to capture authenticated browser session data\n* Added ``--web-session`` option to use captured session data for downloads\n* Added ``--find-missing`` option to identify missing media files (which may require)\n a web session to work\n* Modernized HTTP operations by replacing ``urllib`` with ``requests`` library\n* Enhanced cookie handling for better authentication support\n\nVersion 0.11.3, released 2025-07-15\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Write the download url to the metadata file, to make it easier to manually\n download files that flickrbackup could not download (e.g. due to a 404 error)\n* Save metadata files even if the download fails with a 404 error. This, plus\n logging that indicates when this happens, should make it possible to manually\n download videos that Flickr refuses to let the script download.\n\nVersion 0.11.2, released 2025-07-14\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Fix a typo in an error message\n\nVersion 0.11.1, released 2025-07-14\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Return exit status 2 if the script completed but some items had errors\n (status 1 will still mean an unexpected error occurred)\n\nVersion 0.11, released 2025-07-13\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Fix video image download issue (see below)\n* Improve logging of errors when Flickr flat out refuses to let you download a video\n\n**NOTICE**: It is likely that previous versions of ``flickrbackup`` incorrectly\ndownloaded videos as images. That is, the ``.mov`` file might contain an image\n(a thumbnail) rather than the video itself. This has now been fixed, but you\nmay need to re-download the affected videos. If you have a lot of files, this\ncould be tricky. The following Bash shell commands can help you identify which\nimages are suspicious:\n\n.. code-block:: bash\n\n # Go to the root of the directory where flickrbackup will have downloaded its files\n $ cd /backups/directory\n\n # Run the following command from this directory, all in one go\n $ find . -type f -name \"*.mov\" | while read -r filepath; do\n mimetype=$(file --mime-type -b \"$filepath\")\n if [[ \"$mimetype\" != video/* ]]; then\n id=$(basename \"$filepath\" .mov)\n size=$(du -h \"$filepath\" | cut -f1)\n echo \"$id,$filepath,$size\"\n fi\n done | tee movie_files.csv\n\n # This will create a file named `movie_files.csv` in the current directory\n # that shows files, path, and sizes of videos with the wrong MIME type.\n \n # If you want to re-download all these files, do the following:\n $ cat movie_files.csv | cut -d',' -f1 > redownload_movies.txt\n $ flickrbackup.py --download redownload_movies.txt <other options> .\n\nPlease make sure the ``file`` utility is installed on your system.\n\nVersion 0.10.3, released 2025-07-11\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Make the downloader more resilient to missing files\n* Add new `--single-threaded` option to disable threading for easier debugging\n* Fix a defect whereby \"download\" mode would not correctly use the `--token-cache` option\n\nVersion 0.9.1, released 2019-08-15\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Make metadata files use UTF-8 by default\n\nVersion 0.9.0, released 2019-08-15\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Migrate to Python 3 and new `flickrapi` library\n* Make use of new command line solution for getting the auth token, thereby\n making it easier to run on a remote server.\n\nVersion 0.8.4, released 2019-01-08\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Fix README to stop referring to a defunct website in the installation instructions\n\nVersion 0.8.3, released 2018-10-03\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Fix encoding error with set names\n\n\nVersion 0.8.2, released 2013-07-29\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Attempt to fix missing README.rst issue in tarball\n\nVersion 0.8.1, released 2013-06-01\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Fixed potential issue with copying directories to sets they are already in\n\nVersion 0.7, released 2013-01-01\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Added ``--log-file`` option\n* Added ``-download`` option\n* Added ``--retry`` and ``--error-file`` options\n\nVersion 0.6, released 2012-12-31\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Exit with a nonzero return code on failure\n\nVersion 0.5, released 2012-12-31\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Allow set names with characters that are not valid directory names\n* Print erroneous items at the end of the run\n\nVersion 0.4, released 2012-12-31\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* In non-verbose mode, print photo id instead of just \".\" for each completed\n download.\n\nVersion 0.3, released 2012-12-31\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Added ``--store-once`` and ``--keep-existing`` options\n* Removed ``--username`` option - you must authenticate as the user to use\n",
"bugtrack_url": null,
"license": "BSD",
"summary": "Flickr backup utility",
"version": "0.12.6",
"project_urls": {
"Homepage": "http://github.com/optilude/flickrbackup"
},
"split_keywords": [
"flickr",
"backup"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "89456f061b41991d304c726b71fff02e864dcec494124bebebc90bbbf8998cc1",
"md5": "d01fd47c94e54e4c2c21c78a4fd0af62",
"sha256": "e3d7a25518e7ccf1c6e69a3126d62266b1073062541f7a0241aced7deebcadfb"
},
"downloads": -1,
"filename": "flickrbackup-0.12.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d01fd47c94e54e4c2c21c78a4fd0af62",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 15207,
"upload_time": "2025-07-23T15:47:17",
"upload_time_iso_8601": "2025-07-23T15:47:17.007728Z",
"url": "https://files.pythonhosted.org/packages/89/45/6f061b41991d304c726b71fff02e864dcec494124bebebc90bbbf8998cc1/flickrbackup-0.12.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "32527cba8df7671f26a906a2c9e8df40f6c6a111499f7a62c80b9642f7b8524f",
"md5": "96788fb93a5e70bb9a859b6d3c0f1a3c",
"sha256": "5379febf9de90e1793bb0ea23316f3b43bba3d8d026aebefe82fb54d418305e7"
},
"downloads": -1,
"filename": "flickrbackup-0.12.6.tar.gz",
"has_sig": false,
"md5_digest": "96788fb93a5e70bb9a859b6d3c0f1a3c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15702,
"upload_time": "2025-07-23T15:47:18",
"upload_time_iso_8601": "2025-07-23T15:47:18.294306Z",
"url": "https://files.pythonhosted.org/packages/32/52/7cba8df7671f26a906a2c9e8df40f6c6a111499f7a62c80b9642f7b8524f/flickrbackup-0.12.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-23 15:47:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "optilude",
"github_project": "flickrbackup",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "flickrbackup"
}