- commit
- b19647ead29ec3d12b90159068a351d5e5d27d6b
- parent
- d687b9ef93982008c2c5e366eef6c4be3c3fcecb
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-09-05 11:52
generate projects page from github
Diffstat
M | Makefile | 7 | ++++++- |
M | _templates/base.html | 1 | + |
A | projects.py | 34 | ++++++++++++++++++++++++++++++++++ |
3 files changed, 41 insertions, 1 deletions
diff --git a/Makefile b/Makefile
@@ -7,7 +7,7 @@ IMG := $(shell find _content -regex '.*\.\(png\|gif\|jpg\)$$' | sed 's/^_content 7 7 PANDOC_ARGS = -f markdown-smart --wrap=none --lua-filter filters/*.lua 8 8 9 9 .PHONY: all10 -1 all: $(IMG) build/index.html $(PAGES) $(PAGES_MD) build/feed.xml build/feed-archive.xml build/feed.json build/feed-archive.json $(STATIC) build/static/style.css-1 10 all: $(IMG) build/index.html build/projects/index.html $(PAGES) $(PAGES_MD) build/feed.xml build/feed-archive.xml build/feed.json build/feed-archive.json $(STATIC) build/static/style.css 11 11 12 12 .PHONY: push 13 13 push: all @@ -25,6 +25,11 @@ build/index.md: _content/posts/*/index.md posts.sh 25 25 @mkdir -p $$(dirname $@) 26 26 ./posts.sh > $@ 27 27 -1 28 .PHONY: build/projects/index.md -1 29 build/projects/index.md: projects.py -1 30 @mkdir -p $$(dirname $@) -1 31 python3 projects.py > $@ -1 32 28 33 _content/%.html: _content/%.md filters/*.lua 29 34 pandoc $(PANDOC_ARGS) $< -o $@ 30 35 @sed -i 's/<tr class="header">/<tr>/g' $@
diff --git a/_templates/base.html b/_templates/base.html
@@ -22,6 +22,7 @@ 22 22 <nav class="header__nav"> 23 23 <ul vocab="http://xmlns.com/foaf/0.1/" typeof="person"> 24 24 <li><a href="https://blog.ce9e.org/" property="homepage">blog</a></li> -1 25 <li><a href="/projects/">projects</a></li> 25 26 <li><a href="https://github.com/xi" property="account">github</a></li> 26 27 <li><a href="mailto:tobias.bengfort@posteo.de" property="email name">mail</a></li> 27 28 </ul>
diff --git a/projects.py b/projects.py
@@ -0,0 +1,34 @@ -1 1 import itertools -1 2 import requests -1 3 -1 4 -1 5 def iter_repos(username): -1 6 for page in itertools.count(1): -1 7 response = requests.get( -1 8 f'https://api.github.com/users/{username}/repos', -1 9 { -1 10 'page': page, -1 11 'per_page': 100, -1 12 'sort': 'created', -1 13 }, -1 14 ) -1 15 response.raise_for_status() -1 16 repos = response.json() -1 17 for repo in repos: -1 18 if not repo['fork'] and not repo['archived']: -1 19 yield repo -1 20 if len(repos) < 100: -1 21 break -1 22 -1 23 -1 24 if __name__ == '__main__': -1 25 print('---\ntitle: projects\n---') -1 26 -1 27 prev_year = None -1 28 for repo in iter_repos('xi'): -1 29 year = repo['created_at'][:4] -1 30 if year != prev_year: -1 31 print(f'\n## {year}\n') -1 32 prev_year = year -1 33 -1 34 print('- [{name}]({html_url}) - {description}'.format(**repo))