Introduction
Introduction Statistics Contact Development Disclaimer Help
youtube/gopher: list channel videos, allow to search by ?search - frontends - f…
Log
Files
Refs
README
LICENSE
---
commit f3adbb9aabfccab9ab538881887867e1ffca5863
parent fa40d5e0863446d6083d7290249b65f738474a76
Author: Hiltjo Posthuma <[email protected]>
Date: Sat, 18 Feb 2023 13:10:19 +0100
youtube/gopher: list channel videos, allow to search by ?search
Also allows linking to channel videos with ?c=channelid.
Diffstat:
M youtube/gopher.c | 44 ++++++++++++++++++++++++++---…
1 file changed, 38 insertions(+), 6 deletions(-)
---
diff --git a/youtube/gopher.c b/youtube/gopher.c
@@ -20,6 +20,10 @@
static const char *host = "127.0.0.1", *port = "70";
+static const char *querystring = "";
+static const char *channelid = "";
+static const char *requestpath = "/";
+
void
line(int _type, const char *username, const char *selector)
{
@@ -94,6 +98,16 @@ render(struct search_response *r)
}
printf("\t%s\t%s\r\n", host, port);
+ if (videos[i].channelid[0]) {
+ OUT("1");
+ OUT(videos[i].channeltitle);
+ printf("\t%s?c=%s\t%s\t%s\r\n", requestpath, videos[i]…
+ } else if (videos[i].channeltitle[0]) {
+ OUT("i");
+ OUT(videos[i].channeltitle);
+ printf("\t%s\t%s\t%s\r\n", "", host, port);
+ }
+
if (videos[i].channelid[0] || videos[i].userid[0]) {
OUT("hAtom feed of ");
OUTTEXT(videos[i].channeltitle);
@@ -134,8 +148,9 @@ render(struct search_response *r)
int
main(void)
{
- struct search_response *r;
- char *p, search[1024];
+ struct search_response *r = NULL;
+ const char *p;
+ char search[1024];
if (pledge("stdio dns inet rpath unveil", NULL) == -1)
exit(1);
@@ -147,17 +162,34 @@ main(void)
host = p;
if ((p = getenv("SERVER_PORT")))
port = p;
-
- if (!(p = getenv("X_GOPHER_SEARCH"))) /* geomyidae */
+ if ((p = getenv("PATH_TRANSLATED")))
+ requestpath = p;
+ if ((p = getenv("QUERY_STRING")))
+ querystring = p;
+
+ p = NULL;
+ if (querystring[0] == '?')
+ querystring++;
+ if (querystring[0] == 'c' && querystring[1] == '=') {
+ channelid = querystring + 2;
+ p = querystring = "";
+ }
+ if (querystring[0])
+ p = querystring;
+ if (!p)
+ p = getenv("X_GOPHER_SEARCH"); /* geomyidae */
+ if (!p)
p = getenv("SEARCHREQUEST"); /* gophernicus */
-
if (p && !uriencode(p, search, sizeof(search))) {
error("Invalid search");
printf(".\r\n");
exit(1);
}
- r = youtube_search(search, "", "relevance");
+ if (search[0])
+ r = youtube_search(search, "", "relevance");
+ else if (channelid[0])
+ r = youtube_channel_videos(channelid);
if (!r || r->nitems == 0) {
error("No videos found");
printf(".\r\n");
You are viewing proxied material from codemadness.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.