You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.3 KiB
Markdown
96 lines
3.3 KiB
Markdown
---
|
|
title: Soup to Wiki
|
|
description: Teleport this log to the wiki (teleport not ready yet)
|
|
date: 12/04/2022
|
|
categories:
|
|
- Log
|
|
- Wiki
|
|
cover: wiki-soup.jpg
|
|
cover_alt: wikipedia page for soup sorry
|
|
---
|
|
|
|
Since the Soupboat is fragile and temporary (like everything else?), it's nice to keep this documentation updated also in the [Wiki](https://pzwiki.wdka.nl/mediadesign/Main_Page).
|
|
|
|
## update 12/04
|
|
|
|
Since the previous version was too messy I tried with a more concise approach. Instead of dumping the whole contents I choose to report only title + description and a link to the project here in the SB.
|
|
|
|
The page is generated with [Mako](https://www.makotemplates.org/), started looking at it during the workshop with Brendan. Its syntax seems much more legible than the Jinja2's one.
|
|
|
|
The code is more or less the same. Find it in this [notebook](log_to_wiki_2.ipynb). The file for the template is [baloons.html](baloons.html).
|
|
|
|
[And this is the result !!!!!](output.html)
|
|
|
|
## first attempt 21/02
|
|
|
|
|
|
|
|
ATM i'm using this [notebook](log_to_wiki.ipynb) to do a simple conversion from all the markdown files of these pages to wikitext. In this way it's less painful (but also less curated?) to have the wiki up to date. It uses [pypandoc](https://pypi.org/project/pypandoc/), that is a python wrapper for [pandoc](https://pandoc.org/).
|
|
|
|
```python
|
|
|
|
|
|
import os
|
|
import frontmatter
|
|
from datetime import datetime
|
|
import pypandoc
|
|
|
|
def list_folders(folder):
|
|
''' Return all the folders in a folder '''
|
|
names = []
|
|
for entry in os.scandir(folder):
|
|
# add to the list only proper files
|
|
if not entry.name.startswith('.') and entry.is_dir():
|
|
# remove the extension from the filename
|
|
names.append(entry.name)
|
|
return names
|
|
|
|
def get_md_contents(filename, directory='./contents'):
|
|
''' Return contents from a filename as frontmatter handler '''
|
|
with open(f"{directory}/{filename}", "r") as f:
|
|
metadata, content = frontmatter.parse(f.read())
|
|
return metadata, content
|
|
|
|
|
|
# in the projects directory there is a folder for every project.
|
|
# The info about the project are in a "documentation.md" file
|
|
|
|
folders = list_folders('public_html/projects')
|
|
projects = []
|
|
|
|
for folder in folders:
|
|
project = get_md_contents('documentation.md', f'public_html/projects/{folder}')
|
|
project_date = datetime.strptime(project[0]['date'], '%d/%m/%Y')
|
|
project[0]['date'] = datetime.strftime(project_date, '%d %b, %y')
|
|
project[0]['categories'].sort()
|
|
projects.append(project)
|
|
|
|
|
|
# the projects are sorted by date
|
|
projects.sort(reverse=False, key=lambda project: datetime.strptime(
|
|
project[0]['date'], '%d %b, %y'))
|
|
|
|
|
|
|
|
# the variable page will be filled with wikitext
|
|
page = ''
|
|
|
|
# here we insert a bit of meta info such as the title and the description
|
|
for project in projects:
|
|
|
|
page = page + f"==={project[0]['title']}=== \n"
|
|
page = page + f"''{project[0]['description']}''\n"
|
|
page = page + pypandoc.convert_text(project[1], 'mediawiki', format='md', extra_args=['--base-header-level=3'])
|
|
|
|
# and then i copy this result and paste it in the wiki
|
|
print(page)
|
|
|
|
|
|
```
|
|
|
|
there are still problems (as always?) especially with the images, that need to be uploaded manually in the wiki........... maybe i will provide super nice alt description to avoid this tedious workk sorry.
|
|
|
|
|
|
ok
|
|
|