use modules for additional ids, load virtualven in manage.py

This commit is contained in:
j 2010-08-05 13:47:19 +02:00
commit 03b484c261
7 changed files with 88 additions and 54 deletions

View file

@ -6,12 +6,12 @@ from django.conf import settings
from ox.cache import readUrlUnicode
from ox import findRe
import ox.web.criterion
import ox.web.karagarga
import ox.web.imdb
import ox.web.impawards
import models
from oxdata.poster.models import PosterCache
import modules
def addPoster(m, url, site, site_id):
if PosterCache.objects.all().filter(url=url).count() == 0:
@ -21,15 +21,16 @@ def addPoster(m, url, site, site_id):
def getIds():
for id in ox.web.impawards.getIds():
if models.MovieId.objects.all().filter(impawards_id=id).count() == 0:
print 'impawards', id
print 'impawards', ox.web.impawards.getUrl(id)
data = ox.web.impawards.getData(id)
if data and 'imdbId' in data:
m = models.getMovieIdByImdbId(data['imdbId'])
if not m.impawards_id:
m.impawards_id = id
m.save()
for poster in data['posters']:
addPoster(m, poster, 'impawards.com', m.imdb_id)
if m:
if not m.impawards_id:
m.impawards_id = id
m.save()
for poster in data['posters']:
addPoster(m, poster, 'impawards.com', m.imdb_id)
for id in ox.web.criterion.getIds():
if models.MovieId.objects.all().filter(criterion_id=id).count() == 0:
@ -44,18 +45,5 @@ def getIds():
else:
print data['title'], "no imdbId"
#kg
lastId = models.Karagarga.maxId()
for id in ox.web.karagarga.getIds(lastId):
if models.Karagarga.objects.filter(karagarga_id=id).count() == 0:
print 'kg', id
data = ox.web.karagarga.getData(id)
if data and 'imdbId' in data:
m = models.getMovieIdByImdbId(data['imdbId'])
kg = models.Karagarga()
kg.movie_id = m
kg.karagarga_id = id
kg.save()
for poster in data['posters']:
addPoster(m, poster, 'karagarga.net', kg.karagarga_id)
modules.getIds.run()

View file

@ -6,22 +6,31 @@ import hashlib
from django.db import models
from django.db.models import Q, Max
from django.contrib.auth.models import User
from django.utils import simplejson
import ox
from ox import stripTags
import ox.web.imdb
import ox.web.wikipedia
from ox import stripTags
def getMovieIdByImdbId(imdb_id):
#movies moved in imdb
imdb_id = {
'0377059': '0343663',
'0426560': '0088000',
}.get(imdb_id, imdb_id)
try:
m = MovieId.objects.get(imdb_id=imdb_id)
except MovieId.DoesNotExist:
m = MovieId()
m.imdb_id = imdb_id
m.save()
#m.updateFromImdb()
#check if imdb_id actually exists on imdb
if ox.cache.exists('http://www.imdb.com/title/tt%s/combined'%imdb_id):
m = MovieId()
m.imdb_id = imdb_id
m.save()
m.updateFromImdb()
else:
print imdb_id, "is not a valid id, failed loading movie"
return None
return m
class MovieId(models.Model):
@ -117,13 +126,9 @@ class MovieId(models.Model):
value = getattr(self, key)
if value:
json[key] = value
return simplejson.dumps(json, indent=4)
if 'director' in json:
json['directors'] = json.pop('director').split(', ')
if 'year' in json and json['year']: json['year'] = int(json['year'])
return json
class Karagarga(models.Model):
movie_id = models.ForeignKey(MovieId, related_name='karagarga_ids', default=None)
karagarga_id = models.IntegerField(unique=True)
@classmethod
def maxId(cls):
return cls.objects.aggregate(Max('karagarga_id'))['karagarga_id__max']

15
oxdata/lookup/modules.py Normal file
View file

@ -0,0 +1,15 @@
class IdModules(object):
def __init__(self):
self._registry = {}
def register(self, name, getIds):
if name not in self._registry:
self._registry[name] = getIds
def run(self):
for name in self._registry:
self._registry[name]()
getIds = IdModules()

View file

@ -7,8 +7,20 @@ from django.contrib.auth.models import User
from oxdjango.shortcuts import render_to_json_response
import models
def ids(request):
json = {}
movie = None
if 'imdb' in request.GET:
imdb_id = request.GET['imdb']
movie = models.getMovieIdByImdbId(imdb_id)
if 'criterion' in request.GET:
criterion_id = request.GET['criterion']
movie = models.MovieId.objects.get(criterion_id=criterion_id)
if movie:
movie.updateFromImdb()
json = movie.json()
return render_to_json_response(json)
def urls(request):