diff --git a/couchpotato/core/loader.py b/couchpotato/core/loader.py index 0f49700a..8aef89a4 100644 --- a/couchpotato/core/loader.py +++ b/couchpotato/core/loader.py @@ -31,6 +31,13 @@ class Loader(object): if os.path.isdir(path) and provider[:2] != '__': self.paths[provider + '_provider'] = (25, 'couchpotato.core.providers.' + provider, path) + # Add media to loader + media_dir = os.path.join(root, 'couchpotato', 'core', 'media') + for media in os.listdir(media_dir): + path = os.path.join(media_dir, media) + if os.path.isdir(path) and media[:2] != '__': + self.paths[media + '_media'] = (25, 'couchpotato.core.media.' + media, path) + for plugin_type, plugin_tuple in self.paths.iteritems(): priority, module, dir_name = plugin_tuple diff --git a/couchpotato/core/media/__init__.py b/couchpotato/core/media/__init__.py new file mode 100644 index 00000000..2d339e5a --- /dev/null +++ b/couchpotato/core/media/__init__.py @@ -0,0 +1,17 @@ +from couchpotato.core.event import addEvent +from couchpotato.core.logger import CPLog +from couchpotato.core.plugins.base import Plugin + +log = CPLog(__name__) + + +class MediaBase(Plugin): + + identifier = None + + def __init__(self): + + addEvent('media.types', self.getType) + + def getType(self): + return self.identifier diff --git a/couchpotato/core/media/movie/__init__.py b/couchpotato/core/media/movie/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/couchpotato/core/media/movie/_base/__init__.py b/couchpotato/core/media/movie/_base/__init__.py new file mode 100644 index 00000000..4be3b127 --- /dev/null +++ b/couchpotato/core/media/movie/_base/__init__.py @@ -0,0 +1,6 @@ +from .main import MovieBase + +def start(): + return MovieBase() + +config = [] diff --git a/couchpotato/core/plugins/movie/main.py b/couchpotato/core/media/movie/_base/main.py similarity index 98% rename from couchpotato/core/plugins/movie/main.py rename to couchpotato/core/media/movie/_base/main.py index 516ce85f..fc537ef0 100644 --- a/couchpotato/core/plugins/movie/main.py +++ b/couchpotato/core/media/movie/_base/main.py @@ -4,7 +4,7 @@ from couchpotato.core.event import fireEvent, fireEventAsync, addEvent from couchpotato.core.helpers.encoding import toUnicode, simplifyString from couchpotato.core.helpers.variable import getImdb, splitString, tryInt from couchpotato.core.logger import CPLog -from couchpotato.core.plugins.base import Plugin +from couchpotato.core.media import MediaBase from couchpotato.core.settings.model import Library, LibraryTitle, Movie, \ Release from couchpotato.environment import Env @@ -16,7 +16,9 @@ import time log = CPLog(__name__) -class MoviePlugin(Plugin): +class MovieBase(MediaBase): + + identifier = 'movie' default_dict = { 'profile': {'types': {'quality': {}}}, @@ -27,6 +29,8 @@ class MoviePlugin(Plugin): } def __init__(self): + super(MovieBase, self).__init__() + addApiView('movie.search', self.search, docs = { 'desc': 'Search the movie providers for a movie', 'params': { @@ -476,7 +480,7 @@ class MoviePlugin(Plugin): fireEvent('movie.restatus', m.id) movie_dict = m.to_dict(self.default_dict) - fireEventAsync('searcher.single', movie_dict, on_complete = self.createNotifyFront(movie_id)) + fireEventAsync('movie.searcher.single', movie_dict, on_complete = self.createNotifyFront(movie_id)) db.expire_all() return { @@ -574,7 +578,7 @@ class MoviePlugin(Plugin): def onComplete(): db = get_session() movie = db.query(Movie).filter_by(id = movie_id).first() - fireEventAsync('searcher.single', movie.to_dict(self.default_dict), on_complete = self.createNotifyFront(movie_id)) + fireEventAsync('movie.searcher.single', movie.to_dict(self.default_dict), on_complete = self.createNotifyFront(movie_id)) db.expire_all() return onComplete diff --git a/couchpotato/core/plugins/movie/static/list.js b/couchpotato/core/media/movie/_base/static/list.js similarity index 100% rename from couchpotato/core/plugins/movie/static/list.js rename to couchpotato/core/media/movie/_base/static/list.js diff --git a/couchpotato/core/plugins/movie/static/movie.actions.js b/couchpotato/core/media/movie/_base/static/movie.actions.js similarity index 100% rename from couchpotato/core/plugins/movie/static/movie.actions.js rename to couchpotato/core/media/movie/_base/static/movie.actions.js diff --git a/couchpotato/core/plugins/movie/static/movie.css b/couchpotato/core/media/movie/_base/static/movie.css similarity index 100% rename from couchpotato/core/plugins/movie/static/movie.css rename to couchpotato/core/media/movie/_base/static/movie.css diff --git a/couchpotato/core/plugins/movie/static/movie.js b/couchpotato/core/media/movie/_base/static/movie.js similarity index 100% rename from couchpotato/core/plugins/movie/static/movie.js rename to couchpotato/core/media/movie/_base/static/movie.js diff --git a/couchpotato/core/plugins/movie/static/search.css b/couchpotato/core/media/movie/_base/static/search.css similarity index 100% rename from couchpotato/core/plugins/movie/static/search.css rename to couchpotato/core/media/movie/_base/static/search.css diff --git a/couchpotato/core/plugins/movie/static/search.js b/couchpotato/core/media/movie/_base/static/search.js similarity index 100% rename from couchpotato/core/plugins/movie/static/search.js rename to couchpotato/core/media/movie/_base/static/search.js diff --git a/couchpotato/core/plugins/movie/__init__.py b/couchpotato/core/plugins/movie/__init__.py deleted file mode 100644 index 4df29ad8..00000000 --- a/couchpotato/core/plugins/movie/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .main import MoviePlugin - -def start(): - return MoviePlugin() - -config = []