70. Nuestro propio buscador de peliculas (8)
- En este capítulo del curso de programación en c# con visual studio 2017 , continuaremos con nuestro nuevo proyecto consistente en crear nuestro propio buscador. Ya estamos utilizando la API que nos proporciona https://www.themoviedb.org , para realizar consultas y mostrar los resultados de una manera estructurada en pantalla.- En esta entrada preparamos la aplicación para realizar peticiones a un nuevo método.En esta ocasión realizamos una petición al método https://developers.themoviedb.org/3/discover/movie-discover que nos devolverá las peliculas que están en los cines(en el país que le pasemos como parametro en la consulta) en un rango de fechas que también especificaremos como parametro en la propia petición.
- Os dejo el video con el código al completo donde sacamos las 5 peliculas más desatcadas que hay en cartelera en España a fecha del 5 de mayo de 2018:
- Os dejo un enlace a la documentación de la API, por si queréis practicar con alguno de los métodos que están disponibles: https://www.themoviedb.org/documentation/api
- Os dejo también el código que hemos modificado de la página Default.aspx.cs para permitir realizar esta nueva petición:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace BuscadorWebPeliculas
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
Util u = new Util();
String resultado = String.Empty;
String rutaPeticion = ConfigurationManager.AppSettings["cartelera"].ToString();
JsonSerializerSettings ConfigJson = new JsonSerializerSettings();
ConfigJson.NullValueHandling = NullValueHandling.Ignore;
rutaPeticion += "?api_key=" + ConfigurationManager.AppSettings["claveApi"].ToString() + "&language=es-ES®ion=ES";
rutaPeticion += "&primary_release_date.gte="+DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd")+"&primary_release_date.lte=" + DateTime.Now.ToString("yyyy-MM-dd"); ;
resultado = u.peticionAPI(rutaPeticion, "GET", null);
RespuestaSearch rest = JsonConvert.DeserializeObject<RespuestaSearch>(resultado);
pintarControles(rest);
}
protected void Unnamed2_Click(object sender, ImageClickEventArgs e)
{
if (txtBuscador.Text != String.Empty)
{
tableRes.Controls.Clear();
Util u = new Util();
String resultado = String.Empty;
String rutaPeticion = ConfigurationManager.AppSettings["search"].ToString();
JsonSerializerSettings ConfigJson = new JsonSerializerSettings();
ConfigJson.NullValueHandling = NullValueHandling.Ignore;
rutaPeticion += "?api_key=" + ConfigurationManager.AppSettings["claveApi"].ToString() + "&language=es-ES";
rutaPeticion += "&query=" + txtBuscador.Text;
resultado = u.peticionAPI(rutaPeticion, "GET", null);
RespuestaSearch rest = JsonConvert.DeserializeObject<RespuestaSearch>(resultado);
pintarControles(rest);
guardarDatosBusquedas();
}
}
private void guardarDatosBusquedas()
{
try
{
string userip = Request.UserHostAddress;
string navegador = Request.Browser.Browser;
string plataforma = Request.Browser.Platform;
//LLAMAR A BBDD
Util u = new Util();
u.guardarBusquedasUsuarios(userip, navegador, plataforma, txtBuscador.Text);
}
catch (Exception ex)
{
//DE MOMENTO LO DEJO VACIA TRATAR COMO SE QUIERA
}
}
private void pintarControles(RespuestaSearch rest)
{
for (int i = 0; i < rest.results.Count; i++)
{
Image img = new Image();
img.Width = 100;
img.Height = 125;
if (rest.results[i].poster_path != String.Empty)
img.ImageUrl = "https://image.tmdb.org/t/p/w500/" + rest.results[i].poster_path;
Label l = new Label();
l.Text = "<b>" + rest.results[i].release_date + " " + rest.results[i].title + "</b>: " + rest.results[i].overview + "<br>";
System.Web.UI.HtmlControls.HtmlTableRow tRow = new System.Web.UI.HtmlControls.HtmlTableRow();
System.Web.UI.HtmlControls.HtmlTableCell tCell = new System.Web.UI.HtmlControls.HtmlTableCell();
System.Web.UI.HtmlControls.HtmlTableCell tCell2 = new System.Web.UI.HtmlControls.HtmlTableCell();
tCell.Controls.Add(img);
tCell2.Controls.Add(l);
tRow.Cells.Add(tCell);
tRow.Cells.Add(tCell2);
tCell2.VAlign = "TOP";
tableRes.Rows.Add(tRow);
}
}
}
}
- Os dejo también el código que hemos modificado de la página Default.aspx:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="BuscadorWebPeliculas._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<div class="row">
<div style="text-align: center; margin-top:5%">
<div style="text-align: center; margin-bottom:5%">
<asp:Label runat="server" Text="<b>Mis pelis:</b>" Font-Size="Medium"></asp:Label>
<asp:TextBox ID="txtBuscador" runat="server" Width="30%" placeholder="Busca tus peliculas favoritas"></asp:TextBox>
<asp:ImageButton runat="server" ImageUrl="images/magnifier-24270_640.png" width="21px" height="20px" OnClick="Unnamed2_Click"/><br />
<asp:Label runat="server" Text="" ID="lblResultado"></asp:Label>
</div>
<div runat="server" style="text-align: left" >
<table id="tableRes" runat="server" style="width: 100%;" enableviewstate="false">
</table>
</div>
</div>
</div>
</asp:Content>
No hay comentarios:
Publicar un comentario