Pirrandi / animu-cli

Visualizador de anime para Linux mediante terminal.
5 stars 1 forks source link

Soporte para servidor OK.RU #3

Open IamJony opened 3 months ago

IamJony commented 3 months ago

Atención

Soporte para el servicio ok.ru

Para que funcione, debe tener instalada en su sistema la última versión de yt-dlp.

También debe recordar que debe exportar las cookies de https://monoschinos2.com a la carpeta donde está el script, o de lo contrario, Cloudflare lo detectará como un bot.

#!/bin/bash

# curl cookies + user-agent
ucurl () {
  local url="$1"
  curl -L -s -A "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0" \
  -b cookies.txt "$url"

}

buscar_anime() {
    query="$1"
    # Reemplaza espacios con "+"
    query=$(echo "$query" | tr ' ' '+')
    search_url="https://monoschinos2.com/buscar?q=$query"
    #ucurl "$search_url" > text.html
    sleep 2
    # Realiza la búsqueda y filtra los resultados la clase "seristitles"
    anime_titles=$(ucurl "$search_url" | grep -o '<h3 class="fs-6 text-light mt-2 title_cap">[^<]*' | sed 's/<h3 class="fs-6 text-light mt-2 title_cap">//')

    echo "$anime_titles"
}

while true; do
    linux_user=$(whoami)
    historial_file="/home/$linux_user/historial.txt"
    clear
    if [ ! -e "$historial_file" ]; then
        touch "$historial_file"
    fi

    echo '⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⡀⡀⣀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀'
    echo '⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣆⣄⠀⠀⠀⠀⠀⠀⠀'
    echo '⠀⠀⠀⠀⠀⠀⠀⢰⣿⢻⡿⡏⡟⣿⣱⣿⣧⣿⣯⣽⠻⣿⣿⣷⣦⠄⠀⠀⠀⠀'
    echo '⠀⠀⠀⠀⠀⠀⠀⣸⣿⣷⣷⣿⢿⠿⡏⠻⡀⢻⠙⣿⣿⣧⣽⣿⣿⣿⣄⠀⠀⠀'
    echo '⢽⡽⠒⠄⠀⠀⠘⡼⡟⠇⡇⢋⠈⢆⡽⠶⠾⢾⠆⠘⢿⣿⡻⣿⣿⣿⣿⣂⠀⠀    _          _                    ____ _     ___ '
    echo '⡙⢷⣦⣰⠀⠀⠀⢱⡥⠵⠈⠲⢯⣵⣶⣶⡒⠎⠀⠀⢸⣿⣿⣿⣿⣿⣿⡇⠀⠀   / \   _ __ (_)_ __ ___  _   _   / ___| |   |_ _|'
    echo '⢶⣱⠛⢛⡄⠀⠀⠀⢟⡟⠁⠀⠀⠀⠀⣰⣶⣖⡆⠀⠸⡟⣵⡿⣿⣿⣿⠁⠀⠀  / _ \ |  _ \| |  _ ` _ \| | | | | |   | |    | | '
    echo '⢀⢳⢈⠠⣴⡀⠀⠀⠈⢿⠷⠂⠀⠀⠀⠹⣿⡟⠒⠀⠀⢐⡗⠚⣹⣿⠏⠀⠀⠀ / ___ \| | | | | | | | | | |_| | | |___| |___ | | '
    echo '⢸⠜⣷⠁⠄⠳⡀⠀⡇⣯⠭⣐⠠⠀⠀⠀⠹⡧⠀⠀⠀⡴⡤⢺⣿⠏⠀⠀⠀⠀/_/   \_\_| |_|_|_| |_| |_|\__,_|  \____|_____|___|'
    echo '⡎⢰⠀⢗⡝⠁⠱⡀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡜⠀⡇⠈⡏⠀⠀⠀⠀⠀'
    echo '⢁⢸⠀⠀⢿⡍⠀⠑⣡⣤⣴⣤⣤⣤⣤⣴⣶⡾⠛⢡⠃⠠⡇⠀⡇⠀⠀⠀⠀⠀      Visualizador de Anime.'
    echo '⠘⣌⠀⠀⠈⢿⣏⠠⠵⡄⠉⢻⡿⢿⣿⠟⠉⠀⢀⡟⠀⠀⠇⠀⢡⠀⠀⠀⠀⠀ https://github.com/Pirrandi/animu-cli'
    echo '⠀⠘⠀⠀⠀⠘⡵⡆⠄⠚⢄⠈⡟⠉⠀⠀⠀⠀⣨⠇⠀⠀⢸⣀⡨⠔⠂⠈⠁⠒'
    echo '⠀⠀⠀⠀⠀⠀⠸⣳⡄⣂⠭⢦⣽⡄⠀⠀⠀⠀⡟⢀⠤⢒⣉⣠⣴⣶⣿⣷⣴⡿'
    echo '⠀⠀⠀⠀⡠⣴⣶⣟⣥⣀⣉⣛⣿⣔⣀⣀⡠⠔⣩⣴⣾⣷⣿⣿⣿⡿⠟⢋⣁⣤'

    # Función para agregar un registro al historial
    agregar_al_historial() {
        anime="$1"
        episodio="$2"
        echo "$anime - Episodio $episodio" >>"$historial_file"
    }
    mostrar_historial() {
        echo -e "\e[35m    [!] Últimos capitulos vistos [!]\e[0m"
        echo -e "\e[35m───────────────────────────────────────\e[0m"
        echo -e "\e[35m\n\e[0m"

        if [ "$(cat $historial_file)" != "" ]; then

            echo "$(tail -n 5 $historial_file)"

        else
            echo "Aun no hay ningun capitulo registrado."
        fi

        echo -e "\e[35m\n\e[0m"
        echo -e "\e[35m───────────────────────────────────────\e[0m"
    }

    if [ $historial_file != "" ]; then
        echo -e "\n"
        mostrar_historial
        echo -e "\n"
    fi

    # Buscar un anime en MonosChinos

    echo -e "[!] ¿Qué deseas hacer?"
    echo ""
    echo -e "\e[33m    1) Buscar un anime\e[0m"
    echo -e "\e[33m    2) Mostrar historial\e[0m"
    echo -e "\e[33m    3) Salir\e[0m"
    echo ""
    read -p "[?] Selecciona una opción: " opcion

    case $opcion in
    1)
        clear

        if [ $# -eq 0 ]; then
            echo -e "\e[33m[!] Por favor, introduce el nombre del anime o parte de él.\e[0m"
            echo ""
            echo -e "\e[31m q) Volver al menu.\e[0m"
            echo ""
            read -p "[?] Nombre del anime: " anime_query

        else
            anime_query="$1"
        fi
        if [ "$anime_query" == "q" ]; then
            continue
        fi
        # Busca el anime y muestra los resultados
        anime_titles=$(buscar_anime "$anime_query")

        # Si no se encontraron resultados, muestra un mensaje y sale
        if [ -z "$anime_titles" ]; then
            for ((i = 3; i >= 1; i--)); do
                clear
                echo -e "\e[31m[!] No se encontraron resultados para $anime_query.\e[0m"
                echo "Volviendo al menu en..." $i
                sleep 1

            done
            continue
        fi

        # Muestra los títulos numerados
        clear
        while true; do

            echo "Se encontraron los siguientes animes para $anime_query:"
            echo -e "\n"
            IFS=$'\n' # Configura el separador para nuevas líneas
            anime_titles_array=($anime_titles)
            for i in "${!anime_titles_array[@]}"; do
                echo -e "\e[33m    $((i + 1)). ${anime_titles_array[$i]}\e[0m"

            done
            echo ""
            echo -e "\e[31m    q) Volver al menu.\e[0m"
            # Pide al usuario que seleccione un título
            echo -e "\n"
            echo -e "\e[33m[!] Selecciona un anime por su número (1-${#anime_titles_array[@]})\e[0m"
            echo ""
            read -p "[?] Opcion: " anime_choice
            echo -e "\n"

            if [ "$anime_choice" == "q" ]; then
                break
            fi

            # Verifica que la selección sea válida (dentro del rango de opciones)
            if [[ "$anime_choice" =~ ^[0-9]+$ ]] && ((anime_choice >= 1 && anime_choice <= ${#anime_titles_array[@]})); then
                # Obtén el título seleccionado
                selected_title="${anime_titles_array[$((anime_choice - 1))]}"
                # Elimina los dos puntos del título

                selected_title=$(echo "$selected_title" | sed 's/[:,.()!]//g; s/[ -]\+/ /g')
                clear
                echo -e "\e[33m[!] Seleccionaste: $selected_title\e[0m"
                echo -e "\n"
                break
            else
                clear
                echo -e "\e[31m[!] Selección inválida. Por favor, elige un número válido.[!]\e[0m"
                echo -e "\n"

            fi

        done
        if [ "$anime_choice" == "q" ]; then
            continue
        fi
        # Obtiene el título seleccionado
        selected_title="${anime_titles_array[$((anime_choice - 1))]}"
        # Elimina los dos puntos del título
        selected_title=$(echo "$selected_title" | sed 's/[:,.()!]//g; s/[ -]\+/ /g')
        clear

        # Formatea el nombre del anime reemplazando espacios con guiones
        anime_name_formatted=$(echo "$selected_title" | tr ' ' '-')

        # Obtener episodios del Anime
        API_URL="https://api.jikan.moe/v4/anime?q=$anime_name_formatted"

        # Realiza la solicitud GET a la API y almacena la respuesta en una variable
        response=$(ucurl "$API_URL")

        # Utiliza jq para extraer el valor de "episodes" del JSON de respuesta
        episodes=$(echo "$response" | jq -r '.data[0].episodes')

        # Utiliza jq para extraer el valor de "airing" del JSON de respuesta
        airing=$(echo "$response" | jq -r '.data[0].airing')

        score=$(echo "$response" | jq -r '.data[0].score')

        clasificacion=$(echo "$response" | jq -r '.data[0].rating')

        duration=$(echo "$response" | jq -r '.data[0].duration')

        while true; do

            # Verifica si se obtuvo el número de episodios correctamente
            clear
            while true; do

                echo -e "\e[33m[!] Seleccionaste: $selected_title\e[0m"
                echo -e "\n"
                respuesta=1

                if [ "$episodes" != "null" ]; then
                    echo "    - Episodios: $episodes (El numero de episodios en algunas ocasiones puede estar incorrecto.)"
                else
                    echo "    No se pudo obtener la cantidad de episodios."
                fi

                if [ "$score" != "null" ]; then
                    echo "    - Puntuacion: $score"
                else
                    echo "    No se pudo obtener la puntuacion."
                fi

                if [ "$clasificacion" != "null" ]; then
                    echo "    - Clasificacion: $clasificacion"
                else
                    echo "    No se pudo obtener la clasificacion."
                fi

                if [ "$duration" != "null" ]; then
                    echo "    - Duracion: $duration"
                else
                    echo "    No se pudo obtener la duracion."
                fi

                # Verifica el valor de "airing" y muestra el estado adecuado
                if [ "$airing" == "true" ]; then
                    echo -e "\e[32m    - Estado: En emisión\e[0m"
                    echo -e "\n"
                else
                    echo -e "\e[31m    - Estado: Finalizada\e[0m"
                    echo -e "\n"
                fi

                # Pregunta al usuario el número del episodio que desea ver

                read -p "[?] Ver episodio: " episode_number
                if [ "$episode_number" == "q" ]; then
                    break
                fi
                # Verificar si la respuesta es un número válido y no excede el número de episodios
                if [[ "$episode_number" =~ ^[0-9]+$ ]]; then
                    if ((episode_number >= 1 && episode_number <= episodes)); then
                        break # Salir del bucle si la respuesta es válida
                    else
                        clear
                        echo -e "\e[31m[!] Número de episodio fuera de rango. Debe estar entre 1 y $episodes. [!]\e[0m"
                        echo ""
                    fi
                else
                    clear
                    echo -e "\e[31m[!] Respuesta inválida. Introduce un número válido. [!]\e[0m"
                    echo ""
                fi
            done
            if [ "$episode_number" == "q" ]; then
                break
            fi
            # En este punto, episode_number contiene el número de episodio válido que el usuario desea ver

            # Crea la URL del episodio seleccionado del anime
            while [ "$respuesta" != 2 ]; do
                clear
                echo "Has seleccionado el episodio $episode_number."
                url="https://monoschinos2.com/ver/$anime_name_formatted-episodio-$episode_number"
                echo ""
                agregar_al_historial "$selected_title" "$episode_number"
                # Intenta reproducir el episodio desde mp4upload
                echo "Conectando al servidor..."
                data_player=$(ucurl "$url" | sed -nE "s@.*data-player=\"([^\"]*)\">mp4upload.*@\1@p" | head -1)
                embed_link=$(printf "%s" "$data_player" | base64 -d)
                video_link=$(ucurl "$embed_link" | sed -nE "s@.*src: \"([^\"]*)\".*@\1@p")

                # Intenta reproducir el episodio desde upload
                if [ "$video_link" = "" ]; then
                    echo -e "\e[31mEl servidor mp4upload fallo.\e[0m"
                    echo "Probando con el servidor upload.."
                    data_player=$(ucurl "$url" | sed -nE "s@.*data-player=\"([^\"]*)\">uqload*@\1@p" | head -1 2>/dev/null)
                    embed_link=$(printf "%s" "$data_player" | base64 -d 2>/dev/null)
                    embed_link=$(echo "$embed_link" | sed 's/\(.com\|.co\)/.io/' 2>/dev/null)
                    video_link=$(ucurl "$embed_link" | sed -n 's/.*sources: \["\([^"]*\.mp4\)".*/\1/p')

                    if [ -n "$video_link" ]; then
    mpv "$video_link" --referrer="https://www.uqload.com/" 2>/dev/null
fi
                fi

                if [ "$video_link" = "" ]; then
                echo -e "\e[31mEl servidor upload fallo.\e[0m"
                    echo "Probando con el servidor Ok.RU ..."

                data_player=$(ucurl "$url" | sed -nE "s@.*data-player=\"([^\"]*)\">ok*@\1@p" | head -1 | awk -F '</button>' '{print $1}' 2>/dev/null)
                embed_link=$(printf "%s" "$data_player" | base64 --decode 2>/dev/null)

                                  if [ -n "$embed_link" ]; then
    mpv "$embed_link" --http-header-fields="Range: bytes=0-" 2>/dev/null
fi

fi

                echo "Reproduciendo $anime_name_formatted - Episodio $episode_number"
                mpv "$video_link" --referrer="https://www.mp4upload.com/"

                if [ "$data_player" = "" ]; then
                    clear
                    echo -e "\e[31mEpisodio no encontrado\e[0m"
                    echo -e "\e[33mLa lista de episodio que se proporciona es para las versiones en Japones (Subtitulada).\n Las versiones dobladas suelen estar limitadas en cuanto a episodios, revisa la disponibilidad.\e[0m"
                    echo "URL erroneo: $url"
                fi

                clear

                while true; do
                    clear
                    echo "[!] ¿Quieres continuar con el siguiente episodio?"
                    echo ""
                    echo "   1) Si"
                    echo "   2) No"
                    echo ""
                    echo -e "\e[31mq) Volver al menu. \e[0m"
                    echo -e "\e[31ms) Probar servidor de Tio Anime. \e[0m"
                    echo ""
                    read -p "[?] Opcion: " respuesta

                    if [ "$respuesta" == "q" ] || [ "$respuesta" = "s" ]; then
                        break
                    fi
                    if [ "$respuesta" == 1 ]; then
                        ((episode_number++))
                        break
                    elif [ "$respuesta" == 2 ]; then
                        echo "Saliendo..."
                        break
                    else
                        echo "Respuesta no válida. Por favor, responde 'Sí' o 'No'."

                    fi
                done
                if [ "$respuesta" == "q" ] || [ "$respuesta" = "s" ]; then
                    break
                fi
            done
            if [ "$respuesta" == "q" ] || [ "$respuesta" = "s" ]; then
                break
            fi
        done

        if [ "$episode_number" = "" ] || [ "$respuesta" = "q" ]; then
            continue
        fi

        if [ "$video_link" = "" ] || [ "$respuesta" = "s" ]; then
            clear
            while true; do
                echo "[!] ¿Quieres probar en el servidor de TioAnime?: "
                echo ""
                echo "  1) Sí "
                echo "  2) No"
                echo ""
                read -p "[?] Opcion: " choice
                case "$choice" in
                1)
                    clear
                    echo "Iniciando TioAnime..."
                    echo ' '
                    echo '$$$$$$$$\ $$\                  $$$$$$\            $$\                         '
                    echo '\__$$  __|\__|                $$  __$$\           \__|                        '
                    echo '  $$ |   $$\  $$$$$$\        $$ /  $$ |$$$$$$$\  $$\ $$$$$$\$$$$\   $$$$$$\  '
                    echo '  $$ |   $$ |$$  __$$\       $$$$$$$$ |$$  __$$\ $$ |$$  _$$  _$$\ $$  __$$\ '
                    echo '  $$ |   $$ |$$ /  $$ |      $$  __$$ |$$ |  $$ |$$ |$$ / $$ / $$ |$$$$$$$$ |'
                    echo '  $$ |   $$ |$$ |  $$ |      $$ |  $$ |$$ |  $$ |$$ |$$ | $$ | $$ |$$   ____|'
                    echo '  $$ |   $$ |\$$$$$$  |      $$ |  $$ |$$ |  $$ |$$ |$$ | $$ | $$ |\$$$$$$$\ '
                    echo '  \__|   \__| \______/       \__|  \__|\__|  \__|\__|\__| \__| \__| \_______|'
                    echo '         '
                    echo '    Distribucion no Oficial    '
                    echo ' '

                    buscar() {
                        query="$1"
                        query=$(echo "$query" | tr ' ' '+')
                        search_url="https://tioanime.com/directorio?q=$query"
                        anime_titles=$(ucurl "$search_url" | grep -o '<h3 class="title">[^<]*' | sed 's/<h3 class="title">//')
                        echo "$anime_titles"
                    }

                    if [ $# -eq 0 ]; then
                        echo -e "\e[33m[!] Por favor, introduce el nombre del anime o parte de él:\e[0m"
                        echo ""
                        read -p "[?] Opcion: " anime_choice
                        echo -e "\n"
                    else
                        anime_query="$1"
                    fi

                    anime_titles=$(buscar "$anime_query")

                    if [ -z "$anime_titles" ]; then
                        echo "[!] No se encontraron resultados para '$anime_query'."
                        exit 1
                    fi
                    clear
                    echo "Se encontraron los siguientes animes:"
                    echo -e "\n"
                    IFS=$'\n'
                    anime_titles_array=($anime_titles)
                    for i in "${!anime_titles_array[@]}"; do
                        echo -e "\e[33m    $((i + 1)). ${anime_titles_array[$i]}\e[0m"
                    done

                    echo -e "\n"
                    read -p "[?] Selecciona un anime por su número (1-${#anime_titles_array[@]}): " anime_choice
                    echo -e "\n"
                    # Verifica que la selección sea válida
                    if ! [[ "$anime_choice" =~ ^[0-9]+$ ]]; then
                        echo "[!] Selección inválida."
                        echo -e "\n"
                        exit 1
                    fi

                    # Obtiene el título seleccionado
                    selected_title="${anime_titles_array[$((anime_choice - 1))]}"
                    # Limpia el titulo para la URL
                    selected_title=$(echo "$selected_title" | sed 's/[:,.()!]//g; s/[ -]\+/ /g')
                    clear
                    echo -e "\e[33mSeleccionaste: $selected_title\e[0m"
                    echo -e "\n"
                    # Formatea el nombre del anime reemplazando espacios con guiones
                    anime_name_formatted=$(echo "$selected_title" | tr ' ' '-')
                    # Busca el titulo en la API de Jikan
                    API_URL="https://api.jikan.moe/v4/anime?q=$anime_name_formatted"
                    response=$(ucurl "$API_URL")

                    episodes=$(echo "$response" | jq -r '.data[0].episodes')
                    airing=$(echo "$response" | jq -r '.data[0].airing')
                    score=$(echo "$response" | jq -r '.data[0].score')
                    clasificacion=$(echo "$response" | jq -r '.data[0].rating')
                    duration=$(echo "$response" | jq -r '.data[0].duration')

                    # Verifica si se obtuvo el número de episodios correctamente
                    if [ "$episodes" != "null" ]; then
                        echo "    - Episodios: $episodes"
                    else
                        echo "    No se pudo obtener la información de episodios."
                    fi

                    if [ "$score" != "null" ]; then
                        echo "    - Puntuacion: $score"
                    else
                        echo "    No se pudo obtener la información de episodios."
                    fi

                    if [ "$clasificacion" != "null" ]; then
                        echo "    - Clasificacion: $clasificacion"
                    else
                        echo "    No se pudo obtener la información de episodios."
                    fi

                    if [ "$duration" != "null" ]; then
                        echo "    - Duracion: $duration"
                    else
                        echo "    No se pudo obtener la información de episodios."
                    fi

                    # Verifica el valor de "airing" y muestra el estado adecuado
                    if [ "$airing" == "true" ]; then
                        echo -e "\e[32m    - Estado: En emisión\e[0m"
                        echo -e "\n"
                    else
                        echo -e "\e[31m    - Estado: Finalizada\e[0m"
                        echo -e "\n"
                    fi

                    read -p "[?] Ver episodio: " episode_number
                    if [ "$episode_number" == "q" ]; then
                        break
                    fi
                    respuesta=1
                    while [ "$respuesta" != 2 ]; do
                        url="https://tioanime.com/ver/$anime_name_formatted-$episode_number"

                        page_content=$(ucurl "$url")
                        # Buscar el enlace de YourUpload en la variable "videos"
                        yourupload_link=$(echo "$page_content" | grep -o 'YourUpload","[^"]*' | sed 's/.*"//' | sed 's/\\//g')
                        if [ -z "$yourupload_link" ]; then
                            echo "No se encontró el enlace de YourUpload."
                            exit 1
                        fi
                        # Imprimir el enlace de YourUpload
                        #echo "Enlace de YourUpload: $yourupload_link"
                        # Acceder a la página de YourUpload
                        yourupload_page_content=$(ucurl "$yourupload_link")
                        # Buscar la URL del video .mp4 en la página de YourUpload
                        mp4_link=$(echo "$yourupload_page_content" | grep -o 'content="https://[^"]*\.mp4"' | sed 's/content="//')
                        if [ -z "$mp4_link" ]; then
                            echo "No se encontró el enlace del video .mp4 en YourUpload."
                            exit 1
                        fi
                        #echo "Enlace del video .mp4: $mp4_link"
                        clear
                        echo "Reproduciendo $anime_name_formatted - Episodio $episode_number"
                        mpv $mp4_link --referrer="https://yourupload.com"

                        while true; do
                            clear
                            echo "¿Quieres continuar con el siguiente episodio?"
                            echo ""
                            echo "   1) Si"
                            echo "   2) No"
                            echo ""
                            echo -e "\e[31mq) Volver al menu.\e[0m"
                            echo ""
                            read -p "Opcion: " respuesta

                            if [ "$respuesta" == "q" ]; then
                                break
                            fi
                            if [ "$respuesta" == 1 ]; then
                                ((episode_number++))
                                break
                            elif [ "$respuesta" == 2 ]; then
                                echo "Saliendo..."
                                break
                            else
                                echo "Respuesta no válida. Por favor, responde 'Sí' o 'No'."

                            fi
                        done
                        if [ "$respuesta" == "q" ]; then
                            break
                        fi
                    done
                    break
                    ;;
                2)
                    # Si elige No, muestra un mensaje y continúa con el script
                    echo "No se ha seleccionado TioAnime. Continuando..."
                    sleep 2
                    break
                    ;;
                *)
                    echo "Opción no válida. Por favor, elige 1 (Sí) o 2 (No)."
                    ;;
                esac
            done
        fi

        ;;
    2)
        clear
        echo -e "\e[35m    [!] Historial [!]\e[0m"
        echo -e "\e[35m───────────────────────────────────────\e[0m"
        echo ""
        cat $historial_file
        echo ""
        echo -e "\e[35m───────────────────────────────────────\e[0m"
        echo ""
        echo -e "[!] ¿Qué deseas hacer?"
        echo ""
        echo -e "\e[33m    d) Borrar historial\e[0m"
        echo -e "\e[33m    q) Salir\e[0m"
        echo ""
        read -p "[?] Opcion: " historial_query
        echo ""
        if [ "$historial_query" == "q" ]; then
            continue
        fi
        if [ "$historial_query" == "d" ]; then
            echo "" >/home/$linux_user/historial.txt
        fi
        ;;
    3)
        clear
        echo '⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⡀⡀⣀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀'
        echo '⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣆⣄⠀⠀⠀⠀⠀⠀⠀'
        echo '⠀⠀⠀⠀⠀⠀⠀⢰⣿⢻⡿⡏⡟⣿⣱⣿⣧⣿⣯⣽⠻⣿⣿⣷⣦⠄⠀⠀⠀ https://github.com/Pirrandi/animu-cli'
        echo '⠀⠀⠀⠀⠀⠀⠀⣸⣿⣷⣷⣿⢿⠿⡏⠻⡀⢻⠙⣿⣿⣧⣽⣿⣿⣿⣄⠀⠀⠀'
        echo '⢽⡽⠒⠄⠀⠀⠘⡼⡟⠇⡇⢋⠈⢆⡽⠶⠾⢾⠆⠘⢿⣿⡻⣿⣿⣿⣿⣂⠀⠀  /$$$$$$$                      /$$'
        echo '⡙⢷⣦⣰⠀⠀⠀⢱⡥⠵⠈⠲⢯⣵⣶⣶⡒⠎⠀⠀⢸⣿⣿⣿⣿⣿⣿⡇⠀⠀ | $$__  $$                    | $$'
        echo '⢶⣱⠛⢛⡄⠀⠀⠀⢟⡟⠁⠀⠀⠀⠀⣰⣶⣖⡆⠀⠸⡟⣵⡿⣿⣿⣿⠁⠀⠀ | $$  \ $$ /$$   /$$  /$$$$$$ | $$'
        echo '⢀⢳⢈⠠⣴⡀⠀⠀⠈⢿⠷⠂⠀⠀⠀⠹⣿⡟⠒⠀⠀⢐⡗⠚⣹⣿⠏⠀⠀⠀ | $$$$$$$ | $$  | $$ /$$__  $$| $$'
        echo '⢸⠜⣷⠁⠄⠳⡀⠀⡇⣯⠭⣐⠠⠀⠀⠀⠹⡧⠀⠀⠀⡴⡤⢺⣿⠏⠀⠀⠀⠀ | $$__  $$| $$  | $$| $$$$$$$$|__/'
        echo '⡎⢰⠀⢗⡝⠁⠱⡀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡜⠀⡇⠈⡏⠀⠀⠀⠀⠀ | $$  \ $$| $$  | $$| $$_____/    '
        echo '⢁⢸⠀⠀⢿⡍⠀⠑⣡⣤⣴⣤⣤⣤⣤⣴⣶⡾⠛⢡⠃⠠⡇⠀⡇⠀⠀⠀⠀⠀ | $$$$$$$/|  $$$$$$$|  $$$$$$$ /$$'
        echo '⠘⣌⠀⠀⠈⢿⣏⠠⠵⡄⠉⢻⡿⢿⣿⠟⠉⠀⢀⡟⠀⠀⠇⠀⢡⠀⠀⠀⠀⠀ |_______/  \____  $$ \_______/|__/'
        echo '⠀⠘⠀⠀⠀⠘⡵⡆⠄⠚⢄⠈⡟⠉⠀⠀⠀⠀⣨⠇⠀⠀⢸⣀⡨⠔⠂⠈⠁⠒            /$$  | $$              '
        echo '⠀⠀⠀⠀⠀⠀⠸⣳⡄⣂⠭⢦⣽⡄⠀⠀⠀⠀⡟⢀⠤⢒⣉⣠⣴⣶⣿⣷⣴⡿           |  $$$$$$/              '
        echo '⠀⠀⠀⠀⡠⣴⣶⣟⣥⣀⣉⣛⣿⣔⣀⣀⡠⠔⣩⣴⣾⣷⣿⣿⣿⡿⠟⢋⣁⣤            \______/               '
        break
        ;;
    esac
done

Ejemplo

okru