def datos_peli_imbd(self, titulo=None, idFicha=None, anio=None, sinopsis=None, titulo_es=None): logger.debug('-------------- BUSCAMOS EN IMBD --------------------') vapikey = 'c3ca59d0' omdb.set_default('apikey', vapikey) pelicula = [] if titulo == None and idFicha == None: logger.error("No hay parámetros para la busqueda") pelicula = [] elif idFicha <> None: pelicula = omdb.imdbid(idFicha) elif titulo <> None: if anio == None: pelicula = omdb.get(title=titulo) else: pelicula = omdb.get(title=titulo, year=anio) if pelicula: log_datos(pelicula) item = { 'titulo': titulo_es, 'titulo_orig': pelicula.title, 'anio': pelicula.year, 'generos': pelicula.genre, 'imagen': pelicula.poster, 'pais': pelicula.country, 'escritor': pelicula.writer, 'director': pelicula.director, 'actores': pelicula.actors, 'duracion': pelicula.runtime, 'sinopsis': pelicula.plot, 'sinopsis_es': sinopsis, 'idFicha': 'Imdb-' + pelicula.imdb_id, } logger.debug('Finalmente nos queda ') log_datos(item) else: return None return item
def insertar_peli(self, peli, proveedor): logger.debug('Insertamos la pelicula en LISTA_PELIS') log_datos(peli) existe_torrent = Lista_Pelis.objects.filter( torrent__exact=peli["torrent"]) existe_enlace = Lista_Pelis.objects.filter( enlace__exact=peli["enlace"]) if len(existe_torrent) == 0 and len(existe_enlace) == 0: titu_peli = renombra(peli["titulo"]).upper() logger.info(titu_peli) v_titulo_bes = prepara_titu(peli["titulo"]) if peli["titulo_orig"] <> None: v_titulo_ben = prepara_titu(peli["titulo_orig"]) else: v_titulo_ben = None peli_ins = Lista_Pelis( titulo=peli["titulo"], titulo_orig=peli["titulo_orig"], enlace=peli["enlace"], imagen=peli["imagen"], anyo=peli["anio"], torrent=peli["torrent"], calidad=peli["calidad"], proveedor=proveedor, fecha_publicacion=peli["fecha"], sinopsis=peli["sinopsis"], tamanio=peli["tamanio"], titulo_bes=v_titulo_bes, titulo_ben=v_titulo_ben, ) peli_ins.save() logger.info('Pelicula Grabada - titulo-->' + peli["titulo"]) try: self.inserta_ficha(peli_ins) except: logger.error( "Se ha producido un error al insertar la Ficha de la pelicula " + peli_ins.titulo) logger.error(sys.exc_info()) else: logger.warning('Existe torrent o enlance en la bbdd')
def inserta_ficha(self, peli): logger.debug( "--------------------------------------INSERTA FICHA---------------------------------------------" ) salir = False error = False #Recuperamos los datos de la pelicula para modificarlos. logger.debug('Peli que buscamos:') logger.debug(peli) peli_ins = Lista_Pelis.objects.get(id=peli.id) logger.debug('Pelicula encontrada en LISTA_PELIS') logger.debug(peli_ins) log_datos(peli_ins) intento = 0 if peli_ins.idFicha <> None: salir = True logger.debug("La pelicula ya tiene ficha asignada") else: try: # Comprobamos si existe la ficha. logger.debug('Comprobamos si existe la ficha.') try: hay_ficha = 0 logger.debug(peli.titulo_bes) # Primero comprobamos si la peli ya tiene una ficha asociada y ademas coincide el titulo_bes. print(peli_ins.idFicha) print('tras peli_ins.idFicha') if peli_ins.idFicha <> None: intento = 1 logger.debug('intento nº--> ' + str(intento)) logger.debug(peli_ins.idFicha) logger.debug(peli_ins.idFicha.id) #existe_ficha = peli_ins.lista_pelis_set.filter(titulo_bes = peli.titulo_bes) existe_ficha = Pelicula.objects.filter( id=peli_ins.idFicha.id, titulo_bes=peli.titulo_bes) logger.debug(existe_ficha) if len(existe_ficha) == 0: hay_ficha = 0 else: hay_ficha = len(existe_ficha) existe_ficha_x = existe_ficha[0] log_datos(existe_ficha_x) #Segundo comprobamos con el titulo_bes if hay_ficha == 0: intento = 2 logger.debug('intento nº--> ' + str(intento)) logger.debug(peli.titulo_bes) existe_ficha = Pelicula.objects.filter( titulo_bes__iexact=peli.titulo_bes) logger.debug(existe_ficha) if len(existe_ficha) == 0: hay_ficha = 0 else: hay_ficha = len(existe_ficha) for dato in existe_ficha: log_datos(dato) #Tercero comprobamos con el titulo_ben if hay_ficha == 0 and peli.titulo_ben <> None: intento = 3 logger.debug('intento nº--> ' + str(intento)) logger.debug(u'año --> ' + str(peli.anyo)) if peli.anyo <> None: existe_ficha = Pelicula.objects.filter( titulo_ben__iexact=peli.titulo_ben, year=peli.anyo) else: existe_ficha = Pelicula.objects.filter( titulo_ben__iexact=peli.titulo_ben) logger.debug(existe_ficha) if len(existe_ficha) == 0: hay_ficha = 0 else: hay_ficha = len(existe_ficha) for dato in existe_ficha: log_datos(dato) # Modifico el idFicha de la Pelicula con el id de la Ficha. if hay_ficha > 0: salir = True logger.debug('Fichas encontradas --> ' + str(hay_ficha)) logger.debug(existe_ficha) for x in existe_ficha: logger.debug( 'La ficha de la peli ya existe, cogemos la primera, grabamos en Lista_Pelis el idFicha = ficha.id' ) ficha_ins = x logger.debug(ficha_ins) break #peli_ins.idFicha = ficha_ins if peli_ins.idFicha == None: logger.debug( 'La pelicula no tiene ficha asignada, la asignamos' ) logger.info('Asignada la ficha ' + ficha_ins.titulo + " - " + str(ficha_ins.id) + " a la pelicula " + peli_ins.titulo + " - " + str(peli_ins.id)) ficha_ins.lista_pelis_set.add(peli_ins) else: logger.info( 'La pelicula tiene ficha asignada --> ' + str(peli_ins.idFicha.id) + "(" + peli_ins.idFicha.titulo + ")") # Si lo encontramos por nombre en ingles, ponemos en Lista_pelis el titulo en Español. if intento == 3: logger.debug( 'Actualizamos el titulo para ponerlo en Español en Lista_Pelis' ) peli_ins.titulo = ficha_ins.titulo peli_ins.save() except: logger.error("Error en existe_ficha") logger.error(sys.exc_info()) error = True if not salir and not error: ficha_peli = Peliculas_ficha() ficha = ficha_peli.fichas_pelis(p_titulo=peli.titulo_orig, p_titulo_es=peli.titulo, p_idFicha=None, p_anio=peli.anyo, p_sinopsis=peli.sinopsis) logger.debug('Ficha Encontrada -->') log_datos(ficha) if ficha <> None: # Comprobamos de nuevo si existe la Ficha, esta vez comparando el idFicha try: if ficha["idFicha"] <> None: logger.debug(ficha["idFicha"]) logger.debug(peli.idFicha) LidFicha = ficha["idFicha"].split(',') logger.debug(LidFicha) cuantos = len(LidFicha) logger.debug(cuantos) for x in LidFicha: logger.debug(x) existe_ficha = Pelicula.objects.filter( idFicha__contain=x) if len(existe_ficha) > 0: intento = 4 logger.debug('intento nº--> ' + str(intento)) logger.info( 'Hemos encontrado la ficha ' + ficha["titulo"]) logger.debug(existe_ficha.id) peli_ins.idFicha = existe_ficha peli_ins.save() salir = True break except: logger.error("No se ha encontrado la idficha" + ficha["idFicha"]) existe_ficha = None # print ('Peli Repe --> ' + str(existe_ficha)) else: logger.error("NO SE HA ENCONTRADO LA PELICULA " + peli["titulo"]) if ficha <> None and not salir: intento = 5 logger.debug('intento nº--> ' + str(intento)) v_titulo_bes = prepara_titu(ficha["titulo"]) if ficha["titulo_orig"] <> None: v_titulo_ben = prepara_titu(ficha["titulo_orig"]) else: v_titulo_ben = None logger.debug("Voy a grabar la Ficha") titu_peli = ficha["titulo"] ficha_ins = Pelicula( titulo=titu_peli, titulo_orig=ficha["titulo_orig"], generos=ficha["generos"], year=ficha["anio"], imagen=ficha["imagen"], # img = foto, pais=ficha["pais"], escritor=ficha["escritor"], director=ficha["director"], actores=ficha["actores"], duracion=ficha["duracion"], sinopsis=ficha["sinopsis"], sinopsis_es=ficha["sinopsis_es"], idFicha=ficha["idFicha"], titulo_bes=v_titulo_bes, titulo_ben=v_titulo_ben) logger.debug('*** FICHA DE LA PELICULA ***') log_datos(ficha_ins) logger.debug('VAMOS A GRABAR LA FICHA DE LA PELICULA') ficha_ins.save() logger.info("Grabada la ficha " + ficha_ins.titulo + " - " + str(ficha_ins.id)) peli_ins.idFicha = ficha_ins peli_ins.save() logger.info("Actualizada la pelicula " + peli_ins.titulo + " con la ficha " + str(ficha_ins.id)) """ if ficha["imagen"] <> None: nombre_img = v_titulo_bes + '_' + str(ficha["id"]) ruta_imagen = self.guarda_imagen(ficha["imagen"], nombre_img) else: ruta_imagen = None ficha_ins.imagen = ruta_imagen ficha_ins.save() """ logger.debug("grabado el idficha " + str(intento)) elif salir: logger.debug('salir') #ficha_ins = existe_ficha logger.info( "Se ha actualizado la pelicula con la ficha encontrada" + str(intento)) else: logger.error( "Pelicula no encontrada en los buscadores -->" + peli["titulo"]) #Nunca deberia darse este caso elif error: logger.debug( "Salimos porque se ha producido un error tras el intento " + str(intento)) else: logger.debug( 'Salimos ya que hemos encontrado la ficha en el principio ' + str(intento)) #ficha_ins = existe_ficha except: logger.error("Error en busqueda de pelicula tras el intento " + str(intento)) logger.error(sys.exc_info()) try: #Actualizo las imagenes en Pelicula y Ficha. if not error: logger.debug('Comienzo el actualizar Imagenes Final') logger.debug(peli_ins) logger.debug(ficha_ins) if ficha_ins.imagen <> None and ficha_ins.imagen.find( "/Imagenes/") == -1: nombre_img = ficha_ins.titulo_bes + '_' + str( ficha_ins.id) ruta_imagen = self.guarda_imagen( ficha_ins.imagen, nombre_img) elif ficha_ins.imagen <> None and ficha_ins.imagen.find( "/Imagenes/") <> -1: ruta_imagen = ficha_ins.imagen elif peli_ins.imagen <> None: nombre_img = peli_ins.titulo_bes + '_' + str( peli_ins.idFicha.id) ruta_imagen = self.guarda_imagen( peli_ins.imagen, nombre_img) logger.debug(ruta_imagen) else: ruta_imagen = None if ruta_imagen <> None: if ficha_ins.imagen <> None and ficha_ins.imagen.find( "/Imagenes/") == -1: ficha_ins.imagen = ruta_imagen ficha_ins.save() if peli_ins.imagen <> None and peli_ins.imagen.find( "/Imagenes/") == -1: peli_ins.imagen = ruta_imagen peli_ins.save() if peli_ins.imagen <> None and ficha_ins.imagen == None: ficha_ins.imagen = ruta_imagen ficha_ins.save() if peli_ins.imagen == None and ficha_ins.imagen <> None: peli_ins.imagen = ruta_imagen peli_ins.save() logger.debug("Fin del grabado de la imagen en BBDD") except: logger.error('Error al actualizar las imagenes.') logger.error(sys.exc_info())
def datos_peli_film(self, titulo=None, idFicha=None, anio=None, sinopsis=None, titulo_es=None): logger.debug( '-------------- BUSCAMOS EN FILMAFFINITY --------------------') service = python_filmaffinity.FilmAffinity(lang='es') service2 = python_filmaffinity.FilmAffinity(lang='en') pelicula = [] if titulo_es == None and idFicha == None: print("No hay parámetros para la busqueda") pelicula = [] elif idFicha <> None: pelicula = service.get_movie(id=idFicha, images=True) pelicula2 = service2.get_movie(id=idFicha, images=True) elif titulo_es <> None: continuar = 0 if anio == None: try: busqueda = service.search(title=titulo_es) if len(busqueda) > 1: print('Existen más de 1 resultado') # return None for peli in busqueda: pelicula = service.get_movie(id=peli['id'], images=True) pelicula2 = service2.get_movie(id=pelicula['id'], images=True) continuar = 1 break except: logger.error("Error en la búsqueda en español") else: try: busqueda = service.search(title=titulo_es, from_year=anio, to_year=anio) if len(busqueda) > 1: print('Existen más de 1 resultado') # return None for x in busqueda: pelicula = service.get_movie(id=x['id'], images=True) pelicula2 = service2.get_movie(id=pelicula['id'], images=True) continuar = 1 break except: logger.error("Error en la búsqueda en español") if titulo <> None and (continuar == 0 or titulo_es == None): if anio == None: try: busqueda = service.search(title=titulo) if len(busqueda) > 1: print('Existen más de 1 resultado') # return None for peli in busqueda: pelicula2 = service2.get_movie(title=peli['title'], images=True) pelicula = service.get_movie(id=pelicula2['id'], images=True) logger.debug('Pelicula Español') log_datos(pelicula) logger.debug('Pelicula Ingles') log_datos(pelicula2) break except: logger.error("Error en la búsqueda en original") else: try: resul = service2.search(title=titulo, from_year=anio, to_year=anio) if len(resul) > 1: print('Existen más de 1 resultado') # return None for x in resul: pelicula2 = service2.get_movie(id=x['id'], images=True) pelicula = service.get_movie(id=x['id'], images=True) logger.debug('Pelicula Español') log_datos(pelicula) logger.debug('Pelicula Ingles') log_datos(pelicula2) break except: logger.error("Error en la búsqueda en original") # xml_content = res.content # print (pelicula) if pelicula: item = { 'titulo': pelicula['title'], 'titulo_orig': pelicula2['title'], 'anio': pelicula['year'], 'generos': ', '.join(pelicula['genre']), 'imagen': pelicula['poster'], 'pais': pelicula['country'], 'escritor': None, 'director': ', '.join(pelicula['directors']), 'actores': ', '.join(pelicula['actors']), 'duracion': pelicula['duration'], 'sinopsis': pelicula2['description'], 'sinopsis_es': pelicula['description'], 'idFicha': 'Film-' + pelicula['id'], } logger.debug('Finalmente nos queda ') log_datos(item) else: return None return item
def datos_peli_moviedb(self, titulo=None, idFicha=None, anio=None, sinopsis=None, titulo_es=None, **kwargs): logger.debug('-------------- BUSCAMOS EN MOVIEDB --------------------') ruta_img = "https://image.tmdb.org/t/p/w300_and_h450_bestv2" conn = http.client.HTTPSConnection("api.themoviedb.org") print('Entro en datos_peli_mviedb') payload = "{}" clave = '6954e616bbca6eb84ea9de73788e6e5f' pelicula = [] if titulo_es == None and idFicha == None and titulo == None: logger.warning("No hay parámetros para la busqueda (MovieDB)") pelicula = [] elif idFicha <> None: conn.request( "GET", "/3/movie/" + str(idFicha) + "?language=es-ES&api_key=" + clave, payload) res = conn.getresponse() data = res.read() peli = json.loads(data) elif titulo_es <> None or titulo <> None: encontrado = False if titulo_es <> None: v_titulo = titulo_es v_idioma = 'es-ES' else: v_titulo = titulo v_idioma = 'en-US' print(v_titulo) tit = transforma(v_titulo) print(tit) if anio <> None: year = "year=" + str(anio) + "&" else: year = "" print(u'año:' + str(year)) conn.request( "GET", "/3/search/movie?" + year + "include_adult=false&page=1&query=" + tit + "&language=" + v_idioma + "&api_key=" + clave, payload) res = conn.getresponse() data = res.read() #print (data) cadena_json = json.loads(data) resultados = int(cadena_json["total_results"]) if resultados == 0: print("Sin resultados") return None print('Nº de Resultados --> ' + str(resultados)) pelis = cadena_json["results"] #print (pelis) logger.debug('PELI') numero = 1 for pelic in pelis: # print (pelic) logger.debug('FICHA ' + str(numero)) log_datos(pelic) if (sinacento(v_titulo).upper() == sinacento( pelic["title"]).upper()) or ( sinacento(v_titulo).upper() == sinacento( pelic["original_title"]).upper()): logger.debug('Titulo = al encontrado') encontrado = True v_idFicha = str(pelic['id']) print('ID de la Ficha -->' + str(v_idFicha)) conn.request( "GET", "/3/movie/" + v_idFicha + "?language=es-ES&api_key=" + clave, payload) res2 = conn.getresponse() data2 = res2.read() peli = json.loads(data2) logger.debug('FICHA QUE COINCIDE EL TITULO COMPLETO') log_datos(peli) print(peli["imdb_id"]) if peli["imdb_id"] <> None: vapikey = 'c3ca59d0' omdb.set_default('apikey', vapikey) logger.debug('FICHA_IMBD') peli_imdb = omdb.imdbid(peli["imdb_id"]) log_datos(peli_imdb) else: print('No tiene imbd') peli_imdb = None break """ if encontrado == False and numero == 1 and pelic["overview"] <> "": logger.debug('Guardamos el primer registro encontrado') v_idFicha = str(pelic['id']) conn.request("GET", "/3/movie/" + v_idFicha + "?language=es-ES&api_key=" + clave, payload) res2 = conn.getresponse() data2 = res2.read() peli1 = json.loads(data2) logger.debug("peli1") log_datos(peli1) vapikey = 'c3ca59d0' omdb.set_default('apikey', vapikey) logger.debug('FICHA_IMBD') print (peli1["imdb_id"]) peli_imbd1 = omdb.imdbid(peli1["imdb_id"]) log_datos(peli_imbd1) """ numero = numero + 1 if encontrado == False: logger.warning('CUIDADO!! Quizás no coicida la pelicula') peli = None peli_imdb = None print('vamos a preparar la Ficha') if peli: generos = "" if peli_imdb == None: imagen = None escritor = None director = None actores = None sinopsis_en = None pais = None else: anio = peli_imdb.year imagen = peli_imdb.poster escritor = peli_imdb.writer director = peli_imdb.director actores = peli_imdb.actors sinopsis_en = peli_imdb.plot pais = peli_imdb.country if imagen == None or imagen == "": imagen = ruta_img + peli["poster_path"] for g in peli["genres"]: generos = generos + "," + unicode(g["name"]) generos = generos[1:] v_Ficha = "" if peli_imdb: v_Ficha = 'Imdb-' + str( peli["imdb_id"]) + "," + "movdb-" + str(peli["id"]) else: v_Ficha = "movdb-" + str(peli["id"]) print('a x el item') item = { 'titulo': unicode(peli["title"]), 'titulo_orig': unicode(peli["original_title"]), 'anio': anio, 'generos': generos, 'imagen': imagen, 'pais': pais, 'escritor': escritor, 'director': director, 'actores': actores, 'duracion': peli["runtime"], 'sinopsis': unicode(sinopsis_en), 'sinopsis_es': unicode(peli["overview"]), 'idFicha': v_Ficha, } logger.debug('Finalmente nos queda ') log_datos(item) else: return None return item