def genitem(file, is_post=0, is_page=0): data = rd(file).split('---\n') meta = MP(lyml(data[1])) if isinstance(meta.date, str): meta.date = str2date(meta.date) content = ''.join(data[2:]) preview = content[0:min(len(content), config.index.preview)] if '<!-- more -->' in content: preview = content.split('<!-- more -->', 1)[0] name = file.stem x = MP(filename=name, assets=file.parent / file.stem, addr=name + '/', link=rt + name + '/', title=name, date=datetime.fromtimestamp(int(os.stat(file).st_mtime)), author=config.author, tags=[], categories=[], top=0, content=content, preview=preview, meta=meta) x.update(t_setting.defaut_front) x.update(meta) if is_post: if config.post_addr == 'pinyin': x.addr = 'posts/%s/' % toPinyin(name) elif config.post_addr == 'origin': x.addr = 'posts/%s/' % name if x.permalink: x.addr = 'posts/%s/' % x.permalink x.link = rt + x.addr if not x.layout: x.layout = 'post' if is_page and not x.layout: x.layout = 'page' return x
def apiEditPost(data): data['meta'] = del_none(lyml(data['meta'])) if 'date' not in data['meta']: data['meta']['date'] = datetime.now().replace(microsecond=0) elif isinstance(data['meta']['date'], str): data['meta']['date'] = str2date(data['meta']['date']) data['meta'].update({ 'title': data['title'], 'top': data['top'], 'tags': data['tags'], 'categories': data['categories'] }) file = Path('source/_posts/%s.md' % data['filename']) file.open('w', encoding='utf-8').write('---\n' + dyml(data['meta']) + '\n---\n' + data['content']) x = genitem(file, is_post=1) if 'pos' in data: post = posts[data['pos']] if post['filename'] != data['filename']: rmPost(post) posts[data['pos']] = x else: posts.append(x) postsUpd() mp[rt + x.addr] = x return { 'pos': x.pos, 'status': 'success', 'redirect': data.get('pos') != x.pos }
def apiEditPost(data): data = MP(data) data.meta = MP(lyml(data.meta)) if not data.meta.date: data.meta.date = datetime.now().replace(microsecond=0) elif isinstance(data.meta.date, str): data.meta.date = str2date(data.meta.date) data.meta.update(title=data.title, top=data.top, tags=data.tags, categories=data.categories) file = Path('source/_posts/%s.md' % data.filename) file.open('w', encoding='utf-8').write('---\n' + dyml(dict(data.meta)) + '\n---\n' + data.content) x = genitem(file, is_post=1) if data.has('pos'): post = posts[data.pos] if post.filename != data.filename: rmPost(post) posts[data.pos] = x else: posts.append(x) postsUpd() mp[x.addr] = x return {'pos': x.pos, 'status': 'success', 'redirect': data.pos != x.pos}
chkDependences() from jinja2 import Environment, FileSystemLoader, Template from funcs import lyml, dyml, cp, del_none, str2date, rd, toPinyin, MP from encrypt import encrypt def op(path, data): if DEBUG: print(path) path = Dest / path if not path.suffix == '.html': path = path / 'index.html' path.parent.mkdir(parents=1, exist_ok=1) path.open('w', encoding='utf-8').write(data) config = MP(lyml(rd('config.yml'))) tSrc = Path('theme/%s/' % config.theme) dest = config.dest Dest = Path(dest) DEBUG = config.debug rt = config.site.rt = urlparse(config.site.url).path t_config = MP(lyml(rd(tSrc / 'config.yml'))) t_setting = MP(lyml(rd(tSrc / 'setting.yml'))) posts, pages = [], [] tags, categories = MP(), MP() index, tags_index, categories_index = [], [], [], urls = [] env, tpls = False, MP() last_build_time = datetime.now().replace(microsecond=0)
chkDependences() from jinja2 import Environment, FileSystemLoader, Template from funcs import lyml, dyml, cp, del_none, str2date, rd, toPinyin, MP from encrypt import encrypt def op(path, data): if DEBUG: print(path) path = Dest / path if not path.suffix == '.html': path = path / 'index.html' path.parent.mkdir(parents=1, exist_ok=1) path.open('w', encoding='utf-8').write(data) config = MP(lyml(rd('config.yml'))) dest = config.dest Dest = Path(dest) DEBUG = config.debug rt = config.site.rt = urlparse(config.site.url).path t_config = MP(lyml(rd('theme/%s/config.yml' % config.theme))) t_setting = MP(lyml(rd('theme/%s/setting.yml' % config.theme))) posts, pages = [], [] tags, categories = MP(), MP() index, tags_index, categories_index = [], [], [], urls = [] env, tpls = False, MP() last_build_time = datetime.now().replace(microsecond=0)