Beispiel #1
0
    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
Beispiel #2
0
    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')
Beispiel #3
0
    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())
Beispiel #4
0
    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
Beispiel #5
0
    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