forked from Decentrala/website
		
	atom feed generator
This commit is contained in:
		
							
								
								
									
										45
									
								
								atom_gen.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										45
									
								
								atom_gen.py
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
#! /usr/bin/python3
 | 
			
		||||
 | 
			
		||||
# needs lowdown and feegden installed
 | 
			
		||||
# feedgen can be installed with pip
 | 
			
		||||
# also expects that *.md files are in blog/ directory
 | 
			
		||||
 | 
			
		||||
from feedgen.feed import FeedGenerator
 | 
			
		||||
import subprocess
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
blogs_dir = os.fsencode("blog")
 | 
			
		||||
 | 
			
		||||
def blogposts_list_gen():
 | 
			
		||||
    output_list = []
 | 
			
		||||
    for file in os.listdir(blogs_dir):
 | 
			
		||||
        filename = os.fsdecode(file)
 | 
			
		||||
        if filename.endswith(".md"):
 | 
			
		||||
            full_path = "blog/" + filename
 | 
			
		||||
 | 
			
		||||
            author = subprocess.run("lowdown -X author " + full_path, capture_output=True, shell=True, text=True).stdout.strip()
 | 
			
		||||
            title = subprocess.run("lowdown -X title " + full_path, capture_output=True, shell=True, text=True).stdout.strip()
 | 
			
		||||
            time = subprocess.run("lowdown -X time " + full_path, capture_output=True, shell=True, text=True).stdout.strip()
 | 
			
		||||
            content_html = subprocess.run("lowdown " + full_path, capture_output=True, shell=True, text=True).stdout.strip()
 | 
			
		||||
 | 
			
		||||
            output_list.append([author, title, time, content_html, full_path])
 | 
			
		||||
    return output_list
 | 
			
		||||
 | 
			
		||||
def feedgen(blogs):
 | 
			
		||||
    fg = FeedGenerator()
 | 
			
		||||
    fg.id('http://dmz.rs/')
 | 
			
		||||
    fg.title('Decentrala Blog')
 | 
			
		||||
    fg.author( {'name':'Decentrala','email':'dmz@dmz.rs'} )
 | 
			
		||||
    fg.link( href='https://dmz.rs/atom.xml', rel='self' )
 | 
			
		||||
 | 
			
		||||
    for post in blogs:
 | 
			
		||||
        fe = fg.add_entry()
 | 
			
		||||
        fe.id("https://dmz.rs/" + post[4][:-3] + ".html")
 | 
			
		||||
        fe.author({'name': post[0]})
 | 
			
		||||
        fe.title(post[1])
 | 
			
		||||
        fe.updated(post[2])
 | 
			
		||||
        fe.content(content=post[3], type='html')
 | 
			
		||||
 | 
			
		||||
    fg.atom_file('atom.xml')
 | 
			
		||||
 | 
			
		||||
feedgen(blogposts_list_gen())
 | 
			
		||||
		Reference in New Issue
	
	Block a user