make systems without imdb work

This commit is contained in:
j 2011-01-28 14:18:38 +05:30
commit 200741445f
10 changed files with 76 additions and 36 deletions

View file

@ -4,6 +4,8 @@ from __future__ import division, with_statement
from django.db import models
from django.contrib.auth.models import User
import ox
import utils

View file

@ -30,7 +30,4 @@ def site_config():
site_config['keys'] = {}
for key in site_config['itemKeys']:
site_config['keys'][key['id']] = key
site_config['_findKeys'] = {}
for key in site_config['findKeys']:
site_config['_findKeys'][key['id']] = key
return site_config

View file

@ -52,7 +52,10 @@ def getPage(request):
name = data
else:
name = data['name']
page = get_object_or_404_json(models.Page, name=name)
page, created = models.Page.objects.get_or_create(name=name)
if created:
page.body = 'Insert text here'
page.save()
response = json_response({'name': page.name, 'body': page.body})
return render_to_json_response(response)
actions.register(getPage)

View file

@ -77,7 +77,8 @@ class File(models.Model):
for key in ('duration', 'size'):
setattr(self, key, self.info.get(key, 0))
if 'video' in self.info and self.info['video']:
if 'video' in self.info and self.info['video'] and \
'width' in self.info['video'][0]:
video = self.info['video'][0]
self.video_codec = video['codec']
self.width = video['width']

View file

@ -6,6 +6,7 @@ from celery.decorators import task
from item.utils import parse_path
from item.models import get_item
from django.conf import settings
import models
@ -55,7 +56,10 @@ def update_files(user, volume, files):
#new oshash, add to database
else:
if not i:
item_info = parse_path(folder)
if settings.USE_IMDB:
item_info = parse_path(folder)
else:
item_info = parse_path(path)
i = get_item(item_info)
file_object = models.File()
file_object.oshash = oshash

View file

@ -6,6 +6,8 @@ from datetime import datetime
import os.path
import subprocess
from glob import glob
import uuid
import unicodedata
from django.db import models
from django.db.models import Sum
@ -76,12 +78,15 @@ def get_item(info):
except Item.DoesNotExist:
item.save()
else:
try:
item = Item.objects.get(itemId=info['itemId'])
except Item.DoesNotExist:
item = Item(itemId=info['itemId'])
qs = Item.objects.filter(find__key='title', find__value=info['title'])
if qs.count() == 1:
item = qs[0]
else:
item = Item()
item.data = {
'title': info['title']
}
item.save()
return item
@ -195,13 +200,20 @@ class Item(models.Model):
def __unicode__(self):
year = self.get('year')
if year:
return u'%s (%s)' % (self.get('title'), self.get('year'))
return self.get('title')
return u'%s (%s)' % (self.get('title', 'Untitled'), self.get('year'))
return self.get('title', u'Untitled')
def get_absolute_url(self):
return '/%s' % self.itemId
def save(self, *args, **kwargs):
if not self.id:
if not self.itemId:
self.itemId = str(uuid.uuid1())
super(Item, self).save(*args, **kwargs)
if not settings.USE_IMDB:
self.itemId = ox.to32(self.id)
self.oxdbId = self.oxdb_id()
if self.poster:
@ -367,6 +379,8 @@ class Item(models.Model):
def oxdb_id(self):
if not settings.USE_IMDB:
return self.itemId
return utils.oxdb_id(self.get('title', ''), self.get('director', []), str(self.get('year', '')),
self.get('season', ''), self.get('episode', ''),
self.get('episode_title', ''), self.get('episode_director', []), self.get('episode_year', ''))
@ -388,7 +402,8 @@ class Item(models.Model):
f.delete()
#FIXME: use site_config
save('title', '\n'.join([self.get('title'), self.get('original_title', '')]))
save('title', u'\n'.join([self.get('title', 'Untitled'),
self.get('original_title', '')]))
for key in self.facet_keys:
if key == 'character':
@ -466,7 +481,7 @@ class Item(models.Model):
if name not in base_keys:
if sort_type == 'title':
value = utils.sort_title(canonicalTitle(self.get(source)))
value = utils.sort_title(canonicalTitle(self.get(source, u'Untitled')))
value = utils.sort_string(value)
set_value(s, name, value)
elif sort_type == 'person':
@ -577,7 +592,11 @@ class Item(models.Model):
'''
def frame(self, position, width=128):
stream = self.streams.filter(profile=settings.VIDEO_PROFILE+'.webm')[0]
stream = self.streams.filter(profile=settings.VIDEO_PROFILE+'.webm')
if stream.count()>0:
stream = stream[0]
else:
return None
path = os.path.join(settings.MEDIA_ROOT, self.path(),
'frames', "%d"%width, "%s.jpg"%position)
if not os.path.exists(path):
@ -739,9 +758,12 @@ class Item(models.Model):
'-l', timeline,
'-p', poster
]
if settings.USE_IMDB and len(self.itemId) == 7:
if settings.USE_IMDB:
if len(self.itemId) == 7:
cmd += ['-i', self.itemId]
cmd += ['-o', self.oxdbId]
else:
cmd += ['-i', self.itemId]
cmd += ['-o', self.oxdbId]
p = subprocess.Popen(cmd)
p.wait()
return posters.keys()

View file

@ -8,6 +8,7 @@ import re
import hashlib
import unicodedata
from django.conf import settings
import ox
import ox.iso
from ox.normalize import normalizeName, normalizeTitle
@ -166,11 +167,13 @@ def parse_path(path):
M/McCarthy, Thomas/The Visitor (2007)
G/Godard, Jean-Luc/Histoire(s) du cinema_ Toutes les histoires (1988)
'''
import ox.web.imdb
search_title = oxdb_title(path, True)
r = {}
r['title'] = oxdb_title(path)
r['director'] = oxdb_directors(path)
if not settings.USE_IMDB:
return r
import ox.web.imdb
search_title = oxdb_title(path, True)
r['directors'] = oxdb_directors(path)
year = ox.findRe(path, '\((\d{4})\)')
if year:
r['year'] = year

View file

@ -51,7 +51,7 @@ def render_poster(id, title, frame, timeline, poster):
else:
pixel = list(poster_image.getpixel((x, y)))
for c in range(3):
pixel[c] = (pixel[c] + poster_color[c]) / 4
pixel[c] = int((pixel[c] + poster_color[c]) / 4)
poster_image.putpixel((x, y), tuple(pixel))
drawText(poster_image, ((poster_width - text_size[0]) / 2, text_top + (text_height - text_size[1]) / 2), text, font_file, font_size, poster_color)
poster_image.save(poster)
@ -60,6 +60,8 @@ def main():
parser = OptionParser()
parser.add_option('-i', '--id', dest='id', help='Pad.ma Id')
parser.add_option('-t', '--title', dest='title', help='Title', default='')
parser.add_option('-d', '--director', dest='director', help='Director', default='')
parser.add_option('-y', '--year', dest='year', help='Year', default='')
parser.add_option('-f', '--frame', dest='frame', help='Poster frame (image file to be read)')
parser.add_option('-l', '--timeline', dest='timeline', help='Timeline (image file to be read)')
parser.add_option('-p', '--poster', dest='poster', help='Poster (image file to be written)')

View file

@ -132,6 +132,7 @@ INSTALLED_APPS = (
'timeline',
'user',
'api',
'urlalias',
)
AUTH_PROFILE_MODULE = 'user.UserProfile'