29 lines
1015 B
Python
Executable File
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"
|
|
)
|