youtube: cgi and gopher: add user parameter - frontends - front-ends for some sites (experiment)
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 50bc403fd51f83912085837515187a006b4d2dab
(DIR) parent eec1de3aa027fd3e75101a4829658c2af844fb25
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Wed, 22 Feb 2023 18:17:36 +0100
youtube: cgi and gopher: add user parameter
Afaik this parameter is not used (much) anymore in the search listing though.
Diffstat:
M youtube/cgi.c | 16 +++++++++++++++-
M youtube/gopher.c | 12 +++++++++++-
2 files changed, 26 insertions(+), 2 deletions(-)
---
(DIR) diff --git a/youtube/cgi.c b/youtube/cgi.c
@@ -21,7 +21,7 @@ extern char **environ;
static int curpage = 1;
/* CGI parameters */
-static char rawsearch[4096], search[4096], order[16], page[64], channelid[256];
+static char rawsearch[4096], search[4096], order[16], page[64], channelid[256], userid[256];
void
parsecgi(void)
@@ -75,6 +75,12 @@ parsecgi(void)
if (decodeparam(channelid, sizeof(channelid), p) == -1)
channelid[0] = '\0';
}
+
+ /* user ID */
+ if ((p = getparam(query, "user"))) {
+ if (decodeparam(userid, sizeof(userid), p) == -1)
+ userid[0] = '\0';
+ }
}
int
@@ -189,6 +195,12 @@ render(struct search_response *r)
OUT("\">");
xmlencode(videos[i].channeltitle);
OUT("</a>");
+ } else if (videos[i].userid[0]) {
+ OUT("<a href=\"?user=");
+ xmlencode(videos[i].channelid);
+ OUT("\">");
+ xmlencode(videos[i].channeltitle);
+ OUT("</a>");
} else {
xmlencode(videos[i].channeltitle);
}
@@ -286,6 +298,8 @@ main(void)
r = youtube_search(rawsearch, page, order);
else if (channelid[0])
r = youtube_channel_videos(channelid);
+ else if (userid[0])
+ r = youtube_user_videos(userid);
else
goto show;
if (!r || r->nitems == 0) {
(DIR) diff --git a/youtube/gopher.c b/youtube/gopher.c
@@ -98,6 +98,10 @@ render(struct search_response *r)
OUT("1");
OUT(videos[i].channeltitle);
printf("\t%s?c=%s\t%s\t%s\r\n", requestpath, videos[i].channelid, host, port);
+ } else if (videos[i].userid[0]) {
+ OUT("1");
+ OUT(videos[i].channeltitle);
+ printf("\t%s?u=%s\t%s\t%s\r\n", requestpath, videos[i].userid, host, port);
} else if (videos[i].channeltitle[0]) {
OUT("i");
OUT(videos[i].channeltitle);
@@ -145,7 +149,7 @@ int
main(void)
{
struct search_response *r = NULL;
- const char *channelid = "", *querystring = "", *p;
+ const char *channelid = "", *userid = "", *querystring = "", *p;
char search[1024];
if (pledge("stdio dns inet rpath unveil", NULL) == -1)
@@ -169,7 +173,11 @@ main(void)
if (querystring[0] == 'c' && querystring[1] == '=') {
channelid = querystring + 2;
p = querystring = "";
+ } else if (querystring[0] == 'u' && querystring[1] == '=') {
+ userid = querystring + 2;
+ p = querystring = "";
}
+
if (querystring[0])
p = querystring;
if (!p)
@@ -186,6 +194,8 @@ main(void)
r = youtube_search(search, "", "relevance");
else if (channelid[0])
r = youtube_channel_videos(channelid);
+ else if (userid[0])
+ r = youtube_channel_videos(userid);
if (!r || r->nitems == 0) {
error("No videos found");
printf(".\r\n");