mirror of
https://github.com/dewomser/Toot_music_is_playing.git
synced 2026-03-13 16:37:17 +01:00
104 lines
3.2 KiB
Bash
Executable file
104 lines
3.2 KiB
Bash
Executable file
#!/bin/bash
|
|
#LANG=de_DE.UTF-8
|
|
# export LANG
|
|
export LC_ALL="en_US.UTF-8"
|
|
export LANG="en_US"
|
|
|
|
#list of available player
|
|
#todo: amarok liefert kein Cover
|
|
list_pl=( "strawberry" "vlc" "elisa" "juk" "plasma-browser-integration" "amarok" "tauon" "AudioTube")
|
|
#active player
|
|
for i in "${list_pl[@]}"
|
|
do
|
|
pl=$(qdbus org.mpris.MediaPlayer2."$i" /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus 2>&1)
|
|
if [ "$pl" == "Playing" ]
|
|
then
|
|
player="$i"
|
|
fi
|
|
done
|
|
|
|
if [ "$player" == "" ]
|
|
then
|
|
exit
|
|
fi
|
|
|
|
# Fetch Amarok3 metadata
|
|
#METADATA=$(qdbus org.kde.$player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata)
|
|
echo "$player"
|
|
METADATA="$(qdbus org.mpris.MediaPlayer2."$player" /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata)"
|
|
|
|
echo "$METADATA"
|
|
# Parse fields from metadata
|
|
TITLE=$(echo "$METADATA" | grep 'xesam:title:' | sed 's/^.*xesam:title:[ \t]*//')
|
|
ARTIST=$(echo "$METADATA" | grep 'xesam:artist:' | sed 's/^.*xesam:artist:[ \t]*//;s/\["//;s/"\]//')
|
|
ALBUM=$(echo "$METADATA" | grep 'xesam:album:' | sed 's/^.*xesam:album:[ \t]*//')
|
|
#COVER_URL=$(echo "$METADATA" | grep 'mpris:artUrl:' | sed 's/^.*mpris:artUrl:[ \t]*//')
|
|
COVER_URL=$(echo "$METADATA" | grep 'mpris:artUrl:' |sed -e 's/^.*mpris:artUrl://g' -e 's/%20/ /g' -e 's/%7D/}/g' -e 's/%7B/{/g')
|
|
#"$METADATA"|sed -e 's/%20/_/g' -e 's/file/lolo/g'
|
|
#COVER_URL="$(echo "$METADATA" | grep 'xesam:url:' | sed 's/^.*xesam:url:[ \t]*/ /')"
|
|
echo "cover_url:$COVER_URL"
|
|
OUTFILE="amarok_spotify_wrapper.png"
|
|
BG_COLOR="#181818"
|
|
#TEXT_COLOR="#FFFFFF"
|
|
TEXT_COLOR="#000000"
|
|
ACCENT_COLOR="#1DB954"
|
|
COVER_FILE="cover_tmp.png"
|
|
COVER_OK=0
|
|
|
|
# If COVER_URL is a local file, extract and check existence
|
|
#if [[ "$COVER_URL" == ^file://* ]]; then
|
|
if echo "$COVER_URL" | grep -q "^ file://"; then
|
|
COVER_PATH="${COVER_URL/ file:\/\/}"
|
|
echo "if cover_path $COVER_PATH"
|
|
if [[ -f "$COVER_PATH" ]]; then
|
|
magick "$COVER_PATH" -resize 140x140^ -gravity center -extent 140x140 "$COVER_FILE"
|
|
echo "if_coverfile:$COVER_FILE"
|
|
COVER_OK=1
|
|
fi
|
|
fi
|
|
#140x140
|
|
# Generate base PNG
|
|
magick -size 600x200 xc:"$BG_COLOR" \
|
|
-fill "$ACCENT_COLOR" -draw "roundrectangle 20,20 580,180 20,20" \
|
|
"$OUTFILE"
|
|
|
|
# Overlay cover art if present
|
|
if [[ "$COVER_OK" -eq 1 ]]; then
|
|
magick "$OUTFILE" "$COVER_FILE" -geometry +430+30 -composite "$OUTFILE"
|
|
fi
|
|
# +430+30
|
|
# Add text fields
|
|
|
|
TITLE_K=$(echo "$TITLE" | cut -c 1-25)
|
|
ARTIST_K=$(echo "$ARTIST" | cut -c 1-30)
|
|
ALBUM_K=$(echo "$ALBUM" | cut -c 1-50)
|
|
magick "$OUTFILE" \
|
|
-fill "$TEXT_COLOR" -pointsize 28 -gravity NorthWest -annotate +40+40 "$TITLE_K …" \
|
|
-fill "$TEXT_COLOR" -pointsize 20 -gravity NorthWest -annotate +40+90 "$ARTIST_K …" \
|
|
-fill "$TEXT_COLOR" -pointsize 16 -gravity NorthWest -annotate +40+140 "$ALBUM_K …" \
|
|
"$OUTFILE"
|
|
|
|
echo "TITLE: $TITLE"
|
|
echo "ARTIST: $ARTIST"
|
|
echo "ALBUM: $ALBUM"
|
|
echo "COVER_PATH: $COVER_PATH"
|
|
echo "PNG generated: $OUTFILE"
|
|
|
|
lol="https://www.youtube.com/results?search_query=${TITLE} ${ARTIST}"
|
|
lolo="${lol// /+}"
|
|
lolo=${lolo//\"/}
|
|
|
|
|
|
text1="ich höre gerade:"
|
|
text="$text1
|
|
Interpret: $ARTIST
|
|
Media-player: $player
|
|
Video (geraten): $lolo"
|
|
|
|
echo "$text"
|
|
description="$TITLE, $ARTIST, $ALBUM"
|
|
echo "$description"
|
|
echo "$text"|toot post --media "$OUTFILE" --description "$description"
|
|
|
|
#Clean up temp cover
|
|
rm -f "$COVER_FILE"
|