delete this
parent
8b1de17414
commit
1d639fba24
@ -1,397 +0,0 @@
|
|||||||
{
|
|
||||||
"cells": [
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"# Glossary Making Tool"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"This is a Work-in-progress experiment tool to make living glossaries Webpages using simple Python, Javascript, and CSS from an markdown file written in a Etherpad instance.\n",
|
|
||||||
"\n",
|
|
||||||
"**What makes it living?** \n",
|
|
||||||
"\n",
|
|
||||||
"* The glossary structure uses the idea of 'gloss' that means annottation and layer. It makes the glossary a layering of anotations rather than a list of definitions. The pad template uses each word as a card with multiple annotations. See the example.\n",
|
|
||||||
"\n",
|
|
||||||
"* This tool also offers the option of add properties to each word in order to find connections and multiple types of organization. \n"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {
|
|
||||||
"tags": []
|
|
||||||
},
|
|
||||||
"source": [
|
|
||||||
"## Words\n",
|
|
||||||
"Communicating via **API** with the glossary **Pad** and translating the text written in **Markdown** format using **Pandoc** library."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 11,
|
|
||||||
"metadata": {
|
|
||||||
"tags": []
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"import json, pypandoc\n",
|
|
||||||
"from urllib.request import urlopen\n",
|
|
||||||
"from urllib.parse import urlencode\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"with open(\"/opt/etherpad/APIKEY.txt\") as f:\n",
|
|
||||||
" api_key = f.read().strip()\n",
|
|
||||||
"\n",
|
|
||||||
"api_url = \"https://hub.xpub.nl/soupboat/pad/api/1.2.15/\"\n",
|
|
||||||
"\n",
|
|
||||||
"# wrap in a convenient function (APICALL)\n",
|
|
||||||
"def ep (api_fn, api_url, api_key, **data):\n",
|
|
||||||
" data['apikey'] = api_key\n",
|
|
||||||
" return json.load(urlopen(f\"{api_url}{api_fn}\", data=urlencode(data).encode()))\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"glossary = ep(\"getText\", api_url, api_key, padID=\"binding_glossary\")\n",
|
|
||||||
"\n",
|
|
||||||
"text = glossary[\"data\"][\"text\"]\n",
|
|
||||||
"\n",
|
|
||||||
"words = pypandoc.convert_text(text, 'html', format='md')"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"From a local markdown text file"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 12,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"import pypandoc\n",
|
|
||||||
"\n",
|
|
||||||
"text = open('glossary.txt', 'r')\n",
|
|
||||||
"\n",
|
|
||||||
"with text as f:\n",
|
|
||||||
" text = f.read()\n",
|
|
||||||
" \n",
|
|
||||||
"words = pypandoc.convert_text(text, 'html', format='md')"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {
|
|
||||||
"tags": []
|
|
||||||
},
|
|
||||||
"source": [
|
|
||||||
"## Properties"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"The following is a word property dictionary "
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 13,
|
|
||||||
"metadata": {
|
|
||||||
"tags": []
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"properties = [\n",
|
|
||||||
"\t{\n",
|
|
||||||
"\t\t'title':'fact',\n",
|
|
||||||
"\t\t'symbol':'A',\n",
|
|
||||||
" 'color': 'green'\n",
|
|
||||||
"\t},\n",
|
|
||||||
"\t{\n",
|
|
||||||
"\t\t'title':'process',\n",
|
|
||||||
"\t\t'symbol':'S',\n",
|
|
||||||
"\t\t'color': 'aqua'\n",
|
|
||||||
"\t},\n",
|
|
||||||
"\t{\n",
|
|
||||||
"\t\t'title':'love',\n",
|
|
||||||
"\t\t'symbol':'L',\n",
|
|
||||||
"\t\t'color': 'orange'\n",
|
|
||||||
"\t},\n",
|
|
||||||
" \t{\n",
|
|
||||||
"\t\t'title':'tool',\n",
|
|
||||||
"\t\t'symbol':'T',\n",
|
|
||||||
"\t\t'color': 'blue'\n",
|
|
||||||
"\t}\n",
|
|
||||||
"]"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"## Writing the Website"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"Write properties legend"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 14,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"description = ''\n",
|
|
||||||
"\n",
|
|
||||||
"i = 0\n",
|
|
||||||
"\n",
|
|
||||||
"for title, symbol, color in properties:\n",
|
|
||||||
" title = properties[i]['title']\n",
|
|
||||||
" description += (f''' {title}s,''')\n",
|
|
||||||
" i += 1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 15,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"legend = ''\n",
|
|
||||||
"\n",
|
|
||||||
"i = 0\n",
|
|
||||||
"\n",
|
|
||||||
"for title, symbol, color in properties:\n",
|
|
||||||
" title = properties[i]['title']\n",
|
|
||||||
" legend += f'''<button id=\"{title}\" class=\"btn {title}-s\" onclick=\"filterSelection('{title}')\">{title}</button>\\n'''\n",
|
|
||||||
" i += 1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"Write Script that will add properties to each word"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 16,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"script = ''\n",
|
|
||||||
"\n",
|
|
||||||
"i = 0 \n",
|
|
||||||
"\n",
|
|
||||||
"for title, symbol, color in properties:\n",
|
|
||||||
" title = properties[i]['title']\n",
|
|
||||||
" symbol = properties[i]['symbol']\n",
|
|
||||||
" script += (f\"\"\"const {title} = document.getElementsByClassName(\"{title}\");\n",
|
|
||||||
" for (let i = 0; i < {title}.length; i++)\"\"\"'{\\n' \n",
|
|
||||||
" f\"\"\"{title}[i].innerHTML += \"<span class='symbol {title}-s'>{symbol}</span>\";\"\"\" \n",
|
|
||||||
" '\\n}\\n\\n')\n",
|
|
||||||
" i += 1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {},
|
|
||||||
"source": [
|
|
||||||
"Assign a different color for each property "
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 17,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"style = ''\n",
|
|
||||||
"\n",
|
|
||||||
"i = 0 \n",
|
|
||||||
"\n",
|
|
||||||
"for title, symbol, color in properties:\n",
|
|
||||||
" title = properties[i]['title']\n",
|
|
||||||
" color = properties[i]['color']\n",
|
|
||||||
" style += f'''.{title}-s''' + '{' + f'''color:{color};''''}'\n",
|
|
||||||
" i += 1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {
|
|
||||||
"tags": []
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 18,
|
|
||||||
"metadata": {
|
|
||||||
"tags": []
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"body = f'''<!DOCTYPE html>\n",
|
|
||||||
" <html>\n",
|
|
||||||
" <head>\n",
|
|
||||||
" <meta charset=\"utf-8\">\n",
|
|
||||||
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n",
|
|
||||||
" <link rel=\"stylesheet\" href=\"style.css\"> \n",
|
|
||||||
" <title>Binding GLossary</title>\n",
|
|
||||||
" </head>\n",
|
|
||||||
" <style> {style} </style>\n",
|
|
||||||
" <body id=\"glo_body\">\n",
|
|
||||||
"\n",
|
|
||||||
" <div class=\"head\">\n",
|
|
||||||
" <h1> Glossary for a Diffractive Publishing Practice </h1>\n",
|
|
||||||
" </div>\n",
|
|
||||||
" <hr>\n",
|
|
||||||
" <div class=\"description\">\n",
|
|
||||||
" <p>This glossary gathers words around bookbiding. It was made as an example to use the tool living-glossary.</p> \n",
|
|
||||||
" <p>{description} are the properties that organize and make connections between words.</p>\n",
|
|
||||||
" </div>\n",
|
|
||||||
" <div id=\"legend\" class=\"legend\"> \n",
|
|
||||||
" <button class=\"btn active\" onclick=\"filterSelection('all')\">properties</button> {legend}\n",
|
|
||||||
" </div>\n",
|
|
||||||
" <hr>\n",
|
|
||||||
" <div class=\"words\">\n",
|
|
||||||
" {words} \n",
|
|
||||||
" </div>\n",
|
|
||||||
" </body>\n",
|
|
||||||
" <script>\n",
|
|
||||||
" {script}\n",
|
|
||||||
" </script>\n",
|
|
||||||
" <script src=\"main.js\"></script>\n",
|
|
||||||
" </html>'''\n",
|
|
||||||
"\n",
|
|
||||||
"website = open('index.html','w')\n",
|
|
||||||
"\n",
|
|
||||||
"website.write(body)\n",
|
|
||||||
"website.close()"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"print(words)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {
|
|
||||||
"tags": []
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"from time import sleep\n",
|
|
||||||
"\n",
|
|
||||||
"while True:\n",
|
|
||||||
" print('hey')\n",
|
|
||||||
" sleep(5)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"kernelspec": {
|
|
||||||
"display_name": "Python 3",
|
|
||||||
"language": "python",
|
|
||||||
"name": "python3"
|
|
||||||
},
|
|
||||||
"language_info": {
|
|
||||||
"codemirror_mode": {
|
|
||||||
"name": "ipython",
|
|
||||||
"version": 3
|
|
||||||
},
|
|
||||||
"file_extension": ".py",
|
|
||||||
"mimetype": "text/x-python",
|
|
||||||
"name": "python",
|
|
||||||
"nbconvert_exporter": "python",
|
|
||||||
"pygments_lexer": "ipython3",
|
|
||||||
"version": "3.7.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nbformat": 4,
|
|
||||||
"nbformat_minor": 4
|
|
||||||
}
|
|
Loading…
Reference in New Issue