youtube: cleanup, shorten variable name for videos - frontends - front-ends for some sites (experiment)
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 59471286810c9ef14f294bba649dd75a78e74c6a
 (DIR) parent e0461c105d8e02725c05d0cafd896fc54fb8be30
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Sat, 25 Feb 2023 19:48:59 +0100
       
       youtube: cleanup, shorten variable name for videos
       
       Diffstat:
         M youtube/cgi.c                       |      60 ++++++++++++++++---------------
         M youtube/cli.c                       |      68 ++++++++++++++++---------------
         M youtube/gopher.c                    |      60 ++++++++++++++++---------------
       
       3 files changed, 97 insertions(+), 91 deletions(-)
       ---
 (DIR) diff --git a/youtube/cgi.c b/youtube/cgi.c
       @@ -86,7 +86,7 @@ parsecgi(void)
        int
        render(struct search_response *r)
        {
       -        struct item *videos = r ? r->items : NULL;
       +        struct item *v;
                char tmp[64];
                size_t i;
        
       @@ -141,14 +141,16 @@ render(struct search_response *r)
                                "<tbody>\n");
        
                        for (i = 0; i < r->nitems; i++) {
       +                        v = &(r->items[0]);
       +
                                OUT("<tr class=\"v\">\n"
                                "        <td class=\"thumb\" width=\"120\" align=\"center\">\n");
        
       -                        if (videos[i].id[0]) {
       +                        if (v->id[0]) {
                                        OUT("                <a href=\"https://www.youtube.com/embed/");
       -                                xmlencode(videos[i].id);
       +                                xmlencode(v->id);
                                        OUT("\"><img src=\"https://i.ytimg.com/vi/");
       -                                xmlencode(videos[i].id);
       +                                xmlencode(v->id);
                                        OUT("/default.jpg\" alt=\"\" height=\"90\" border=\"0\" /></a>\n");
                                } else {
                                        /* placeholder image */
       @@ -158,81 +160,81 @@ render(struct search_response *r)
                                        "        <td>\n"
                                        "                <span class=\"title\">");
        
       -                        if (videos[i].id[0]) {
       +                        if (v->id[0]) {
                                        OUT("<a href=\"https://www.youtube.com/embed/");
       -                                xmlencode(videos[i].id);
       +                                xmlencode(v->id);
                                        printf("\" accesskey=\"%zu\">", i);
                                }
        
       -                        switch (videos[i].linktype) {
       +                        switch (v->linktype) {
                                case Channel:
                                        OUT("[Channel] ");
       -                                xmlencode(videos[i].channeltitle);
       +                                xmlencode(v->channeltitle);
                                        break;
                                case Movie:
                                        OUT("[Movie] ");
       -                                xmlencode(videos[i].title);
       +                                xmlencode(v->title);
                                        break;
                                case Playlist:
                                        OUT("[Playlist] ");
       -                                xmlencode(videos[i].title);
       +                                xmlencode(v->title);
                                        break;
                                default:
       -                                xmlencode(videos[i].title);
       +                                xmlencode(v->title);
                                        break;
                                }
        
       -                        if (videos[i].id[0])
       +                        if (v->id[0])
                                        OUT("</a>");
        
                                OUT(
                                        "</span><br/>\n"
                                        "\t\t<span class=\"channel\">");
        
       -                        if (videos[i].channelid[0]) {
       +                        if (v->channelid[0]) {
                                        OUT("<a href=\"?chan=");
       -                                xmlencode(videos[i].channelid);
       +                                xmlencode(v->channelid);
                                        OUT("\">");
       -                                xmlencode(videos[i].channeltitle);
       +                                xmlencode(v->channeltitle);
                                        OUT("</a>");
       -                        } else if (videos[i].userid[0]) {
       +                        } else if (v->userid[0]) {
                                        OUT("<a href=\"?user=");
       -                                xmlencode(videos[i].channelid);
       +                                xmlencode(v->channelid);
                                        OUT("\">");
       -                                xmlencode(videos[i].channeltitle);
       +                                xmlencode(v->channeltitle);
                                        OUT("</a>");
                                } else {
       -                                xmlencode(videos[i].channeltitle);
       +                                xmlencode(v->channeltitle);
                                }
        
       -                        if (videos[i].channelid[0] || videos[i].userid[0]) {
       +                        if (v->channelid[0] || v->userid[0]) {
                                        OUT(" | <a title=\"");
       -                                xmlencode(videos[i].channeltitle);
       +                                xmlencode(v->channeltitle);
                                        OUT(" Atom feed\" href=\"https://www.youtube.com/feeds/videos.xml?");
       -                                if (videos[i].channelid[0]) {
       +                                if (v->channelid[0]) {
                                                OUT("channel_id=");
       -                                        xmlencode(videos[i].channelid);
       -                                } else if (videos[i].userid[0]) {
       +                                        xmlencode(v->channelid);
       +                                } else if (v->userid[0]) {
                                                OUT("user=");
       -                                        xmlencode(videos[i].userid);
       +                                        xmlencode(v->userid);
                                        }
                                        OUT("\">Atom feed</a>");
                                }
        
                                OUT("</span><br/>\n");
       -                        if (videos[i].publishedat[0]) {
       +                        if (v->publishedat[0]) {
                                        OUT("                <span class=\"publishedat\">Published: ");
       -                                OUT(videos[i].publishedat);
       +                                OUT(v->publishedat);
                                        OUT("</span><br/>\n");
                                }
                                OUT("                <span class=\"stats\">");
       -                        OUT(videos[i].viewcount);
       +                        OUT(v->viewcount);
                                OUT(
                                        "</span><br/>\n"
                                        "        </td>\n"
                                        "        <td align=\"right\" class=\"a-r\">\n"
                                        "                <span class=\"duration\">");
       -                        OUT(videos[i].duration);
       +                        OUT(v->duration);
                                OUT(
                                        "</span>\n"
                                        "        </td>\n"
 (DIR) diff --git a/youtube/cli.c b/youtube/cli.c
       @@ -48,39 +48,41 @@ printescape_multiline(const char *s, const char *indent)
        int
        render_search_tsv(struct search_response *r)
        {
       -        struct item *videos = r->items;
       +        struct item *v;
                size_t i;
        
                for (i = 0; i < r->nitems; i++) {
       -                OUTESCAPE(videos[i].id);
       +                v = &(r->items[i]);
       +
       +                OUTESCAPE(v->id);
                        OUT("\t");
       -                if (videos[i].id[0]) {
       +                if (v->id[0]) {
                                OUT("https://www.youtube.com/embed/");
       -                        OUTESCAPE(videos[i].id);
       +                        OUTESCAPE(v->id);
                        }
                        OUT("\t");
       -                OUTESCAPE(videos[i].title);
       +                OUTESCAPE(v->title);
                        OUT("\t");
       -                OUTESCAPE(videos[i].publishedat);
       +                OUTESCAPE(v->publishedat);
                        OUT("\t");
       -                OUTESCAPE(videos[i].viewcount);
       +                OUTESCAPE(v->viewcount);
                        OUT("\t");
       -                OUTESCAPE(videos[i].duration);
       +                OUTESCAPE(v->duration);
                        OUT("\t");
       -                switch (videos[i].linktype) {
       +                switch (v->linktype) {
                        case Channel:  OUT("channel"); break;
                        case Movie:    OUT("movie"); break;
                        case Playlist: OUT("playlist"); break;
                        default:       break;
                        }
                        OUT("\t");
       -                OUTESCAPE(videos[i].channelid);
       +                OUTESCAPE(v->channelid);
                        OUT("\t");
       -                OUTESCAPE(videos[i].channeltitle);
       +                OUTESCAPE(v->channeltitle);
                        OUT("\t");
       -                OUTESCAPE(videos[i].userid);
       +                OUTESCAPE(v->userid);
        /*                OUT("\t");
       -                OUTESCAPE(videos[i].shortdescription); */ /* TODO: escape newlines etc */
       +                OUTESCAPE(v->shortdescription); */ /* TODO: escape newlines etc */
                        OUT("\n");
                }
        
       @@ -90,64 +92,64 @@ render_search_tsv(struct search_response *r)
        int
        render_search(struct search_response *r)
        {
       -        struct item *videos = r->items, *v;
       +        struct item *v;
                size_t i;
        
                for (i = 0; i < r->nitems; i++) {
                        v = &(r->items[i]);
        
       -                switch (videos[i].linktype) {
       +                switch (v->linktype) {
                        case Channel:
                                OUT("Channel:   ");
       -                        OUTESCAPE(videos[i].channeltitle);
       +                        OUTESCAPE(v->channeltitle);
                                break;
                        case Movie:
                                OUT("Movie:     ");
       -                        OUTESCAPE(videos[i].title);
       +                        OUTESCAPE(v->title);
                                break;
                        case Playlist:
                                OUT("Playlist:  ");
       -                        OUTESCAPE(videos[i].title);
       +                        OUTESCAPE(v->title);
                                break;
                        default:
                                OUT("           ");
       -                        OUTESCAPE(videos[i].title);
       +                        OUTESCAPE(v->title);
                                break;
                        }
       -                if (videos[i].duration[0]) {
       +                if (v->duration[0]) {
                                OUT(" [");
       -                        OUTESCAPE(videos[i].duration);
       +                        OUTESCAPE(v->duration);
                                OUT("]");
                        }
                        OUT("\n");
        
       -                if (videos[i].id[0]) {
       +                if (v->id[0]) {
                                OUT("URL:       https://www.youtube.com/embed/");
       -                        OUTESCAPE(videos[i].id);
       +                        OUTESCAPE(v->id);
                                OUT("\n");
                        }
        
       -                if (videos[i].channelid[0] || videos[i].userid[0]) {
       +                if (v->channelid[0] || v->userid[0]) {
                                OUT("Channel:   ");
       -                        OUTESCAPE(videos[i].channeltitle);
       +                        OUTESCAPE(v->channeltitle);
                                OUT(": https://www.youtube.com/feeds/videos.xml?");
       -                        if (videos[i].channelid[0]) {
       +                        if (v->channelid[0]) {
                                        OUT("channel_id=");
       -                                OUTESCAPE(videos[i].channelid);
       -                        } else if (videos[i].userid[0]) {
       +                                OUTESCAPE(v->channelid);
       +                        } else if (v->userid[0]) {
                                        OUT("user=");
       -                                OUTESCAPE(videos[i].userid);
       +                                OUTESCAPE(v->userid);
                                }
                                OUT("\n");
                        }
       -                if (videos[i].publishedat[0]) {
       +                if (v->publishedat[0]) {
                                OUT("Published: ");
       -                        OUTESCAPE(videos[i].publishedat);
       +                        OUTESCAPE(v->publishedat);
                                OUT("\n");
                        }
       -                if (videos[i].viewcount[0]) {
       +                if (v->viewcount[0]) {
                                OUT("Views:     ");
       -                        OUTESCAPE(videos[i].viewcount);
       +                        OUTESCAPE(v->viewcount);
                                OUT("\n");
                        }
                        OUT("\n");
 (DIR) diff --git a/youtube/gopher.c b/youtube/gopher.c
       @@ -56,7 +56,7 @@ footer(void)
        int
        render(struct search_response *r)
        {
       -        struct item *videos = r->items;
       +        struct item *v;
                size_t i;
        
                if (pledge("stdio", NULL) == -1)
       @@ -65,81 +65,83 @@ render(struct search_response *r)
                header();
        
                for (i = 0; i < r->nitems; i++) {
       +                v = &(r->items[0]);
       +
                        if (i > 0) {
                                info("");
                                info("");
                        }
       -                if (videos[i].id[0])
       +                if (v->id[0])
                                putchar('h');
                        else
                                putchar('i');
        
       -                switch (videos[i].linktype) {
       +                switch (v->linktype) {
                        case Channel:
                                OUT("[Channel] ");
       -                        OUTTEXT(videos[i].channeltitle);
       +                        OUTTEXT(v->channeltitle);
                                break;
                        case Movie:
                                OUT("[Movie] ");
       -                        OUTTEXT(videos[i].title);
       +                        OUTTEXT(v->title);
                                break;
                        case Playlist:
                                OUT("[Playlist] ");
       -                        OUTTEXT(videos[i].title);
       +                        OUTTEXT(v->title);
                                break;
                        default:
       -                        OUTTEXT(videos[i].title);
       +                        OUTTEXT(v->title);
                                break;
                        }
        
                        OUT("\t");
       -                if (videos[i].id[0]) {
       +                if (v->id[0]) {
                                OUT("URL:https://www.youtube.com/embed/");
       -                        OUTLINK(videos[i].id);
       +                        OUTLINK(v->id);
                        }
                        printf("\t%s\t%s\r\n", host, port);
        
       -                if (videos[i].channelid[0]) {
       +                if (v->channelid[0]) {
                                OUT("1");
       -                        OUT(videos[i].channeltitle);
       -                        printf("\t%s?c=%s\t%s\t%s\r\n", requestpath, videos[i].channelid, host, port);
       -                } else if (videos[i].userid[0]) {
       +                        OUT(v->channeltitle);
       +                        printf("\t%s?c=%s\t%s\t%s\r\n", requestpath, v->channelid, host, port);
       +                } else if (v->userid[0]) {
                                OUT("1");
       -                        OUT(videos[i].channeltitle);
       -                        printf("\t%s?u=%s\t%s\t%s\r\n", requestpath, videos[i].userid, host, port);
       -                } else if (videos[i].channeltitle[0]) {
       +                        OUT(v->channeltitle);
       +                        printf("\t%s?u=%s\t%s\t%s\r\n", requestpath, v->userid, host, port);
       +                } else if (v->channeltitle[0]) {
                                OUT("i");
       -                        OUT(videos[i].channeltitle);
       +                        OUT(v->channeltitle);
                                printf("\t%s\t%s\t%s\r\n", "", host, port);
                        }
        
       -                if (videos[i].channelid[0] || videos[i].userid[0]) {
       +                if (v->channelid[0] || v->userid[0]) {
                                OUT("hAtom feed of ");
       -                        OUTTEXT(videos[i].channeltitle);
       +                        OUTTEXT(v->channeltitle);
                                OUT("\t");
                                OUTLINK("URL:https://www.youtube.com/feeds/videos.xml?");
       -                        if (videos[i].channelid[0]) {
       +                        if (v->channelid[0]) {
                                        OUT("channel_id=");
       -                                OUTLINK(videos[i].channelid);
       -                        } else if (videos[i].userid[0]) {
       +                                OUTLINK(v->channelid);
       +                        } else if (v->userid[0]) {
                                        OUT("user=");
       -                                OUTLINK(videos[i].userid);
       +                                OUTLINK(v->userid);
                                }
                                printf("\t%s\t%s\r\n", host, port);
                        }
       -                if (videos[i].duration[0]) {
       +                if (v->duration[0]) {
                                OUT("iDuration:      " );
       -                        OUTTEXT(videos[i].duration);
       +                        OUTTEXT(v->duration);
                                printf("\t%s\t%s\t%s\r\n", "", host, port);
                        }
       -                if (videos[i].publishedat[0]) {
       +                if (v->publishedat[0]) {
                                OUT("iPublished:     ");
       -                        OUTTEXT(videos[i].publishedat);
       +                        OUTTEXT(v->publishedat);
                                printf("\t%s\t%s\t%s\r\n", "", host, port);
                        }
       -                if (videos[i].viewcount[0]) {
       +                if (v->viewcount[0]) {
                                OUT("iViews:         ");
       -                        OUTTEXT(videos[i].viewcount);
       +                        OUTTEXT(v->viewcount);
                                printf("\t%s\t%s\t%s\r\n", "", host, port);
                        }
                }