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 .