Introduction
Introduction Statistics Contact Development Disclaimer Help
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("&amp;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("&amp;page=");
- snprintf(tmp, sizeof(tmp), "%d", curpage - 1);
- xmlencode(tmp);
- OUT("&amp;o=");
- xmlencode(order);
- OUT("\" rel=\"prev\" accesskey=\"p\">&larr; 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("&amp;page=");
- snprintf(tmp, sizeof(tmp), "%d", curpage + 1);
+ snprintf(tmp, sizeof(tmp), "%d", curpage - 1);
xmlencode(tmp);
OUT("&amp;o=");
xmlencode(order);
- OUT("\" rel=\"next\" accesskey=\"n\">next &rarr;</a>\n…
-
- OUT(
- "\t</td>\n"
- "</tr>\n"
- "</tfoot>\n");
+ OUT("\" rel=\"prev\" accesskey=\"p\">&larr; 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("&amp;page=");
+ snprintf(tmp, sizeof(tmp), "%d", curpage + 1);
+ xmlencode(tmp);
+ OUT("&amp;o=");
+ xmlencode(order);
+ OUT("\" rel=\"next\" accesskey=\"n\">next &rarr;</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);
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.