youtube: when clicking a channel, show the latest videos - frontends - front-en… | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit f47b9452628b9a68e527b7872771b08ef47e38c4 | |
parent 2be30b4f834c64d4478e8cff231ee9b29601edc0 | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Sat, 18 Feb 2023 11:32:41 +0100 | |
youtube: when clicking a channel, show the latest videos | |
Diffstat: | |
M youtube/cgi.c | 34 +++++++++++++++++++++--------… | |
1 file changed, 23 insertions(+), 11 deletions(-) | |
--- | |
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]; | |
+static char rawsearch[4096], search[4096], order[16], page[64], channelid[256]; | |
void | |
parsecgi(void) | |
@@ -69,6 +69,12 @@ parsecgi(void) | |
exit(1); | |
} | |
} | |
+ | |
+ /* channel ID */ | |
+ if ((p = getparam(query, "chan"))) { | |
+ if (decodeparam(channelid, sizeof(channelid), p) == -1) | |
+ channelid[0] = '\0'; | |
+ } | |
} | |
int | |
@@ -177,13 +183,16 @@ render(struct search_response *r) | |
"</span><br/>\n" | |
"\t\t<span class=\"channel\">"); | |
- OUT("<a href=\"?q="); | |
- xmlencode(videos[i].channeltitle); | |
- OUT("&o="); | |
- xmlencode(order); | |
- OUT("\">"); | |
- xmlencode(videos[i].channeltitle); | |
- OUT("</a>"); | |
+ if (videos[i].channelid[0]) { | |
+ OUT("<a href=\"?chan="); | |
+ xmlencode(videos[i].channelid); | |
+ OUT("\">"); | |
+ xmlencode(videos[i].channeltitle); | |
+ OUT("</a>"); | |
+ } else { | |
+ xmlencode(videos[i].channeltitle); | |
+ } | |
+ | |
if (videos[i].channelid[0] || videos[i].userid[0]) { | |
OUT(" | <a title=\""); | |
xmlencode(videos[i].channeltitle); | |
@@ -197,6 +206,7 @@ render(struct search_response *r) | |
} | |
OUT("\">Atom feed</a>"); | |
} | |
+ | |
OUT("</span><br/>\n"); | |
if (videos[i].publishedat[0]) { | |
OUT(" <span class=\"publishedat… | |
@@ -272,10 +282,12 @@ main(void) | |
parsecgi(); | |
- if (!rawsearch[0]) | |
+ if (rawsearch[0]) | |
+ r = youtube_search(rawsearch, page, order); | |
+ else if (channelid[0]) | |
+ r = youtube_channel_videos(channelid); | |
+ else | |
goto show; | |
- | |
- r = youtube_search(rawsearch, page, order); | |
if (!r || r->nitems == 0) { | |
OUT("Status: 500 Internal Server Error\r\n\r\n"); | |
exit(1); |