File size: 5,332 Bytes
235af27 |
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 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
#!/usr/bin/env bash
WGET=$(which wget 2>/dev/null)
CONDA_VERSION=$(conda --version 2>/dev/null)
DOCKER_UTILS=$(which docker 2>/dev/null)
DOCKER_UTILS_NEEDED=false
PACK_MGR=""
PACK_MGR_OPTIONS=""
if [[ "$OSTYPE" == "darwin"* ]]; then
PACK_MGR="brew install"
elif command -v emerge &> /dev/null; then
PACK_MGR="sudo emerge"
elif command -v dnf &> /dev/null; then
PACK_MGR="sudo dnf install"
PACK_MGR_OPTIONS="-y"
elif command -v yum &> /dev/null; then
PACK_MGR="sudo yum install"
PACK_MGR_OPTIONS="-y"
elif command -v zypper &> /dev/null; then
PACK_MGR="sudo zypper install"
PACK_MGR_OPTIONS="-y"
elif command -v pacman &> /dev/null; then
PACK_MGR="sudo pacman -Sy"
elif command -v apt-get &> /dev/null; then
sudo apt-get update
PACK_MGR="sudo apt-get install"
PACK_MGR_OPTIONS="-y"
elif command -v apk &> /dev/null; then
PACK_MGR="sudo apk add"
fi
check_programs_installed() {
local programs=("$@")
declare -a programs_missing
for program in "${programs[@]}"; do
if command -v "$program" >/dev/null 2>&1; then
echo "$program is installed."
else
echo "$program is not installed."
programs_missing+=($program)
fi
done
local count=${#programs_missing[@]}
if [[ $count -eq 0 || "$PKG_MGR" = "" ]]; then
DOCKER_UTILS_NEEDED=true
else
for program in "${programs_missing[@]}"; do
if [ "$program" = "ffmpeg" ];then
eval "$PKG_MGR ffmpeg $PKG_MGR_OPTIONS"
if command -v ffmpeg >/dev/null 2>&1; then
echo "FFmpeg installed successfully!"
else
echo "FFmpeg installation failed."
DOCKER_UTILS_NEEDED=true
break
fi
elif [ "$program" = "calibre" ];then
# avoid conflict with calibre builtin lxml
pip uninstall lxml -y 2>/dev/null
if [[ "$OSTYPE" == "Linux" ]]; then
echo "Installing Calibre for Linux..."
$WGET -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sh /dev/stdin
elif [[ "$OSTYPE" == "Darwin"* ]]; then
echo "Installing Calibre for macOS using Homebrew..."
eval "$PACK_MGR --cask calibre"
fi
if command -v calibre >/dev/null 2>&1; then
echo "Calibre installed successfully!"
else
echo "Calibre installation failed."
fi
fi
done
fi
}
# Check for Homebrew on macOS
if [[ "$OSTYPE" == "darwin"* ]]; then
echo "Detected macOS."
if ! command -v brew &> /dev/null; then
echo "Homebrew is not installed. Installing Homebrew..."
/usr/bin/env bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
fi
fi
if [ -z "$WGET" ]; then
echo -e "\e[33m wget is missing! trying to install it... \e[0m"
if [ "$PACK_MGR" != "" ]; then
eval "$PACK_MGR wget $PACK_MGR_OPTIONS"
else
echo "Cannot recognize your package manager. Please install wget manually."
fi
WGET=$(which wget 2>/dev/null)
fi
if [[ -n "$WGET" && -z "$CONDA_VERSION" ]]; then
echo -e "\e[33m conda is missing! trying to install it... \e[0m"
if [[ "$OSTYPE" == "darwin"* ]]; then
$WGET https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O Miniconda3-latest.sh
else
$WGET https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O Miniconda3-latest.sh
fi
chmod +x Miniconda3-latest.sh
./Miniconda3-latest.sh -b -u && \
~/miniconda3/bin/conda init && \
rm -f Miniconda3-latest.sh
# Source the appropriate shell configuration file
SHELL_RC=~/miniconda3/etc/profile.d/conda.sh
source $SHELL_RC
CONDA_VERSION=$(conda --version 2>/dev/null)
echo -e "\e[32m===============>>> conda is installed! <<===============\e[0m"
fi
check_programs_installed()
if [ $DOCKER_UTILS_NEEDED = true ]; then
if [[ -n "$WGET" && -z "$DOCKER_UTILS" ]]; then
echo -e "\e[33m docker is missing! trying to install it... \e[0m"
if [[ "$OSTYPE" == "darwin"* ]]; then
echo "Installing Docker using Homebrew..."
brew install --cask docker
else
$WGET -qO get-docker.sh https://get.docker.com && \
sudo sh get-docker.sh && \
sudo systemctl start docker && \
sudo systemctl enable docker && \
docker run hello-world && \
DOCKER_UTILS=$(which docker 2>/dev/null)
rm -f get-docker.sh
fi
echo -e "\e[32m===============>>> docker is installed! <<===============\e[0m"
fi
fi
if [[ -n "$WGET" && -n "$CONDA_VERSION" ]]; then
SHELL_RC=~/miniconda3/etc/profile.d/conda.sh
echo -e "\e[33m Installing ebook2audiobook... \e[0m"
if [ $DOCKER_UTILS_NEEDED = true ]; then
conda create --prefix $(pwd)/python_env python=3.11 -y
source $SHELL_RC
conda activate $(pwd)/python_env
$DOCKER_UTILS build -f DockerfileUtils -t utils .
fi
pip install --upgrade pip && \
pip install pydub nltk beautifulsoup4 ebooklib translate coqui-tts tqdm mecab mecab-python3 unidic gradio>=4.44.0 docker && \
python -m unidic download && \
python -m spacy download en_core_web_sm && \
pip install -e .
if [ $DOCKER_UTILS_NEEDED = true ]; then
conda deactivate
conda deactivate
fi
echo -e "\e[32m******************* ebook2audiobook installation successful! *******************\e[0m"
echo -e "\e[33mTo launch ebook2audiobook:\e[0m"
echo -e "- in command line mode: ./ebook2audiobook.sh --headless [other options]"
echo -e "- in graphic web mode: ./ebook2audiobook.sh [--share]"
fi
exit 0
|