From 78760ab08d1d2ca51004934ac8ff690be38fd7ce Mon Sep 17 00:00:00 2001 From: clarkzjw Date: Thu, 11 Jan 2018 16:59:47 +0800 Subject: + fix --- rss.py | 73 +++++++++++++++++++++++++++++++++--------------------------------- 1 file changed, 37 insertions(+), 36 deletions(-) (limited to 'rss.py') diff --git a/rss.py b/rss.py index fbf70d1..faa004c 100644 --- a/rss.py +++ b/rss.py @@ -1,68 +1,69 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Created by i@BlahGeek.com at 2015-07-30 - import os -import argparse -import yaml - import jinja2 +import glob +from bs4 import BeautifulSoup -class FilePathLoader(jinja2.BaseLoader): - """ Custom Jinja2 template loader which just loads a single template file """ +class FilePathLoader(jinja2.BaseLoader): def __init__(self, cwd): self.cwd = cwd def get_source(self, environment, template): - # Path filename = os.path.join(self.cwd, template) - # Read try: with open(filename, 'r') as f: contents = f.read() except IOError: raise jinja2.TemplateNotFound(filename) - # Finish - uptodate = lambda: False - return contents, filename, uptodate + 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) - return env \ - .get_template(template_path) \ - .render(context) + +def _remove_attrs(soup): + for tag in soup.findAll(True): + tag.attrs = None + return soup def main(): - parser = argparse.ArgumentParser() - - parser.add_argument('--dir', default='.', help='Template directory') - parser.add_argument('--data', nargs='*', help='One or more YAML data file') - parser.add_argument('--template', help='Template file to process') - parser.add_argument('--body', help='Body content') - args = parser.parse_args() - - context = dict() - for data_f in args.data if args.data else []: - key, filename = data_f.split(':') - if filename: - context[key] = yaml.load(open(filename).read()) - else: - context[key] = {'_': True} - if args.body: - context['body'] = open(args.body).read() + + filenames = glob.glob("./_build/html/_posts/*/*/*.html") + print(filenames) + + posts = [] + + for p in filenames: + soup = BeautifulSoup(open(p), "html5lib") + body = soup.find_all("div", class_="body") + posts.append({ + "title": soup.title.string, + "body": body[0].text, + "date_rss": "", + "permalink": "/".join(p.split("/")[3:]) + }) + + context = { + "site": { + "name": "Hello World", + "url": "https://blog.jinwei.me", + "tagline": "Freedom is my birthright and I shall have it." + }, + "posts": posts + } return render_template( - args.dir, - args.template, + ".", + "all.rss.xml", context ) + if __name__ == '__main__': print(main()) -- cgit v1.2.3