menu/examples/README.ytfeed

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!).