aboutsummaryrefslogblamecommitdiff
path: root/rss.py
blob: af9f0cac6fd61d1f5da8d28bf1fd1f4a30e93a66 (plain) (tree)
1
2
3
4
5
6
7
8
           
         
 
             
                             
 
 
                                        



                                                

                                                   





                                                   
                                                



                                                        
                                                          
 
 
           

                                                            

              

                                                    

                                                          

                                       

                                                                                          
                                                      
          

                                                                                                                




                                            
                                                                       


                      

                           

                      


               
 

                          
import glob
import os

import jinja2
from bs4 import BeautifulSoup


class FilePathLoader(jinja2.BaseLoader):
    def __init__(self, cwd):
        self.cwd = cwd

    def get_source(self, environment, template):
        filename = os.path.join(self.cwd, template)

        try:
            with open(filename, 'r') as f:
                contents = f.read()
        except IOError:
            raise jinja2.TemplateNotFound(filename)

        return contents, filename, lambda: False


def render_template(cwd, template_path, context):
    env = jinja2.Environment(loader=FilePathLoader(cwd))
    return env.get_template(template_path).render(context)


def main():

    filenames = glob.glob("./_build/html/_posts/*/*/*.html")
    posts = []

    for file in filenames:
        soup = BeautifulSoup(open(file), "html5lib")
        body = soup.find_all("div", class_="body")[0].text

        posts.append({
            "title": soup.title.string,
            "body": body,
            "date_rss": body[body.find("Publish Date:")+13:body.find("Publish Date:")+23],
            "permalink": "/".join(file.split("/")[3:])
        })
        with open(file, "w") as file:
            file.write(str(BeautifulSoup(str(soup).replace("\n", "").replace("\r", ""), "html5lib").prettify()))

    context = {
        "site": {
            "name": "Hello World",
            "url": "https://blog.jinwei.me",
            "tagline": "Freedom is my birth right and I shall have it."
        },
        "posts": posts
    }

    return render_template(
        ".",
        "all.rss.xml",
        context
    )


if __name__ == '__main__':
    print(main())
Powered by cgit v1.2.3 (git 2.41.0)