def reAdd(self, id, **data): """ Re-add movie and force search """ movie = Db.query(Movie).filter_by(id=id).one() if data.get("failed"): for history in movie.history: if history.status == u"snatched": history.status = u"ignore" Db.flush() for x in movie.queue: if x.completed == True: x.completed = False Db.flush() break # set status movie.status = u"want" Db.flush() # gogo find nzb for added movie via Cron self.cron.get("yarr").forceCheck(id) self.searchers.get("etaQueue").put({"id": id}) self.flash.add("movie-" + str(movie.id), '"%s" re-added.' % (movie.name)) return redirect(url(controller="movie", action="index"))
def search(self, **data): """ Search for added movie. Add if only 1 is found """ moviename = data.get("moviename") movienr = data.get("movienr") quality = data.get("quality") year = data.get("year") if data.get("add"): results = cherrypy.session.get("searchresults") if not results: log.error("Researching for results..") results = self.searchers.get("movie").find(moviename) result = results[int(movienr)] if year: result.year = year if result.year == "None" or not result.year: return self.render({"error": "year"}) else: self._addMovie(result, quality) return redirect(cherrypy.request.headers.get("referer")) else: results = self.searchers.get("movie").find(moviename) cherrypy.session["searchresults"] = results return self.render({"moviename": moviename, "results": results, "quality": quality})
def save(self, **data): ''' Save all config settings ''' config = cherrypy.config.get('config') # catch checkboxes bools = filter(lambda s: not data.get(s), [ 'global.launchbrowser', 'global.updater', 'XBMC.enabled', 'XBMC.onSnatch', 'NMJ.enabled', 'PLEX.enabled', 'PROWL.enabled', 'PROWL.onSnatch', 'GROWL.enabled', 'GROWL.onSnatch', 'Notifo.enabled', 'Notifo.onSnatch', 'NMA.enable', 'NMA.onSnatch', 'Meta.enabled', 'MovieETA.enabled', 'Renamer.enabled', 'Renamer.trailerQuality', 'Renamer.cleanup', 'Torrents.enabled', 'NZB.enabled', 'NZBMatrix.enabled', 'NZBMatrix.english', 'NZBMatrix.ssl', 'NZBsRUS.enabled', 'newzbin.enabled', 'NZBsorg.enabled', 'newznab.enabled', 'Subtitles.enabled', 'Subtitles.addLanguage', 'MovieRSS.enabled', ] ) data.update(data.fromkeys(bools, False)) # Do quality order order = data.get('Quality.order').split(',') for id in order: qo = Db.query(QualityTemplate).filter_by(id = int(id)).one() qo.order = order.index(id) Db.flush() del data['Quality.order'] # Save templates if data.get('Quality.templates'): templates = json.loads(data.get('Quality.templates')) Qualities().saveTemplates(templates) del data['Quality.templates'] # Save post data for name in data: section = name.split('.')[0] var = name.split('.')[1] config.set(section, var, data[name]) # Change cron interval self.cron.get('yarr').setInterval(config.get('Intervals', 'search')) config.save() self.flash.add('config', 'Settings successfully saved.') return redirect(cherrypy.request.headers.get('referer'))
def search(self, **data): ''' Search for added movie. Add if only 1 is found ''' moviename = data.get('moviename') movienr = data.get('movienr') quality = data.get('quality') year = data.get('year') if data.get('add'): results = cherrypy.session.get('searchresults') if not results: log.error('Researching for results..') results = self.searchers.get('movie').find(moviename) result = results[int(movienr)] if year: result.year = year if result.year == 'None' or not result.year: return self.render({'error': 'year'}) else: self._addMovie(result, quality) return redirect(cherrypy.request.headers.get('referer')) else: results = self.searchers.get('movie').find(moviename) cherrypy.session['searchresults'] = results return self.render({'moviename':moviename, 'results': results, 'quality':quality})
def search(self, **data): ''' Search for added movie. Add if only 1 is found ''' moviename = data.get('moviename') movienr = data.get('movienr') quality = data.get('quality') year = data.get('year') if data.get('add'): results = cherrypy.session.get('searchresults') if not results: log.error('Researching for results..') results = self.searchers.get('movie').find(moviename) result = results[int(movienr)] if year: result.year = year if result.year == 'None' or not result.year: return self.render({'error': 'year'}) else: self._addMovie(result, quality) return redirect(cherrypy.request.headers.get('referer')) else: results = self.searchers.get('movie').find(moviename) cherrypy.session['searchresults'] = results return self.render({ 'moviename': moviename, 'results': results, 'quality': quality })
def reAdd(self, id, **data): ''' Re-add movie and force search ''' movie = Db.query(Movie).filter_by(id = id).one() if data.get('failed'): for history in movie.history: if history.status == u'snatched': history.status = u'ignore' Db.flush() for x in movie.queue: if x.completed == True: x.completed = False Db.flush() break #set status movie.status = u'want' Db.flush() #gogo find nzb for added movie via Cron self.cron.get('yarr').forceCheck(id) self.searchers.get('etaQueue').put({'id':id}) self.flash.add('movie-' + str(movie.id), '"%s" re-added.' % (movie.name)) return redirect(url(controller = 'movie', action = 'index'))
def reAdd(self, id, **data): ''' Re-add movie and force search ''' movie = Db.query(Movie).filter_by(id=id).one() if data.get('failed'): for history in movie.history: if history.status == u'snatched': history.status = u'ignore' Db.flush() for x in movie.queue: if x.completed == True: x.completed = False Db.flush() break #set status movie.status = u'want' Db.flush() #gogo find nzb for added movie via Cron self.cron.get('yarr').forceCheck(id) self.searchers.get('etaQueue').put({'id': id}) self.flash.add('movie-' + str(movie.id), '"%s" re-added.' % (movie.name)) return redirect(url(controller='movie', action='index'))
def clear_downloaded(self): """Clear downloaded movies.""" qMovie = Db.query(Movie) downloaded = qMovie.filter_by(status = u'downloaded').all() for movie in downloaded: movie.status = u'deleted' Db.flush() return redirect(url(controller = 'movie', action = 'index'))
def force(self): ''' Force the cron to start ''' self.cron.get('yarr').forceCheck() return redirect(cherrypy.request.headers.get('referer'))
def clear_downloaded(self): """Clear downloaded movies.""" qMovie = Db.query(Movie) downloaded = qMovie.filter_by(status=u"downloaded").all() for movie in downloaded: movie.status = u"deleted" Db.flush() return redirect(url(controller="movie", action="index"))
def clear_downloaded(self): """Clear downloaded movies.""" qMovie = Db.query(Movie) downloaded = qMovie.filter_by(status=u'downloaded').all() for movie in downloaded: movie.status = u'deleted' Db.flush() return redirect(url(controller='movie', action='index'))
def twitterReqAuth(self): twitter = Twitter() referer = cherrypy.request.headers.get('referer') auth_url = twitter.get_authorization(referer) if not auth_url: return ('Error making an oauth connection to Twitter. Check your ' 'system time? See the logs for a more detailed error.') return redirect(auth_url)
def save(self, **data): """ Save all config settings """ config = cherrypy.config.get("config") # catch checkboxes for bool in [ "XBMC.enabled", "Meta.enabled", "Renamer.enabled", "Renamer.trailerQuality", "Renamer.cleanup", "global.launchbrowser", "global.updater", "Torrents.enabled", "NZB.enabled", "NZBMatrix.enabled", "NZBsorg.enabled", "newznab.enabled", "Newzbin.enabled" "Subtitles.enabled", "Subtitles.addLanguage", ]: if not data.get(bool): data[bool] = False # Do quality order order = data.get("Quality.order").split(",") for id in order: qo = Db.query(QualityTemplate).filter_by(id=int(id)).one() qo.order = order.index(id) Db.flush() del data["Quality.order"] # Save templates if data.get("Quality.templates"): templates = json.loads(data.get("Quality.templates")) Qualities().saveTemplates(templates) del data["Quality.templates"] # Save post data for name in data: section = name.split(".")[0] var = name.split(".")[1] config.set(section, var, data[name]) # Change cron interval self.cron.get("yarr").setInterval(config.get("Intervals", "search")) config.save() self.flash.add("config", "Settings successfully saved.") return redirect(cherrypy.request.headers.get("referer"))
def downloaded(self, id): ''' Mark movie as downloaded ''' movie = Db.query(Movie).filter_by(id = id).one() #set status movie.status = u'downloaded' Db.flush() self.flash.add('movie-' + str(movie.id), '"%s" marked as downloaded.' % (movie.name)) return redirect(url(controller = 'movie', action = 'index'))
def downloaded(self, id): """ Mark movie as downloaded """ movie = Db.query(Movie).filter_by(id=id).one() # set status movie.status = u"downloaded" Db.flush() self.flash.add("movie-" + str(movie.id), '"%s" marked as downloaded.' % (movie.name)) return redirect(url(controller="movie", action="index"))
def index(self): """ Show all wanted, snatched, downloaded movies """ if cherrypy.request.path_info == "/": return redirect("movie/") qMovie = Db.query(Movie) movies = qMovie.order_by(Movie.name).filter(or_(Movie.status == u"want", Movie.status == u"waiting")).all() snatched = qMovie.order_by(desc(Movie.dateChanged), Movie.name).filter_by(status=u"snatched").all() downloaded = qMovie.order_by(desc(Movie.dateChanged), Movie.name).filter_by(status=u"downloaded").all() return self.render({"movies": movies, "snatched": snatched, "downloaded": downloaded})
def downloaded(self, id): ''' Mark movie as downloaded ''' movie = Db.query(Movie).filter_by(id=id).one() #set status movie.status = u'downloaded' Db.flush() self.flash.add('movie-' + str(movie.id), '"%s" marked as downloaded.' % (movie.name)) return redirect(url(controller='movie', action='index'))
def index(self): ''' Show all wanted, snatched, downloaded movies ''' if cherrypy.request.path_info == '/': return redirect('movie/') qMovie = Db.query(Movie) movies = qMovie.order_by(Movie.name).filter(or_(Movie.status == u'want', Movie.status == u'waiting')).all() snatched = qMovie.order_by(desc(Movie.dateChanged), Movie.name).filter_by(status = u'snatched').all() downloaded = qMovie.order_by(desc(Movie.dateChanged), Movie.name).filter_by(status = u'downloaded').all() return self.render({'movies': movies, 'snatched':snatched, 'downloaded':downloaded})
def delete(self, id): """ Mark movie as deleted """ movie = Db.query(Movie).filter_by(id=id).one() previousStatus = movie.status # set status movie.status = u"deleted" Db.flush() if previousStatus == "downloaded": self.flash.add("movie-" + str(movie.id), '"%s" deleted.' % (movie.name)) return redirect(url(controller="movie", action="index"))
def delete(self, id): ''' Mark movie as deleted ''' movie = Db.query(Movie).filter_by(id = id).one() previousStatus = movie.status #set status movie.status = u'deleted' Db.flush() if previousStatus == 'downloaded': self.flash.add('movie-' + str(movie.id), '"%s" deleted.' % (movie.name)) return redirect(url(controller = 'movie', action = 'index'))
def delete(self, id): ''' Mark movie as deleted ''' movie = Db.query(Movie).filter_by(id=id).one() previousStatus = movie.status #set status movie.status = u'deleted' Db.flush() if previousStatus == 'downloaded': self.flash.add('movie-' + str(movie.id), '"%s" deleted.' % (movie.name)) return redirect(url(controller='movie', action='index'))
def save(self, **data): ''' Save all config settings ''' config = cherrypy.config.get('config') # catch checkboxes for bool in [ 'XBMC.enabled', 'Meta.enabled', 'Renamer.enabled', 'Renamer.trailerQuality', 'Renamer.cleanup', 'global.launchbrowser', 'global.updater', 'Torrents.enabled', 'NZB.enabled', 'NZBMatrix.enabled', 'NZBsorg.enabled', 'newznab.enabled', 'Subtitles.enabled', 'Subtitles.addLanguage' ]: if not data.get(bool): data[bool] = False # Do quality order order = data.get('Quality.order').split(',') for id in order: qo = Db.query(QualityTemplate).filter_by(id = int(id)).one() qo.order = order.index(id) Db.flush() del data['Quality.order'] # Save templates if data.get('Quality.templates'): templates = json.loads(data.get('Quality.templates')) Qualities().saveTemplates(templates) del data['Quality.templates'] # Save post data for name in data: section = name.split('.')[0] var = name.split('.')[1] config.set(section, var, data[name]) # Change cron interval self.cron.get('yarr').setInterval(config.get('Intervals', 'search')) config.save() self.flash.add('config', 'Settings successfully saved.') return redirect(cherrypy.request.headers.get('referer'))
def clear(self): logdir = self.logDir() logfile = self.logFile() for root, subfiles, filenames in os.walk(logdir): log.debug(subfiles) for filename in filenames: file = os.path.join(root, filename) if file == logfile: with open(logfile, 'w') as f: f.write('') else: os.remove(file) return redirect(url(controller = 'log', action = 'index'))
def clear(self): logdir = self.logDir() logfile = self.logFile() for root, subfiles, filenames in os.walk(logdir): log.debug(subfiles) for filename in filenames: file = os.path.join(root, filename) if file == logfile: with open(logfile, 'w') as f: f.write('') else: os.remove(file) return redirect(url(controller='log', action='index'))
def reAdd(self, id): ''' Re-add movie and force search ''' movie = Db.query(Movie).filter_by(id = id).one() for x in movie.queue: x.completed = False Db.flush() #set status movie.status = u'want' Db.flush() #gogo find nzb for added movie via Cron self.cron.get('yarr').forceCheck(id) self.searchers.get('etaQueue').put({'id':id}) self.flash.add('movie-' + str(movie.id), '"%s" re-added.' % (movie.name)) return redirect(url(controller = 'movie', action = 'index'))
def index(self): ''' Show all wanted, snatched, downloaded movies ''' if cherrypy.request.path_info == '/': return redirect('movie/') qMovie = Db.query(Movie) movies = qMovie.order_by(Movie.name).filter( or_(Movie.status == u'want', Movie.status == u'waiting')).all() snatched = qMovie.order_by( desc(Movie.dateChanged), Movie.name).filter_by(status=u'snatched').all() downloaded = qMovie.order_by( desc(Movie.dateChanged), Movie.name).filter_by(status=u'downloaded').all() return self.render({ 'movies': movies, 'snatched': snatched, 'downloaded': downloaded })
def renewEta(self): self.cron.get('eta').all() return redirect(url(controller='feed', action='index'))
def stop(self): self.cron.get('yarr').stopCheck() return redirect(cherrypy.request.headers.get('referer'))
def force(self): self.cron.get('yarr').forceCheck() return redirect(cherrypy.request.headers.get('referer'))
def save(self, **data): """ Save all config settings """ config = cherrypy.config.get("config") # catch checkboxes bools = filter( lambda s: not data.get(s), [ "global.launchbrowser", "global.updater", "XBMC.enabled", "XBMC.onSnatch", "XBMC.useWebAPIExistingCheck", "NMJ.enabled", "PLEX.enabled", "PROWL.enabled", "PROWL.onSnatch", "GROWL.enabled", "GROWL.onSnatch", "Notifo.enabled", "Notifo.onSnatch", "SNS.enabled", "SNS.onSnatch", "Boxcar.enabled", "Boxcar.onSnatch", "NMA.enable", "NMA.onSnatch", "NMWP.enable", "NMWP.onSnatch", "Twitter.enabled", "Twitter.onSnatch", "Trakt.notification_enabled", "Trakt.watchlist_remove", "Trakt.watchlist_enabled", "Trakt.dontaddcollection", "Meta.enabled", "MovieETA.enabled", "Renamer.enabled", "Renamer.trailerQuality", "Renamer.cleanup", "Torrents.enabled", "NZB.enabled", "NZBMatrix.enabled", "NZBMatrix.english", "NZBMatrix.ssl", "NZBsRUS.enabled", "newzbin.enabled", "NZBsorg.enabled", "newznab.enabled", "x264.enabled", "Subtitles.enabled", "Subtitles.addLanguage", "MovieRSS.enabled", "KinepolisRSS.enabled", "IMDBWatchlist.enabled", ], ) data.update(data.fromkeys(bools, False)) # Do quality order order = data.get("Quality.order").split(",") for id in order: qo = Db.query(QualityTemplate).filter_by(id=int(id)).one() qo.order = order.index(id) Db.flush() del data["Quality.order"] # Save templates if data.get("Quality.templates"): templates = json.loads(data.get("Quality.templates")) Qualities().saveTemplates(templates) del data["Quality.templates"] # Save post data for name in data: section = name.split(".")[0] var = name.split(".")[1] config.set(section, var, data[name]) # Change cron interval self.cron.get("yarr").setInterval(config.get("Intervals", "search")) config.save() self.flash.add("config", "Settings successfully saved.") return redirect(cherrypy.request.headers.get("referer"))
def twitterAuth(self, oauth_token=None, oauth_verifier=None, **params): twitter = Twitter() twitter.get_credentials(oauth_verifier) return redirect('../')
def twitterReqAuth(self): twitter = Twitter() referer = cherrypy.request.headers.get('referer') auth_url = twitter.get_authorization(referer) return redirect(auth_url)
def checkForUpdate(self): updater = cherrypy.config.get('updater') updater.checkForUpdate() return redirect(cherrypy.request.headers.get('referer'))
def renewEta(self): self.cron.get('eta').all() return redirect(url(controller = 'feed', action = 'index'))
def save(self, **data): ''' Save all config settings ''' config = cherrypy.config.get('config') # catch checkboxes bools = filter(lambda s: not data.get(s), [ 'global.launchbrowser', 'global.updater', 'XBMC.enabled', 'XBMC.onSnatch', 'NMJ.enabled', 'PLEX.enabled', 'PROWL.enabled', 'PROWL.onSnatch', 'GROWL.enabled', 'GROWL.onSnatch', 'Notifo.enabled', 'Notifo.onSnatch', 'Boxcar.enabled', 'Boxcar.onSnatch', 'NMA.enable', 'NMA.onSnatch', 'Twitter.enabled', 'Twitter.onSnatch', 'Trakt.notification_enabled', 'Trakt.watchlist_remove', 'Trakt.watchlist_enabled', 'Trakt.dontaddcollection', 'Meta.enabled', 'MovieETA.enabled', 'Renamer.enabled', 'Renamer.trailerQuality', 'Renamer.cleanup', 'Torrents.enabled', 'NZB.enabled', 'NZBMatrix.enabled', 'NZBMatrix.english', 'NZBMatrix.ssl', 'NZBsRUS.enabled', 'newzbin.enabled', 'NZBsorg.enabled', 'newznab.enabled', 'x264.enabled', 'Subtitles.enabled', 'Subtitles.addLanguage', 'MovieRSS.enabled', 'KinepolisRSS.enabled', ]) data.update(data.fromkeys(bools, False)) # Do quality order order = data.get('Quality.order').split(',') for id in order: qo = Db.query(QualityTemplate).filter_by(id=int(id)).one() qo.order = order.index(id) Db.flush() del data['Quality.order'] # Save templates if data.get('Quality.templates'): templates = json.loads(data.get('Quality.templates')) Qualities().saveTemplates(templates) del data['Quality.templates'] # Save post data for name in data: section = name.split('.')[0] var = name.split('.')[1] config.set(section, var, data[name]) # Change cron interval self.cron.get('yarr').setInterval(config.get('Intervals', 'search')) config.save() self.flash.add('config', 'Settings successfully saved.') return redirect(cherrypy.request.headers.get('referer'))