### vim:ft=zsh:foldmethod=marker ## letssingit.com search backend for lookup ## Copyright: 2009, Frank Terbeck LOOKUP_guard || return 1 [[ -n ${lookup_describe} ]] && printf '%s' 'search letssingit.com' && return 0 local mode lookup_context local -a comp_args local -A opts supported_modes local -x QUERY lookup_context="$(LOOKUP_context)" supported_modes=( artist 'search by artist' album 'search by album' song 'search by song name' lyrics 'search contents of lyrics' ) LOOKUP_guard -fd LOOKUP_help_${backend} || function LOOKUP_help_${backend}() { LOOKUP_guard || return 1 printf 'usage: %s [-m mode] \n' ${backend} printf ' -m specify search mode\n' printf '\n Make music related queries via letssingit.com\n' printf '\nAvailable modes are::\n' for mode in ${(kon)supported_modes} ; do printf '%8s - %s\n' ${mode} ${supported_modes[$mode]} done printf '\n The default mode is '\''artist'\'', which can be modified via the\n' printf ' '\''default-mode'\'' style in this context: %s\n\n' ${lookup_context} printf 'Examples:\n' printf ' %% zstyle '\'':lookup:*:%s:*'\'' default-mode song\n' ${backend} printf ' %% lookup %s Led Zeppelin\n' ${backend} printf ' %% lookup %s -m album Machine Head\n' ${backend} printf ' %% lookup %s -m song Paint it Black\n' ${backend} } LOOKUP_help && return 0 if [[ -n ${lookup_complete} ]] ; then LOOKUP_guard -fd __lookup_${backend}_supported_modes || function __lookup_${backend}_supported_modes() { local m local -a ms ms=() for m in ${(k)supported_modes}; do ms+=("$m:${supported_modes[$m]}") done _describe -t letssingit_modes 'supported search modes' ms } comp_args=( '-m[set search mode]:supported search modes:__lookup_'${backend}'_supported_modes' '*:letssingit.com query:true' ) _arguments -s -w -A '-*' ${comp_args} && return 0 _message 'letssingit.com query' return 0 fi lu_parseopts_args=( m string ) LOOKUP_parseopts "$@" || return 1 mode=${opts[-m]} if [[ -z ${mode} ]] ; then zstyle -s "${lookup_context}" default-mode mode || mode='artist' fi QUERY="${args[*]}" lookup_communicate[mode]=${mode} LOOKUP_query_handler || return 1 if [[ -z ${(Mk)supported_modes:#$mode} ]] ; then printf 'Unknown search mode: '\''%s'\''.\n\n' ${mode} QUERY='' fi if [[ -z ${QUERY} ]] ; then LOOKUP_help -f return 1 fi LOOKUP_encode -q LOOKUP_browser "http://search.letssingit.com/cgi-exe/am.cgi?a=search_quick&l=${mode}&s=${QUERY}" return $?