54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
# -*- coding: UTF-8 -*-
|
|
# vi:si:et:sw=4:sts=4:ts=4
|
|
import os
|
|
|
|
from django.conf import settings
|
|
from oxlib.cache import getUrlUnicode
|
|
from oxlib import findRe
|
|
import oxlib.net
|
|
import oxweb.criterion
|
|
|
|
from oxdata.lookup.models import IdMapping, getMappingByImdb
|
|
|
|
|
|
def getPoster(id, url=None):
|
|
dirname = os.path.join(settings.DATA_ROOT, 'criterion.com', id)
|
|
filename = os.path.join(dirname, 'poster.jpg')
|
|
filename = os.path.normpath(filename)
|
|
if not os.path.exists(filename):
|
|
if not url:
|
|
data = oxweb.criterion.getData(id)
|
|
url = data['posterUrl']
|
|
if not os.path.exists(dirname):
|
|
os.makedirs(dirname)
|
|
data = oxlib.net.getUrl(url)
|
|
f = open(filename, 'w')
|
|
f.write(data)
|
|
f.close()
|
|
return filename
|
|
|
|
def archivePosters(init=False):
|
|
for criterionId in oxweb.criterion.getIds():
|
|
data = oxweb.criterion.getData(criterionId)
|
|
imdbId = data['imdbId']
|
|
try:
|
|
m = IdMapping.objects.get(criterion_id=criterionId)
|
|
if imdbId and imdbId != m.imdb_id:
|
|
m.imdb_id = imdbId
|
|
m.save()
|
|
except IdMapping.DoesNotExist:
|
|
if imdbId:
|
|
m = getMappingByImdb(imdbId)
|
|
else:
|
|
m = IdMapping()
|
|
m.criterion_id = criterionId
|
|
m.save()
|
|
url = data['posterUrl']
|
|
getPoster(criterionId, url)
|
|
|
|
def cron():
|
|
archivePosters()
|
|
|
|
def init():
|
|
archivePosters(True)
|
|
|