Introduction
Introduction Statistics Contact Development Disclaimer Help
games.dcgi - brcon2024-hackathons - Bitreichcon 2024 Hackathons
git clone git://bitreich.org/brcon2024-hackathons git://enlrupgkhuxnvlhsf6lc3fz…
Log
Files
Refs
Tags
Submodules
---
games.dcgi (2560B)
---
1 #!/bin/sh
2 if [ -n "${X_GOPHER_SEARCH}" ];
3 then
4 PAGE=1
5 QUERY="${X_GOPHER_SEARCH}"
6 elif [ -n "${QUERY_STRING}" ];
7 then
8 PAGE="${QUERY_STRING##*:}"
9 if ! printf "%s\n" "${PAGE}" | grep -q '^[0-9][0-9]*$';
10 then
11 PAGE=1
12 elif [ "${PAGE}" -lt 1 ];
13 then
14 PAGE=1
15 fi
16 QUERY="${QUERY_STRING%:*}"
17 else
18 PAGE=1
19 QUERY=""
20 fi
21
22 export PAGE
23 export QUERY
24
25 {
26 if [ -z "${QUERY}" ];
27 then
28 curl -sgG \
29 --data-urlencode "pg=${PAGE}" \
30 --url "https://ifdb.org/search?xml&game&browse"
31 else
32 curl -sgG \
33 --data-urlencode "searchfor=${QUERY}" \
34 --data-urlencode "pg=${PAGE}" \
35 --url "https://ifdb.org/search?xml&game"
36 fi
37 } | \
38 xml2tsv | \
39 awk '
40 function escape(s, f) {
41 gsub(" ", " ", s);
42 gsub("\n", " ", s);
43 if (f)
44 gsub("\\|", "\\|", s);
45 return s;
46 }
47 function item(type, text, selector, server, port) {
48 printf("[%c|%s|%s|%s|%s]\n", escape(type, 1), escape(text, 1), e…
49 }
50 BEGIN {
51 FS = "\t";
52
53 server = "server";
54 port = "port";
55 page = ENVIRON["PAGE"];
56 query = ENVIRON["QUERY"];
57 pathinfo = ENVIRON["PATH_INFO"];
58
59 item("1", "..", "..", server, port);
60 printf("%s\n", "Inofficial IFDB Gopher frontend");
61 item("h", "IFDB on the WWW", "URL:https://ifdb.org/", server, po…
62 item("1", "IF-Archive mirror on gopher.661.org", "/if-archive/",…
63 printf("--------------------------------------------------------…
64 item("7", "Search", pathinfo, server, port);
65 if (query)
66 printf("Current Search: %s\n", escape(query));
67
68 printf("--------------------------------------------------------…
69 }
70 function fold(s, w,
71 i, l) {
72 s = escape(s);
73 l = length(s);
74
75 for (i = 1; i <= l; i += w)
76 printf("%s\n", substr(s, i, w));
77 }
78 function flush(,
79 i, url) {
80 item("1", data["title"] (data["numRatings"] ? sprintf(" (%s star…
81 }
82 $1 == "searchReply/error" {
83 exit
84 }
85 $1 == "/searchReply/games/game" {
86 if (data["tuid"]) {
87 flush();
88 delete data;
89 }
90 }
91 index($1, "/searchReply/games/game/") == 1 {
92 data[substr($1, length("/searchReply/games/game/") + 1)] = $2;
93 next;
94 }
95 END {
96 if (data["tuid"])
97 flush();
98 else if (page > 1)
99 printf("No more entries!\n");
100 else
101 printf("No entries!\n");
102
103 printf("--------------------------------------------------------…
104
105 if (page > 1)
106 item("1", "Previous Page", pathinfo "?" query ":" (int(p…
107 if (data["tuid"])
108 item("1", "Next Page", pathinfo "?" query ":" (int(page)…
109 }'
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.