youtube: change searching in channel/user - frontends - front-ends for some sit… | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 7d908e50fd0ce5df924886d613721495bf835eb6 | |
parent 596b6dd0de7c2971acf63b959441ad53af008d85 | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Fri, 14 Aug 2020 20:56:03 +0200 | |
youtube: change searching in channel/user | |
Remove searching in channel/user, the layout was changed and this was broken. | |
Instead now when clicking on the channel title search on the channel title. | |
Diffstat: | |
M youtube/cgi.c | 118 ++++++++---------------------… | |
M youtube/cli.c | 2 +- | |
M youtube/gopher.c | 2 +- | |
M youtube/youtube.c | 21 ++++----------------- | |
M youtube/youtube.h | 3 +-- | |
5 files changed, 38 insertions(+), 108 deletions(-) | |
--- | |
diff --git a/youtube/cgi.c b/youtube/cgi.c | |
@@ -22,7 +22,6 @@ static int curpage = 1; | |
/* CGI parameters */ | |
static char rawsearch[4096], search[4096], order[16], page[64]; | |
-static char chan[1024], user[1024]; | |
void | |
parsecgi(void) | |
@@ -33,25 +32,6 @@ parsecgi(void) | |
if (!(query = getenv("QUERY_STRING"))) | |
query = ""; | |
- /* channel: search in channel */ | |
- if ((p = getparam(query, "chan"))) { | |
- if (decodeparam(chan, sizeof(chan), p) == -1) | |
- chan[0] = '\0'; | |
- } | |
- /* user: search in user */ | |
- if ((p = getparam(query, "user"))) { | |
- if (decodeparam(user, sizeof(user), p) == -1) | |
- user[0] = '\0'; | |
- } | |
- if (!strcmp(chan, "Search all") || !strcmp(user, "Search all")) { | |
- chan[0] = '\0'; | |
- user[0] = '\0'; | |
- } | |
- | |
- /* prefer channel over user when both are set */ | |
- if (chan[0] && user[0]) | |
- user[0] = '\0'; | |
- | |
/* order */ | |
if ((p = getparam(query, "o"))) { | |
if (decodeparam(order, sizeof(order), p) == -1 || | |
@@ -61,7 +41,7 @@ parsecgi(void) | |
order[0] = '\0'; | |
} | |
if (!order[0]) | |
- snprintf(order, sizeof(order), chan[0] || user[0] ? "date" : "… | |
+ snprintf(order, sizeof(order), "relevance"); | |
/* page */ | |
if ((p = getparam(query, "page"))) { | |
@@ -109,14 +89,7 @@ render(struct search_response *r) | |
"<meta http-equiv=\"Content-Type\" content=\"text/html; charse… | |
"<title>Search: \""); | |
xmlencode(search); | |
- OUT("\""); | |
- if (r && r->nitems && (chan[0] || user[0])) { | |
- if (videos[0].channelid[0]) | |
- printf(" in %s", videos[0].channeltitle); | |
- else if (videos[0].userid[0]) | |
- printf(" in %s", videos[0].userid); | |
- } | |
- printf(" sorted by %s</title>\n", order); | |
+ printf("\" sorted by %s</title>\n", order); | |
OUT( | |
"<link rel=\"stylesheet\" href=\"css/style.css\" type=\"text/c… | |
"<link rel=\"icon\" type=\"image/png\" href=\"/favicon.png\" /… | |
@@ -125,17 +98,6 @@ render(struct search_response *r) | |
"<body class=\"search\">\n" | |
"<form method=\"get\" action=\"\">\n"); | |
- if (chan[0]) { | |
- OUT("<input type=\"hidden\" name=\"chan\" value=\""); | |
- xmlencode(chan); | |
- OUT("\" />\n"); | |
- } | |
- if (user[0]) { | |
- OUT("<input type=\"hidden\" name=\"user\" value=\""); | |
- xmlencode(user); | |
- OUT("\" />\n"); | |
- } | |
- | |
OUT( | |
"<table class=\"search\" width=\"100%\" border=\"0\" cellpaddi… | |
"<tr>\n" | |
@@ -146,14 +108,7 @@ render(struct search_response *r) | |
"\" placeholder=\"Search...\" size=\"72\" autofocus=\"autofocu… | |
" </td>\n" | |
" <td nowrap class=\"nowrap\">\n" | |
- " <input type=\"submit\" value=\"Search\" class… | |
- | |
- if (chan[0]) | |
- OUT(" <input type=\"submit\" name=\"chan\" valu… | |
- if (user[0]) | |
- OUT(" <input type=\"submit\" name=\"user\" valu… | |
- | |
- OUT( | |
+ " <input type=\"submit\" value=\"Search\" class… | |
" <select name=\"o\" title=\"Order by\" accessk… | |
printf(" <option value=\"date\"%s>Creation date… | |
printf(" <option value=\"relevance\"%s>Relevanc… | |
@@ -220,16 +175,10 @@ render(struct search_response *r) | |
"</span><br/>\n" | |
"\t\t<span class=\"channel\">"); | |
- OUT("<a title=\"Search in "); | |
+ OUT("<a href=\"?q="); | |
xmlencode(videos[i].channeltitle); | |
- OUT("\" href=\"?"); | |
- if (videos[i].channelid[0]) { | |
- OUT("chan="); | |
- xmlencode(videos[i].channelid); | |
- } else if (videos[i].userid[0]) { | |
- OUT("user="); | |
- xmlencode(videos[i].userid); | |
- } | |
+ OUT("&o="); | |
+ xmlencode(order); | |
OUT("\">"); | |
xmlencode(videos[i].channeltitle); | |
OUT("</a>"); | |
@@ -270,41 +219,36 @@ render(struct search_response *r) | |
} | |
OUT("</tbody>\n"); | |
- /* pagination does not work for user/channel search */ | |
- if (!user[0] && !chan[0]) { | |
- OUT( | |
- "<tfoot>\n" | |
- "<tr>\n" | |
- "\t<td align=\"left\" class=\"nowrap\" nowrap>… | |
- if (curpage > 1) { | |
- OUT("\t\t<a href=\"?q="); | |
- xmlencode(search); | |
- OUT("&page="); | |
- snprintf(tmp, sizeof(tmp), "%d", curpage - 1); | |
- xmlencode(tmp); | |
- OUT("&o="); | |
- xmlencode(order); | |
- OUT("\" rel=\"prev\" accesskey=\"p\">← pr… | |
- } | |
- OUT( | |
- "\t</td>\n\t<td></td>\n" | |
- "\t<td align=\"right\" class=\"a-r nowrap\" no… | |
- | |
+ OUT( | |
+ "<tfoot>\n" | |
+ "<tr>\n" | |
+ "\t<td align=\"left\" class=\"nowrap\" nowrap>\n"); | |
+ if (curpage > 1) { | |
OUT("\t\t<a href=\"?q="); | |
xmlencode(search); | |
OUT("&page="); | |
- snprintf(tmp, sizeof(tmp), "%d", curpage + 1); | |
+ snprintf(tmp, sizeof(tmp), "%d", curpage - 1); | |
xmlencode(tmp); | |
OUT("&o="); | |
xmlencode(order); | |
- OUT("\" rel=\"next\" accesskey=\"n\">next →</a>\n… | |
- | |
- OUT( | |
- "\t</td>\n" | |
- "</tr>\n" | |
- "</tfoot>\n"); | |
+ OUT("\" rel=\"prev\" accesskey=\"p\">← prev</a>\n… | |
} | |
- OUT("</table>\n"); | |
+ OUT( | |
+ "\t</td>\n\t<td></td>\n" | |
+ "\t<td align=\"right\" class=\"a-r nowrap\" nowrap>\n"… | |
+ | |
+ OUT("\t\t<a href=\"?q="); | |
+ xmlencode(search); | |
+ OUT("&page="); | |
+ snprintf(tmp, sizeof(tmp), "%d", curpage + 1); | |
+ xmlencode(tmp); | |
+ OUT("&o="); | |
+ xmlencode(order); | |
+ OUT("\" rel=\"next\" accesskey=\"n\">next →</a>\n" | |
+ "\t</td>\n" | |
+ "</tr>\n" | |
+ "</tfoot>\n" | |
+ "</table>\n"); | |
} | |
OUT("</body>\n</html>\n"); | |
@@ -326,10 +270,10 @@ main(void) | |
parsecgi(); | |
- if (!rawsearch[0] && !chan[0] && !user[0]) | |
+ if (!rawsearch[0]) | |
goto show; | |
- r = youtube_search(rawsearch, chan, user, page, order); | |
+ r = youtube_search(rawsearch, page, order); | |
if (!r || r->nitems == 0) { | |
OUT("Status: 500 Internal Server Error\r\n\r\n"); | |
exit(1); | |
diff --git a/youtube/cli.c b/youtube/cli.c | |
@@ -142,7 +142,7 @@ main(int argc, char *argv[]) | |
if (!uriencode(argv[1], search, sizeof(search))) | |
usage(argv[0]); | |
- r = youtube_search(search, "", "", "", "relevance"); | |
+ r = youtube_search(search, "", "relevance"); | |
if (!r || r->nitems == 0) { | |
OUT("No videos found\n"); | |
exit(1); | |
diff --git a/youtube/gopher.c b/youtube/gopher.c | |
@@ -157,7 +157,7 @@ main(void) | |
exit(1); | |
} | |
- r = youtube_search(search, "", "", "", "relevance"); | |
+ r = youtube_search(search, "", "relevance"); | |
if (!r || r->nitems == 0) { | |
error("No videos found"); | |
printf(".\r\n"); | |
diff --git a/youtube/youtube.c b/youtube/youtube.c | |
@@ -254,23 +254,11 @@ xmltagstart(XMLParser *x, const char *t, size_t tl) | |
} | |
static char * | |
-request_search(const char *s, const char *chan, const char *user, | |
- const char *page, const char *order) | |
+request_search(const char *s, const char *page, const char *order) | |
{ | |
char path[4096]; | |
- /* when searching in channel or user but the search string is empty: | |
- fake a search with a single space. */ | |
- if ((chan[0] || user[0]) && !s[0]) | |
- s = "+"; | |
- | |
- if (user[0]) | |
- snprintf(path, sizeof(path), "/user/%s/search?query=%s", user,… | |
- else if (chan[0]) | |
- snprintf(path, sizeof(path), "/channel/%s/search?query=%s", ch… | |
- else | |
- snprintf(path, sizeof(path), "/results?search_query=%s", s); | |
- | |
+ snprintf(path, sizeof(path), "/results?search_query=%s", s); | |
if (page[0]) { | |
strlcat(path, "&page=", sizeof(path)); | |
strlcat(path, page, sizeof(path)); | |
@@ -298,14 +286,13 @@ request_search(const char *s, const char *chan, const cha… | |
} | |
struct search_response * | |
-youtube_search(const char *rawsearch, const char *chan, const char *user, | |
- const char *page, const char *order) | |
+youtube_search(const char *rawsearch, const char *page, const char *order) | |
{ | |
struct search_response *r; | |
XMLParser x = { 0 }; | |
char *data, *s; | |
- if (!(data = request_search(rawsearch, chan, user, page, order))) | |
+ if (!(data = request_search(rawsearch, page, order))) | |
return NULL; | |
if (!(s = strstr(data, "\r\n\r\n"))) | |
return NULL; /* invalid response */ | |
diff --git a/youtube/youtube.h b/youtube/youtube.h | |
@@ -18,5 +18,4 @@ struct search_response { | |
}; | |
struct search_response * | |
-youtube_search(const char *rawsearch, const char *chan, const char *user, | |
- const char *page, const char *order); | |
+youtube_search(const char *rawsearch, const char *page, const char *order); |