Initial commit
This commit is contained in:
28
examples/ytfeed.browse-feed
Executable file
28
examples/ytfeed.browse-feed
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/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"
|
||||
)
|
||||
Reference in New Issue
Block a user