first commit
This commit is contained in:
Executable
+115
@@ -0,0 +1,115 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $0 --title | --arturl | --artist | --length | --album | --source"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to get metadata using playerctl
|
||||
get_metadata() {
|
||||
key=$1
|
||||
playerctl metadata --format "{{ $key }}" 2>/dev/null
|
||||
}
|
||||
|
||||
# Check for arguments
|
||||
|
||||
# Function to determine the source and return an icon and text
|
||||
get_source_info() {
|
||||
trackid=$(get_metadata "mpris:trackid")
|
||||
if [[ "$trackid" == *"firefox"* ]]; then
|
||||
echo -e "Firefox "
|
||||
elif [[ "$trackid" == *"spotify"* ]]; then
|
||||
echo -e "Spotify "
|
||||
elif [[ "$trackid" == *"chromium"* ]]; then
|
||||
echo -e "Chrome "
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# Parse the argument
|
||||
case "$1" in
|
||||
--title)
|
||||
title=$(get_metadata "xesam:title")
|
||||
if [ -z "$title" ]; then
|
||||
echo ""
|
||||
else
|
||||
echo "${title:0:28}" # Limit the output to 50 characters
|
||||
fi
|
||||
;;
|
||||
--arturl)
|
||||
url=$(get_metadata "mpris:artUrl")
|
||||
if [ -z "$url" ]; then
|
||||
echo ""
|
||||
else
|
||||
if [[ "$url" == file://* ]]; then
|
||||
url=${url#file://}
|
||||
elif [[ "$url" == http://* || "$url" == https://* ]]; then
|
||||
filename=$(basename "$url")
|
||||
if [[ "$filename" != *.png && "$filename" != *.jpg && "$filename" != *.jpeg ]]; then
|
||||
filename="${filename}.jpg"
|
||||
fi
|
||||
wget -q "$url" -O "/tmp/$filename"
|
||||
url="/tmp/$filename"
|
||||
fi
|
||||
|
||||
# Make sure local files also have a png/jpg extension if required
|
||||
if [[ "$url" != *.png && "$url" != *.jpg && "$url" != *.jpeg ]]; then
|
||||
if [ -f "$url" ]; then
|
||||
cp "$url" "/tmp/$(basename "$url").jpg"
|
||||
url="/tmp/$(basename "$url").jpg"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$url"
|
||||
fi
|
||||
;;
|
||||
--artist)
|
||||
artist=$(get_metadata "xesam:artist")
|
||||
if [ -z "$artist" ]; then
|
||||
echo ""
|
||||
else
|
||||
echo "${artist:0:30}" # Limit the output to 50 characters
|
||||
fi
|
||||
;;
|
||||
--length)
|
||||
length=$(get_metadata "mpris:length")
|
||||
if [ -z "$length" ]; then
|
||||
echo ""
|
||||
else
|
||||
# Convert length from microseconds to a more readable format (seconds)
|
||||
echo "$(echo "scale=2; $length / 1000000 / 60" | bc) m"
|
||||
fi
|
||||
;;
|
||||
--status)
|
||||
status=$(playerctl status 2>/dev/null)
|
||||
if [[ $status == "Playing" ]]; then
|
||||
echo ""
|
||||
elif [[ $status == "Paused" ]]; then
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
;;
|
||||
--album)
|
||||
album=$(playerctl metadata --format "{{ xesam:album }}" 2>/dev/null)
|
||||
if [[ -n $album ]]; then
|
||||
echo "$album"
|
||||
else
|
||||
status=$(playerctl status 2>/dev/null)
|
||||
if [[ -n $status ]]; then
|
||||
echo "Not album"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
--source)
|
||||
get_source_info
|
||||
;;
|
||||
*)
|
||||
echo "Invalid option: $1"
|
||||
echo "Usage: $0 --title | --url | --artist | --length | --album | --source"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user