45 lines
1.8 KiB
Plaintext
45 lines
1.8 KiB
Plaintext
```
|
|
____ __ __ __
|
|
/_/ / /_ /_/ /_/ _/ /\
|
|
__/ / / /_ /_ /_/ /__\ public domain 2020-2025
|
|
```
|
|
|
|
ytfeed(6) is a small and simple YouTube client made using menu(1). ytfeed(6)
|
|
exists as a demonstration of menu(1), menu(1) was written as a component of
|
|
ytfeed(6), and they were both written for my own personal use.
|
|
|
|
There are many components of ytfeed that work independently of it.
|
|
|
|
ytfeed.aggregate(1) is a tool to merge many catenated YouTube RSS feeds into
|
|
one XML-compliant document. The invocation
|
|
`cat feed.xml feed2.xml | ytfeedmerge`, for example, assuming the given XML
|
|
files are YouTube RSS feeds, will output a single YouTube RSS feed containing
|
|
the entries from both feeds.
|
|
|
|
ytfeed.dl(1) is a tool to download a YouTube RSS feed using curl(1) or wget(1)
|
|
and store it in the location used by ytfeed(6).
|
|
|
|
The Python programs are especially short, exclusively use Python's standard
|
|
library, and are written to (hopefully) work on a reasonably recent Python 3
|
|
interpreter. Unfortunately Python will probably shit itself anyway when you try
|
|
to run them. For what it's worth, they're Python programs because most Linux
|
|
distributions come with Python 3 and it's one of few languages with XML parsing
|
|
as part of the standard library - I figured it'd be less hassle than vendoring
|
|
a dependency or (woe be unto those who think it) relying on whatever awful
|
|
package managers the user has installed.
|
|
|
|
ytfeed's API (use of stdin and argv) is not finalized and will likely change.
|
|
|
|
At some point I'd like to refactor the project to be able to do something like
|
|
```
|
|
$ ytfeed.browse-feeds \
|
|
| menu \
|
|
| ytfeed.browse-feed \
|
|
| menu \
|
|
| ytfeed.browse-entry \
|
|
| menu
|
|
```
|
|
because I find long pipelines to be satisfying. Also, the Python programs would
|
|
benefit from sharing code rather than duplicating it (just a few functions - I
|
|
promise!).
|