XDM: eXtendable Download Manager. Plugin based media collection manager.
Python HTML CSS JavaScript Emacs Lisp Shell
Latest commit 4c03a80 Jun 23, 2015 Dennis Lutter fix deleteOrphanElements ... again

README.md

XDM

XDM: eXtendable Download Manager. Plugin based media collection manager.

XDM is in BETA Current official site http://xdm.lad1337.de
Official main plugin repository at https://github.com/lad1337/XDM-main-plugin-repo/

Bitdeli Badge Gitter chat

tip for next commit Gittip

Requirements

  • python 2.7.x

optional but recomended when running on source

  • git 1.8.x

Known support for Mediatypes

  • Movies: Movies and find and Postprocess
  • Music: Albums and find and Postprocess (only for Mac OSX adding to iTunes)
  • Games: PC, Xbox360, PS3 and Wii Games and find and Postprocess
  • Books: Books
  • TV: TV shows
  • Anime: Animes

For more info on available first party plugins see the main repository at https://github.com/lad1337/XDM-main-plugin-repo/.

Note: At some point in the future all MediaTypeManagers and corresponding plugins will be moved into the repository and out of the core.

Documentation

is available online at https://xdm.readthedocs.org
or in the source and can be build using sphinx

Libraries in use

Backend

  • CherryPy: A Minimalist Python Web Framework
  • Requests: HTTP for Humans
  • pyDes: This is a pure python implementation of the DES encryption algorithm.
  • profilehooks: Profiling/tracing wrapper
  • peewee: a small, expressive orm
  • Jinja2: Jinja2 is a full featured template engine for Python.
  • pylint: analyzes Python source code looking for bugs and signs of poor quality
  • astng: common base representation of python source code for projects such as pychecker, pyreverse, pylint
  • guessit: a library for guessing information from video files.
  • JSONRPClib: A Python JSON-RPC over HTTP that mirrors xmlrpclib syntax.
  • pbs: Python subprocess wrapper (fallback for windows, see sh).
  • sh: sh (previously pbs) is a full-fledged subprocess interface for Python that allows you to call any program as if it were a function.

Frontend

  • Bootstrap: Sleek, intuitive, and powerful front-end framework for faster and easier web development.
  • Font Awesome: The iconic font designed for Bootstrap.
  • jQuery: is a fast, small, and feature-rich JavaScript library.
  • jQuery UI: is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.
  • modernizr: is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser.
  • fancyBox: fancyBox is a tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages.
  • Raphaël: JavaScript Vector Library
  • noty: jquery notification plugin
  • jQuery resize event: With jQuery resize event, you can now bind resize event handlers to elements other than window.
  • JQuery Countdown Timer: A simple jQuery Countdown Timer with callback
  • jQuery YouTube Popup Player: A simple and light weight plugin to display YouTube videos in a jQuery dialog box.
  • pjax: pushState + ajax = pjax http://pjax.heroku.com
  • TouchSwipe: A jquery plugin to be used on touch devices such as iPad, iPhone, android etc

(Plugins may use more libraries)

Screenshots

More screenshots

Movie plugin with some movies Movie plugin

Music plugin with some albums Music plugin

Games Games plugin

Books Books plugin

Plugin and reposetory managment Plugins

Usage

usage: XDM [-h] [-d] [-v] [-D] [-p PIDFILE] [-P PORT] [-n] [-b DATADIR]
           [--config_db CONFIG_DB] [--data_db DATA_DB]
           [--history_db HISTORY_DB] [--dev] [--noApi] [--apiPort APIPORT]
           [--noWebServer] [--pluginImportDebug]
           [--profile [PROFILE [PROFILE ...]]]

optional arguments:
  -h, --help            show this help message and exit
  -d, --daemonize       Run the server as a daemon.
  -v, --version         Print Version and exit.
  -D, --debug           Print debug log to screen.
  -p PIDFILE, --pidfile PIDFILE
                        Store the process id in the given file.
  -P PORT, --port PORT  Force webinterface to listen on this port.
  -n, --nolaunch        Don't start the browser.
  -b DATADIR, --datadir DATADIR
                        Set the directory for created data.
  --config_db CONFIG_DB
                        Path to config database
  --data_db DATA_DB     Path to data database
  --history_db HISTORY_DB
                        Path to history database
  --dev                 Developer mode. Disables the censoring during log and
                        the plugin manager follows symlinks
  --noApi               Disable the api
  --apiPort APIPORT     Port the api runs on
  --noWebServer         Don't start the webserver
  --pluginImportDebug   Extra verbosy debug during plugin import is printed.
  --profile [PROFILE [PROFILE ...]]
                        Wrap a decorated(!) function in a profiler. By default
                        all decorated functions are profiled. Decorate your
                        function with @profileMeMaybe

i18n

You will need an instlled version of babel

Build message catalog       $ pybabel extract -F babel.cfg -o ./i18n/messages.pot .
Create language po          $ pybabel init -i ./i18n/messages.pot -d i18n -l ``language name``
Update language po          $ pybabel update -i ./i18n/messages.pot -d i18n
Compile mo files            $ pybabel compile -d i18n -f

License

XDM: Xtentable Download Manager. Plugin based media collection manager.
Copyright (C) 2013 Dennis Lutter

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.