def __init__(self): super(Growl, self).__init__() self.growl = None if self.isEnabled(): addEvent("app.load", self.register)
def __init__(self): super(SearcherBase, self).__init__() addEvent('searcher.progress', self.getProgress) addEvent('%s.searcher.progress' % self.getType(), self.getProgress) self.initCron()
def __init__(self): super(Trakt, self).__init__() addApiView('automation.trakt.auth_url', self.getAuthorizationUrl) addApiView('automation.trakt.credentials', self.getCredentials) fireEvent('schedule.interval', 'updater.check', self.refreshToken, hours = 24) addEvent('app.load', self.refreshToken)
def __init__(self): addEvent('scanner.create_file_identifier', self.createStringIdentifier) addEvent('scanner.remove_cptag', self.removeCPTag) addEvent('scanner.scan', self.scan) addEvent('scanner.name_year', self.getReleaseNameYear) addEvent('scanner.partnumber', self.getPartNumber)
def __init__(self): addApiView('downloader.putio.getfrom', self.getFromPutio, docs = { 'desc': 'Allows you to download file from prom Put.io', }) addApiView('downloader.putio.auth_url', self.getAuthorizationUrl) addApiView('downloader.putio.credentials', self.getCredentials) addEvent('putio.download', self.putioDownloader) return super(PutIO, self).__init__()
def __init__(self): addEvent('notify.%s' % self.getName().lower(), self._notify) addApiView(self.testNotifyName(), self.test) # Attach listeners for listener in self.listen_to: if not listener in self.dont_listen_to: addEvent(listener, self.createNotifyHandler(listener))
def __init__(self): addApiView('userscript.get/(.*)/(.*)', self.getUserScript, static = True) addApiView('userscript', self.iFrame) addApiView('userscript.add_via_url', self.getViaUrl) addApiView('userscript.includes', self.getIncludes) addApiView('userscript.bookmark', self.bookmark) addEvent('userscript.get_version', self.getVersion) addEvent('app.test', self.doTest)
def __init__(self): addApiView('suggestion.view', self.suggestView) addApiView('suggestion.ignore', self.ignoreView) def test(): time.sleep(1) self.suggestView() addEvent('app.load', test)
def setup(self): if not self.Env: from whatpotato.environment import Env self.Env = Env self.is_develop = Env.get('dev') from whatpotato.core.event import addEvent addEvent('app.after_shutdown', self.close)
def __init__(self): super(Plex, self).__init__() self.server = PlexServer(self) self.client_protocols = { 'http': PlexClientHTTP(self), 'json': PlexClientJSON(self) } addEvent('renamer.after', self.addToLibrary)
def __init__(self): addApiView('category.save', self.save) addApiView('category.save_order', self.saveOrder) addApiView('category.delete', self.delete) addApiView('category.list', self.allView, docs = { 'desc': 'List all available categories', 'return': {'type': 'object', 'example': """{ 'success': True, 'categories': array, categories }"""} }) addEvent('category.all', self.all)
def __init__(self): if Env.get('desktop'): self.updater = DesktopUpdater() elif os.path.isdir(os.path.join(Env.get('app_dir'), '.git')): git_default = 'git' git_command = self.conf('git_command', default = git_default) git_command = git_command if git_command != git_default and (os.path.isfile(git_command) or re.match('^[a-zA-Z0-9_/\.\-]+$', git_command)) else git_default self.updater = GitUpdater(git_command) else: self.updater = SourceUpdater() addEvent('app.load', self.logVersion, priority = 10000) addEvent('app.load', self.setCrons) addEvent('updater.info', self.info) addApiView('updater.info', self.info, docs = { 'desc': 'Get updater information', 'return': { 'type': 'object', 'example': """{ 'last_check': "last checked for update", 'update_version': "available update version or empty", 'version': current_cp_version }"""} }) addApiView('updater.update', self.doUpdateView) addApiView('updater.check', self.checkView, docs = { 'desc': 'Check for available update', 'return': {'type': 'see updater.info'} }) addEvent('setting.save.updater.enabled.after', self.setCrons)
def __init__(self): addEvent('file.download', self.download) addApiView('file.cache/(.*)', self.showCacheFile, static = True, docs = { 'desc': 'Return a file from the cp_data/cache directory', 'params': { 'filename': {'desc': 'path/filename of the wanted file'} }, 'return': {'type': 'file'} }) fireEvent('schedule.interval', 'file.cleanup', self.cleanup, hours = 24) addEvent('app.test', self.doSubfolderTest)
def __init__(self): addApiView('search', self.search, docs = { 'desc': 'Search the info in providers for a movie', 'params': { 'q': {'desc': 'The (partial) movie name you want to search for'}, 'type': {'desc': 'Search for a specific media type. Leave empty to search all.'}, }, 'return': {'type': 'object', 'example': """{ 'success': True, 'movies': array, 'show': array, etc }"""} }) addEvent('app.load', self.addSingleSearches)
def __init__(self): desktop = Env.get('desktop') desktop.setSettings({ 'base_url': fireEvent('app.base_url', single = True), 'api_url': fireEvent('app.api_url', single = True), 'api': Env.setting('api'), }) # Events from desktop desktop.addEvents({ 'onClose': self.onClose, }) # Events to desktop addEvent('app.after_shutdown', desktop.afterShutdown) addEvent('app.load', desktop.onAppLoad, priority = 110)
def __init__(self): addEvent('schedule.cron', self.cron) addEvent('schedule.interval', self.interval) addEvent('schedule.remove', self.remove) addEvent('schedule.queue', self.queue) self.sched = Sched(misfire_grace_time = 60) self.sched.start() self.started = True
def __init__(self): addEvent('library.title', self.title) addEvent('library.related', self.related) addEvent('library.tree', self.tree) addEvent('library.root', self.root) addApiView('library.query', self.queryView) addApiView('library.related', self.relatedView) addApiView('library.tree', self.treeView)
def __init__(self): addApiView('settings', self.view, docs = { 'desc': 'Return the options and its values of settings.conf. Including the default values and group ordering used on the settings page.', 'return': {'type': 'object', 'example': """{ // objects like in __init__.py of plugin "options": { "moovee" : { "groups" : [{ "description" : "SD movies only", "name" : "#alt.binaries.moovee", "options" : [{ "default" : false, "name" : "enabled", "type" : "enabler" }], "tab" : "providers" }], "name" : "moovee" } }, // object structured like settings.conf "values": { "moovee": { "enabled": false } } }"""} }) addApiView('settings.save', self.saveView, docs = { 'desc': 'Save setting to config file (settings.conf)', 'params': { 'section': {'desc': 'The section name in settings.conf'}, 'name': {'desc': 'The option name'}, 'value': {'desc': 'The value you want to save'}, } }) addEvent('database.setup', self.databaseSetup) self.file = None self.p = None self.log = None
def __init__(self): # Initialize this type super(MovieBase, self).__init__() self.initType() addApiView('movie.add', self.addView, docs = { 'desc': 'Add new movie to the wanted list', 'return': {'type': 'object', 'example': """{ 'success': True, 'movie': object }"""}, 'params': { 'identifier': {'desc': 'IMDB id of the movie your want to add.'}, 'profile_id': {'desc': 'ID of quality profile you want the add the movie in. If empty will use the default profile.'}, 'force_readd': {'desc': 'Force re-add even if movie already in wanted or manage. Default: True'}, 'category_id': {'desc': 'ID of category you want the add the movie in. If empty will use no category.'}, 'title': {'desc': 'Movie title to use for searches. Has to be one of the titles returned by movie.search.'}, } }) addApiView('movie.edit', self.edit, docs = { 'desc': 'Add new movie to the wanted list', 'params': { 'id': {'desc': 'Movie ID(s) you want to edit.', 'type': 'int (comma separated)'}, 'profile_id': {'desc': 'ID of quality profile you want the edit the movie to.'}, 'category_id': {'desc': 'ID of category you want the add the movie in. If empty will use no category.'}, 'default_title': {'desc': 'Movie title to use for searches. Has to be one of the titles returned by movie.search.'}, } }) addEvent('movie.add', self.add) addEvent('movie.update', self.update) addEvent('movie.update_release_dates', self.updateReleaseDate)
def initCron(self): """ Set the searcher cronjob Make sure to reset cronjob after setting has changed """ _type = self.getType() def setCrons(): fireEvent('schedule.cron', '%s.searcher.all' % _type, self.searchAll, day = self.conf('cron_day'), hour = self.conf('cron_hour'), minute = self.conf('cron_minute')) addEvent('app.load', setCrons) addEvent('setting.save.%s_searcher.cron_day.after' % _type, setCrons) addEvent('setting.save.%s_searcher.cron_hour.after' % _type, setCrons) addEvent('setting.save.%s_searcher.cron_minute.after' % _type, setCrons)
def __init__(self): addEvent('app.load', self.setCrons) if not Env.get('dev'): addEvent('app.load', self.addMovies) addEvent('setting.save.automation.hour.after', self.setCrons)
def registerPlugin(self): addEvent('app.do_shutdown', self.doShutdown) addEvent('plugin.running', self.isRunning) self._running = [] # Setup database if self._database: addEvent('database.setup', self.databaseSetup)
def __init__(self): addEvent('profile.all', self.all) addEvent('profile.default', self.default) addApiView('profile.save', self.save) addApiView('profile.save_order', self.saveOrder) addApiView('profile.delete', self.delete) addApiView('profile.list', self.allView, docs = { 'desc': 'List all available profiles', 'return': {'type': 'object', 'example': """{ 'success': True, 'list': array, profiles }"""} }) addEvent('app.initialize', self.fill, priority = 90) addEvent('app.load', self.forceDefaults, priority = 110)
def __init__(self): super(CoreNotifier, self).__init__() addEvent('notify', self.notify) addEvent('notify.frontend', self.frontend) addApiView('notification.markread', self.markAsRead, docs = { 'desc': 'Mark notifications as read', 'params': { 'ids': {'desc': 'Notification id you want to mark as read. All if ids is empty.', 'type': 'int (comma separated)'}, }, }) addApiView('notification.list', self.listView, docs = { 'desc': 'Get list of notifications', 'params': { 'limit_offset': {'desc': 'Limit and offset the notification list. Examples: "50" or "50,30"'}, }, 'return': {'type': 'object', 'example': """{ 'success': True, 'empty': bool, any notification returned or not, 'notifications': array, notifications found, }"""} }) addNonBlockApiView('notification.listener', (self.addListener, self.removeListener)) addApiView('notification.listener', self.listener) fireEvent('schedule.interval', 'core.check_messages', self.checkMessages, hours = 12, single = True) fireEvent('schedule.interval', 'core.clean_messages', self.cleanMessages, seconds = 15, single = True) addEvent('app.load', self.clean) if not Env.get('dev'): addEvent('app.load', self.checkMessages) self.messages = [] self.listeners = [] self.m_lock = threading.Lock()
def addEvent(*args, **kwargs): return addEvent(*args, **kwargs)
def __init__(self): addEvent('download', self._download) addEvent('download.enabled', self._isEnabled) addEvent('download.enabled_protocols', self.getEnabledProtocol) addEvent('download.status', self._getAllDownloadStatus) addEvent('download.remove_failed', self._removeFailed) addEvent('download.pause', self._pause) addEvent('download.process_complete', self._processComplete) addApiView('download.%s.test' % self.getName().lower(), self._test)
def __init__(self): addEvent('clientscript.get_styles', self.getStyles) addEvent('clientscript.get_scripts', self.getScripts) self.makeRelative()
def __init__(self): addEvent('library.query', self.query)
def __init__(self): addEvent('info.search', self.search, priority = 3) addEvent('movie.search', self.search, priority = 3) addEvent('movie.info', self.getInfo, priority = 3) addEvent('movie.info_by_tmdb', self.getInfo) addEvent('app.load', self.config)
def __init__(self): addApiView('media.refresh', self.refresh, docs = { 'desc': 'Refresh a any media type by ID', 'params': { 'id': {'desc': 'Movie, Show, Season or Episode ID(s) you want to refresh.', 'type': 'int (comma separated)'}, } }) addApiView('media.list', self.listView, docs = { 'desc': 'List media', 'params': { 'type': {'type': 'string', 'desc': 'Media type to filter on.'}, 'status': {'type': 'array or csv', 'desc': 'Filter media by status. Example:"active,done"'}, 'release_status': {'type': 'array or csv', 'desc': 'Filter media by status of its releases. Example:"snatched,available"'}, 'limit_offset': {'desc': 'Limit and offset the media list. Examples: "50" or "50,30"'}, 'starts_with': {'desc': 'Starts with these characters. Example: "a" returns all media starting with the letter "a"'}, 'search': {'desc': 'Search media title'}, }, 'return': {'type': 'object', 'example': """{ 'success': True, 'empty': bool, any media returned or not, 'media': array, media found, }"""} }) addApiView('media.get', self.getView, docs = { 'desc': 'Get media by id', 'params': { 'id': {'desc': 'The id of the media'}, } }) addApiView('media.delete', self.deleteView, docs = { 'desc': 'Delete a media from the wanted list', 'params': { 'id': {'desc': 'Media ID(s) you want to delete.', 'type': 'int (comma separated)'}, 'delete_from': {'desc': 'Delete media from this page', 'type': 'string: all (default), wanted, manage'}, } }) addApiView('media.available_chars', self.charView) addEvent('app.load', self.addSingleRefreshView, priority = 100) addEvent('app.load', self.addSingleListView, priority = 100) addEvent('app.load', self.addSingleCharView, priority = 100) addEvent('app.load', self.addSingleDeleteView, priority = 100) addEvent('app.load', self.cleanupFaults) addEvent('media.get', self.get) addEvent('media.with_status', self.withStatus) addEvent('media.with_identifiers', self.withIdentifiers) addEvent('media.list', self.list) addEvent('media.delete', self.delete) addEvent('media.restatus', self.restatus) addEvent('media.tag', self.tag) addEvent('media.untag', self.unTag)