API habilitada ;)
This commit is contained in:
parent
bece885226
commit
c2138d9e14
|
@ -200,6 +200,8 @@ class MovieQuerySet(models.QuerySet):
|
|||
html = BeautifulSoup(raw, "lxml")
|
||||
for ref in html.find_all("sup", "reference"):
|
||||
ref.decompose()
|
||||
for crossref in html.find_all("dl"):
|
||||
crossref.decompose()
|
||||
clean = list(map(lambda x: str(x), html.body.children))
|
||||
return " ".join(clean)
|
||||
|
||||
|
@ -429,6 +431,40 @@ class MovieQuerySet(models.QuerySet):
|
|||
else:
|
||||
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):
|
||||
first = filename[0].upper()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from django.shortcuts import render
|
||||
from django.http import HttpResponse
|
||||
from django.http import JsonResponse
|
||||
from django.db.models import F
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
|
||||
|
@ -38,3 +39,8 @@ def bugs(request):
|
|||
def movie(request, id):
|
||||
context = {"movie": Movie.objects.get_movie_by_id(id)}
|
||||
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 import include
|
||||
|
||||
# ~ from tastypie.api import Api
|
||||
|
||||
from main import views
|
||||
from main.feeds import LatestMoviesFeed
|
||||
|
||||
# ~ from main.api import ResourceMovies
|
||||
|
||||
|
||||
# ~ v1_api = Api(api_name="v1")
|
||||
# ~ v1_api.register(ResourceMovies())
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
path("", views.home, name="home"),
|
||||
path("search/", views.search, name="search"),
|
||||
path("api/", views.api, name="api"),
|
||||
path("about/", views.about, name="about"),
|
||||
path("help/", views.help, name="help"),
|
||||
path("bugs/", views.bugs, name="bugs"),
|
||||
path("movie/<int:id>", views.movie, name="movie"),
|
||||
path("ultimas/rss/", LatestMoviesFeed()),
|
||||
path("admin/", admin.site.urls),
|
||||
# path('api/', include(v1_api.urls)),
|
||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
|
|
|
@ -12,14 +12,19 @@
|
|||
Las búsquedas tienen un límite de cien resultados.
|
||||
</li>
|
||||
<li>
|
||||
Cualquier búsqueda ignora tildes, mayúsculas y eñes,
|
||||
así que «<a href="{% url 'search' %}?q=Iñarritú">Iñarritú</a>»
|
||||
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>»
|
||||
es lo mismo que «<a href="{% url 'search' %}?q=inarritu">inarritu</a>».
|
||||
</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>
|
||||
Cuando una búsqueda encuentra más de cien películas,
|
||||
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>
|
||||
</ul>
|
||||
<h2 id="refinamiento">Refinamiento en las búsquedas</h2>
|
||||
|
@ -34,31 +39,31 @@
|
|||
<tbody>
|
||||
<tr>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</tbody>
|
||||
|
@ -73,6 +78,19 @@
|
|||
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>».
|
||||
</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>
|
||||
<h2 id="api">API</h2>
|
||||
<p>
|
||||
|
@ -87,14 +105,14 @@
|
|||
<p>
|
||||
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"><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>
|
||||
<h3>Obtención de ficha</h3>
|
||||
<p>
|
||||
Para obtener una película en específico solo necesitas su ID.
|
||||
<p>
|
||||
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><i>Happy hacking</i> 😎</p>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue