diff --git a/facts/general/package.yml b/facts/general/package.yml index 2be5864..e426362 100644 --- a/facts/general/package.yml +++ b/facts/general/package.yml @@ -20,6 +20,7 @@ microcode_amd: amd64-microcode microcode_intel: intel-microcode cron: cron + encfs: encfs when: ansible_pkg_mgr == "apt" - name: General | Facts | Package | pacman @@ -29,6 +30,7 @@ microcode_amd: linux-firmware microcode_intel: intel-ucode cron: cronie + encfs: encfs when: ansible_pkg_mgr == "pacman" - name: General | Facts | Package | FreeBSD @@ -40,6 +42,7 @@ tar: htop # tar already provided in FreeBSD microcode_amd: htop # TODO microcode_intel: htop # TODO + encfs: fusefs-encfs when: ansible_system == "FreeBSD" - name: General | Facts | Package | dnf @@ -50,6 +53,7 @@ microcode_amd: microcode_ctl microcode_intel: microcode_ctl cron: cronie + encfs: fuse-encfs when: ansible_pkg_mgr == "dnf" - name: General | Facts | Package | zypper @@ -59,6 +63,7 @@ microcode_amd: ucode-amd microcode_intel: ucode-intel cron: cronie + encfs: encfs when: ansible_pkg_mgr == "zypper" diff --git a/files/scripts/compress_image.sh b/files/scripts/compress_image.sh index 539ff11..9b647ac 100755 --- a/files/scripts/compress_image.sh +++ b/files/scripts/compress_image.sh @@ -106,14 +106,23 @@ $search "$location" | sort | while read image; do continue fi + new_image="${image//.$extension/}.$tag-$date_YYYYMMDD.$extension" + ## Clean Filename ## + # Prevent directory from having its name cleaned too. + image_dirname="`dirname $new_image`" + image_basename="`basename $new_image`" + # Clean the filename of extra junk so that they can be chronological order. - new_image_clean="${new_image//IMG/}" + new_image_clean="${image_basename//IMG/}" new_image_clean="${new_image_clean//_/}" new_image_clean="${new_image_clean//-/}" new_image_clean="${new_image_clean// /}" + # Add directory back to the full path. + new_image_clean="$image_dirname/$new_image_clean" + # Delete the existing shrunk image if we are forcing a new compression. if [[ -n "$force" && (-e "$new_image" || -e $new_image_clean) ]]; then echo -n " FORCE: " @@ -131,9 +140,9 @@ $search "$location" | sort | while read image; do new_image="$new_image_clean" fi - ### TBD Instead of this, only alter the file names, and set a dirname var? - # Create a new directory if the directory names were altered. - mkdir -pv "`dirname "$new_image"`" + ###### TBD Instead of this, only alter the file names, and set a dirname var? + #### Create a new directory if the directory names were altered. + ###mkdir -pv "`dirname "$new_image"`" # This modifies the image to be $size at its longest end, not be a square. $convert_exe "$image" -resize ${size}x${size} "$new_image" diff --git a/files/scripts/compress_video.sh b/files/scripts/compress_video.sh index ac173b0..1a3b352 100755 --- a/files/scripts/compress_video.sh +++ b/files/scripts/compress_video.sh @@ -2,6 +2,11 @@ # 2023-06-13 Hyperling # Compress a video to good-enough quality for high quality streaming. +## FFMpeg Notes ## +# 2024-02-08 +# -af parameter comes from Cahlen Lee's recommendation: +# https://odysee.com/@HyperVegan:2/20240205_DesertSilence-Campfire:3?lc=a2439b26d9fe89a950e0a47ec1d110d7156f596843039b4b76a4a2f327afcd2f + ## Setup ## DIR="$(dirname -- "${BASH_SOURCE[0]}")" @@ -17,7 +22,7 @@ large_created=".$PROG.large_created.true" function usage { echo -n "Usage: $PROG [-i file/folder] [-v bitrate] [-a bitrate] [-c vcodec]" - echo " [-r] [-f] [-d] [-m] [-V] [-x] [-h]" + echo " [-s size] [-r] [-f] [-d] [-A] [-m] [-V] [-x] [-h]" cat <<- EOF Reduce the filesize of a video file to make it stream well. It also helps with the file size for placing the file into a backup system. @@ -26,12 +31,17 @@ function usage { Parameters: -i input : The input file or folder with which to search for video files. If nothing is provided, current directory (.) is assumed. - -v bitrate : The video bitrate to convert to, defaults to 2000k. - -a bitrate : The audio bitrate to convert to, defaults to 128k. + -v bitrate : The video bitrate to convert to. + Defaults to '2000k'. + -a bitrate : The audio bitrate to convert to. + Defaults to '192k'. -c vcodec : The video codec you'd like to use, such as libopenh264. + -s size : The video size such as 1080 or 720, or1280 for vertical 720p. + Defaults to '720'. -r : Recurse the entire directory structure, compressing all video files. -f : Force recompressing any files by deleting it if it already exists. -d : Delete the original video if the compressed version is smaller. + -A : Recursively Force and Delete. -m : Measure the time it takes to compress each video and do the loop. -V : Add verbosity, such as printing all the variable values. -x : Set the shell's x flag to display every action which is taken. @@ -42,7 +52,7 @@ function usage { ## Parameters ## -while getopts ":i:v:a:c:rfdmVxh" opt; do +while getopts ":i:v:a:c:s:rfdAmVxh" opt; do case $opt in i) input="$OPTARG" ;; @@ -50,7 +60,9 @@ while getopts ":i:v:a:c:rfdmVxh" opt; do ;; a) audio_bitrate="$OPTARG" ;; - c) codec="-vcodec $OPTARG" + c) codec="$OPTARG" + ;; + s) size="$OPTARG" ;; r) search_command="find" ;; @@ -58,7 +70,9 @@ while getopts ":i:v:a:c:rfdmVxh" opt; do ;; d) delete="Y" ;; - m) time_command="time -p" + A) search_command="find" && force="Y" && delete="Y" + ;; + m) time_command="`which time`" ;; V) verbose="Y" ;; @@ -77,20 +91,24 @@ if [[ "$set_x" == "Y" ]]; then fi if [[ -z "$input" ]]; then - echo "WARNING: Program was not passed an input. Using current directory." + echo "WARNING: Program was not passed an input. Using current directory." >&2 input="." fi if [[ -z "$video_bitrate" ]]; then video_bitrate="2000k" fi +video_bitrate="-maxrate $video_bitrate" if [[ -z "$audio_bitrate" ]]; then - audio_bitrate="128k" + audio_bitrate="192k" fi +audio_bitrate="-b:a $audio_bitrate" if [[ -z "$codec" ]]; then codec="" +else + codec="-vcodec $codec" fi if [[ -z "$search_command" ]]; then @@ -99,8 +117,15 @@ fi if [[ -z "$time_command" ]]; then time_command="" +else + time_command="$time_command -p" fi +if [[ -z $size ]]; then + size="720" +fi +size="-filter:v scale=-1:$size" + ## Main ## if [[ "$verbose" == "Y" ]]; then @@ -130,8 +155,12 @@ $search_command "$input" | sort | while read file; do date fi + typeset -l extension_lower + extension="${file##*.}" + extension_lower="$extension" + # Exception checks for the existing file. - if [[ "$file" != *'.mp4' ]]; then + if [[ "$extension_lower" != "mp4" ]]; then echo "SKIP: Not an MP4." continue fi @@ -141,20 +170,22 @@ $search_command "$input" | sort | while read file; do fi # Build the new filename to signify it is different than the original. - extension="${file##*.}" - newfile="${file//$extension/$filename_flag-$date_YYYYMMDD.$extension}" + newfile="${file//$extension/$filename_flag-$date_YYYYMMDD.$extension_lower}" - #### Convert spaces to underscores. - ###newfile="${newfile// /_}" - ### - #### Ensure any directories that had spaces get recreated without them. - ###mkdir -pv "`dirname "$newfile"`" + if [[ $newfile == $file ]]; then + echo "ERROR: The new calculated filename matches the old, skipping." >&2 + continue + fi # More exception checks based on the new file. if [[ -e "$newfile" ]]; then if [[ "$force" == "Y" ]]; then echo "FORCE: Removing '$newfile'." - rm -vf "$newfile" + if [[ -d ~/TRASH ]]; then + mv -v "$newfile" ~/TRASH/ + else + rm -v "$newfile" + fi else echo "SKIP: Already has a compressed version ($newfile)." continue @@ -163,10 +194,16 @@ $search_command "$input" | sort | while read file; do # Convert the file. echo "Converting to '$newfile'." + echo "*** `date` ***" + set -x $time_command bash -c "ffmpeg -nostdin -hide_banner -loglevel quiet \ - -i '$file' -b:v $video_bitrate -b:a $audio_bitrate \ - $vcodec -movflags +faststart '$newfile'" + -i '$file' $size $video_bitrate $audio_bitrate \ + -af 'dynaudnorm=f=33:g=65:p=0.66:m=33.3' \ + $vcodec -movflags +faststart \ + '$newfile'" status="$?" + set +x + echo "*** `date` ***" if [[ "$status" != 0 ]]; then echo "SKIP: ffmpeg returned a status of '$status'." continue @@ -186,7 +223,7 @@ $search_command "$input" | sort | while read file; do if [[ -e "$newfile" ]]; then echo "Conversion succeeded, file has been compressed." else - echo "ERROR: Converted file '$newfile' could not be found. Aborting." + echo "ERROR: Converted file '$newfile' could not be found. Aborting." >&2 break fi diff --git a/files/scripts/ssh6.sh b/files/scripts/ssh6.sh index aff890f..38badde 100644 --- a/files/scripts/ssh6.sh +++ b/files/scripts/ssh6.sh @@ -69,17 +69,17 @@ if [[ -n $input ]]; then if [[ $receive == "N" ]]; then echo -n "Sending '$input' from localhost to '$user@$destination' " echo " at '$output' using port '$port'." - scp -r -p$port "$user@[$destination]":"$input" "$output" + scp -r -P$port "$user@[$destination]":"$input" "$output" elif [[ $receive == "Y" ]]; then echo -n "Receiving '$input' from '$user@$destination' " echo " to '$output' on localhost using port '$port'." - scp -r -p$port "$input" "$user@[$destination]":"$output" + scp -r -P$port "$input" "$user@[$destination]":"$output" else echo "ERROR: Receive variable is screwed up. $receive" >&2 fi else echo "No input file provided, connecting to destination." - ssh -t $user@$destination + ssh -t -p$port $user@$destination fi date diff --git a/files/settings/vscode.json b/files/settings/vscode.json index 0059b8a..0b27509 100644 --- a/files/settings/vscode.json +++ b/files/settings/vscode.json @@ -1,7 +1,8 @@ -// Needs saved as: -// ~/.var/app/com.visualstudio.code-oss/config/Code - OSS/{{ user_desc }}/settings.json -// ~/.var/app/com.vscodium.codium/config/VSCodium/{{ user_desc }}/settings.json { + "BEGIN_COMMENTS": "", + "save_loc1": "~/.var/app/com.visualstudio.code-oss/config/Code - OSS/{{ user_desc }}/settings.json", + "save_loc2": "~/.var/app/com.vscodium.codium/config/VSCodium/{{ user_desc }}/settings.json", + "END_COMMENTS": "", "workbench.startupEditor": "none", "editor.rulers": [ 80, 120, 200 diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 973ef9c..4ec56fe 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -397,6 +397,7 @@ ls -d ~/Code/* | while read project do echo "*** `basename $project` ***" cd $project + git stash git switch main git pull git branch -D dev @@ -407,7 +408,7 @@ alias code-reseed=' unseed_dir="$HOME/TRASH/`date +%Y-%m-%d`_UnseededCodeProjects" mkdir -pv "$unseed_dir" - mv -v ~/Code/*{ansible,docker,nix,break,habit}* \ + mv -v ~/Code/*{ansible,docker,nix,break,website,www,tictactoe,-dev}* \ "$unseed_dir"/ 2>/dev/null git clone git@github.com:Hyperling/Ansible \ --branch dev ~/Code/ansible-dev @@ -415,10 +416,10 @@ --branch dev ~/Code/docker-dev git clone git@github.com:Hyperling/Website \ --branch dev ~/Code/website-dev - git clone git@github.com:Hyperling/NixOS \ - --branch dev ~/Code/nixos-dev git clone git@github.com:Hyperling/BreakTheHabit \ --branch dev ~/Code/breakthehabit-dev + git clone git@github.com:Hyperling/TicTacToeAndroid \ + --branch dev ~/Code/tictactoe-dev ' function_clean_filenames: | function clean-filenames() { @@ -451,10 +452,15 @@ } alias_clone: | alias clone="rsync -auPh --delete" - export_hyperling: + export_hyperling: | export HYPERLING6="2a07:e03:3:80::1" export HYPERLING4="185.130.47.173" export HYPERLING="$HYPERLING4" + source_docker_env: | + DOCKER_SOURCE="/opt/Docker/source.env" + if [[ -e $DOCKER_SOURCE && $LOGNAME == "root" ]]; then + source $DOCKER_SOURCE + fi - name: General | Account Management | Users | Files | Common Variable set_fact: @@ -494,6 +500,7 @@ {{ function_clean_filenames_tree }} {{ alias_clone }} {{ export_hyperling }} + {{ source_docker_env }} - name: General | Account Management | Users | Files | .bashrc blockinfile: diff --git a/tasks/general/software/packages.yml b/tasks/general/software/packages.yml index 915c351..015624c 100644 --- a/tasks/general/software/packages.yml +++ b/tasks/general/software/packages.yml @@ -54,6 +54,7 @@ - gcc - vim - "{{ cron }}" + - "{{ encfs }}" state: present - name: General | Software | Packages | Install Software (DEV) diff --git a/tasks/workstation/shared/settings/gnome.yml b/tasks/workstation/shared/settings/gnome.yml index b530408..5f35f76 100644 --- a/tasks/workstation/shared/settings/gnome.yml +++ b/tasks/workstation/shared/settings/gnome.yml @@ -13,6 +13,7 @@ , 'io.gitlab.librewolf-community.desktop', 'librewolf.desktop' , 'org.mozilla.firefox.desktop', 'firefox.desktop' , 'com.visualstudio.code-oss.desktop', 'code-oss.desktop' + , 'com.google.AndroidStudio.desktop' , 'org.godotengine.Godot.desktop' , 'org.shotcut.Shotcut.desktop' , 'io.lbry.lbry-app.desktop', 'lbry.desktop'