Introduction

A collection of Django apps for copying things from third-party sites and services. If something doesn’t make sense, email Phil Gyford and I’ll try and clarify it.

Requires Python 3.9 to 3.12, and Django 4.1, 4.2, and 5.0.

See screenshots of a site using the supplied templates.

Services covered

Currently, Ditto can copy these things from these services:

  • Flickr
    • Photos

    • Photosets

    • Original image and video files

    • Users

  • Last.fm
    • Scrobbles (Artist, Track and Album)

  • Pinboard
    • Bookmarks

  • Twitter
    • Tweets

    • Favorites/Likes

    • Images and Animated GIFs (but not videos)

    • Users

It can save these things for one or more account on each service.

See possible future services, and overall progress, in this issue.

Public and private Photos, Bookmarks and Tweets are saved, but only public ones are used in the included Views, Templates and Template tags; non-public data are only visible in the Django admin.

Ditto does not sync data – it’s a one-way fetch of data from the service to Ditto. You can repeatedly fetch the same Photos, Tweets, etc and their data will be overwritten in Ditto. You could do a single fetch of all your data as a snapshot/archive. And/or, after that, keep fetching the latest items to keep it up-to-date.

For each item fetched, the original JSON data is saved on its object.

What Ditto includes

The Ditto apps provide:

  • Models

  • Admin

  • Management commands to fetch the data/files

  • Views and URLs

  • Templates (that use Bootstrap 4)

  • Template tags for common things (eg, most recent Tweets, or Flickr photos uploaded on a particular day)

You could use the whole lot to create a minimal site that displays your Tweets, photos, etc – see the devproject/ for a bare-bones example.

Or you might want to use the management commands, Models and Admin to fetch and store your data, but use that data in your own Views and Templates, maybe using the Template tags. Or some other combination.