API habilitada ;)
This commit is contained in:
parent
bece885226
commit
c2138d9e14
|
@ -200,6 +200,8 @@ class MovieQuerySet(models.QuerySet):
|
||||||
html = BeautifulSoup(raw, "lxml")
|
html = BeautifulSoup(raw, "lxml")
|
||||||
for ref in html.find_all("sup", "reference"):
|
for ref in html.find_all("sup", "reference"):
|
||||||
ref.decompose()
|
ref.decompose()
|
||||||
|
for crossref in html.find_all("dl"):
|
||||||
|
crossref.decompose()
|
||||||
clean = list(map(lambda x: str(x), html.body.children))
|
clean = list(map(lambda x: str(x), html.body.children))
|
||||||
return " ".join(clean)
|
return " ".join(clean)
|
||||||
|
|
||||||
|
@ -429,6 +431,40 @@ class MovieQuerySet(models.QuerySet):
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def api(self, request):
|
||||||
|
"""
|
||||||
|
Obtiene resultados de la API.
|
||||||
|
"""
|
||||||
|
msg = f"Vista {request.get_host()}/help/#api para más información."
|
||||||
|
result = {"ERROR": msg}
|
||||||
|
try:
|
||||||
|
if request.GET.get("q"):
|
||||||
|
query = request.GET["q"]
|
||||||
|
result = {"movies": Movie.objects.get_movies(query)}
|
||||||
|
elif request.GET.get("id"):
|
||||||
|
query = request.GET["id"]
|
||||||
|
result = {"movie": Movie.objects.get_movie_by_id(query)}
|
||||||
|
else:
|
||||||
|
result["Exception"] = f"Invalid {request.GET}"
|
||||||
|
except Exception:
|
||||||
|
result["Exception"] = f"Invalid {request.GET}"
|
||||||
|
if request.user.is_authenticated:
|
||||||
|
return result
|
||||||
|
else:
|
||||||
|
return self.clean_api_response(result)
|
||||||
|
|
||||||
|
def clean_api_response(self, result):
|
||||||
|
"""
|
||||||
|
Elimina la URL de la película para usuarios no autenticados.
|
||||||
|
"""
|
||||||
|
url = "file_name"
|
||||||
|
if "movies" in result:
|
||||||
|
for movie in result["movies"]:
|
||||||
|
del movie[url]
|
||||||
|
elif "movie" in result:
|
||||||
|
del result["movie"][url]
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def upload_cartel(instance, filename):
|
def upload_cartel(instance, filename):
|
||||||
first = filename[0].upper()
|
first = filename[0].upper()
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
from django.http import JsonResponse
|
||||||
from django.db.models import F
|
from django.db.models import F
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
|
|
||||||
|
@ -38,3 +39,8 @@ def bugs(request):
|
||||||
def movie(request, id):
|
def movie(request, id):
|
||||||
context = {"movie": Movie.objects.get_movie_by_id(id)}
|
context = {"movie": Movie.objects.get_movie_by_id(id)}
|
||||||
return render(request, "movie.html", context)
|
return render(request, "movie.html", context)
|
||||||
|
|
||||||
|
|
||||||
|
def api(request):
|
||||||
|
context = Movie.objects.api(request)
|
||||||
|
return JsonResponse(context)
|
||||||
|
|
|
@ -4,26 +4,17 @@ from django.conf import settings
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from django.conf.urls import include
|
from django.conf.urls import include
|
||||||
|
|
||||||
# ~ from tastypie.api import Api
|
|
||||||
|
|
||||||
from main import views
|
from main import views
|
||||||
from main.feeds import LatestMoviesFeed
|
from main.feeds import LatestMoviesFeed
|
||||||
|
|
||||||
# ~ from main.api import ResourceMovies
|
|
||||||
|
|
||||||
|
|
||||||
# ~ v1_api = Api(api_name="v1")
|
|
||||||
# ~ v1_api.register(ResourceMovies())
|
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("", views.home, name="home"),
|
path("", views.home, name="home"),
|
||||||
path("search/", views.search, name="search"),
|
path("search/", views.search, name="search"),
|
||||||
|
path("api/", views.api, name="api"),
|
||||||
path("about/", views.about, name="about"),
|
path("about/", views.about, name="about"),
|
||||||
path("help/", views.help, name="help"),
|
path("help/", views.help, name="help"),
|
||||||
path("bugs/", views.bugs, name="bugs"),
|
path("bugs/", views.bugs, name="bugs"),
|
||||||
path("movie/<int:id>", views.movie, name="movie"),
|
path("movie/<int:id>", views.movie, name="movie"),
|
||||||
path("ultimas/rss/", LatestMoviesFeed()),
|
path("ultimas/rss/", LatestMoviesFeed()),
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
# path('api/', include(v1_api.urls)),
|
|
||||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
|
|
@ -12,14 +12,19 @@
|
||||||
Las búsquedas tienen un límite de cien resultados.
|
Las búsquedas tienen un límite de cien resultados.
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Cualquier búsqueda ignora tildes, mayúsculas y eñes,
|
Las búsquedas ignoran mayúsculas, tildes, eñes y signos de puntuación,
|
||||||
así que «<a href="{% url 'search' %}?q=Iñarritú">Iñarritú</a>»
|
así que «<a href="{% url 'search' %}?q=¡Iñarritú!">¡Iñarritú!</a>»
|
||||||
es lo mismo que «<a href="{% url 'search' %}?q=inarritu">inarritu</a>».
|
es lo mismo que «<a href="{% url 'search' %}?q=inarritu">inarritu</a>».
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
Las búsquedas no buscan palabras exactas, sino las palabras que comienzan
|
||||||
|
con el término de búsqueda, así que «<a href="{% url 'search' %}?q=perro">perro</a>»
|
||||||
|
también incluye los resultados de «perros».
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Cuando una búsqueda encuentra más de cien películas,
|
Cuando una búsqueda encuentra más de cien películas,
|
||||||
los cien resultados son seleccionados y ordenados de manera aleatoria:
|
los cien resultados son seleccionados y ordenados de manera aleatoria:
|
||||||
<b>nunca obtendrás los mismos resultados</b>.
|
<u>nunca obtendrás los mismos resultados</u>.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="refinamiento">Refinamiento en las búsquedas</h2>
|
<h2 id="refinamiento">Refinamiento en las búsquedas</h2>
|
||||||
|
@ -34,31 +39,31 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url 'search' %}?q=t:lucio">t:lucio</a></td>
|
<td><a href="{% url 'search' %}?q=t:lucio">t:lucio</a></td>
|
||||||
<td>Busca «lucio» en los títulos</td>
|
<td>Busca «lucio» en los <u>t</u>ítulos</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url 'search' %}?q=o:monkey">o:monkey</a></td>
|
<td><a href="{% url 'search' %}?q=o:monkey">o:monkey</a></td>
|
||||||
<td>Busca «monkey» en los títulos en idioma original</td>
|
<td>Busca «monkey» en los títulos en idioma <u>o</u>riginal</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url 'search' %}?q=y:1989">y:1989</a></td>
|
<td><a href="{% url 'search' %}?q=y:1989">y:1989</a></td>
|
||||||
<td>Busca películas publicadas en el año (<i>year</i>) «1989»</td>
|
<td>Busca películas publicadas en el año (<i><u>y</u>ear</i>) «1989»</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url 'search' %}?q=p:México">p:México</a></td>
|
<td><a href="{% url 'search' %}?q=p:México">p:México</a></td>
|
||||||
<td>Busca películas hechas en el país «México»</td>
|
<td>Busca películas hechas en el <u>p</u>aís «México»</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url 'search' %}?q=d:varda">d:varda</a></td>
|
<td><a href="{% url 'search' %}?q=d:varda">d:varda</a></td>
|
||||||
<td>Busca películas dirigidas por «varda»</td>
|
<td>Busca películas <u>d</u>irigidas por «varda»</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url 'search' %}?q=a:uma">a:uma</a></td>
|
<td><a href="{% url 'search' %}?q=a:uma">a:uma</a></td>
|
||||||
<td>Busca películas en donde actúe «uma»</td>
|
<td>Busca películas en donde <u>a</u>ctúe «uma»</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url 'search' %}?q=g:drama">g:drama</a></td>
|
<td><a href="{% url 'search' %}?q=g:drama">g:drama</a></td>
|
||||||
<td>Busca películas del género «drama»</td>
|
<td>Busca películas del <u>g</u>énero «drama»</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -73,6 +78,19 @@
|
||||||
Se pueden usar varias palabras con prefijos o no para restringir la búsqueda,
|
Se pueden usar varias palabras con prefijos o no para restringir la búsqueda,
|
||||||
como en «<a href="{% url 'search' %}?q=p:mexico+d:buñuel+cielo">p:mexico d:buñuel cielo</a>».
|
como en «<a href="{% url 'search' %}?q=p:mexico+d:buñuel+cielo">p:mexico d:buñuel cielo</a>».
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
La inexactitud en los resultados permite búsquedas más generales en los campos.
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Ejemplo 1: «<a href="{% url 'search' %}?q=y:192">y:192</a>» da como resultado
|
||||||
|
las películas publicadas en la década de 1920.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Ejemplo 2: «<a href="{% url 'search' %}?q=p:a">p:a</a>» da como resultado
|
||||||
|
las películas hechas en los países que comienzan con «a».
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="api">API</h2>
|
<h2 id="api">API</h2>
|
||||||
<p>
|
<p>
|
||||||
|
@ -87,14 +105,14 @@
|
||||||
<p>
|
<p>
|
||||||
Es decir, en lugar de
|
Es decir, en lugar de
|
||||||
<code><a href="{% url 'search' %}?q=p:mexico+d:cuaron">search/?q=p:mexico+d:cuaron</a></code> usa
|
<code><a href="{% url 'search' %}?q=p:mexico+d:cuaron">search/?q=p:mexico+d:cuaron</a></code> usa
|
||||||
<code><a href="{% url 'search' %}?q=p:mexico+d:cuaron"><b>api</b>/?q=p:mexico+d:cuaron</a></code>.
|
<code><a href="{% url 'api' %}?q=p:mexico+d:cuaron"><u>api</u>/?q=p:mexico+d:cuaron</a></code>.
|
||||||
</p>
|
</p>
|
||||||
<h3>Obtención de ficha</h3>
|
<h3>Obtención de ficha</h3>
|
||||||
<p>
|
<p>
|
||||||
Para obtener una película en específico solo necesitas su ID.
|
Para obtener una película en específico solo necesitas su ID.
|
||||||
<p>
|
<p>
|
||||||
Por ejemplo, para obtener la ficha de <a href="{% url 'movie' id=1596 %}"><i>Gremlins</i></a> usa
|
Por ejemplo, para obtener la ficha de <a href="{% url 'movie' id=1596 %}"><i>Gremlins</i></a> usa
|
||||||
<code><a href="{% url 'search' %}?id=1596">api/?id=1596</a></code>.
|
<code><a href="{% url 'api' %}?id=1596">api/?id=1596</a></code>.
|
||||||
</p>
|
</p>
|
||||||
<p><i>Happy hacking</i> 😎</p>
|
<p><i>Happy hacking</i> 😎</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue