Compare commits
24 Commits
48777cf25c
...
dev
Author | SHA1 | Date | |
---|---|---|---|
1db8c0b7b0 | |||
116087928d | |||
b6e820570f | |||
1f41651409 | |||
5f63ad1a59 | |||
7305e3a90c | |||
1e65b565cd | |||
c828131bad | |||
3bca080de1 | |||
e308beec07 | |||
e155d36ab4 | |||
4bb075b747 | |||
204a1fbb16 | |||
9bb813ea78 | |||
066c8132e9 | |||
9e61af8aa4 | |||
69c1093289 | |||
c7c21bc2f8 | |||
466d8b5de5 | |||
1eb41df822 | |||
152635e0b3 | |||
17b78cc361 | |||
a4ff66a9c9 | |||
ea4d4070a6 |
@ -60,7 +60,8 @@ while getopts ":s:l:rfFdcAhx" opt; do
|
||||
F) super_force="Y" ;;
|
||||
d) delete="Y" ;;
|
||||
c) clean="Y" ;;
|
||||
A) recurse="Y" && search="find" && force="Y" && delete="Y" && clean="Y" ;;
|
||||
e) expand="Y" ;;
|
||||
A) recurse="Y" && search="find" && force="Y" && delete="Y" && expand="Y" ;;
|
||||
h) usage 0 ;;
|
||||
x) set -x ;;
|
||||
*) echo "ERROR: Option $OPTARG not recognized." >&2 && usage 1 ;;
|
||||
@ -74,7 +75,7 @@ if [[ -n "$in_size" && "$size" != "$in_size" ]]; then
|
||||
usage 1
|
||||
fi
|
||||
|
||||
convert_exe="`which convert`"
|
||||
convert_exe="`which convert` -strip"
|
||||
if [[ "$convert_exe" == "" ]]; then
|
||||
echo "ERROR: 'convert' command could not be found, "
|
||||
echo "please install 'imagemagick'."
|
||||
@ -110,8 +111,7 @@ $search "$location" | sort | while read image; do
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
new_image="${image//.$extension/}.$tag-$date_YYYYMMDD-$size.$extension"
|
||||
new_image="${image//.$extension/}.$tag-$date_YYYYMMDD.$size.$extension"
|
||||
|
||||
## Clean Filename ##
|
||||
# Prevent directory from having its name cleaned too.
|
||||
@ -124,13 +124,31 @@ $search "$location" | sort | while read image; do
|
||||
new_image_clean="${new_image_clean//-/}"
|
||||
new_image_clean="${new_image_clean// /}"
|
||||
|
||||
# Add directory back to the full path.
|
||||
## Expanded Filename ##
|
||||
# Add back in the dashes so that the year, month, date, and time are exposed.
|
||||
TEMP="$new_image_clean"
|
||||
# Date Data
|
||||
new_image_exp="${TEMP:0:4}-${TEMP:4:2}-${TEMP:6:2}"
|
||||
# Time Data
|
||||
new_image_exp="${new_image_exp}_${TEMP:8:2}-${TEMP:10:2}-${TEMP:12:2}"
|
||||
# Remainder Data
|
||||
if [[ "${TEMP:14:1}" == "." ]]; then
|
||||
SEP=""
|
||||
else
|
||||
SEP="_"
|
||||
fi
|
||||
new_image_exp="${new_image_exp}${SEP}${TEMP:14}"
|
||||
unset TEMP SEP
|
||||
|
||||
# Add directory back to the full paths.
|
||||
new_image_clean="$image_dirname/$new_image_clean"
|
||||
new_image_exp="$image_dirname/$new_image_exp"
|
||||
|
||||
# Delete the existing shrunk image if we are forcing a new compression.
|
||||
if [[ -n "$force" && (-e "$new_image" || -e $new_image_clean) ]]; then
|
||||
if [[ -n "$force" &&
|
||||
(-e "$new_image" || -e $new_image_clean || -e $new_image_exp ) ]]; then
|
||||
echo -n " FORCE: "
|
||||
rm -v "$new_image" "$new_image_clean" 2>/dev/null
|
||||
rm -v "$new_image" "$new_image_clean" "$new_image_exp" 2>/dev/null
|
||||
fi
|
||||
|
||||
# Skip if a compressed image was already created today.
|
||||
@ -139,10 +157,14 @@ $search "$location" | sort | while read image; do
|
||||
continue
|
||||
fi
|
||||
|
||||
# Whether or not to use the cleaned version or the normal version.
|
||||
# Whether or not to use the cleaned version.
|
||||
if [[ -n $clean ]]; then
|
||||
new_image="$new_image_clean"
|
||||
# Whether or not to use the expanded version.
|
||||
elif [[ -n $expand ]]; then
|
||||
new_image="$new_image_exp"
|
||||
fi
|
||||
# Otherwise uses the same name as before.
|
||||
|
||||
###### TBD Instead of this, only alter the file names, and set a dirname var?
|
||||
#### Create a new directory if the directory names were altered.
|
||||
|
@ -48,7 +48,8 @@ function usage {
|
||||
-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.
|
||||
-l : Clean the filename of dashes and underscores so dates line up.
|
||||
-A : Recursively Force, Delete, and Clean.
|
||||
-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.
|
||||
@ -59,7 +60,7 @@ function usage {
|
||||
|
||||
## Parameters ##
|
||||
|
||||
while getopts ":i:v:a:c:s:rfdAmVxh" opt; do
|
||||
while getopts ":i:v:a:c:s:rfdlAmVxh" opt; do
|
||||
case $opt in
|
||||
i) input="$OPTARG"
|
||||
;;
|
||||
@ -77,7 +78,9 @@ while getopts ":i:v:a:c:s:rfdAmVxh" opt; do
|
||||
;;
|
||||
d) delete="Y"
|
||||
;;
|
||||
A) search_command="find" && force="Y" && delete="Y"
|
||||
l) clean="Y"
|
||||
;;
|
||||
A) search_command="find" && force="Y" && delete="Y" #&& clean="Y"
|
||||
;;
|
||||
m) time_command="`which time`"
|
||||
;;
|
||||
@ -102,25 +105,38 @@ if [[ -z "$input" ]]; then
|
||||
input="."
|
||||
fi
|
||||
|
||||
if [[ -z $size ]]; then
|
||||
size="720"
|
||||
fi
|
||||
typeset -i size_int
|
||||
size_int="$size"
|
||||
|
||||
# Ensure the filenames sort properly between 3 and 4 digit resolutions.
|
||||
while (( ${#size} < 4 )); do
|
||||
size="0$size"
|
||||
done
|
||||
compress_tags="$size"
|
||||
size="-filter:v scale=-2:$size"
|
||||
|
||||
if [[ -z "$video_bitrate" ]]; then
|
||||
# Based roughly on the 2.5 step iteration used for 720 and 1080.
|
||||
if (( $size >= 2160 )); then
|
||||
if (( size_int >= 2160 )); then
|
||||
video_bitrate="30M"
|
||||
elif (( $size >= 1440 )); then
|
||||
elif (( size_int >= 1440 )); then
|
||||
video_bitrate="12M"
|
||||
elif (( $size >= 1080 )); then
|
||||
elif (( size_int >= 1080 )); then
|
||||
video_bitrate="5M"
|
||||
elif (( $size >= 720 )); then
|
||||
elif (( size_int >= 720 )); then
|
||||
video_bitrate="2000k"
|
||||
elif (( $size >= 480 )); then
|
||||
elif (( size_int >= 480 )); then
|
||||
video_bitrate="750k"
|
||||
elif (( $size >= 360 )); then
|
||||
elif (( size_int >= 360 )); then
|
||||
video_bitrate="250k"
|
||||
else
|
||||
video_bitrate="100k"
|
||||
fi
|
||||
fi
|
||||
compress_tags="$video_bitrate"
|
||||
compress_tags="$compress_tags-$video_bitrate"
|
||||
video_bitrate="-b:v $video_bitrate -minrate 0 -maxrate $video_bitrate -bufsize $video_bitrate"
|
||||
|
||||
if [[ -z "$audio_bitrate" ]]; then
|
||||
@ -145,15 +161,6 @@ else
|
||||
time_command="$time_command -p"
|
||||
fi
|
||||
|
||||
if [[ -z $size ]]; then
|
||||
size="720"
|
||||
fi
|
||||
while (( ${#size} < 4 )); do
|
||||
size="0$size"
|
||||
done
|
||||
compress_tags="$size-$compress_tags"
|
||||
size="-filter:v scale=-2:$size"
|
||||
|
||||
## Main ##
|
||||
|
||||
if [[ "$verbose" == "Y" ]]; then
|
||||
@ -208,21 +215,33 @@ $search_command "$input" | sort | while read file; do
|
||||
continue
|
||||
fi
|
||||
|
||||
# TBD / TODO: Test this functionality!
|
||||
new_video_clean="${newfile}"
|
||||
new_video_clean="${new_video_clean//_/}"
|
||||
new_video_clean="${new_video_clean//-/}"
|
||||
new_video_clean="${new_video_clean// /}"
|
||||
|
||||
# More exception checks based on the new file.
|
||||
if [[ -e "$newfile" ]]; then
|
||||
if [[ -e "$newfile" || -e "$new_video_clean" ]]; then
|
||||
if [[ "$force" == "Y" ]]; then
|
||||
echo "FORCE: Removing '$newfile'."
|
||||
if [[ -d ~/TRASH ]]; then
|
||||
mv -v "$newfile" ~/TRASH/
|
||||
mv -v "$newfile" "$new_video_clean" ~/TRASH/ 2>/dev/null
|
||||
else
|
||||
rm -v "$newfile"
|
||||
rm -v "$newfile" "$new_video_clean" 2>/dev/null
|
||||
fi
|
||||
else
|
||||
echo "SKIP: Already has a compressed version ($newfile)."
|
||||
echo "SKIP: Already has a compressed version."
|
||||
ls -sh "$newfile" "$new_video_clean" 2>/dev/null
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# Whether or not to use the cleaned version or the normal version.
|
||||
if [[ -n $clean ]]; then
|
||||
newfile="$new_video_clean"
|
||||
fi
|
||||
|
||||
# Convert the file.
|
||||
echo "Converting to '$newfile'."
|
||||
echo "*** `date` ***"
|
||||
|
@ -100,7 +100,6 @@
|
||||
mode: '0755'
|
||||
loop:
|
||||
- "{{ user_user.home }}/bin"
|
||||
- "{{ user_user.home }}/LBRY"
|
||||
- "{{ user_user.home }}/TRASH"
|
||||
- "{{ user_user.home }}/Downloads"
|
||||
- "{{ user_user.home }}/Reports"
|
||||
@ -158,18 +157,18 @@
|
||||
function_update: |
|
||||
function update() {
|
||||
PROG=$FUNCNAME
|
||||
usage="Usage: $PROG [-y]
|
||||
usage="Usage: $PROG [-y] [-g] [-s] [-f]
|
||||
$PROG is used to run all the system's package manager commands
|
||||
in one swoop. Flow stops if any command returns a failure code.
|
||||
The hope is to run something as easy as 'pacman -Syyu'.
|
||||
-y : Assume yes to any prompts.
|
||||
-g : Shutdown after updating.
|
||||
-g : Goodbye - Shutdown after updating.
|
||||
-s : System updates only, no Flatpaks.
|
||||
-f : Flatpaks only, no system updates."
|
||||
|
||||
unset OPTIND
|
||||
unset accept
|
||||
unset goodbye
|
||||
unset shutdown
|
||||
unset only_sys
|
||||
unset only_flat
|
||||
|
||||
@ -178,7 +177,7 @@
|
||||
h) echo -e "$usage"
|
||||
return 0 ;;
|
||||
y) accept="-y" ;;
|
||||
g) goodbye="Y" ;;
|
||||
g) shutdown="Y" ;;
|
||||
s) only_sys="Y" ;;
|
||||
f) only_flat="Y" ;;
|
||||
*) echo "ERROR: -$OPTARG is not a recognized option." >&2
|
||||
@ -193,7 +192,7 @@
|
||||
{{ update_package_manager }}
|
||||
fi
|
||||
|
||||
if [[ "$goodbye" == "Y" && "{{ battery }}" == "True" ]]; then
|
||||
if [[ "$shutdown" == "Y" && "{{ battery }}" == "True" ]]; then
|
||||
echo -e "\n*** Only System Updates - Skipping Flatpak ***\n\n"
|
||||
elif [[ "$only_sys" == "Y" ]]; then
|
||||
echo -e "\n*** Manually Skipping Flatpak ***\n\n"
|
||||
@ -203,7 +202,8 @@
|
||||
|
||||
echo "*** Completed Successfully ***"
|
||||
|
||||
if [[ $goodbye == "Y" ]]; then
|
||||
if [[ $shutdown == "Y" ]]; then
|
||||
shopt -s expand_aliases
|
||||
bye
|
||||
fi
|
||||
|
||||
@ -235,6 +235,8 @@
|
||||
echo "*** Completed Successfully ***"
|
||||
return 0
|
||||
}
|
||||
alias firmware-update="update-firmware"
|
||||
alias firmware-updater="update-firmware"
|
||||
alias_sync: alias sync='date && echo "Syncing!" && sync && date'
|
||||
export_editor: export EDITOR='vi'
|
||||
init_aliases: |
|
||||
@ -252,8 +254,12 @@
|
||||
'
|
||||
alias init-prog=init-program
|
||||
bye_aliases: |
|
||||
alias bye="{{ shutdown_command }}"
|
||||
alias goodbye="update -yg"
|
||||
function bye {
|
||||
{{ shutdown_command }}
|
||||
}
|
||||
function goodbye {
|
||||
update -yg
|
||||
}
|
||||
metasploit_aliases: |
|
||||
alias metasploit="msfconsole"
|
||||
alias hax="metasploit"
|
||||
@ -414,23 +420,63 @@
|
||||
}
|
||||
alias_vim: alias vi=vim
|
||||
alias_here: alias here='ls -alh `pwd`/*'
|
||||
alias_docker_reload: |
|
||||
alias docker-reload='
|
||||
function_docker_reload: |
|
||||
function docker-reload() {
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<- EOF
|
||||
Usage: docker-reload [container_name]
|
||||
Providing the container name starts a log follow after the command.
|
||||
A reload is characterized by a DOWN, BUILD, and UP.
|
||||
EOF
|
||||
return 0
|
||||
fi
|
||||
|
||||
docker compose down &&
|
||||
docker compose build &&
|
||||
docker compose up -d
|
||||
'
|
||||
alias_docker_update: |
|
||||
alias docker-update='
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
docker logs -f $1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
function_docker_update: |
|
||||
function docker-update() {
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<- EOF
|
||||
Usage: docker-update [container_name]
|
||||
Providing the container name starts a log follow after the command.
|
||||
An update is characterized by a DOWN, PULL, BUILD, and UP.
|
||||
EOF
|
||||
return 0
|
||||
fi
|
||||
|
||||
docker compose down &&
|
||||
docker compose pull &&
|
||||
docker compose build &&
|
||||
docker compose up -d
|
||||
'
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
docker logs -f $1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
function_docker_upgrade: |
|
||||
function docker-upgrade() {
|
||||
# Wrapper for a full-scale upgrade and log view of a container.
|
||||
# Paramaters:
|
||||
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<- EOF
|
||||
Usage: docker-upgrade [container_name]
|
||||
Providing the container name starts a log follow after the command.
|
||||
An upgrade is characterized by a DOWN, PULL, BUILD, and UP.
|
||||
EOF
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Parameters:
|
||||
# 1) Container ID or Container Name, as seen in 'docker ps' command.
|
||||
container=$1
|
||||
if [[ -z $container ]]; then
|
||||
@ -460,9 +506,29 @@
|
||||
echo "*** Following Log ***" &&
|
||||
echo "Press ^C to escape." &&
|
||||
docker logs -f $container
|
||||
|
||||
return 0
|
||||
}
|
||||
function_docker_restart: |
|
||||
function docker-restart() {
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<- EOF
|
||||
Usage: docker-restart [container_name]
|
||||
Providing the container name starts a log follow after the command.
|
||||
A restart is characterized by a DOWN and UP.
|
||||
EOF
|
||||
return 0
|
||||
fi
|
||||
|
||||
docker compose down &&
|
||||
docker compose up -d
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
docker logs -f $1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
alias_docker_restart: |
|
||||
alias docker-restart='docker compose down && docker compose up -d'
|
||||
alias_code_check: |
|
||||
alias code-check='
|
||||
echo "Checking ~/Code directory for git changes."
|
||||
@ -502,15 +568,16 @@
|
||||
env-termux dev
|
||||
nodejs-website dev
|
||||
ebook-health-protocol dev
|
||||
flutter-expense-tracker main
|
||||
flutter-social-traveler-app main
|
||||
nodejs-social-traveler-server main
|
||||
flutter-expense-tracker dev
|
||||
flutter-social-traveler-app dev
|
||||
nodejs-social-traveler-server dev
|
||||
misc-spare-change main
|
||||
flutter-buddy-website dev
|
||||
EOF
|
||||
}
|
||||
function code-reseed {
|
||||
# Unseed current projects.
|
||||
echo "*** Move old projects to TRASH ***"
|
||||
echo -e "\n*** Move old projects to TRASH ***"
|
||||
unseed_dir="$HOME/TRASH/`date +%Y%m%d_%H%M%S`_UnseededCodeProjects"
|
||||
mkdir -pv "$unseed_dir"
|
||||
mv -v ~/Code/* "$unseed_dir"/ 2>/dev/null
|
||||
@ -527,7 +594,7 @@
|
||||
# Project folder manipulation.
|
||||
dest_folder="$git_project"
|
||||
if [[ "$dest_folder" == "flutter-"* ]]; then
|
||||
echo "- Using '_' for Flutter Project"
|
||||
echo "Using '_' for Flutter Project"
|
||||
dest_folder="${dest_folder//-/_}"
|
||||
fi
|
||||
|
||||
@ -650,6 +717,9 @@
|
||||
echo "$var = ${!var}"
|
||||
done
|
||||
}
|
||||
alias_permission_commands: |
|
||||
alias chown='chown -c'
|
||||
alias chmod='chmod -c'
|
||||
|
||||
- name: General | Account Management | Users | Files | Common Variable
|
||||
set_fact:
|
||||
@ -693,10 +763,10 @@
|
||||
{{ function_flatpak_purge }}
|
||||
{{ alias_vim }}
|
||||
{{ alias_here }}
|
||||
{{ alias_docker_reload }}
|
||||
{{ alias_docker_update }}
|
||||
{{ function_docker_reload }}
|
||||
{{ function_docker_update }}
|
||||
{{ function_docker_upgrade }}
|
||||
{{ alias_docker_restart }}
|
||||
{{ function_docker_restart }}
|
||||
{{ alias_code_check }}
|
||||
{{ alias_code_reset }}
|
||||
{{ function_code_reseed }}
|
||||
@ -712,6 +782,7 @@
|
||||
{{ alias_kill_system }}
|
||||
{{ function_update_sdks }}
|
||||
{{ function_ansible_vars }}
|
||||
{{ alias_permission_commands }}
|
||||
|
||||
- name: General | Account Management | Users | Files | .bashrc
|
||||
blockinfile:
|
||||
|
6
tasks/general/software/hyperling.yml
Normal file
6
tasks/general/software/hyperling.yml
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
# Software that I've written for personal use, to be placed in `~/bin/`.
|
||||
|
||||
# TODO TBD - Add content here and place this in local.yml! :)
|
||||
|
||||
# Refactor Music Library
|
@ -137,3 +137,19 @@
|
||||
state: absent
|
||||
when: ansible_distribution != "Ubuntu"
|
||||
ignore_errors: yes
|
||||
|
||||
- name: General | Software | Packages | GS Connect (KDE Connect, Android Tool)
|
||||
package:
|
||||
name:
|
||||
- gnome-shell-extension-gsconnect
|
||||
state: present
|
||||
when: ansible_distribution in ("Debian")
|
||||
ignore_errors: yes
|
||||
|
||||
- name: General | Software | Packages | Other Debian Packages
|
||||
package:
|
||||
name:
|
||||
- usbutils
|
||||
state: present
|
||||
when: ansible_distribution in ("Debian")
|
||||
ignore_errors: yes
|
||||
|
@ -18,7 +18,6 @@
|
||||
, 'com.discordapp.Discord.desktop'
|
||||
, 'com.vscodium.codium.desktop'
|
||||
, 'codium.desktop'
|
||||
, 'com.google.AndroidStudio.desktop'
|
||||
, 'org.shotcut.Shotcut.desktop'
|
||||
, 'io.lmms.LMMS.desktop'
|
||||
, 'io.lbry.lbry-app.desktop', 'lbry.desktop'
|
||||
@ -38,6 +37,8 @@
|
||||
#, 'org.godotengine.Godot.desktop'
|
||||
# 2025-03-07 Removed in place of a 2nd VS Codium install (apt version).
|
||||
#, 'com.visualstudio.code-oss.desktop', 'code-oss.desktop'
|
||||
# 2025-03-21 Not really using Android Studio now that Flutter is working.
|
||||
#, 'com.google.AndroidStudio.desktop'
|
||||
|
||||
- name: Workstation | Account Management | GNOME | Facts (NixOS)
|
||||
set_fact:
|
||||
|
Reference in New Issue
Block a user