Compare commits
16 Commits
bd7ac08dfe
...
46e6b205a9
| Author | SHA1 | Date | |
|---|---|---|---|
| 46e6b205a9 | |||
| ea40967e2b | |||
| 86ad8c5b5c | |||
| fd227c810c | |||
| 4744d996a1 | |||
| bd0c01fda6 | |||
| c323748cec | |||
| 6226d00a1c | |||
| f199605915 | |||
| 6356497cb6 | |||
| b7d189af66 | |||
| dbc0a711c4 | |||
| ae636f4fbe | |||
| 42f4ef919f | |||
| 2662966098 | |||
| 16ded2672e |
235
bashrc.sh
235
bashrc.sh
@@ -19,7 +19,7 @@ fi
|
|||||||
if [[ "`whoami`" == "root" ]]; then
|
if [[ "`whoami`" == "root" ]]; then
|
||||||
export PS1='\[$BOLD\]\[$ORANGE\][\[$SCARLET\]\t \[$RED\]\w\[$ORANGE\]]\[$GRAY\]\$ \[$RESET\]'
|
export PS1='\[$BOLD\]\[$ORANGE\][\[$SCARLET\]\t \[$RED\]\w\[$ORANGE\]]\[$GRAY\]\$ \[$RESET\]'
|
||||||
else
|
else
|
||||||
export PS1='\[$BOLD\]\[$PURPLE\][\[$ORANGE\]\t \[$GREEN\]\w\[$PURPLE\]]\[$RESET\]\$ '
|
export PS1='\[$BOLD\]\[$GRAY\][\[$ORANGE\]\t \[$GREEN\]\w\[$GRAY\]]\[$RESET\]\$ '
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Aliases ##
|
## Aliases ##
|
||||||
@@ -74,7 +74,6 @@ function bye { exit; }
|
|||||||
alias install="pkg install "
|
alias install="pkg install "
|
||||||
alias uninstall="pkg uninstall "
|
alias uninstall="pkg uninstall "
|
||||||
alias remove="uninstall "
|
alias remove="uninstall "
|
||||||
alias scan="nmap -A -p- --script=vuln "
|
|
||||||
|
|
||||||
|
|
||||||
### Functions ###
|
### Functions ###
|
||||||
@@ -135,7 +134,7 @@ function test-termux {
|
|||||||
git clone https://git.hyperling.com/me/env-termux \
|
git clone https://git.hyperling.com/me/env-termux \
|
||||||
--branch=dev ~/termux-deleteme
|
--branch=dev ~/termux-deleteme
|
||||||
chmod 755 ~/termux-deleteme/*.sh
|
chmod 755 ~/termux-deleteme/*.sh
|
||||||
~/termux-deleteme/setup.sh
|
~/termux-deleteme/setup.sh "$@"
|
||||||
}
|
}
|
||||||
alias reload-termux="test-termux "
|
alias reload-termux="test-termux "
|
||||||
alias termux-test="test-termux "
|
alias termux-test="test-termux "
|
||||||
@@ -230,227 +229,7 @@ alias upgrade="update"
|
|||||||
alias goodbye="update -y && bye"
|
alias goodbye="update -y && bye"
|
||||||
|
|
||||||
|
|
||||||
## Videk Related ##
|
## Video Related ##
|
||||||
|
|
||||||
# Optimize the bitrate and audio levels for an edited video.
|
|
||||||
function process-video-usage {
|
|
||||||
echo "USAGE: process-video oldFile newFile [videoBitrate] [audioBitrate] [sizeRating] [numPasses] [forceBitrate]"
|
|
||||||
echo -n "Purpose: Call ffmpeg with preferred video posting settings. "
|
|
||||||
echo -n "Bitrates default to 2000k and 192k, size is 720, passes is 1, and force is N."
|
|
||||||
echo "These work well on Odysee and are fairly small as backups."
|
|
||||||
echo "Examples:"
|
|
||||||
echo "- Create a small file for quick streaming."
|
|
||||||
echo " process-video youcut.mp4 20240210.mp4 1200k 128k 480"
|
|
||||||
echo "- Create a larger file for something like YouTube."
|
|
||||||
echo " process-video youcut.mp4 20240210_1080p.mp4 5000k 256k 1080"
|
|
||||||
}
|
|
||||||
function process-video {
|
|
||||||
# Parameters
|
|
||||||
file="$1"
|
|
||||||
newfile="$2"
|
|
||||||
video="$3"
|
|
||||||
audio="$4"
|
|
||||||
size="$5"
|
|
||||||
passes="$6"
|
|
||||||
force="$7"
|
|
||||||
|
|
||||||
# Validations
|
|
||||||
if [[ -z $file || ! -e $file ]]; then
|
|
||||||
echo "ERROR: Original file '$file' does not exist." >&2
|
|
||||||
process-video-usage
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z $newfile ]]; then
|
|
||||||
echo "ERROR: New file's name must be provided." >&2
|
|
||||||
process-video-usage
|
|
||||||
return 1
|
|
||||||
elif [[ -e $newfile ]]; then
|
|
||||||
echo "ERROR: New file '$newfile' already exists." >&2
|
|
||||||
du -h "$newfile"
|
|
||||||
process-video-usage
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "`date` - Converting '$file' to '$newfile'."
|
|
||||||
|
|
||||||
if [[ -z $video ]]; then
|
|
||||||
video="2000k"
|
|
||||||
fi
|
|
||||||
if [[ $force == "Y" ]]; then
|
|
||||||
video="-b:v $video"
|
|
||||||
else
|
|
||||||
video="-b:v $video -minrate 0 -maxrate $video -bufsize $video"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z $audio ]]; then
|
|
||||||
audio="192k"
|
|
||||||
fi
|
|
||||||
audio="-b:a $audio"
|
|
||||||
|
|
||||||
if [[ -z $size ]]; then
|
|
||||||
size="720"
|
|
||||||
fi
|
|
||||||
size="-filter:v scale=-1:$size"
|
|
||||||
|
|
||||||
if [[ -z $passes ]]; then
|
|
||||||
passes=1
|
|
||||||
fi
|
|
||||||
pass=""
|
|
||||||
if [[ $passes != 1 ]]; then
|
|
||||||
passes=2
|
|
||||||
pass="-pass 2"
|
|
||||||
fi
|
|
||||||
|
|
||||||
## Main ##
|
|
||||||
# More information on two-pass processing with ffmpeg
|
|
||||||
# https://cinelerra-gg.org/download/CinelerraGG_Manual/Two_pass_Encoding_with_FFmp.html
|
|
||||||
if [[ $passes == 2 ]]; then
|
|
||||||
set -x
|
|
||||||
ffmpeg -nostdin -hide_banner -loglevel quiet \
|
|
||||||
-i "$file" $size $video $audio \
|
|
||||||
-filter:a "dynaudnorm=f=33:g=65:p=0.66:m=33.3" \
|
|
||||||
-vcodec libx264 -movflags +faststart \
|
|
||||||
-pass 1 -f mp4 /dev/null -y
|
|
||||||
status=$?
|
|
||||||
set +x
|
|
||||||
echo "`date` - Done with the first pass."
|
|
||||||
if [[ $status != 0 ]]; then
|
|
||||||
echo "Received unsuccessful status, exiting."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
set -x &&
|
|
||||||
ffmpeg -nostdin -hide_banner -loglevel quiet \
|
|
||||||
-i "$file" $size $video $audio \
|
|
||||||
-filter:a "dynaudnorm=f=33:g=65:p=0.66:m=33.3" \
|
|
||||||
-vcodec libx264 -movflags +faststart \
|
|
||||||
$pass "$newfile"
|
|
||||||
status="$?"
|
|
||||||
set +x
|
|
||||||
echo "`date` - Done with the final pass."
|
|
||||||
|
|
||||||
if [[ $passes == 2 && $status == 0 ]]; then
|
|
||||||
mv -v ffmpeg2pass*.log* ~/TRASH/
|
|
||||||
fi
|
|
||||||
|
|
||||||
sync
|
|
||||||
sleep 10
|
|
||||||
sync
|
|
||||||
if [[ -s $newfile ]]; then
|
|
||||||
echo "`date` - Getting file sizes."
|
|
||||||
du -h "$file"
|
|
||||||
du -h "$newfile"
|
|
||||||
else
|
|
||||||
echo "ERROR: New file not created or has a 0 size." >&2
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n`date` - Finished with status '$status'."
|
|
||||||
return $status
|
|
||||||
}
|
|
||||||
alias pv="process-video"
|
|
||||||
alias qpv="pv ./raw/YouCut*.mp4 `basename $(pwd)`.mp4"
|
|
||||||
|
|
||||||
# Allow converting video to audio ad other smaller
|
|
||||||
# tasks than what process-video is intended to do.
|
|
||||||
function basic-process-usage {
|
|
||||||
echo "basic-process INPUT OUTPUT NORMALIZE [EXTRA]"
|
|
||||||
echo -n "Pass a file through ffmpeg with the option"
|
|
||||||
echo "to easily normalize the audio with a Y."
|
|
||||||
echo "Examples:"
|
|
||||||
echo "- Normalize audio on a video."
|
|
||||||
echo " basic-process video.mp4 normalized.mp4 Y"
|
|
||||||
echo "- Convert a video to audio at 192k."
|
|
||||||
echo " basic-process video.mp4 audio.mp3 N '-b:a 192k'"
|
|
||||||
}
|
|
||||||
function basic-process {
|
|
||||||
# Parameters
|
|
||||||
input="$1"
|
|
||||||
output="$2"
|
|
||||||
typeset -u normalize
|
|
||||||
normalize="$3"
|
|
||||||
extra="$4"
|
|
||||||
|
|
||||||
echo "`date` - Starting basic-process"
|
|
||||||
|
|
||||||
# Validations
|
|
||||||
if [[ -z $input || ! -e $input ]]; then
|
|
||||||
echo "ERROR: Input file '$input' does not exist." >&2
|
|
||||||
basic-process-usage
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z $output ]]; then
|
|
||||||
echo "ERROR: Output file's name must be provided." >&2
|
|
||||||
basic-process-usage
|
|
||||||
return 1
|
|
||||||
elif [[ -e $output ]]; then
|
|
||||||
echo "ERROR: Output file '$output' already exists." >&2
|
|
||||||
du -h "$output"
|
|
||||||
basic-process-usage
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $normalize == "Y" ]]; then
|
|
||||||
echo "Normalize set to TRUE."
|
|
||||||
normal="-filter:a dynaudnorm=f=33:g=65:p=0.66:m=33.3"
|
|
||||||
else
|
|
||||||
echo "No audio normalization is being done."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Main
|
|
||||||
echo "`date` - Converting '$input' to '$output'."
|
|
||||||
set -x
|
|
||||||
ffmpeg -nostdin -hide_banner -loglevel quiet \
|
|
||||||
-i "$input" $extra $normal "$output"
|
|
||||||
status=$?
|
|
||||||
set +x
|
|
||||||
|
|
||||||
if [[ $status != 0 ]]; then
|
|
||||||
echo "`date` - WARNING: ffmpeg exited with status '$status'." >&2
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Finish
|
|
||||||
if [[ ! -s $output ]]; then
|
|
||||||
echo "`date` - ERROR: Output '$output' not created or has 0 size." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
sync
|
|
||||||
echo "`date` - '$output' has been created successfully."
|
|
||||||
sleep 3
|
|
||||||
du -h "$input"
|
|
||||||
du -h "$output"
|
|
||||||
|
|
||||||
echo "`date` - Finished basic-process"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
alias bp="basic-process"
|
|
||||||
alias bv="bp"
|
|
||||||
|
|
||||||
# Function to automatically append tbe Y.
|
|
||||||
function fix-audio {
|
|
||||||
basic-process "$1" Y
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to easily turn a video to audio without typing the audio name.
|
|
||||||
function convert-to-audio {
|
|
||||||
video="$1"
|
|
||||||
audio="$2"
|
|
||||||
if [[ -z "$2" || "$2" == "Y" ]]; then
|
|
||||||
audio="${1//mp4/mp3}"
|
|
||||||
fi
|
|
||||||
volume=""
|
|
||||||
if [[ ( "$2" == "Y" && -z "$3" ) || "$3" == "Y" ]]; then
|
|
||||||
$volume="Y"
|
|
||||||
fi
|
|
||||||
basic-process "$video" "$audio" $volume
|
|
||||||
}
|
|
||||||
alias v2a="convert-to-audio"
|
|
||||||
alias vta="v2a"
|
|
||||||
alias va="v2a"
|
|
||||||
alias pa="v2a"
|
|
||||||
|
|
||||||
alias pull-content="mv -v $SS/DCIM/Camera/`date +"%Y-%m-%d"`* ./raw/"
|
alias pull-content="mv -v $SS/DCIM/Camera/`date +"%Y-%m-%d"`* ./raw/"
|
||||||
|
|
||||||
@@ -494,12 +273,6 @@ alias qv="qvd"
|
|||||||
|
|
||||||
## Backup Related ##
|
## Backup Related ##
|
||||||
|
|
||||||
function now {
|
|
||||||
date "+%Y%m%d-%H%M%S"
|
|
||||||
}
|
|
||||||
function today {
|
|
||||||
date "+%Y%m%d"
|
|
||||||
}
|
|
||||||
export BACKUP_DIR="/srv/backup"
|
export BACKUP_DIR="/srv/backup"
|
||||||
export DOCKER="Docker"
|
export DOCKER="Docker"
|
||||||
export SYSTEM="System"
|
export SYSTEM="System"
|
||||||
@@ -556,4 +329,4 @@ alias prod-pull="pull_prod_backups"
|
|||||||
|
|
||||||
# Complete!
|
# Complete!
|
||||||
PROG="$(basename -- "${BASH_SOURCE[0]}")"
|
PROG="$(basename -- "${BASH_SOURCE[0]}")"
|
||||||
echo "'$PROG' completed!"
|
echo "`date` - '$PROG' completed!"
|
||||||
|
|||||||
22
example.env
22
example.env
@@ -1,17 +1,17 @@
|
|||||||
# Variables for fast-access of production server.
|
# Variables for fast-access of production server.
|
||||||
|
|
||||||
PROD_HOST=example.com
|
export PROD_HOST=example.com
|
||||||
PROD_PORT=2222
|
export PROD_PORT=2222
|
||||||
PROD_USER=user
|
export PROD_USER=user
|
||||||
|
|
||||||
PROD_GIT_HOST=git.example.com
|
export PROD_GIT_HOST=git.example.com
|
||||||
PROD_GIT_PORT=8080
|
export PROD_GIT_PORT=8080
|
||||||
PROD_GIT_USER=git
|
export PROD_GIT_USER=git
|
||||||
|
|
||||||
PROD_DATA_HOST=sftp.example.com
|
export PROD_DATA_HOST=sftp.example.com
|
||||||
PROD_DATA_PORT=2200
|
export PROD_DATA_PORT=2200
|
||||||
PROD_DATA_USER=data
|
export PROD_DATA_USER=data
|
||||||
PROD_DATA_DIR=/srv/sftp
|
export PROD_DATA_DIR=/srv/sftp
|
||||||
|
|
||||||
PROG="$(basename -- "${BASH_SOURCE[0]}")"
|
PROG="$(basename -- "${BASH_SOURCE[0]}")"
|
||||||
echo "'$PROG' completed!"
|
echo "'`date` - $PROG' completed!"
|
||||||
|
|||||||
13
setup.sh
13
setup.sh
@@ -12,9 +12,6 @@ echo "Working in '$DIR'."
|
|||||||
|
|
||||||
skip="false"
|
skip="false"
|
||||||
if [[ "$1" == "skip" || "$2" == "skip" || "$3" == "skip" ]]; then
|
if [[ "$1" == "skip" || "$2" == "skip" || "$3" == "skip" ]]; then
|
||||||
echo "1='$1'"
|
|
||||||
echo "2='$2'"
|
|
||||||
echo "3='$3'"
|
|
||||||
skip="true"
|
skip="true"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -97,19 +94,23 @@ env_shared_dir="env-shared-dev-deleteme"
|
|||||||
git clone https://git.hyperling.com/me/env-shared \
|
git clone https://git.hyperling.com/me/env-shared \
|
||||||
--branch=dev ~/$env_shared_dir
|
--branch=dev ~/$env_shared_dir
|
||||||
cp -v ~/$env_shared_dir/rc_shared.sh ~/.rc_shared
|
cp -v ~/$env_shared_dir/rc_shared.sh ~/.rc_shared
|
||||||
|
cp -v ~/$env_shared_dir/vimrc.vim ~/.vimrc
|
||||||
if [[ ! -d ~/bin ]]; then
|
if [[ ! -d ~/bin ]]; then
|
||||||
mkdir -pv ~/bin
|
mkdir -pv ~/bin
|
||||||
fi
|
fi
|
||||||
cp -v ~/$env_shared_dir/bin-shared/* ~/bin/
|
cp -v ~/$env_shared_dir/bin-shared/* ~/bin/
|
||||||
|
mv -v ~/$env_shared_dir \
|
||||||
|
~/TRASH/$env_shared_dir-"`date "+%Y%m%d-%H%M%S"`" \
|
||||||
|
| grep -v '/.git/'
|
||||||
|
|
||||||
echo -e "\n`date` - Cleanup"
|
echo -e "\n`date` - Cleanup"
|
||||||
|
|
||||||
if [[ -n $DIR && $DIR != "/" && $DIR == *"deleteme" && -d .git ]]; then
|
if [[ -n $DIR && $DIR != "/" && $DIR == *"deleteme" && -d .git ]]; then
|
||||||
echo "We are in a git clone, remove the project."
|
echo "We are in a git clone, remove the project."
|
||||||
cd ..
|
cd ..
|
||||||
mv -v $DIR ~/TRASH/termux-"`date +'%Y%m%d%H%M%S'`" |
|
mv -v $DIR \
|
||||||
grep -v '/.git/'
|
~/TRASH/termux-"`date +'%Y%m%d%H%M%S'`" \
|
||||||
|
| grep -v '/.git/'
|
||||||
else
|
else
|
||||||
echo "File was used individually, remove it."
|
echo "File was used individually, remove it."
|
||||||
mv "$PROG" ~/TRASH/
|
mv "$PROG" ~/TRASH/
|
||||||
|
|||||||
Reference in New Issue
Block a user