menu/examples/ytfeed.browse-feed
2025-09-11 21:27:18 -06:00

29 lines
1015 B
Python
Executable File

#!/usr/bin/env python3
# 2025 dtb. public domain
import sys, xml.etree.ElementTree as ET
tree = ET.parse(sys.stdin)
root = tree.getroot()
def f(fmt, e, t, fn=None):
r = e.find(t, {
"": "http://www.w3.org/2005/Atom",
"media": "http://search.yahoo.com/mrss/",
"yt": "http://www.youtube.com/xml/schemas/2015}videoId"
})
r = r.text if r is not None else ""
if fn is not None: r = fn(r)
return fmt % r
print("#!/usr/bin/env menu", end = "\n\n") # lead-in
for entry in root.findall("{http://www.w3.org/2005/Atom}entry"):
print(
# Text
f("[%s] ", entry, "published", fn = lambda s : s.split("T")[0])
+ f("%-22s - ", entry, "author/name")
+ f("%s", entry, "title") + "\n\n"
# Command
+ "\t" + "ytfeed.browse-entry <<EOF | ../menu" + "\n"
+ "\t" + ET.tostring(entry, encoding="unicode")
.replace("\n", "\n\t").rstrip() + "\n"
+ "\tEOF",
end = "\n\n"
)