From fd80b8833dded94aa74cedf5f09cb281d3a9bcb3 Mon Sep 17 00:00:00 2001 From: micziz Date: Tue, 5 Jul 2022 12:29:02 +0200 Subject: [PATCH] THis shloud work! --- install.sh | 220 +++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + 2 files changed, 221 insertions(+) create mode 100644 install.sh diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..6453dc0 --- /dev/null +++ b/install.sh @@ -0,0 +1,220 @@ +#!/bin/bash + +# If the install fails, then print an error and exit. +function install_fail() { + echo "Installation failed" + exit 1 +} + +# This is the help fuction. It helps users withe the options +function Help(){ + echo "Usage: install.sh [option]" + echo "Options:" + echo " -h: Show this help message and exit" + echo " -d: Install only dependencies" + echo " -p: Install only python dependencies (including playwright)" + echo " -b: Install just the bot" + echo " -l: Install the bot and the python dependencies" +} + +# Options +while getopts ":hydpbl" option; do + case $option in + # -h, prints help message + h) + Help exit 0;; + # -y, assumes yes + y) + ASSUME_YES=1;; + # -d install only dependencies + d) + DEPS_ONLY=1;; + # -p install only python dependencies + p) + PYTHON_ONLY=1;; + b) + JUST_BOT=1;; + l) + BOT_AND_PYTHON=1;; + # if a bad argument is given, then throw an error + \?) + echo "Invalid option: -$OPTARG" >&2 Help exit 1;; + :) + echo "Option -$OPTARG requires an argument." >&2 Help exit 1;; + esac +done + +# Install dependencies for MacOS +function install_macos(){ + # Check if homebrew is installed + if [ ! command -v brew &> /dev/null ]; then + echo "Installing Homebrew" + # if it's is not installed, then install it in a NONINTERACTIVE way + NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)" + # Check for what arcitecture, so you can place path. + if [[ "uname -m" == "x86_64" ]]; then + echo "export PATH=/usr/local/bin:$PATH" >> ~/.bash_profile && source ~/.bash_profile + fi + # If not + else + # Print that it's already installed + echo "Homebrew is already installed" + fi + # Install the required packages + echo "Installing required Packages" + brew install python@3.10 tcl-tk python-tk +} + +# Function to install for arch (and other forks like manjaro) +function install_arch(){ + echo "Installing required packages" + sudo pacman -S --needed python3 tk git && python3 -m ensurepip || install_fail +} + +# Function to install for debian (and ubuntu) +function install_deb(){ + echo "Installing required packages" + sudo apt install python3 python3-dev python3-tk python3-pip git || install_fail +} + +# Function to install for fedora (and other forks) +function install_fedora(){ + echo "Installing required packages" + sudo dnf install python3 python3-tkinter python3-pip git python3-devel || install_fail +} + +# Function to install for centos (and other forks based on it) +function install_centos(){ + echo "Installing required packages" + sudo yum install -y python3 || install_fail + sudo yum install -y python3-tkinter epel-release python3-pip git || install_fail +} + +function get_the_bot(){ + echo "Downloading the bot" + git clone https://github.com/elebumm/RedditVideoMakerBot.git +} + +#install python dependencies +function install_python_dep(){ + # tell the user that the script is going to install the python dependencies + echo "Installing python dependencies" + # cd into the directory + cd RedditVideoMakerBot + # install the dependencies + pip3 install -r requirements.txt + # cd out + cd .. +} + +# install playwright function +function install_playwright(){ + # tell the user that the script is going to install playwright + echo "Installing playwright" + # cd into the directory where the script is downloaded + cd RedditVideoMakerBot + # run the install script + playwright install + playwright install-deps + # give a note + printf "Note, if these gave any errors, please run this command This will (maybe) fix the issue with playwright.\npython -m playwright install && python -m playwright install-deps" + cd .. +} + +# Install depndencies +function install_deps(){ + # if the platform is mac, install macos + if [ "$(uname)" == "Darwin" ]; then + install_macos || install_fail + # if pacman is found + elif [ -x "$(command -v pacman)" ]; then + # install for arch + install_arch || install_fail + # if apt-get is found + elif [ -x "$(command -v apt-get)" ]; then + # install fro debian + install_deb || install_fail + # if dnf is found + elif [ -x "$(command -v dnf)" ]; then + # install for fedora + install_fedora || install_fail + # if yum is found + elif [ -x "$(command -v yum)" ]; then + # install for centos + install_centos || install_fail + # else + else + # print an error message and exit + printf "Your OS is not supported\n Please install python3, pip3 and git manually\n After that, run the script again with the -pb option to install python and playwright dependencies\n If you want to add support for your OS, please open a pull request on github\n +https://github.com/elebumm/RedditVideoMakerBot" + exit 1 + fi +} + +# Main function +function install_main(){ + # Print that are installing + echo "Installing..." + # if -y (assume yes) continue + if [[ ASSUME_YES -eq 1 ]]; then + echo "Assuming yes" + # else, ask if they want to continue + else + echo "Continue? (y/n)" + read answer + # if the answer is not yes, then exit + if [ "$answer" != "y" ]; then + echo "Aborting" + exit 1 + fi + fi + # if the -d (only dependencies) options is selected install just the dependencies + if [[ DEPS_ONLY -eq 1 ]]; then + echo "Installing only dependencies" + install_deps + elif [[ PYTHON_ONLY -eq 1 ]]; then + # if the -p (only python dependencies) options is selected install just the python dependencies and playwright + echo "Installing only python dependencies" + install_python_dep + install_playwright + # if the -b (only the bot) options is selected install just the bot + elif [[ JUST_BOT -eq 1 ]]; then + echo "Installing only the bot" + get_the_bot + # if the -l (bot and python) options is selected install just the bot and python dependencies + elif [[ BOT_AND_PYTHON -eq 1 ]]; then + echo "Installing only the bot and python dependencies" + get_the_bot + install_python_dep + # else, install everything + else + echo "Installing all" + install_deps + get_the_bot + install_python_dep + install_playwright + fi + + DIR="./RedditVideoMakerBot" + if [ -d "$DIR" ]; then + printf "\nThe bot is already installed, want to run it?" + # if -y (assume yes) continue + if [[ ASSUME_YES -eq 1 ]]; then + echo "Assuming yes" + # else, ask if they want to continue + else + echo "Continue? (y/n)" + read answer + # if the answer is not yes, then exit + if [ "$answer" != "y" ]; then + echo "Aborting" + exit 1 + fi + fi + cd RedditVideoMakerBot + python3 main.py + fi +} + +# Run the main function +install_main \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 687f952..22b53b7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,3 +10,4 @@ pytube==12.1.0 requests==2.28.1 rich==12.4.4 translators==5.3.1 +sox==1.4.1