Exemplo n.º 1
0
    def obtencion_id_serie_ag_mediante_group_id(
            lista_result_serie: list[ResultSerie] = []):

        for result_serie in lista_result_serie:

            result_serie.url_obtencion_data_id_serie_ag = const.URL_API_CONSULTA_GROUP_ID.format(
                result_serie.group_id)
            page = RequestUtils.obtener_data_request_get(
                result_serie.url_obtencion_data_id_serie_ag).json()
            result_serie.id_serie_ag = page['_source']['INFO_SERIE'][0][
                'ID_SERIE_AG']

        return lista_result_serie
Exemplo n.º 2
0
def main(json_param):
    const.PARAM_NODO = json_param['nodo']
    const.PARAM_REGION = json_param['region']
    const.URL_FORMADA = const.URL_NODO_BASE.format(const.PARAM_NODO,
                                                   const.PARAM_REGION)

    json_encabezado = RequestUtils.obtener_data_request_get(
        const.URL_FORMADA).json()

    # obtiene toda la informacion de todos los encabezados como peliculas, series y documentales
    lista_series_en_encabezado = JsonScraping.obtencion_lista_result_series_encabezado(
        json_encabezado)

    # se obtienen los group id de las series
    lista_result_serie = JsonScraping.obtencion_lista_result_series_con_group_id(
        lista_series_en_encabezado)

    # buscamos y establecemos el "id serie ag" de cada serie
    lista_result_serie = JsonScraping.obtencion_id_serie_ag_mediante_group_id(
        lista_result_serie)

    # buscamos los capitulos de cada serie por medio de web scrapping en la tabla html
    lista_result_serie = HtmlScraping.obtencion_capitulos_temporadas_por_id_serie_ag(
        lista_result_serie)

    # validacion de lista de capitulos y de url de imagenes
    for result_serie in lista_result_serie:
        result_serie.numero_total_de_capitulos = len(
            result_serie.lista_de_episodios)
        result_serie = ValidacionEpisodiosUtils.establecer_numero_de_capitulos_a_int(
            result_serie)
        result_serie = ValidacionEpisodiosUtils.obtencion_orden_total_de_temporadas_y_episodios(
            result_serie)
        result_serie = ValidacionEpisodiosUtils.validar_capitulos_faltantes_por_temporada(
            result_serie)
        result_serie = ValidacionEpisodiosUtils.establecer_validacion_result_capitulos_faltantes(
            result_serie)
        result_serie.lista_validaciones_url_imagenes_por_revisar = RequestUtils.validar_lista_url_imagenes(
            result_serie.lista_validaciones_url_imagenes_por_revisar)

    # genera el json final con las validaciones finales
    json_validacion = JsonUtils.generar_json_result(lista_result_serie)

    print(json_validacion)
Exemplo n.º 3
0
    def obtencion_capitulos_temporadas_por_id_serie_ag(lista_series_result: list[ResultSerie]):

        index_columna_id_temp = index_columna_orden_temporada = index_columna_episodes = index_columna_orden_capitulo = 0
        columna_id_temp = 'ID Temp.'
        columna_orden_temporada = 'Orden Temporada'
        columna_episodes = 'EPISODES'
        columna_orden_capitulo = 'Orden Capitulo'

        for serie_result in lista_series_result:
            url_por_consultar = const.URL_CONSULTA_CAPITULOS_SERIE_HTML.format(serie_result.id_serie_ag)
            serie_result.url_obtencion_data_capitulos = url_por_consultar
            page = RequestUtils.obtener_data_request_get(url_por_consultar)
            soup = BeautifulSoup(page.content, "html5lib")

            tabla_episodios = soup.find('table')
            lista_columnas_header = tabla_episodios.findAll('th')
            lista_filas_tr_localizadas = tabla_episodios.findAll('tr')
            lista_filas_td_localizadas = [tr.findAll('td') for tr in lista_filas_tr_localizadas if
                                          len(tr.findAll('td')) > 1]

            # se obtienen los indices de los headers de los capitulos y temporadas
            for index, columna_header in enumerate(lista_columnas_header):
                if columna_id_temp == columna_header.get_text(): index_columna_id_temp = index
                if columna_episodes == columna_header.get_text(): index_columna_episodes = index
                if columna_orden_temporada == columna_header.get_text(): index_columna_orden_temporada = index
                if columna_orden_capitulo == columna_header.get_text(): index_columna_orden_capitulo = index

            # de la lista de filas td, se obtienen los datos de cada capitulo de la serie y la almacena
            # en el objeto ResultSerie

            for episodio_td in lista_filas_td_localizadas:

                result_episodio = ResultCapitulo(
                    episodio_td[index_columna_id_temp].get_text(),
                    episodio_td[index_columna_orden_temporada].get_text(),
                    episodio_td[index_columna_episodes].get_text(),
                    episodio_td[index_columna_orden_capitulo].get_text()
                )

                serie_result.lista_de_episodios.append(result_episodio)

        return lista_series_result