find, posters, typos
This commit is contained in:
parent
7fc52f5076
commit
1d38283276
2 changed files with 35 additions and 17 deletions
|
@ -11,9 +11,12 @@ def find(info):
|
||||||
q = Imdb.objects.all()
|
q = Imdb.objects.all()
|
||||||
for key in Imdb.keys:
|
for key in Imdb.keys:
|
||||||
if key in info and info[key]:
|
if key in info and info[key]:
|
||||||
fkey = '%s_iexact'
|
if isinstance(info[key], basestring):
|
||||||
|
fkey = '%s__iexact'%key
|
||||||
|
else:
|
||||||
|
fkey = key
|
||||||
if isinstance(info[key], list):
|
if isinstance(info[key], list):
|
||||||
q = q.filter(**{fkey: '\n'.join(info[key])})
|
q = q.filter(**{fkey: '\n'.join(info[key]) + '\n'})
|
||||||
else:
|
else:
|
||||||
q = q.filter(**{fkey:info[key]})
|
q = q.filter(**{fkey:info[key]})
|
||||||
if q.count() == 1:
|
if q.count() == 1:
|
||||||
|
@ -27,7 +30,7 @@ class Imdb(models.Model):
|
||||||
imdb = models.CharField(max_length=7, unique=True)
|
imdb = models.CharField(max_length=7, unique=True)
|
||||||
title = models.CharField(max_length=1000, blank=True, default='')
|
title = models.CharField(max_length=1000, blank=True, default='')
|
||||||
year = models.CharField(max_length=4, blank=True, default='')
|
year = models.CharField(max_length=4, blank=True, default='')
|
||||||
director = models.CharField(max_length=1000, blank=True, default='')
|
director = models.CharField(max_length=9000, blank=True, default='')
|
||||||
|
|
||||||
season = models.IntegerField(blank=True, null=True)
|
season = models.IntegerField(blank=True, null=True)
|
||||||
episode = models.IntegerField(blank=True, null=True)
|
episode = models.IntegerField(blank=True, null=True)
|
||||||
|
@ -59,6 +62,10 @@ class Imdb(models.Model):
|
||||||
if isinstance(value, list):
|
if isinstance(value, list):
|
||||||
value = '\n'.join(value) + '\n'
|
value = '\n'.join(value) + '\n'
|
||||||
setattr(self, key, value)
|
setattr(self, key, value)
|
||||||
|
if self.season < 0:
|
||||||
|
self.season = None
|
||||||
|
if self.episode < 0:
|
||||||
|
self.episode = None
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
def json(self):
|
def json(self):
|
||||||
|
@ -67,7 +74,7 @@ class Imdb(models.Model):
|
||||||
for key in self.keys:
|
for key in self.keys:
|
||||||
j[key] = getattr(self, key)
|
j[key] = getattr(self, key)
|
||||||
for key in ('director', 'episodeDirector'):
|
for key in ('director', 'episodeDirector'):
|
||||||
if j[key].srip():
|
if j[key].strip():
|
||||||
j[key] = j[key].strip().split('\n')
|
j[key] = j[key].strip().split('\n')
|
||||||
else:
|
else:
|
||||||
del j[key]
|
del j[key]
|
||||||
|
|
|
@ -11,10 +11,15 @@ import ox.web.imdb
|
||||||
from ox.utils import json
|
from ox.utils import json
|
||||||
|
|
||||||
from api.actions import actions
|
from api.actions import actions
|
||||||
|
from poster.models import getPosters
|
||||||
|
from lookup.models import getMovieIdByImdbId
|
||||||
import models
|
import models
|
||||||
|
|
||||||
|
|
||||||
|
def posters(request, imdbId):
|
||||||
|
movie_id = getMovieIdByImdbId(imdb_id=imdbId)
|
||||||
|
return getPosters(movie_id, request.build_absolute_uri('/'))
|
||||||
|
|
||||||
def getId(request):
|
def getId(request):
|
||||||
data = json.loads(request.POST['data'])
|
data = json.loads(request.POST['data'])
|
||||||
response = json_response()
|
response = json_response()
|
||||||
|
@ -32,6 +37,9 @@ def getData(request):
|
||||||
id = data['id']
|
id = data['id']
|
||||||
if len(id) == 7:
|
if len(id) == 7:
|
||||||
data = ox.web.imdb.Imdb(id)
|
data = ox.web.imdb.Imdb(id)
|
||||||
|
i, created = models.Imdb.objects.get_or_create(imdb=id)
|
||||||
|
if created:
|
||||||
|
i.update()
|
||||||
#FIXME: all this should be in ox.web.imdb.Imdb
|
#FIXME: all this should be in ox.web.imdb.Imdb
|
||||||
for key in ('directors', 'writers', 'editors', 'producers',
|
for key in ('directors', 'writers', 'editors', 'producers',
|
||||||
'cinematographers', 'languages', 'genres', 'keywords',
|
'cinematographers', 'languages', 'genres', 'keywords',
|
||||||
|
@ -51,7 +59,6 @@ def getData(request):
|
||||||
data['cast'] = [data['cast']]
|
data['cast'] = [data['cast']]
|
||||||
data['actor'] = [c[0] for c in data['cast']]
|
data['actor'] = [c[0] for c in data['cast']]
|
||||||
data['cast'] = map(lambda x: {'actor': x[0], 'character': x[1]}, data['cast'])
|
data['cast'] = map(lambda x: {'actor': x[0], 'character': x[1]}, data['cast'])
|
||||||
if 'trivia' in data:
|
|
||||||
def fix_links(t):
|
def fix_links(t):
|
||||||
def fix_names(m):
|
def fix_names(m):
|
||||||
return '<a href="/name=%s">%s</a>' % (
|
return '<a href="/name=%s">%s</a>' % (
|
||||||
|
@ -64,7 +71,10 @@ def getData(request):
|
||||||
)
|
)
|
||||||
t = re.sub('<a href="(/title/.*?/)">(.*?)</a>', fix_titles, t)
|
t = re.sub('<a href="(/title/.*?/)">(.*?)</a>', fix_titles, t)
|
||||||
return t
|
return t
|
||||||
|
if 'trivia' in data:
|
||||||
data['trivia'] = [fix_links(t) for t in data['trivia']]
|
data['trivia'] = [fix_links(t) for t in data['trivia']]
|
||||||
|
if 'summary' in data:
|
||||||
|
data['summary'] = fix_links(data['summary'])
|
||||||
if 'aspectratio' in data:
|
if 'aspectratio' in data:
|
||||||
data['aspectRatio'] = data.pop('aspectratio')
|
data['aspectRatio'] = data.pop('aspectratio')
|
||||||
|
|
||||||
|
@ -81,6 +91,7 @@ def getData(request):
|
||||||
if not data['reviews']:
|
if not data['reviews']:
|
||||||
del data['reviews']
|
del data['reviews']
|
||||||
|
|
||||||
|
data['posters'] = posters(request, id)
|
||||||
response['data'] = data
|
response['data'] = data
|
||||||
else:
|
else:
|
||||||
response['status'] = {'text':'not found', 'code': 404}
|
response['status'] = {'text':'not found', 'code': 404}
|
||||||
|
|
Loading…
Reference in a new issue