Giter VIP home page Giter VIP logo

xdm's Introduction

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/.

xdm's People

Contributors

bitdeli-chef avatar dependabot[bot] avatar forkless avatar lad1337 avatar mjc avatar pannal avatar pmoranga avatar torf avatar watso4183 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xdm's Issues

UpdateManager seems to be having problems

Getting the following error:

Error in the scheduler thread of core updater. 1 fails so far.
Traceback:
Traceback (most recent call last):
  File "C:\Program Files (x86)\SABnzbd\XDM-Master\xdm\scheduler.py", line 80, in run
    self._action()
  File "C:\Program Files (x86)\SABnzbd\XDM-Master\xdm\tasks.py", line 46, in coreUpdateCheck
    updateResponse = common.UPDATER.check()
  File "C:\Program Files (x86)\SABnzbd\XDM-Master\xdm\updater.py", line 120, in check
    self.info = self.updater.need_update()
  File "C:\Program Files (x86)\SABnzbd\XDM-Master\xdm\updater.py", line 269, in need_update
    self.response.needUpdate = None
AttributeError: 'SourceUpdateManager' object has no attribute 'response'

Any solution for this problem? :)

game snatched twice

first of all great project

i noticed a bug while downloading games when adding a game the same file is snatched twice and sent two times to sab

XDM to Sabnzbd with https

Is it possible to have XDM connect to Sabnzbd through https? Since XDM would run on my webserver and Sabnzbd on my Raspberry pi at home (for better performance), I wouldn't like it to have to use a unsecured connection.

thanks

Edit:
When I try it with https I get this error:

Sabnzbd(Default) - Test connection: Internal Error in plugin

disable plugins that error out like the schedules

when a plugin has 3(maybe more but not as a setting -> too many settings and variables to test and resolve issues) or more errors disable it create a message in the gui
this will also solve hitting indexers / providers / downloaders with wrong credentials ...

but might disable a provider that is just down for a while which means it has to be actively activated again just because the indexer is not reachable for a while
(but is in a sense a monitoring on indexers and providers too)

also send notifications with notifiers

maybe add a recovery scheduler that tries in long intervals (48h) to reach these indexers / providers / downloaders again ... but that would need some kind of cache to know which have been deactivated by the system (not user) ...
either have it use a hidden config or a non persistent memory cache

New books gui

screen shot 2013-07-05 at 14 27 55
screen shot 2013-07-05 at 14 28 02

still some issues with it and navigation needs improvement although you can already use the arrow keys.

XDM Logo on the top left not loading

Issue occurs with multiple browsers, when going to the image manually it does load.
Also tried it from different connections.

Problem seems to be with /img/xdm-logo.svg not wanting to load using the img tag?
Any suggestions? Maybe switch to PNG?

Issue with the books plugin

Hi

I was trying out the books plugin and i'm seeing the errors in the Python window (see attached)
image

Any idea what may be going on?

In addition, I'm having trouble with the other newznab provider I want to add.

I'm putting in the URL and the API, but when I click "test connection" I'm getting an error.

Thanks in advance.

Del

No JSON object could be decoded (New Issue!)

Base Info:

I'm running XDM on Synology DS210J
XDM installed via command line via the "git clone..." method.
I have the following (configured) plugins: "Newznab", "Movies", "Books", "Music", "Goodreads", "TheMovieDB", "Discogs".
I can successfully search. I can successfully "add" specific search results.
I am using usenet-crawler as my index provider.

Issue:

I'm using usenet-crawler as my index provider & when setting a book and music result to "wanted", I had received a similar message to the below before realizing I had not applied the secure "https" protocol in the settings.

Well I applied this and I went back to my added book and music result and re-set them to "wanted" again. The end result again is lines of code below displayed in an unhealthy red background. Help please :(


Raw log message:

{
    "msg": "Error during downloadWrapperSingle of Newznab (Default) \nError: No JSON object could be decoded\n\nTraceback (most recent call last):\n  File \"/opt/share/XDM/xdm/plugins/meta.py\", line 159, in outer\n    return run(*args, **kwargs)\n  File \"/opt/share/XDM/xdm/plugins/bases.py\", line 526, in downloadWrapperSingle\n    res = self._searchForElement(*args, **kwargs)\n  File \"/opt/share/XDM/plugins/Indexer/Newznab-de_lad1337_newznab-0_5/Newznab.py\", line 71, in searchForElement\n    response = r.json()\n  File \"/opt/share/XDM/lib/requests/models.py\", line 629, in json\n    return json.loads(self.text or self.content, **kwargs)\n  File \"/opt/lib/python2.7/json/__init__.py\", line 326, in loads\n    return _default_decoder.decode(s)\n  File \"/opt/lib/python2.7/json/decoder.py\", line 366, in decode\n    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n  File \"/opt/lib/python2.7/json/decoder.py\", line 384, in raw_decode\n    raise ValueError(\"No JSON object could be decoded\")\nValueError: No JSON object could be decoded\n\nNew value:[]\nTraceback:\nTraceback (most recent call last):\n  File \"/opt/share/XDM/xdm/plugins/meta.py\", line 159, in outer\n    return run(*args, **kwargs)\n  File \"/opt/share/XDM/xdm/plugins/bases.py\", line 526, in downloadWrapperSingle\n    res = self._searchForElement(*args, **kwargs)\n  File \"/opt/share/XDM/plugins/Indexer/Newznab-de_lad1337_newznab-0_5/Newznab.py\", line 71, in searchForElement\n    response = r.json()\n  File \"/opt/share/XDM/lib/requests/models.py\", line 629, in json\n    return json.loads(self.text or self.content, **kwargs)\n  File \"/opt/lib/python2.7/json/__init__.py\", line 326, in loads\n    return _default_decoder.decode(s)\n  File \"/opt/lib/python2.7/json/decoder.py\", line 366, in decode\n    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n  File \"/opt/lib/python2.7/json/decoder.py\", line 384, in raw_decode\n    raise ValueError(\"No JSON object could be decoded\")\nValueError: No JSON object could be decoded\n", 
    "lvl": "ERROR", 
    "caller": {
        "line": 166, 
        "file": "/opt/share/XDM/xdm/plugins/meta.py", 
        "fn": "outer"
    }, 
    "data": {}, 
    "time": "2013-09-20 12:29:14.321882"
}

System info:

  • XDM version: Zim 0.5.9
  • Updater version: 808fd07
  • Install type: Git
  • System: Linux
  • Release: 2.6.32.12
  • Machine: armv5tel
  • Python_version: 2.7.3
  • Python_implementation: CPython

Can't get plugins from the external repository

Hi,

I'm running on a qnap system from source and after the latest 2 updates, I can't get the list of plugins. I just get a blank list.

I get this error in log:

{"msg": "Error while retrieving repo information from https://raw.github.com/lad1337/XDM-main-plugin-repo/master/meta.json\nTraceback:\nTraceback (most recent call last):\n File "/share/MD0_DATA/.qpkg/XDM/xdm/plugins/repository.py", line 313, in cache\n r = requests.get(self.url, timeout=20)\n File "/share/MD0_DATA/.qpkg/XDM/lib/requests/api.py", line 55, in get\n return request('get', url, *_kwargs)\n File "/share/MD0_DATA/.qpkg/XDM/lib/requests/api.py", line 44, in request\n return session.request(method=method, url=url, *_kwargs)\n File "/share/MD0_DATA/.qpkg/XDM/lib/requests/sessions.py", line 279, in request\n resp = self.send(prep, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)\n File "/share/MD0_DATA/.qpkg/XDM/lib/requests/sessions.py", line 373, in send\n r = adapter.send(request, **kwargs)\n File "/share/MD0_DATA/.qpkg/XDM/lib/requests/adapters.py", line 210, in send\n raise SSLError(e)\nSSLError: [Errno 1] _ssl.c:499: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed\n", "lvl": "ERROR", "caller": {"line": 315, "fn": "cache", "file": "/share/MD0_DATA/.qpkg/XDM/xdm/plugins/repository.py"}, "data": {}, "time": "2013-06-14 16:19:16.630459"}

Did something change regarding the certificate-handling?

Problem with updater (git version)

This is what happend:
I checked the log after a new checkout and I found this message in the logs.


Raw log message:

{
    "msg": "Error in the scheduler thread of core updater. 1 fails so far.\nTraceback:\nTraceback (most recent call last):\n  File \"C:\\Program Files (x86)\\SABnzbd\\XDM\\xdm\\scheduler.py\", line 80, in run\n    self._action()\n  File \"C:\\Program Files (x86)\\SABnzbd\\XDM\\xdm\\tasks.py\", line 46, in coreUpdateCheck\n    updateResponse = common.UPDATER.check()\n  File \"C:\\Program Files (x86)\\SABnzbd\\XDM\\xdm\\updater.py\", line 123, in check\n    self.info = self.updater.need_update()\n  File \"C:\\Program Files (x86)\\SABnzbd\\XDM\\xdm\\updater.py\", line 286, in need_update\n    info = remote.fetch()[0]                        # fetch changes\n  File \"C:\\Program Files (x86)\\SABnzbd\\XDM\\rootLibs\\git\\remote.py\", line 592, in fetch\n    proc = self.repo.git.fetch(self, refspec, with_extended_output=True, as_process=True, v=True, **kwargs)\n  File \"C:\\Program Files (x86)\\SABnzbd\\XDM\\rootLibs\\git\\cmd.py\", line 227, in <lambda>\n    return lambda *args, **kwargs: self._call_process(name, *args, **kwargs)\n  File \"C:\\Program Files (x86)\\SABnzbd\\XDM\\rootLibs\\git\\cmd.py\", line 456, in _call_process\n    return self.execute(call, **_kwargs)\n  File \"C:\\Program Files (x86)\\SABnzbd\\XDM\\rootLibs\\git\\cmd.py\", line 335, in execute\n    **subprocess_kwargs\n  File \"C:\\Python26\\lib\\subprocess.py\", line 623, in __init__\n    errread, errwrite)\n  File \"C:\\Python26\\lib\\subprocess.py\", line 833, in _execute_child\n    startupinfo)\nWindowsError: [Error 2] The system cannot find the file specified\n", 
    "lvl": "ERROR", 
    "caller": {
        "line": 86, 
        "file": "C:\\Program Files (x86)\\SABnzbd\\XDM\\xdm\\scheduler.py", 
        "fn": "run"
    }, 
    "data": {}, 
    "time": "2013-07-09 21:36:15.558000"
}

System info:

  • XDM version: Zim 0.5.3
  • Updater version:
  • Install type: Git
  • System: Windows
  • Release: post2008Server
  • Machine: x86
  • Python_version: 2.6.6
  • Python_implementation: CPython

[Feature Request] Optional alternate Book GUI

The current Book GUI, while pretty, is almost completely unusable. There's absolutely no useful information displayed without hovering, and the generic book spines are worthless. Would it be possible to provide a more data-rich GUI, something even as simple as an author/title list? Perhaps as a plugin option?

Error see log during each search

When i do a search here s what happens (for each search i make)


Raw log message:

{
    "msg": "Error during searchForElement of TheGamesDB (Default) \nError: mismatched tag: line 18, column 2\n\nTraceback (most recent call last):\n  File \"/volume1/documents/XDM/xdm/plugins/meta.py\", line 133, in outer\n    return run(*args, **kwargs)\n  File \"/volume1/documents/XDM/plugins/Provider/TheGamesDB-de_lad1337_boxcar_TheGamesDB-0_11/TheGamesDB.py\", line 146, in searchForElement\n    return self._searchForElement(term)\n  File \"/volume1/documents/XDM/plugins/Provider/TheGamesDB-de_lad1337_boxcar_TheGamesDB-0_11/TheGamesDB.py\", line 163, in _searchForElement\n    root = ET.fromstring(r.text.encode('utf-8'))\n  File \"/volume1/@appstore/python/lib/python2.7/xml/etree/ElementTree.py\", line 1300, in XML\n    parser.feed(text)\n  File \"/volume1/@appstore/python/lib/python2.7/xml/etree/ElementTree.py\", line 1642, in feed\n    self._raiseerror(v)\n  File \"/volume1/@appstore/python/lib/python2.7/xml/etree/ElementTree.py\", line 1506, in _raiseerror\n    raise err\nParseError: mismatched tag: line 18, column 2\n\nTraceback:\nTraceback (most recent call last):\n  File \"/volume1/documents/XDM/xdm/plugins/meta.py\", line 140, in outer\n    log.error(\"Error during %s of %s \\nError: %s\\n\\n%s\\nNew value:%s\" % (run.__name__, caller_name, ex, tb, out), traceback=tb, new_out=out, exception=ex)\n  File \"/volume1/documents/XDM/xdm/classes.py\", line 223, in __str__\n    return '%s(%s)[%s] %s' % (self.type, self.mediaType, self.get_id(), self.getName())\n  File \"/volume1/documents/XDM/xdm/classes.py\", line 252, in __getattribute__\n    return BaseModel.__getattribute__(self, name)\n  File \"/volume1/documents/XDM/lib/peewee.py\", line 509, in __get__\n    return self.get_object_or_id(instance)\n  File \"/volume1/documents/XDM/lib/peewee.py\", line 504, in get_object_or_id\n    raise self.rel_model.DoesNotExist\nMediaTypeDoesNotExist\n", 
    "lvl": "ERROR", 
    "caller": {
        "line": 142, 
        "file": "/volume1/documents/XDM/xdm/plugins/meta.py", 
        "fn": "outer"
    }, 
    "data": {}, 
    "time": "2013-08-10 00:28:57.253763"
}

System info:

  • XDM version: Zim 0.5.3
  • Updater version:
  • Install type: Git
  • System: Linux
  • Release: 3.2.40
  • Machine: x86_64
  • Python_version: 2.7.5
  • Python_implementation: CPython

Indexers are installed correctly and tested, but consistently return no results

I have 2 indexers that work well with other programs. I installed them and tested the connection successfully:

newsnab working

However, neither of them return results, despite results definitely being out there (ie I can get results for the exact same search with CP, but XDM returns nothing)

search results

Here is what the command line returns:

 ←[32;1mINFO←[0m| 2013-08-30 23:01:55.119000: Init search on Movies (de.lad13

37.movies) for harry potter
←[32;1mINFO←[0m| 2013-08-30 23:02:25.455000: Init search of Movie(de.lad1337
.movies)[11] Harry Potter and the Philosopher's Stone (2001) on Newznab (Default
)
←[32;1mINFO←[0m| 2013-08-30 23:02:26.382000: No search results for Harry Pot
ter and the Philosopher's Stone (2001)
←[32;1mINFO←[0m| 2013-08-30 23:02:26.396000: Init search of Movie(de.lad1337
.movies)[11] Harry Potter and the Philosopher's Stone (2001) on Newznab (Crawler
)
←[32;1mINFO←[0m| 2013-08-30 23:02:27.489000: No search results for Harry Pot
ter and the Philosopher's Stone (2001)
←[32;1mINFO←[0m| 2013-08-30 23:02:27.499000: We filtered all downloads out f
or Movie(de.lad1337.movies)[11] Harry Potter and the Philosopher's Stone (2001)
←[32;1mINFO←[0m| 2013-08-30 23:04:59.733000: Init search of Movie(de.lad1337
.movies)[11] Harry Potter and the Philosopher's Stone (2001) on Newznab (Default
)
←[32;1mINFO←[0m| 2013-08-30 23:05:00.635000: No search results for Harry Pot
ter and the Philosopher's Stone (2001)
←[32;1mINFO←[0m| 2013-08-30 23:05:00.653000: Init search of Movie(de.lad1337
.movies)[11] Harry Potter and the Philosopher's Stone (2001) on Newznab (Crawler
)
←[32;1mINFO←[0m| 2013-08-30 23:05:01.592000: No search results for Harry Pot
ter and the Philosopher's Stone (2001)
←[32;1mINFO←[0m| 2013-08-30 23:05:01.602000: We filtered all downloads out f
or Movie(de.lad1337.movies)[11] Harry Potter and the Philosopher's Stone (2001)

Any idea why I might be drawing a goose egg?

Guess i am doing something wrong.

squeezeplug:/XDM# git clone https://github.com/lad1337/XDM.git
Cloning into XDM...
remote: Counting objects: 3110, done.
remote: Compressing objects: 100% (2011/2011), done.
remote: Total 3110 (delta 1173), reused 2966 (delta 1031)
Receiving objects: 100% (3110/3110), 10.66 MiB | 1004 KiB/s, done.
Resolving deltas: 100% (1173/1173), done.
squeezeplug:/XDM# python XDM.py
Traceback (most recent call last):
File "XDM.py", line 51, in
import xdm
ImportError: No module named xdm

squeezeplug:/XDM# python setup.py

Starting build ...

Traceback (most recent call last):
File "setup.py", line 675, in
main()
File "setup.py", line 576, in main
from xdm import common
ImportError: No module named xdm

Request : view for games

It would be great to have another view or change the one for the games. Something like the one for movies could be great. ore use two or more colums

On the same hand, for the search results for games something like that could be cool ;)

Remove most plugins from this repo

Remove all (or nearly all plugins) from this repo / the core XDM application / program.

I can only think of the SystemConfig plugin needed at boot / in order to run.
This is (only) useful in combination with #13

Can't use dash's in indexer provider instance name

When using a dash in the indexer instance name, all information entered is not saved.

For instance if you create a newznab instance for usenet-crawler.com with the following information it resets back to the defaults upon refreshing the page.

  • Instance name: usenet-crawlers
  • Enabled: True
  • Category for Movies: 2040
  • Run for Movies: True
  • Category for Music: 3040
  • Run for Music: True
  • Apikey: {{ removed }}
  • Comment On Download: False
  • Host: www.usenet-crawler.com
  • Port: 443
  • Retention: 900

Clean / truncate history regularly

the history db is the bigest of the three databases. most info is never used (yet).
either truncate or remove unnecessary entries from the db

Setup wizard

Run a setup wizard on first start (or later from the about page):

  • to set basic settings
  • download needed plugins (Based on available plugins)
  • show / explain features.

Note: Allow to add a repo url during this setup

move all "search for element" filters into plugins

dont have the release date filter in the core rather have a search filter that does it

this would mean another filter / plugin category :(
(this is the reason was the first place to not make a plugin for this)

these plugins should filter the list of available downloadable elements
based on ANY criteria ... this would enforce an naming convention on the element filed names, something like:

  • if 'release' in fieldName: -> check release date
  • if element.status is self.c.allowed_status -> check status of config

the last example would also be used as a replacement that only wanted stuff is searched.

[Request?] Generic downloader plugins?

I love the idea of a modular setup and really hope it picks up. I have a question/request but I don't know if this is in line with your vision:

Would a generic file downloader plugin (non-NZB) be possible? I ask because I remotely control my services from work. Often I find things I'd like to download, but I want to send it directly to my NAS/home PC and not my work PC. Sometimes these are just docs, or .zips, or .exes. Would a plugin be possible (practical?) that will let someone copy/paste a URL or multiple URLs and direct download to save it to the NAS?

Would a SoundCloud downloader plugin also be an option?https://github.com/yasoob/soundcloud-dl

Game mover issue and request

Hi lad,

Could it be possible for game mover to create subfolders with game names.

And also could it be possible to move the entire XXXX XDM (XXX.X) folder that is created after a download (with that even games with exe files or else will be moved)

thanks

ImportError: No module named git

Hi,

I have a new installation of Ubuntu. I have just cloned XDM info a new folder.I get this error:
/XDM$ python setup.py
Traceback (most recent call last):
File "setup.py", line 26, in
import git
ImportError: No module named git

/XDM$ python
Python 2.7.3 (default, Apr 10 2013, 06:20:15)
[GCC 4.6.3] on linux2

Plugins issue

hello lad,

i have some issues:
1st) with your last dev version i lost the newznab plugins and it doesn't appear in the repo

2nd) with the master version i am not able to download a plugin from the repo the log says starting download and then (connection lost) and it does that for each item from the repo

Error on downloading Movies with non-traditional text

EDIT: Turns out this is only for adding Movies that have non-english characters? The log below was after adding "Les Misérables" Adding a more traditionally movie works just fine.

Running from Source, Linux. Master branch
Getting error when downloading a Movie, or by Refreshing a movie on the Wanted page:

500 Internal Server Error

The server encountered an unexpected condition which prevented it from fulfilling the request.

Traceback (most recent call last):
File "/opt/local/XDM/rootLibs/cherrypy/_cprequest.py", line 656, in respond
response.body = self.handler()
File "/opt/local/XDM/rootLibs/cherrypy/lib/encoding.py", line 188, in call
self.body = self.oldhandler(_args, *_kwargs)
File "/opt/local/XDM/rootLibs/cherrypy/_cpdispatch.py", line 34, in call
return self.callable(_self.args, *_self.kwargs)
File "/opt/local/XDM/xdm/web/init.py", line 224, in refreshinfo
tasks.updateElement(Element.get(Element.id == id))
File "/opt/local/XDM/xdm/tasks.py", line 324, in updateElement
element.downloadImages()
File "/opt/local/XDM/xdm/classes.py", line 521, in downloadImages
self.downloadImage(cImageName)
File "/opt/local/XDM/xdm/classes.py", line 530, in downloadImage
img.cacheImage()
File "/opt/local/XDM/xdm/classes.py", line 950, in cacheImage
with open(self.getPath(), 'wb') as f:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 47: ordinal not in range(128)
Powered by CherryPy 3.2.2

Music search returns 0 results with illegal characters

When xdm performs a search that contains illegal characters (.,/!') it does not pick these guys up. Seems as though the index sites do not allow these. For example, I dug through the log to find an api call on an indexer site searching for "The 20/20 Experience" and it returned 0 results. I took the exact url and plugged it directly into my browser and got the same result. I then took that url and removed the forward slash and it returned the expected results. The same occurred for "Magna Carta... Holy Grail."

Plugins page seems broken in develop branch

Getting the following error:

Traceback (most recent call last):
  File "C:\Program Files (x86)\SABnzbd\XDM\rootLibs\cherrypy\_cprequest.py", line 656, in respond
    response.body = self.handler()
  File "C:\Program Files (x86)\SABnzbd\XDM\rootLibs\cherrypy\lib\encoding.py", line 188, in __call__
    self.body = self.oldhandler(*args, **kwargs)
  File "C:\Program Files (x86)\SABnzbd\XDM\rootLibs\cherrypy\_cpdispatch.py", line 34, in __call__
    return self.callable(*self.args, **self.kwargs)
  File "C:\Program Files (x86)\SABnzbd\XDM\xdm\web\__init__.py", line 146, in plugins
    return template.render(**self._globals())
  File "C:\Program Files (x86)\SABnzbd\XDM\rootLibs\jinja2\environment.py", line 894, in render
    return self.environment.handle_exception(exc_info, True)
  File "html\templates\plugins.html", line 4, in top-level template code
    {% set active_sub_page = active_sub_page|default('plugins') -%}
  File "html\templates\base.html", line 152, in top-level template code
    {% block content %}
  File "html\templates\plugins.html", line 37, in block "content"
    <pre>{{plugin.createRepoJSON()}}</pre>
  File "C:\Program Files (x86)\SABnzbd\XDM\xdm\plugins\meta.py", line 138, in outer
    out = alternative(*args, **kwargs)
  File "C:\Program Files (x86)\SABnzbd\XDM\xdm\plugins\bases.py", line 408, in createRepoJSON
    data = collections.OrderedDict([("major_version", self.major_version),
AttributeError: 'module' object has no attribute 'OrderedDict'

Anime support?

Any chance for Anime support? I assume Sickbeard anime dev won't be getting an update due to you now working on this and i'm sure it will make a lot of people happy if XDM supported anime similar to how your sickbeard branch did.

Two Wii Us remain

Hello, i noticed two bugs.

  1. in Firefox the cover for pc games doesn't appear (it does in IE)

  2. in the list of game platforms : Nintendo wii U appears twice

All this in the game wanted or download view.

And a little request by the way : is it possible that the game Platform list on the left shows only the list of platforms for wich there are objects

For example i have one pc game and one wii game in the wanted list (the Platform list only shows PC and WII)

The same for downloaded

PID File doesn't set

i did the commandline flag --pidfile=/var/run/xdm.pid, but it never gets set.

keep getting "Address already in use" on first run

is there any way to change port before wizard? I am trying to run this on os x server. I have tried -P and changed port numbers to random number but no matter what I change it to it tells me its in use. I can launch Sick beard in same manner and it works fine.

I dont know what the status of your git is

Here is waht i have in the log since now i can see what happens when you make an update(as you made one lol)

{"msg": "No update needed", "lvl": "INFO", "caller": {"line": 129, "fn": "check", "file": "/volume1/documents/XDM/xdm/updater.py"}, "data": {}, "time": "2013-08-22 18:52:49.047099"}
{"msg": "Needupdate: None; current version: 217cb89; external version: ff3bff2;\nExtra info: \nI dont know what the the status of your git is.", "lvl": "INFO", "caller": {"line": 47, "fn": "coreUpdateCheck", "file": "/volume1/documents/XDM/xdm/tasks.py"}, "data": {}, "time": "2013-08-22 18:52:49.049445"}
{"msg": "Checking if repo at https://raw.github.com/lad1337/XDM-main-plugin-repo/master/meta.json", "lvl": "INFO", "caller": {"line": 338, "fn": "cache", "file": "/volume1/documents/XDM/xdm/plugins/repository.py"}, "data": {}, "time": "2013-08-22 18:53:16.692403"}
{

Strange do you have any clue

Cross compiling error for Thecus NAS, need some help

Hello Dearest,

I cross compiled all dependencies which are require for Python.
but on finale step to install XDM (using Python 2.7.5)

Starting build ...

Traceback (most recent call last):
File "setup.py", line 675, in
main()
File "setup.py", line 569, in main
buildParams['gitNewestCommit'], buildParams['gitNewestCommitShort'] = getLatestCommitID(buildParams)
File "setup.py", line 97, in getLatestCommitID
repo = git.Repo('./') # get the local repo
File "/raid/data/module/XDM/sys/lib/python2.7/site-packages/GitPython-0.3.1-py2.7.egg/git/repo/base.py", line 117, in init
raise InvalidGitRepositoryError(epath)
git.exc.InvalidGitRepositoryError: /raid/SRC/PYTHON_MOD/XDM-master

command line used to launch the setup in my prefix dir :

CXX=${HOST}-g++
LD=${HOST}-ld
AS=${HOST}-as
AR=${HOST}-ar
CC=${HOST}-gcc
PKG_CONFIG_PATH="/raid/data/module/XDM/sys/lib/pkgconfig"
CFLAGS="-O2 -I/raid/data/module/XDM/sys/include"
CXXFLAGS="-O2 -I/raid/data/module/XDM/sys/include"
LDFLAGS="-L/raid/data/module/XDM/sys/lib -Wl,-rpath,/raid/data/module/XDM/sys/lib"
/raid/data/module/XDM/sys/bin/python setup.py install --prefix=/raid/data/module/XDM/sys

Thanks for your help

[Feature request] TV Scheduler/tracking

Right now XDM is missing a key feature for such a robust system as itself. The ability to track TV shows and upcoming episodes/backlog searching will mean many users can drop SB/CP/HP/ETC in place of XDM.

Here there been any work on a TV scheduler, and if there is would you be willing to toss it in an experimental branch for others to contribute to it.

No JSON object could be decoded

When performing a search for a movie my console gives the following error upon searching for each index entered.

Traceback (most recent call last):
  File "/home/sylas/XDM/xdm/plugins/meta.py", line 133, in outer
    return run(*args, **kwargs)
  File "/home/sylas/XDM/xdm/plugins/bases.py", line 453, in downloadWrapperSingle
    res = self._searchForElement(*args, **kwargs)
  File "/home/sylas/XDM/plugins/indexer/Newznab.py", line 66, in searchForElement
    response = r.json()
  File "/home/sylas/XDM/lib/requests/models.py", line 628, in json
    return json.loads(self.content.decode(encoding), **kwargs)
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

    INFO| 2013-06-15 13:58:39.173655: We filtered all downloads out for Movie(de.lad1337.movies) {{ removed }}
    INFO| 2013-06-15 13:58:39.192152: Init search of Movie(de.lad1337.movies) {{ removed }} on Newznab (usenetcrawler)
   ERROR| 2013-06-15 13:58:39.742984: Error during downloadWrapperSingle of Newznab (usenetcrawler)
Error: No JSON object could be decoded

Traceback (most recent call last):
  File "/home/sylas/XDM/xdm/plugins/meta.py", line 133, in outer
    return run(*args, **kwargs)
  File "/home/sylas/XDM/xdm/plugins/bases.py", line 453, in downloadWrapperSingle
    res = self._searchForElement(*args, **kwargs)
  File "/home/sylas/XDM/plugins/indexer/Newznab.py", line 66, in searchForElement
    response = r.json()
  File "/home/sylas/XDM/lib/requests/models.py", line 629, in json
    return json.loads(self.text or self.content, **kwargs)
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

New value:[]
Traceback:
Traceback (most recent call last):
  File "/home/sylas/XDM/xdm/plugins/meta.py", line 133, in outer
    return run(*args, **kwargs)
  File "/home/sylas/XDM/xdm/plugins/bases.py", line 453, in downloadWrapperSingle
    res = self._searchForElement(*args, **kwargs)
  File "/home/sylas/XDM/plugins/indexer/Newznab.py", line 66, in searchForElement
    response = r.json()
  File "/home/sylas/XDM/lib/requests/models.py", line 629, in json
    return json.loads(self.text or self.content, **kwargs)
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

Unable to connect to Newznab Site due to SSL Error

Hi,

Just started using your, hopefully, pretty nice of Software but i ran immediatly into an Issue which i can't solve myself. I can not connect to www.oznzb.com since the SSL verification failed. I added the used Godaddy Cert to the cacerts.txt but that hasn't changed anything tough. Any Chance to disable the Certificate verification using some Config Option or any other hint how to get past that Error ?

Version Infos:
XDM: 0.4.21
OS: Ubuntu 12.04
Python: 2.7.3-0ubuntu3.2
OpenSSL: 1.0.1-4ubuntu5.10

Log can be found at: http://pastebin.com/HRpWP5bB

Cheers,
Lumpi

Error Log when attempting to run XDM.py in windows 7.

Any idea on what I am doing wrong?

C:\GIT\XDM>python xdm.py
←[32;1mINFO←[0m| 2013-08-28 15:41:50.439000: Starting XDM Zim 0.5.5
←[32;1mINFO←[0m| 2013-08-28 15:41:50.444000: Logfile path is C:\GIT\XDM\xdm.
log
←[32;1mINFO←[0m| 2013-08-28 15:41:50.477000: Loading/searching system plugin
s
←[32;1mINFO←[0m| 2013-08-28 15:41:51.404000: Pylint Score for SystemConfig i
s 9.28
←[32;1mINFO←[0m| 2013-08-28 15:41:51.439000: Using i18n path C:\GIT\XDM\i18n

←[32;1mINFO←[0m| 2013-08-28 15:41:51.443000: Instaling language "en_US <lad1

[email protected]>"
←[32;1mINFO←[0m| 2013-08-28 15:41:51.448000: CoreUpdate is working with vers
ion 0.5.5 on Git
Traceback (most recent call last):
File "xdm.py", line 304, in
main()
File "xdm.py", line 267, in main
app = App()
File "xdm.py", line 153, in init
init.postDB()
File "C:\GIT\XDM\xdm\init.py", line 117, in postDB
common.UPDATER = CoreUpdater()
File "C:\GIT\XDM\xdm\updater.py", line 59, in init
self.updater = GitUpdateManager()
File "C:\GIT\XDM\xdm\updater.py", line 286, in init
from lib.pbs import git
File "C:\GIT\XDM\lib\pbs.py", line 575, in getattr
return self.env[name]
File "C:\GIT\XDM\lib\pbs.py", line 527, in missing
return Command._create(k)
File "C:\GIT\XDM\lib\pbs.py", line 265, in _create
if not path: raise CommandNotFound(program)
lib.pbs.CommandNotFound: git

Apostrophe in Game Name

If the game has an apostrophe in it's name, XDM is not able to find a release due to the indexers usually replacing the ' with either nothing or a . . Would be nice to identify such releases as well!

Thanks for the good work :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.