From fac705ddaf2ae19afd8d1791c0c94cfc696c03e2 Mon Sep 17 00:00:00 2001 From: rodri Date: Sat, 19 Aug 2023 21:24:14 +0000 Subject: now version controlled. --- mkfile | 18 ++++++++++++++++++ readme.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ wpq | 33 +++++++++++++++++++++++++++++++++ wpqprompt.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 154 insertions(+) create mode 100644 mkfile create mode 100644 readme.md create mode 100755 wpq create mode 100644 wpqprompt.c diff --git a/mkfile b/mkfile new file mode 100644 index 0000000..f528551 --- /dev/null +++ b/mkfile @@ -0,0 +1,18 @@ +[1=2] + exit usage +} + +if(~ $#* 0) + usage +switch($1){ +case -*h* + wanthtml=y + shift +} +{ + echo -n '{"result":' + hget 'https://en.wikipedia.org/w/api.php?action=opensearch&format=json&search='^$"* + echo -n '}' +} >$tmpfile +targ=`{wpqprompt $tmpfile | tr ' ' '_'} +rm -f $tmpfile +if(~ $wanthtml y) + plumb 'https://en.wikipedia.org/wiki/'^$targ +if not + hget 'https://en.wikipedia.org/api/rest_v1/page/pdf/'^$targ | page -w -p145 diff --git a/wpqprompt.c b/wpqprompt.c new file mode 100644 index 0000000..b904dc8 --- /dev/null +++ b/wpqprompt.c @@ -0,0 +1,58 @@ +#include +#include +#include + +void +usage(void) +{ + fprint(2, "usage: %s wpqsearchfile\n", argv0); + exits("usage"); +} + +void +main(int argc, char *argv[]) +{ + JSON *obj, *res; + JSONEl *e; + char buf[8192], *targets[32]; + int fd, n, i; + + JSONfmtinstall(); + ARGBEGIN{ + default: usage(); + }ARGEND; + if(argc != 1) + usage(); + fd = open(argv[0], OREAD); + if((n = readn(fd, buf, sizeof(buf)-1)) <= 0) + sysfatal("read: %r"); + buf[n] = 0; + close(fd); + obj = jsonparse(buf); + if(obj == nil || obj->t != JSONObject) + sysfatal("jsonparse: %r"); + res = jsonbyname(obj, "result"); + if(res == nil || res->t != JSONArray) + sysfatal("jsonbyname: %r"); + if(res->first->next->val->first == nil) + sysfatal("no results"); + for(e = res->first->next->val->first, i = 0; e != nil && i < nelem(targets); e = e->next, i++){ + targets[i] = e->val->s; + fprint(2, "%d) %s\n", i+1, targets[i]); + } + if(i < 2) + n = i; + else{ +prompt: + fprint(2, "[1-%d]: ", i); + if((n = read(0, buf, sizeof(buf)-1)) <= 0) + sysfatal("read: %r"); + buf[n] = 0; + n = strtol(buf, nil, 0); + if(n < 1 || n > i) + goto prompt; + } + print("%s\n", targets[n-1]); + jsonfree(obj); + exits(0); +} -- cgit v1.2.3