Add a search DCGI inspired by idiotbox - gophercgis - Collection of gopher CGI/DCGI for geomyidae
 (HTM) hg clone https://bitbucket.org/iamleot/gophercgis
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) changeset ea292405584756dd47a3580622af8b5f46a6c05d
 (DIR) parent d5d8d32687f0a546da5e0e0aaf9d41437ec9b0e6
 (HTM) Author: Leonardo Taccari <iamleot@gmail.com>
       Date:   Sat, 15 Sep 2018 23:43:04 
       
       Add a search DCGI inspired by idiotbox
       
       Diffstat:
        youtube/search.dcgi |  76 +++++++++++++++++++++++++++++++++++++++++++++++++++++
        1 files changed, 76 insertions(+), 0 deletions(-)
       ---
       diff -r d5d8d32687f0 -r ea2924055847 youtube/search.dcgi
       --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
       +++ b/youtube/search.dcgi       Sat Sep 15 23:43:04 2018 +0200
       @@ -0,0 +1,76 @@
       +#!/bin/sh
       +
       +SEARCH_CGI="/cgi/youtube/search.dcgi"
       +
       +if [ -n "$1" ]; then
       +       query=$(printf "%s" "$1" | vis -h)
       +       url="https://www.youtube.com/results?search_query=${query}"
       +fi
       +
       +if [ -n "$2" ]; then
       +       url="https://www.youtube.com$2"
       +fi
       +
       +echo "t"
       +echo "tYouTube"
       +echo "t"
       +
       +/usr/pkg/bin/curl -H 'Accept-Language: en-US' -Ls -- "${url}" |
       +awk '
       +/<h3 class="yt-lockup-title ">/ {
       +       if (!match($0, /href="\/watch\?v=[^"]+"/)) {
       +               next
       +       }
       +
       +       video_id = substr($0, RSTART + 15, RLENGTH - 16)
       +
       +       # ignore non-video (i.e. playlist/channel)
       +       if (length(video_id) != 11) {
       +               next    
       +       }
       +
       +       match($0, /title="[^"]+"/)
       +       title = substr($0, RSTART + 7, RLENGTH - 8)
       +
       +       match($0, / - Duration: ([0-9]+:)?[0-9]+:[0-9]+\./)
       +       duration = substr($0, RSTART + 13, RLENGTH - 14)
       +
       +       match($0, /<a href="\/(channel|user).* >.*<\/a>/)
       +       author = substr($0, RSTART, RLENGTH)
       +       sub(/<a href="\/(channel|user).* >/, "", author)
       +       sub(/<\/a>.*/, "", author)
       +
       +       desc = sprintf("%s   (%s)   %s", title, duration, author)
       +       gsub("\\|", "\\|", desc)
       +       gsub("&#39;", "\047", desc)
       +       gsub("&amp;", "\\&", desc)
       +
       +       printf("[h|%s|URL:https://www.youtube.com/watch?v=%s|server|port]\n",
       +               desc, video_id)
       +}
       +
       +/« Previous/ {
       +       if (!match($0, /href="\/results\?[^"]+"/)) {
       +               next
       +       }
       +
       +       page_prev = substr($0, RSTART + 6, RLENGTH - 7)
       +       printf("\n")
       +       printf("[1|<< Previous|'"${SEARCH_CGI}"'?%s|server|port]\n", page_prev)
       +}
       +
       +/Next »/ {
       +       if (!match($0, /href="\/results\?[^"]+"/)) {
       +               next
       +       }
       +
       +       page_next = substr($0, RSTART + 6, RLENGTH - 7)
       +       if (!page_prev) {
       +               printf("\n")
       +       }
       +       printf("[1|>> Next|'"${SEARCH_CGI}"'?%s|server|port]\n", page_next)
       +}
       +'
       +
       +echo "t"
       +echo "[7|Search|${SEARCH_CGI}|server|port]"