Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Django site for multimedia annotations facilitating collaboration on video and image analysis. Developed at the Columbia Center for New Media Teaching and Learning
JavaScript Python HTML CSS Cucumber Ruby Other
Failed to load latest commit information.
apache first pass -- Django1.5 upgrade, various library upgrades, collectstatic
docs trivial change to test github > git.ccnmtl connection
media Change Flowplayer fullscreen arrow color
mediathread Merge pull request #107 from ccnmtl/upload-flags
requirements Access vimeo api securely
scripts Remove non-standard "_order" mechanism before Django 1.7 conversion.
structuredcollaboration Remove non-standard "_order" mechanism before Django 1.7 conversion.
.coveragerc PEP8 violations
.gitignore add make targets for jshint and jscs
.gitmodules bye bye sherdjs submodule. you're going to get checked out explicitly…
.jscsrc add make targets for jshint and jscs
.travis.yml point travis at our pypi until django-appconf returns
LICENSE NAME CHANGE: Mondrian is DEAD. Long live Mediathread. see docs/mondri…
Makefile PEP8 violations
README.markdown Update the Flowplayer doc * switching over to wheel-vish implementation requirements
crossdomain.xml Updatined crossdomain.xml to deal with the kdp3 being delivered from … Move to Django 1.4.5
requirements.txt Merge pull request #110 from ccnmtl/six-1.9.0 * Updating sherdjs to the latest merged codebase. fixing bugs in the filter/tastypie api. adding tests.



Build Status

Mediathread is a Django site for multimedia annotations facilitating collaboration on video and image analysis. Developed at the Columbia Center for New Media Teaching and Learning (CCNMTL)

CODE: (see wiki for some dev documentation)


Python 2.7 (Python 2.6 is still supported, but we encourage you to upgrade.)
Postgres (or MySQL)
Flowplayer installation for your site (See below for detailed instructions)
Flickr API Key if you want to bookmark from FLICKR


  1. Clone Mediathread

    git clone

  2. Build the database
    For Postgres (preferred):
    A. Create the database createdb mediathread

    For MySQL: (Note: Mediathread is not well-tested on recent version of MySQL.)
    A. Edit the file requirements.txt
    - comment out the line psycopg2
    - uncomment the MySQL-python line.

    B. Create the database

    echo "CREATE DATABASE mediathread" | mysql -uroot -p mysql

  3. Customize settings
    Create a file in the mediathread subdirectory. Override the variables from that you need to customize for your local installation. At a minimum, you will need to customize your DATABASES dictionary.

    For more extensive customization and template overrides, you can create a deploy_specific directory to house a site-specific file:

     $ mkdir deploy_specific
     $ touch deploy_specific/
     $ touch deploy_specific/

    Edit the deploy_specific/ and override values in like the DATABASES dictionary. This is where we add custom settings and templates for our deployment that will not be included in the open-sourced distribution.

  4. Build the virtual environment Bootstrap uses virtualenv to build a contained library in ve/


The rest of the instructions work like standard Django. See: for more details.

  1. Sync the database

    ./ syncdb. # When asked to create a superuser, do so. ./ migrate # completes the south migration setup

  2. Run locally (during development only) ./ runserver

Go to your site in a web browser.

  1. The default database is not very useful. You'll need to create a course and some users. Login with the superuser you created in Step #5.

  2. Click the 'Create a Course' link.

    • Click the "+" to make a group. Name it something like "test_course"
    • Click the "+" to make a faculty group. Name it something like "test_course_faculty"
      • In the "Add users to group" field...
        • add yourself as a faculty member by putting your username with a "" in front like this "admin"
        • add some fellow faculty/student accounts -- you can create new accounts right here (read the instructions under the textarea)
      • Click "Save" and then click the upper-right link "Django administration" to get back to the regular site (yeah, not the most intuitive).
  3. Experiment with saving assets by visiting:


For deployment to Apache, see our sample configuration in apache/sample.conf. This directory also contains standard django.wsgi file which can be used with other webservers


To support bookmarking assets from a variety of external sites, Mediathread instances must be accessible via http:// and https://


Mediathread instantiates a Flowplayer .swf or HTML5 player to play many video flavors. Flowplayer requires you to have a local installation and will not allow you to serve the player off their site. Free versions exist for both players. Here are the basic instructions to install Flowplayer on your systems and point Mediathread at it.

  1. Both versions are available here.
  2. Install both versions on a public server on your site.
  3. In the same directory as the Flash player, also install: - flowplayer.rtmp-3.2.13.swf - flowplayer.pseudostreaming-3.2.13.swf -

  4. In your or (better) deploy_specific/ set FLOWPLAYER_SWF_LOCATION, like so:
    FLOWPLAYER_SWF_LOCATION= 'http://servername/directory/flowplayer-3.2.15.swf' FLOWPLAYER_HTML5_LOCATION = 'http:///flowplayer-5.5.0/flowplayer.min.js'
    FLOWPLAYER_PSEUDOSTREAMING_PLUGIN = 'flowplayer.pseudostreaming-3.2.11.swf'
    FLOWPLAYER_RTMP_PLUGIN = 'flowplayer.rtmp-3.2.11.swf'

  • For Flash, the plugins are picked up automatically from the same directory, so don't need the full path.
  • These are the versions we are currently using in production here at CU.


In your or (better) deploy_specific/ specify your Flickr api key.


  1. Current development on the Mediathread bookmarklet is aimed at supporting the standard set forth by ( This format includes a system of hierarchal terms and their associated values. Use of the metadata terms itemscope, itemtype, and itemprop are used to help stucture the data such that Mediathread can make sense of what metadata is assocaited to the item or items being brought into the application. Examples of this structure can be found here:

  2. Use the Google Rich Snippet test tool to test your structure:

  3. It is also worth noting that the LRMI (Learning Resource Metadata Initiative) has been working with in creating a more robust set of property (itemprop) terms that have been accepted into the standard. Some of these terms may be useful in determining what might best describe a data set or collection. Here is a link to this new specification:

Something went wrong with that request. Please try again.