feat: enhance cache system for music and Wakatime integration with new options

This commit is contained in:
2024-08-31 16:42:02 -04:00
parent 1fe385f572
commit 7ca3fae110
3 changed files with 128 additions and 26 deletions
+58 -23
View File
@@ -4,20 +4,51 @@
separator="␟"
# Ignored player sources for music
ignored_players=(
"chromium"
"firefox"
"kdeconnect"
"haruna"
"plasma-browser-integration"
"plasma-browser-integration-76042"
)
ignored_sources=""
# Convert array to a comma-separated string with no spaces
ignored_sources=$(
IFS=,
echo "${ignored_players[*]}"
)
# Flags for disabling functionality
disable_wakatime=false
no_music=false
# Function to print usage
print_usage() {
echo "Usage: $0 [OPTION]..."
echo "Options:"
echo " -h, --help Print this help message and exit"
echo " -i, --ignore Comma-separated list of sources to ignore"
echo " -d, --disable-wakatime Disable wakatime integration"
echo " -n, --no-music Disable music integration"
exit 0
}
# Parse command-line arguments
while [[ $# -gt 0 ]]; do
case "$1" in
-h | --help)
print_usage
;;
-i | --ignore)
if [[ -n $2 && $2 != -* ]]; then
ignored_sources=$2
shift
else
echo "Error: --ignore requires an argument."
exit 1
fi
;;
-d | --disable-wakatime)
disable_wakatime=true
;;
-n | --no-music)
no_music=true
;;
*)
echo "Unknown option: $1"
print_usage
;;
esac
shift
done
# Lock file path
lock_file="/tmp/music_wakatime_update.lock"
@@ -37,17 +68,21 @@ cleanup() {
}
trap cleanup EXIT
# Update the music cache file every second
while true; do
playerctl --ignore-player "${ignored_sources}" metadata --format "{{ artist }}${separator}{{ title }}${separator}{{ album }}${separator}{{ status }}${separator}{{ volume }}${separator}{{ loop }}${separator}{{ shuffle }}" >~/.cache/music_cache.txt
sleep 1
done & # Run this loop in the background
# Update the music cache file every second, if not disabled
if ! $no_music; then
while true; do
playerctl --ignore-player "${ignored_sources}" metadata --format "{{ artist }}${separator}{{ title }}${separator}{{ album }}${separator}{{ status }}${separator}{{ volume }}${separator}{{ loop }}${separator}{{ shuffle }}" >~/.cache/music_cache.txt
sleep 1
done & # Run this loop in the background
fi
# Update the Wakatime cache file every 60 seconds
while true; do
~/.wakatime/wakatime-cli --today >~/.cache/wakatime_cache.txt 2>/dev/null
sleep 60
done & # Run this loop in the background
# Update the Wakatime cache file every 60 seconds, if not disabled
if ! $disable_wakatime; then
while true; do
~/.wakatime/wakatime-cli --today >~/.cache/wakatime_cache.txt 2>/dev/null
sleep 60
done & # Run this loop in the background
fi
# Wait for all background processes to finish
wait