Movie search

Profile Settings
This commit is contained in:
Ruud
2011-03-20 22:12:33 +01:00
parent cc260d3a07
commit 288aa8c0a1
34 changed files with 1408 additions and 178 deletions
@@ -0,0 +1,6 @@
from couchpotato.core.plugins.library.main import LibraryPlugin
def start():
return LibraryPlugin()
config = []
+32
View File
@@ -0,0 +1,32 @@
from couchpotato import get_session
from couchpotato.core.event import addEvent
from couchpotato.core.plugins.base import Plugin
from couchpotato.core.settings.model import Library
class LibraryPlugin(Plugin):
def __init__(self):
addEvent('library.add', self.add)
def add(self, attrs = {}):
db = get_session();
l = db.query(Library).filter_by(identifier = attrs.get('identifier')).first()
if not l:
l = Library(
name = attrs.get('name'),
year = attrs.get('year'),
identifier = attrs.get('identifier'),
description = attrs.get('description')
)
db.add(l)
db.commit()
return l
def update(self, item):
pass
@@ -0,0 +1,6 @@
from couchpotato.core.plugins.movie.main import MoviePlugin
def start():
return MoviePlugin()
config = []
+94
View File
@@ -0,0 +1,94 @@
from couchpotato import get_session
from couchpotato.api import addApiView
from couchpotato.core.event import fireEvent
from couchpotato.core.helpers.request import getParams, jsonified
from couchpotato.core.plugins.base import Plugin
from couchpotato.core.settings.model import Movie, Release, Profile
from couchpotato.environment import Env
from urllib import urlencode
class MoviePlugin(Plugin):
def __init__(self):
addApiView('movie.search', self.search)
addApiView('movie.list', self.list)
addApiView('movie.add', self.add)
def list(self):
a = getParams()
results = get_session().query(Movie).filter(
Movie.releases.any(
Release.status.has(identifier = 'wanted')
)
).all()
movies = []
for movie in results:
temp = {
'id': movie.id,
'name': movie.id,
'releases': [],
}
for release in movie.releases:
temp['releases'].append({
'status': release.status.label,
'quality': release.quality.label
})
movies.append(temp)
return jsonified({
'success': True,
'empty': len(movies) == 0,
'movies': movies,
})
def search(self):
a = getParams()
cache_key = '%s/%s' % (__name__, urlencode(a))
movies = Env.get('cache').get(cache_key)
if not movies:
results = fireEvent('provider.movie.search', q = a.get('q'))
# Combine movie results
movies = []
for r in results:
movies += r
Env.get('cache').set(cache_key, movies, timeout = 10)
return jsonified({
'success': True,
'empty': len(movies) == 0,
'movies': movies,
})
def add(self):
a = getParams()
db = get_session();
library = fireEvent('library.add', attrs = a)
profile = db.query(Profile).filter_by(identifier = a.get('profile_identifier'))
m = db.query(Movie).filter_by(library = library).first()
if not m:
m = Movie(
library = library,
profile = profile,
)
db.add(m)
db.commit()
return jsonified({
'success': True,
'added': True,
'params': a,
})
@@ -1,6 +0,0 @@
from couchpotato.core.plugins.movie_add.main import MovieAdd
def start():
return MovieAdd()
config = []
@@ -1,36 +0,0 @@
from couchpotato.api import addApiView
from couchpotato.core.event import fireEvent
from couchpotato.core.helpers.request import getParams, jsonified
from couchpotato.core.plugins.base import Plugin
class MovieAdd(Plugin):
def __init__(self):
addApiView('movie.add.search', self.search)
addApiView('movie.add.select', self.select)
def search(self):
a = getParams()
results = fireEvent('provider.movie.search', q = a.get('q'))
# Combine movie results
movies = []
for r in results:
movies += r
return jsonified({
'success': True,
'empty': len(movies) == 0,
'movies': movies,
})
def select(self):
a = getParams()
return jsonified({
'success': True,
'added': True,
})
@@ -1,6 +0,0 @@
from couchpotato.core.plugins.movie_list.main import MovieList
def start():
return MovieList()
config = []
@@ -1,41 +0,0 @@
from couchpotato import get_session
from couchpotato.api import addApiView
from couchpotato.core.helpers.request import getParams, jsonified
from couchpotato.core.plugins.base import Plugin
from couchpotato.core.settings.model import Movie, Release
class MovieList(Plugin):
def __init__(self):
addApiView('movie.list', self.list)
def list(self):
a = getParams()
results = get_session().query(Movie).filter(
Movie.releases.any(
Release.status.has(identifier = 'wanted')
)
).all()
movies = []
for movie in results:
temp = {
'id': movie.id,
'name': movie.id,
'releases': [],
}
for release in movie.releases:
temp['releases'].append({
'status': release.status.label,
'quality': release.quality.label
})
movies.append(temp)
return jsonified({
'success': True,
'empty': len(movies) == 0,
'movies': movies,
})
@@ -0,0 +1,6 @@
from couchpotato.core.plugins.profile.main import ProfilePlugin
def start():
return ProfilePlugin()
config = []
+28
View File
@@ -0,0 +1,28 @@
from couchpotato.api import addApiView
from couchpotato.core.event import addEvent
from couchpotato.core.helpers.request import jsonified, getParams
from couchpotato.core.plugins.base import Plugin
class ProfilePlugin(Plugin):
def __init__(self):
addEvent('profile.get', self.get)
addApiView('profile.save', self.save)
addApiView('profile.delete', self.delete)
def get(self, key = ''):
pass
def save(self):
a = getParams()
return jsonified({
'success': True,
'a': a
})
def delete(self):
pass