summaryrefslogtreecommitdiff
path: root/lf/lfu
diff options
context:
space:
mode:
Diffstat (limited to 'lf/lfu')
-rwxr-xr-xlf/lfu59
1 files changed, 59 insertions, 0 deletions
diff --git a/lf/lfu b/lf/lfu
new file mode 100755
index 0000000..415f448
--- /dev/null
+++ b/lf/lfu
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+# Search for track(s) on Last.fm, retrieve URL(s)
+
+usage() { echo usage: $0 [-a] [-f] [-m max] base-url 1>&2; exit 1; }
+
+# Parse options
+a=
+f=
+m=10
+while getopts afm: o
+do
+ case $o in
+ a) a=1 ;; # all
+ f) f=1 ;; # first
+ m) m=$OPTARG ;; # max
+ ?) usage
+ esac
+done
+shift $((OPTIND-1))
+q=$1
+
+m=$((m+0))
+test $m -lt 1 && m=10
+
+# Retrieve search results
+tmp=/tmp/lfu.$RANDOM
+curl -s -G --data-urlencode "q=$q" 'https://www.last.fm/search/tracks' |
+sed '/^[ ]*$/d' |
+awk -F \" '
+ /class="chartlist-name"/ {
+ getline;
+ getline;
+ getline;
+ getline;
+ getline;
+ getline;
+ print $2;
+ i++;
+ if (i > '"$((m-1))"') exit;
+ }
+' |
+sed 's,^,https://www.last.fm,' > $tmp
+
+# Select/print results
+if test ! -z "$a"
+then
+ cat $tmp
+elif test ! -z "$f"
+then
+ sed 1q < $tmp
+else
+ < $tmp lfp | nl -w2 -s'. ' > /dev/tty
+ read n < /dev/tty
+ n=$((n+0))
+ test $n -lt 1 && n=1
+ awk "NR == $n {print}" < $tmp
+fi
+rm $tmp