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"
 | 
						|
    )
 |