youtube-feed-improved - www.codemadness.org - www.codemadness.org saait content files
 (HTM) git clone git://git.codemadness.org/www.codemadness.org
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       youtube-feed-improved (8839B)
       ---
            1 1<- Back        /        codemadness.org        70
            2 i                codemadness.org        70
            3 i                codemadness.org        70
            4 i# Improved Youtube RSS/Atom feed                codemadness.org        70
            5 i                codemadness.org        70
            6 iLast modification on 2023-11-20                codemadness.org        70
            7 i                codemadness.org        70
            8 i... improved at least for my preferences ;)                codemadness.org        70
            9 i                codemadness.org        70
           10 iIt scrapes the channel data from Youtube and combines it with the parsed Atom                codemadness.org        70
           11 ifeed from the channel on Youtube.                codemadness.org        70
           12 i                codemadness.org        70
           13 iThe Atom parser is based on sfeed, with some of the code removed because it is                codemadness.org        70
           14 inot needed by this program.  It scrapes the metadata of the videos from the                codemadness.org        70
           15 ichannel its HTML page and uses my custom JSON parser to convert the                codemadness.org        70
           16 iJavascript/JSON structure.                codemadness.org        70
           17 i                codemadness.org        70
           18 1This parser is also used by the »json2tsv« tool. It has few dependencies.        /phlog/json2tsv        codemadness.org        70
           19 i                codemadness.org        70
           20 i                codemadness.org        70
           21 i## Features                codemadness.org        70
           22 i                codemadness.org        70
           23 i* Add the video duration to the title to quickly see how long the video is.                codemadness.org        70
           24 i* Filter away Youtube shorts and upcoming videos / announcements: only videos are shown.                codemadness.org        70
           25 h* Supports more output formats: Atom, »JSON Feed« or        URL:https://www.jsonfeed.org/version/1.1/        codemadness.org        70
           26 0  »sfeed« Tab-Separated-Value format.        /sfeed.1.txt        codemadness.org        70
           27 i* Easy to build and deploy: can be run as a CGI program as a static-linked                codemadness.org        70
           28 i  binary in a chroot.                codemadness.org        70
           29 i* Secure: additionally to running in a chroot it can use pledge(2) and unveil(2)                codemadness.org        70
           30 i  on OpenBSD to restrict system calls and access to the filesystem.                codemadness.org        70
           31 i                codemadness.org        70
           32 i                codemadness.org        70
           33 i## How to use                codemadness.org        70
           34 i                codemadness.org        70
           35 iThere is an option to run directly from the command-line or in CGI-mode.  When                codemadness.org        70
           36 ithe environment variable $REQUEST_URI is set then it is automatically run in                codemadness.org        70
           37 iCGI mode.                codemadness.org        70
           38 i                codemadness.org        70
           39 i                codemadness.org        70
           40 iCommand-line usage:                codemadness.org        70
           41 i                codemadness.org        70
           42 i        youtube_feed channelid atom                codemadness.org        70
           43 i        youtube_feed channelid gph                codemadness.org        70
           44 i        youtube_feed channelid html                codemadness.org        70
           45 i        youtube_feed channelid json                codemadness.org        70
           46 i        youtube_feed channelid tsv                codemadness.org        70
           47 i        youtube_feed channelid txt                codemadness.org        70
           48 i                codemadness.org        70
           49 i                codemadness.org        70
           50 iCGI program usage:                codemadness.org        70
           51 i                codemadness.org        70
           52 iThe last basename part of the URL should be the channelid + the output format                codemadness.org        70
           53 iextension. It defaults to TSV if there is no extension.                codemadness.org        70
           54 iThe CGI program can be used with a HTTPd or a Gopher daemon such as geomyidae.                codemadness.org        70
           55 i                codemadness.org        70
           56 iFor example:                codemadness.org        70
           57 i                codemadness.org        70
           58 i        Atom XML:     https://codemadness.org/yt-chan/UCrbvoMC0zUvPL8vjswhLOSw.xml                codemadness.org        70
           59 i        HTML:         https://codemadness.org/yt-chan/UCrbvoMC0zUvPL8vjswhLOSw.html                codemadness.org        70
           60 i        JSON:         https://codemadness.org/yt-chan/UCrbvoMC0zUvPL8vjswhLOSw.json                codemadness.org        70
           61 i        TSV:          https://codemadness.org/yt-chan/UCrbvoMC0zUvPL8vjswhLOSw.tsv                codemadness.org        70
           62 i        twtxt:        https://codemadness.org/yt-chan/UCrbvoMC0zUvPL8vjswhLOSw.txt                codemadness.org        70
           63 i        TSV, default: https://codemadness.org/yt-chan/UCrbvoMC0zUvPL8vjswhLOSw                codemadness.org        70
           64 i                        codemadness.org        70
           65 i        Gopher dir:   gopher://codemadness.org/1/feed.cgi/UCrbvoMC0zUvPL8vjswhLOSw.gph                codemadness.org        70
           66 i        Gopher TSV:   gopher://codemadness.org/0/feed.cgi/UCrbvoMC0zUvPL8vjswhLOSw                codemadness.org        70
           67 i                codemadness.org        70
           68 i                codemadness.org        70
           69 iAn OpenBSD httpd.conf using slowcgi as an example:                codemadness.org        70
           70 i                codemadness.org        70
           71 i        server "codemadness.org" {                codemadness.org        70
           72 i                location "/yt-chan/*" {                codemadness.org        70
           73 i                        request strip 1                codemadness.org        70
           74 i                        root "/cgi-bin/yt-chan"                codemadness.org        70
           75 i                        fastcgi socket "/run/slowcgi.sock"                codemadness.org        70
           76 i                }                codemadness.org        70
           77 i        }                codemadness.org        70
           78 i                codemadness.org        70
           79 i                codemadness.org        70
           80 1## Using it with »sfeed«        /phlog/sfeed        codemadness.org        70
           81 i                codemadness.org        70
           82 isfeedrc example of an existing Youtube RSS/Atom feed:                codemadness.org        70
           83 i                codemadness.org        70
           84 i        # list of feeds to fetch:                codemadness.org        70
           85 i        feeds() {                codemadness.org        70
           86 i                # feed <name> <feedurl> [basesiteurl] [encoding]                codemadness.org        70
           87 i                # normal Youtube Atom feed.                codemadness.org        70
           88 i                feed "yt IM" "https://www.youtube.com/feeds/videos.xml?channel_id=UCrbvoMC0zUvPL8vjswhLOSw"                codemadness.org        70
           89 i        }                codemadness.org        70
           90 i                codemadness.org        70
           91 i                codemadness.org        70
           92 iUse the new Atom feed directly using the CGI-mode and Atom output format:                codemadness.org        70
           93 i                codemadness.org        70
           94 i        # list of feeds to fetch:                codemadness.org        70
           95 i        feeds() {                codemadness.org        70
           96 i                # feed <name> <feedurl> [basesiteurl] [encoding]                codemadness.org        70
           97 i                # new Youtube Atom feed.                codemadness.org        70
           98 i                feed "idiotbox IM" "https://codemadness.org/yt-chan/UCrbvoMC0zUvPL8vjswhLOSw.xml"                codemadness.org        70
           99 i        }                codemadness.org        70
          100 i                codemadness.org        70
          101 i... or convert directly using a custom connector program on the local system via the command-line:                codemadness.org        70
          102 i                codemadness.org        70
          103 i        # fetch(name, url, feedfile)                codemadness.org        70
          104 i        fetch() {                codemadness.org        70
          105 i                case "$1" in                codemadness.org        70
          106 i                "connector example")                codemadness.org        70
          107 i                        youtube_feed "$2";;                codemadness.org        70
          108 i                *)                codemadness.org        70
          109 i                        curl -L --max-redirs 0 -H "User-Agent:" -f -s -m 15 \                codemadness.org        70
          110 i                                "$2" 2>/dev/null;;                codemadness.org        70
          111 i                esac                codemadness.org        70
          112 i        }                codemadness.org        70
          113 i                        codemadness.org        70
          114 i        # parse and convert input, by default XML to the sfeed(5) TSV format.                codemadness.org        70
          115 i        # parse(name, feedurl, basesiteurl)                codemadness.org        70
          116 i        parse() {                codemadness.org        70
          117 i                case "$1" in                codemadness.org        70
          118 i                "connector example")                codemadness.org        70
          119 i                        cat;;                codemadness.org        70
          120 i                *)                codemadness.org        70
          121 i                        sfeed "$3";;                codemadness.org        70
          122 i                esac                codemadness.org        70
          123 i        }                codemadness.org        70
          124 i                        codemadness.org        70
          125 i        # list of feeds to fetch:                codemadness.org        70
          126 i        feeds() {                codemadness.org        70
          127 i                # feed <name> <feedurl> [basesiteurl] [encoding]                codemadness.org        70
          128 i                feed "connector example" "UCrbvoMC0zUvPL8vjswhLOSw"                codemadness.org        70
          129 i        }                codemadness.org        70
          130 i                codemadness.org        70
          131 i                codemadness.org        70
          132 i## Screenshot using sfeed_curses                codemadness.org        70
          133 i                codemadness.org        70
          134 IScreenshot showing the improved Youtube feed        /downloads/screenshots/sfeed_curses_youtube.png        codemadness.org        70
          135 i                codemadness.org        70
          136 i                codemadness.org        70
          137 i## Clone                codemadness.org        70
          138 i                codemadness.org        70
          139 i        git clone git://git.codemadness.org/frontends                codemadness.org        70
          140 i                codemadness.org        70
          141 i                codemadness.org        70
          142 i## Browse                codemadness.org        70
          143 i                codemadness.org        70
          144 iYou can browse the source-code at:                codemadness.org        70
          145 i                codemadness.org        70
          146 1* https://git.codemadness.org/frontends/file/youtube/feed.c.html        /git/frontends/file/youtube/feed.c.gph        codemadness.org        70
          147 1* gopher://codemadness.org/1/git/frontends/file/youtube/feed.c.gph        /git/frontends/file/youtube/feed.c.gph        codemadness.org        70
          148 i                codemadness.org        70
          149 iThe program is: youtube/feed                codemadness.org        70
          150 i                codemadness.org        70
          151 i                codemadness.org        70
          152 i## Dependencies                codemadness.org        70
          153 i                codemadness.org        70
          154 i* C compiler.                codemadness.org        70
          155 i* LibreSSL + libtls.                codemadness.org        70
          156 i                codemadness.org        70
          157 i                codemadness.org        70
          158 i## Build and install                codemadness.org        70
          159 i                codemadness.org        70
          160 i        $ make                codemadness.org        70
          161 i        # make install                codemadness.org        70
          162 i                codemadness.org        70
          163 i                codemadness.org        70
          164 i## That's all                codemadness.org        70
          165 i                codemadness.org        70
          166 iI hope by sharing this it is useful to someone other than me as well.                codemadness.org        70
          167 .