102 lines
3.3 KiB
Python
102 lines
3.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import division, print_function, absolute_import
|
|
|
|
from oxdjango.shortcuts import render_to_json_response, json_response
|
|
from oxdjango.api import actions
|
|
|
|
|
|
from . import models
|
|
|
|
def get_movie_id(request):
|
|
movie_id = None
|
|
movieId = None
|
|
if 'id' in request.GET:
|
|
movieId = request.GET['id']
|
|
elif 'itemId' in request.GET:
|
|
movieId = request.GET['itemId']
|
|
if movieId:
|
|
if len(movieId) >= 7 and not movieId[1] == 'x':
|
|
movie_id = models.get_movie_id(imdb_id=movieId)
|
|
else:
|
|
try:
|
|
movie_id = models.MovieId.objects.get(oxdb_id=movieId)
|
|
except models.MovieId.DoesNotExist:
|
|
movie_id = None
|
|
if 'imdb' in request.GET:
|
|
movieId = request.GET['imdb']
|
|
movie_id = models.get_movie_id(imdb_id=movieId)
|
|
elif 'oxdb' in request.GET:
|
|
oxdbId = request.GET['oxdb']
|
|
movie_id = models.MovieId.objects.get(oxdb_id=oxdbId)
|
|
elif 'criterion' in request.GET:
|
|
criterion_id = request.GET['criterion']
|
|
movie_id = models.MovieId.objects.get(criterion_id=criterion_id)
|
|
elif 'wikipedia' in request.GET:
|
|
wikipedia_id = request.GET['wikipedia']
|
|
movie_id = models.MovieId.objects.get(wikipedia_id=wikipedia_id)
|
|
if movie_id:
|
|
movie_id.updateFromImdb()
|
|
return movie_id
|
|
|
|
def ids(request):
|
|
prefix = request.build_absolute_uri('/')
|
|
json = {}
|
|
if 'title' in request.GET:
|
|
title = request.GET['title']
|
|
director = request.GET.get('director', '')
|
|
year = request.GET.get('year', '')
|
|
movies = models.MovieId.objects.filter(title=title)
|
|
if director:
|
|
movies = movies.filter(director=director)
|
|
if year:
|
|
movies = movies.filter(year=year)
|
|
if movies.count() == 1:
|
|
json = movies[0].json(prefix)
|
|
else:
|
|
movie = get_movie_id(request)
|
|
if movie:
|
|
json = movie.json(prefix)
|
|
return render_to_json_response(json)
|
|
|
|
def get(request, data):
|
|
prefix = request.build_absolute_uri('/')
|
|
response = json_response()
|
|
movie_id = None
|
|
movieId = None
|
|
if 'id' in data:
|
|
movieId = data['id']
|
|
elif 'itemId' in data:
|
|
movieId = data['itemId']
|
|
if movieId:
|
|
if len(movieId) >= 7 and not movieId[1] == 'x':
|
|
movie_id = models.get_movie_id(imdb_id=movieId)
|
|
else:
|
|
try:
|
|
movie_id = models.MovieId.objects.get(oxdb_id=movieId)
|
|
except models.MovieId.DoesNotExist:
|
|
movie_id = None
|
|
if 'imdb' in data:
|
|
movieId = data['imdb']
|
|
movie_id = models.get_movie_id(imdb_id=movieId)
|
|
elif 'oxdb' in data:
|
|
oxdbId = data['oxdb']
|
|
movie_id = models.MovieId.objects.get(oxdb_id=oxdbId)
|
|
elif 'criterion' in data:
|
|
criterion_id = data['criterion']
|
|
movie_id = models.MovieId.objects.get(criterion_id=criterion_id)
|
|
elif 'wikipedia' in data:
|
|
wikipedia_id = data['wikipedia']
|
|
movie_id = models.MovieId.objects.get(wikipedia_id=wikipedia_id)
|
|
if movie_id:
|
|
movie_id.updateFromImdb()
|
|
response['data'] = movie_id.json(prefix)
|
|
else:
|
|
response['status'] = {'text':'not found', 'code': 404}
|
|
return render_to_json_response(response)
|
|
actions.register(get)
|
|
|
|
def urls(request):
|
|
json = {}
|
|
return render_to_json_response(json)
|
|
|