-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.p3
146 lines (125 loc) · 5.73 KB
/
main.p3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# -*- coding: utf-8 -*-
#__autor__='Jota'
############### CUERPO PRINCIPAL APLICACIÓN CONSULTAS A DATAFRAME CINÉFILOS #################
# PROYECTO INDIVIDUAL - 01
#
# Prefijos utilizados para identificar objetos creados
# *****************************************************************************
# df_ : El objeto es un dataframe
# dic_ : El objeto es un diccionario
# lst_ : El objeto es una lista
# v_ : El objeto es una variable
#
# Cargar librerías necesarias
# ***************************
import pandas as pd
import webbrowser
from tabulate import tabulate
import os
import datetime
import platform
import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog
from fastapi import FastAPI
from datetime import datetime
# Instanciar FastAPI
#******************************
app = FastAPI()
# Cargar los datos desde 'xlsx'
# *****************************
df_work = pd.read_excel('dfwork.xlsx', sheet_name='Sheet1')
#
# Rutas de FastAPI
# *****************************
@app.get("/")
def read_root():
return {"Hello": "World"}
#
################### F U N C I O N E S ######################
#
@app.get('/cantidad_filmaciones_mes/{v_mes}')
def cantidad_filmaciones_mes(v_mes: str):
"""
Versión para dataframe.
Recibe: una cadena de texto con el nombre del mes
en idioma español.
No valida el idioma, sólo que pertenezca al
diccionario.
Si la cadena es inválida, solicitará
otra cadena válida.
Retorna: La cantidad de películas estrenadas en el mes 'X'
"""
# Crear diccionario con los nombres de los meses y su valor numérico
# Mapea la cadena ingresada y si pertenece, la convierte a su valor numérico
dic_map_meses = {
'enero' : 1,
'febrero' : 2,
'marzo' : 3,
'abril' : 4,
'mayo' : 5,
'junio' : 6,
'julio' : 7,
'agosto' : 8,
'septiembre': 9,
'octubre' : 10,
'noviembre' : 11,
'diciembre' : 12
}
# Para controlar las cadenas ingresadas, primero se convierten a minúsculas
# luego, se obtiene su valor numérico
v_Mes = v_Mes.lower()
v_numMes = dic_map_meses.get(v_Mes)
# Valida el ingreso de cadenas inválidas
if v_numMes is None:
raise ValueError('Mes ingresado es inválido.')
# Realizar la consulta en el DataFrame
query = df_work['release_month'] == v_numMes
v_num_pelis = len(df_work[query])
# Imprime el resultado de la consulta
return print(f"La cantidad de películas estrenadas en el mes de {v_Mes} es: {v_num_pelis}")
#'''Se ingresa el mes y la función retorna la cantidad de películas que se estrenaron
# ese mes históricamente'''
# respuesta = # Lógica para obtener la cantidad de películas por mes
#return {'mes': mes, 'cantidad': respuesta}
#return print('prueba films x mes')
@app.get('/cantidad_filmaciones_dia/{dia}')
def cantidad_filmaciones_dia(dia: str):
'''Se ingresa el día y la función retorna la cantidad de películas que se estrenaron ese día históricamente'''
# respuesta = # Lógica para obtener la cantidad de películas por día
#return {'dia': dia, 'cantidad': respuesta}
return print('prueba films x día')
@app.get('/score_titulo/{titulo}')
def score_titulo(titulo: str):
'''Se ingresa el título de una filmación esperando como respuesta el título, el año de estreno y el score'''
#respuesta = # Lógica para obtener el score de un título
#return {'titulo': titulo, 'anio': respuesta, 'popularidad': respuesta}
return print('prueba score')
@app.get('/votos_titulo/{titulo}')
def votos_titulo(titulo: str):
'''Se ingresa el título de una filmación esperando como respuesta el título, la cantidad de votos y el valor promedio de las votaciones.
La misma variable deberá de contar con al menos 2000 valoraciones,
caso contrario, debemos contar con un mensaje avisando que no cumple esta condición y que por ende, no se devuelve ningún valor.'''
#respuesta = # Lógica para obtener los votos de un título
#return {'titulo': titulo, 'anio': respuesta, 'voto_total': respuesta, 'voto_promedio': respuesta}
return print('prueba votos')
@app.get('/get_actor/{nombre_actor}')
def get_actor(nombre_actor: str):
'''Se ingresa el nombre de un actor que se encuentre dentro de un dataset debiendo devolver el éxito del mismo medido a través del retorno.
Además, la cantidad de películas en las que ha participado y el promedio de retorno'''
#respuesta = # Lógica para obtener información del actor
#return {'actor': nombre_actor, 'cantidad_filmaciones': respuesta, 'retorno_total': respuesta, 'retorno_promedio': respuesta}
return print('prueb actor')
@app.get('/get_director/{nombre_director}')
def get_director(nombre_director: str):
''' Se ingresa el nombre de un director que se encuentre dentro de un dataset debiendo devolver el éxito del mismo medido a través del retorno.
Además, deberá devolver el nombre de cada película con la fecha de lanzamiento, retorno individual, costo y ganancia de la misma.'''
#respuesta = # Lógica para obtener información del director
#return {'director': nombre_director, 'retorno_total_director': respuesta, 'peliculas': respuesta, 'anio': respuesta, 'retorno_pelicula': respuesta, #'budget_pelicula': respuesta, 'revenue_pelicula': respuesta}
return print('test dire')
@app.get('/recomendacion/{titulo}')
def recomendacion(titulo: str):
'''Ingresas un nombre de película y te recomienda las similares en una lista'''
#respuesta = # Lógica para obtener la lista de recomendaciones
#return {'lista_recomendada': respuesta}
return print('test recomenda')