youtube/gopher: improve directory - frontends - front-ends for some sites (experiment) (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit fbbbe9242322569b01c1311a0fa634cd801521bb (DIR) parent 8e7076cc4d88d621e1cab5d35c57a2a2d6e24b51 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Wed, 22 Feb 2023 18:42:51 +0100 youtube/gopher: improve directory - Add directory link of its own page, useful for when theres type 7 search. - Show the current search term and add a type 7 search field. - Fix listing the user videos by calling the proper function. - Don't exit(1) even on a Gopher error response. Diffstat: M youtube/gopher.c | 36 ++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 8 deletions(-) --- (DIR) diff --git a/youtube/gopher.c b/youtube/gopher.c @@ -63,6 +63,7 @@ render(struct search_response *r) exit(1); header(); + for (i = 0; i < r->nitems; i++) { if (videos[i].id[0]) putchar('h'); @@ -150,6 +151,7 @@ main(void) { struct search_response *r = NULL; const char *channelid = "", *userid = "", *querystring = "", *p; + const char *rawsearch = ""; char search[1024] = ""; if (pledge("stdio dns inet rpath unveil", NULL) == -1) @@ -184,22 +186,40 @@ main(void) p = getenv("X_GOPHER_SEARCH"); /* geomyidae */ if (!p) p = getenv("SEARCHREQUEST"); /* gophernicus */ + if (p) + rawsearch = p; if (p && !uriencode(p, search, sizeof(search))) { error("Invalid search"); - printf(".\r\n"); - exit(1); + footer(); + return 0; + } + + line('1', "Idiotbox", requestpath); + info(""); + + OUT("7Search"); + if (rawsearch[0]) { + OUT(": "); + OUT(rawsearch); } + printf("\t%s\t%s\t%s\r\n", requestpath, host, port); - if (search[0]) + if (search[0]) { r = youtube_search(search, "", "relevance"); - else if (channelid[0]) + } else if (channelid[0]) { r = youtube_channel_videos(channelid); - else if (userid[0]) - r = youtube_channel_videos(userid); + } else if (userid[0]) { + r = youtube_user_videos(userid); + } else { + footer(); + return 0; + } + info(""); + if (!r || r->nitems == 0) { error("No videos found"); - printf(".\r\n"); - exit(1); + footer(); + return 0; } render(r);