poster cleanup

This commit is contained in:
j 2010-08-07 16:11:36 +02:00
parent 03b484c261
commit 38fe412cb5
6 changed files with 75 additions and 29 deletions

View file

@ -15,6 +15,11 @@ def ids(request):
if 'imdb' in request.GET: if 'imdb' in request.GET:
imdb_id = request.GET['imdb'] imdb_id = request.GET['imdb']
movie = models.getMovieIdByImdbId(imdb_id) movie = models.getMovieIdByImdbId(imdb_id)
elif 'oxdb' in request.GET:
try:
movie = models.MovieId.objects.get(oxdb_id=request.GET['oxdb'])
except models.MovieId.DoesNotExist:
pass
if 'criterion' in request.GET: if 'criterion' in request.GET:
criterion_id = request.GET['criterion'] criterion_id = request.GET['criterion']
movie = models.MovieId.objects.get(criterion_id=criterion_id) movie = models.MovieId.objects.get(criterion_id=criterion_id)

View file

@ -18,7 +18,7 @@ from oxdata.lookup.models import MovieId
def getPosters(movie_id): def getPosters(movie_id):
getPosterUrls(movie_id) getPosterUrls(movie_id)
posters = {} posters = {}
for p in PosterCache.objects.all().filter(movie_id=movie_id).order_by('id'): for p in PosterCache.objects.all().filter(movie_id=movie_id, failed=False).order_by('id'):
if p.site not in posters: if p.site not in posters:
posters[p.site] = [] posters[p.site] = []
poster = p.get() poster = p.get()
@ -32,8 +32,30 @@ def getPosters(movie_id):
for p in posters.keys(): for p in posters.keys():
if not posters[p]: if not posters[p]:
del posters[p] del posters[p]
poster = Poster.objects.filter(movie_id=movie_id).exclude(poster='')
if poster.count() > 0:
posters['local'] = [p.poster.url]
return posters return posters
def getMovieStills(movie_id):
getPosterUrls(movie_id)
stills = {}
for p in PosterCache.objects.all().filter(movie_id=movie_id, failed=False).order_by('id'):
if p.site not in stills:
stills[p.site] = []
still = p.get()
if still:
pjson = {}
pjson['url'] = still._get_url()
pjson['width'] = still.width
pjson['height'] = still.height
if still.width > still.height:
stills[p.site].append(pjson)
for p in stills.keys():
if not stills[p]:
del stills[p]
return stills
def poster_path(url, filename): def poster_path(url, filename):
url_hash = hashlib.sha1(url).hexdigest() url_hash = hashlib.sha1(url).hexdigest()
ext = 'jpg' ext = 'jpg'
@ -76,23 +98,12 @@ class PosterCache(models.Model):
self.save() self.save()
return self.image return self.image
class Poster(models.Model): class Poster(models.Model):
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True) modified = models.DateTimeField(auto_now=True)
movie_id = models.ForeignKey(MovieId, related_name='poster') movie_id = models.ForeignKey(MovieId, related_name='poster')
poster = models.ForeignKey(PosterCache, default=None, blank=True) poster = models.ImageField(max_length=255, upload_to=lambda i, f: poster_path('upload/%s' % i.id, f))
upload = models.ImageField(max_length=255, upload_to=lambda i, f: poster_path('upload/%s' % i.id, f))
oxdb = models.ImageField(max_length=255, upload_to=lambda i, f: poster_path('oxdb/%s' % i.id, f))
def get(self):
if self.image:
return self.image
if self.poster:
return self.poster.get()
#FIXME: select poster
return None
def getPosterUrls(m): def getPosterUrls(m):
def addPoster(url, site, site_id): def addPoster(url, site, site_id):

View file

@ -1,7 +1,7 @@
from django.conf.urls.defaults import * from django.conf.urls.defaults import *
urlpatterns = patterns('oxdata.poster.views', urlpatterns = patterns('oxdata.poster.views',
(r'^$', 'poster'), (r'^$', 'poster_json'),
(r'^json$', 'poster_json'), (r'^.html$', 'poster_html'),
) )

View file

@ -12,27 +12,22 @@ from oxdata.lookup.models import MovieId
import models import models
def poster(request): def get_movie_id(request):
#FIXME: get MovieId from provided id and redirect to poster url
imdbId = None
oxdbId = None
if 'imdb' in request.GET: if 'imdb' in request.GET:
imdbId = request.GET['imdb'] imdbId = request.GET['imdb']
movie_id = MovieId.objects.get(imdb_id=imdbId) movie_id = MovieId.objects.get(imdb_id=imdbId)
elif 'oxdb' in request.GET: elif 'oxdb' in request.GET:
oxdbId = request.GET['oxdb'] oxdbId = request.GET['oxdb']
movie_id = MovieId.objects.get(oxdb_id=oxdbId) movie_id = MovieId.objects.get(oxdb_id=oxdbId)
context = RequestContext(request, {'imdb': imdbId, 'oxdb': oxdbId}) return movie_id
return render_to_response('poster.html', context)
def poster_json(request): def poster(request):
#FIXME: get MovieId from provided id and redirect to poster url movie_id = get_movie_id(request)
if 'imdb' in request.GET:
imdbId = request.GET['imdb']
movie_id = MovieId.objects.get(imdb_id=imdbId)
elif 'oxdb' in request.GET:
oxdbId = request.GET['oxdb']
movie_id = MovieId.objects.get(oxdb_id=oxdbId)
json = models.getPosters(movie_id) json = models.getPosters(movie_id)
return render_to_json_response(json) return render_to_json_response(json)
def still(request):
movie_id = get_movie_id(request)
json = models.getMovieStills(movie_id)
return render_to_json_response(json)

View file

@ -1 +1,35 @@
<pre>
oxdata
public services:
lookup ids:
/id/?imdb=0297884
/id/?wikipedia=Far_from_Heaven
{
"wikipedia_id": "Far_from_Heaven",
"impawards_id": "2002/far_from_heaven",
"title": "Far from Heaven",
"directors": [
"Todd Haynes"
],
"imdb_id": "0297884",
"oxdb_id": "0x0db82dc4d1cd4a118e7b87b718749030a946f4be",
"year": 2002
}
get posters:
/poster/?imdb=0297884
/poster/?wikipedia=Far_from_Heaven
{
"sitename": [
{
"url": "/url/to/poster",
"width: 123,
"height": 123
}
],
}

View file

@ -8,6 +8,7 @@ admin.autodiscover()
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^$', 'oxdata.views.index'), (r'^$', 'oxdata.views.index'),
(r'^poster/', include('oxdata.poster.urls')), (r'^poster/', include('oxdata.poster.urls')),
(r'^still/$', 'oxdata.poster.views.still'),
(r'^id/', include('oxdata.lookup.urls')), (r'^id/', include('oxdata.lookup.urls')),
# Uncomment the next line to enable the admin: # Uncomment the next line to enable the admin: