diff --git a/plugins/README.md b/plugins/README.md index 182e2485..5cf6ca72 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -14,6 +14,7 @@ The currently available plugins are listed below. | imgur | bash | - | Upload an image to imgur (from [imgur-screenshot](https://github.com/jomo/imgur-screenshot)) | | ipinfo | sh | curl, whois | Fetch external IP address and whois information | | kdeconnect | sh | kdeconnect-cli | Send selected files to an Android device | +| moclyrics | sh | [ddgr](https://github.com/jarun/ddgr), moc | Show lyrics of current track in moc | | mocplay | sh | [moc](http://moc.daper.net/) | Appends (and plays, see script) selection/dir/file in moc| | ndiff | sh | vimdiff | Diff for selection (limited to 2 for directories) | | nmount | sh | pmount, udisks2 | Toggle mount status of a device as normal user | diff --git a/plugins/moclyrics b/plugins/moclyrics new file mode 100755 index 00000000..36bf785c --- /dev/null +++ b/plugins/moclyrics @@ -0,0 +1,39 @@ +#!/usr/bin/env sh + +# Description: Fetches the lyrics of the currently playing track in MOC +# Requires ddgr (https://github.com/jarun/ddgr) +# +# Shell: POSIX compliant +# Author: Arun Prakash Jana + +# Check if MOC server is running +cmd=$(pgrep -x mocp 2>/dev/null) +ret=$cmd +if [ -z "$ret" ]; then + exit +fi + +# Grab the output +out="$(mocp -i)" + +# Check if anything is playing +state=$(echo "$out" | grep "State:" | cut -d' ' -f2) +if ! [ $state = 'PLAY' ]; then + exit +fi + +# Try by Artist and Song Title first +ARTIST="$(echo "$out" | grep 'Artist:' | cut -d':' -f2 | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//')" +TITLE="$(echo "$out" | grep 'SongTitle:' | cut -d':' -f2 | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//')" + +if ! [ -z "$ARTIST" ] && ! [ -z "$TITLE" ]; then + ddgr -w azlyrics.com --ducky "$ARTIST" "$TITLE" +else + # Try by file name + FILENAME="$(basename "$(echo "$out" | grep 'File:' | cut -d':' -f2)")" + FILENAME="$(echo "${FILENAME%%.*}" | tr -d -)" + + if ! [ -z "$FILENAME" ]; then + ddgr -w azlyrics.com --ducky "$FILENAME" + fi +fi