4th May 2014, updated:8th January 2025

DJMovies - Django Movies

DJMovies is a django application that I started writing on April 1st 2013, to handle my private catalog of movies. In addition to catalog the movies, it exposes through its web interface multiple tools to handle them: homogenize video and audio formats, subtitles handling, etc.

screenshot

DJMovies accesses external services, like IMDb to retrieve movie information, or Moviesubtitles.org to download subtitles.

Precisely this dependency on external services makes the project eternally unfinished. The access to the services scraps the information, but those services keep updating the appearance of their pages, requiring a regular update to the scraping process. Most of the changes implemented since 2014 relate exclusively to these updates.

As part of my process to stop using private repositories in my own VPSs, I am now making these repositories public. DJMovies is available from: GitHub, and the data associated to my own catalog lives in a separate private repository.

I am quite astonished of the short time I have needed to migrate this application to the latest python version (3.13.1 as of today) and Django version (5.1.4), as I was using before Django 3.0.5. However, I have not tested the application in full, so additional changes will likely be required in the close future. Very specifically, the access to external services is likely not working now.

Installation instructions

OS: install packages

linux

sudo apt-get install mediainfo unrar imagemagick libxml2-dev libxslt-dev zlib1g-dev ffmpeg mkvtoolnix  

MacOS

brew install mediainfo rar freetype imagemagick@6 ffmpeg

Python setup

 git clone https://github.com/coderazzi/djmovies
 cd djmovies
 python3 -m venv venv
 source venv/bin/activate
 pip3 install -r requirements.txt

Application initialization

I keep my data in a private repository, so I can initialize the application doing:

git clone git@github.com:coderazzi/djmovies-userdata.git userdata
ln -sf ../../userdata/mov_imgs movies/static 

Otherwise, it is needed to setup the initial database:

mkdir -p userdata/mov_imgs
sqlite3 userdata/db_movies.sqlite < db_schema="" ln="" -sf="" ../../userdata/mov_imgs="" movies/static="">

This userdata folder can then managed as a separate git repository

Execution

./go.sh

This will open a web page pointing out to http://127.0.0.1:8000