epicpedia
parent
539f6262a7
commit
dbcf04fd5b
@ -0,0 +1,20 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<input id="title" type="text" />
|
||||||
|
<button id="go">go</button>
|
||||||
|
<script src="epicpedia_2024.js"></script>
|
||||||
|
<script>
|
||||||
|
let title_elt = document.querySelector("#title");
|
||||||
|
let go_elt = document.querySelector("#go");
|
||||||
|
go_elt.addEventListener("click", e => {
|
||||||
|
let title = title_elt.value;
|
||||||
|
console.log("search for article named", title);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "e2544890-3bb4-4457-a4c3-9711121c59f9",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"Epicpedia: graduation work made in 2008 by Networked Media student Annemieke van der Hoek \n",
|
||||||
|
"https://pzwiki.wdka.nl/mediadesign/Epicpedia\n",
|
||||||
|
"\n",
|
||||||
|
"Later Annemieke would present the work, in collaboration with her sister as a theater performance and workshop at VJ12: \n",
|
||||||
|
"https://video.constantvzw.org/vj12/epicpedia.ogv\n",
|
||||||
|
"\n",
|
||||||
|
"Following example begrudginly given here: \n",
|
||||||
|
"https://stackoverflow.com/questions/52283962/how-to-find-textual-differences-between-revisions-on-wikipedia-pages-with-mwclie\n",
|
||||||
|
"\n",
|
||||||
|
"https://www.mediawiki.org/wiki/API:Compare\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"Considering: \n",
|
||||||
|
"https://en.wikipedia.org/wiki/Han_Kang\n",
|
||||||
|
"\n",
|
||||||
|
"Oldest revision: \n",
|
||||||
|
"https://en.wikipedia.org/w/index.php?title=Han_Kang&oldid=376586279\n",
|
||||||
|
"\n",
|
||||||
|
"Thanks, Fred, now I see that there's a [REST API](https://www.mediawiki.org/wiki/API:REST_API) as well. Not sure what the differences are.\n",
|
||||||
|
"\n",
|
||||||
|
"Also using the URLSearchParams class in js: \n",
|
||||||
|
"https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n",
|
||||||
|
"\n",
|
||||||
|
"Using the classic/action API, there's page > revisions: \n",
|
||||||
|
"https://www.mediawiki.org/wiki/API:Revisions\n",
|
||||||
|
"\n",
|
||||||
|
"Examples given on API:Revisions page:\n",
|
||||||
|
"\n",
|
||||||
|
"Last 5 edits\n",
|
||||||
|
"\n",
|
||||||
|
"https://www.mediawiki.org/w/api.php?action=query&prop=revisions&titles=MediaWiki&rvlimit=5&rvprop=timestamp|user|comment\n",
|
||||||
|
"\n",
|
||||||
|
"first edits\n",
|
||||||
|
"\n",
|
||||||
|
"https://www.mediawiki.org/w/api.php?action=query&prop=revisions&titles=MediaWiki&rvlimit=5&rvprop=timestamp|user|comment&rvdir=newer\n",
|
||||||
|
"\n",
|
||||||
|
"Adding ids and flags\n",
|
||||||
|
"\n",
|
||||||
|
"https://www.mediawiki.org/w/api.php?action=query&prop=revisions&titles=MediaWiki&rvlimit=5&rvprop=timestamp|user|comment|ids|flags&rvdir=newer\n",
|
||||||
|
"\n",
|
||||||
|
"adapted to Han Kang's entry:\n",
|
||||||
|
"\n",
|
||||||
|
"https://www.mediawiki.org/w/api.php?action=query&prop=revisions&titles=Han_Kang&rvlimit=5&rvprop=timestamp|user|comment|ids|flags&rvdir=newer\n",
|
||||||
|
"\n",
|
||||||
|
"https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Han%20Kang&rvlimit=5&rvprop=timestamp|user|comment|ids|flags&rvdir=newer\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "b3a48c4e-dcb3-4fa7-9524-e4fc8eae8a39",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"ename": "ModuleNotFoundError",
|
||||||
|
"evalue": "No module named 'mwclient'",
|
||||||
|
"output_type": "error",
|
||||||
|
"traceback": [
|
||||||
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||||
|
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
|
||||||
|
"Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmwclient\u001b[39;00m\n\u001b[1;32m 3\u001b[0m revisions \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(page\u001b[38;5;241m.\u001b[39mrevisions(prop\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mids\u001b[39m\u001b[38;5;124m'\u001b[39m)) \n\u001b[1;32m 4\u001b[0m last_revision_id \u001b[38;5;241m=\u001b[39m revisions[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrevid\u001b[39m\u001b[38;5;124m'\u001b[39m]\n",
|
||||||
|
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'mwclient'"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"import mwclient\n",
|
||||||
|
"\n",
|
||||||
|
"revisions = list(page.revisions(prop='ids')) \n",
|
||||||
|
"last_revision_id = revisions[-1]['revid']\n",
|
||||||
|
"first_revision_id = revisions[0]['revid']\n",
|
||||||
|
"compare_result = site.get('compare', fromrev=last_revision_id, torev=first_revision_id)\n",
|
||||||
|
"html_diff = compare_result['compare']['*']\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "f710d169-e284-4e27-834b-e31d98d7bf63",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3 (ipykernel)",
|
||||||
|
"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.11.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
var url = "https://en.wikipedia.org/w/api.php";
|
||||||
|
|
||||||
|
var params = {
|
||||||
|
action: "compare",
|
||||||
|
format: "json",
|
||||||
|
fromtitle: "Template:Unsigned",
|
||||||
|
totitle: "Template:UnsignedIP",
|
||||||
|
origin: "*"
|
||||||
|
|
||||||
|
};
|
||||||
|
fetch(url + "?" + (new URLSearchParams(params)).toString())
|
||||||
|
.then(resp => resp.json())
|
||||||
|
.then(data => {
|
||||||
|
console.log("data", data);
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.log("bad", err);
|
||||||
|
});
|
@ -0,0 +1,172 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="generator" content="pandoc" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||||
|
<title>radio_plays</title>
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
line-height: 1.5;
|
||||||
|
font-family: Georgia, serif;
|
||||||
|
font-size: 20px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
background-color: #fdfdfd;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 36em;
|
||||||
|
padding-left: 50px;
|
||||||
|
padding-right: 50px;
|
||||||
|
padding-top: 50px;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
hyphens: auto;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
font-kerning: normal;
|
||||||
|
}
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
font-size: 0.9em;
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 1.8em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
body {
|
||||||
|
background-color: transparent;
|
||||||
|
color: black;
|
||||||
|
font-size: 12pt;
|
||||||
|
}
|
||||||
|
p, h2, h3 {
|
||||||
|
orphans: 3;
|
||||||
|
widows: 3;
|
||||||
|
}
|
||||||
|
h2, h3, h4 {
|
||||||
|
page-break-after: avoid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #1a1a1a;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #1a1a1a;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
margin-top: 1.4em;
|
||||||
|
}
|
||||||
|
h5, h6 {
|
||||||
|
font-size: 1em;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
ol, ul {
|
||||||
|
padding-left: 1.7em;
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
li > ol, li > ul {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
blockquote {
|
||||||
|
margin: 1em 0 1em 1.7em;
|
||||||
|
padding-left: 1em;
|
||||||
|
border-left: 2px solid #e6e6e6;
|
||||||
|
color: #606060;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace;
|
||||||
|
font-size: 85%;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
margin: 1em 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
pre code {
|
||||||
|
padding: 0;
|
||||||
|
overflow: visible;
|
||||||
|
overflow-wrap: normal;
|
||||||
|
}
|
||||||
|
.sourceCode {
|
||||||
|
background-color: transparent;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
hr {
|
||||||
|
background-color: #1a1a1a;
|
||||||
|
border: none;
|
||||||
|
height: 1px;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
margin: 1em 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
|
display: block;
|
||||||
|
font-variant-numeric: lining-nums tabular-nums;
|
||||||
|
}
|
||||||
|
table caption {
|
||||||
|
margin-bottom: 0.75em;
|
||||||
|
}
|
||||||
|
tbody {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
border-top: 1px solid #1a1a1a;
|
||||||
|
border-bottom: 1px solid #1a1a1a;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
border-top: 1px solid #1a1a1a;
|
||||||
|
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
margin-bottom: 4em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#TOC li {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
#TOC ul {
|
||||||
|
padding-left: 1.3em;
|
||||||
|
}
|
||||||
|
#TOC > ul {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
#TOC a:not(:hover) {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
code{white-space: pre-wrap;}
|
||||||
|
span.smallcaps{font-variant: small-caps;}
|
||||||
|
span.underline{text-decoration: underline;}
|
||||||
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||||
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||||
|
ul.task-list{list-style: none;}
|
||||||
|
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>Georges Perec - Die Maschine</p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://hub.xpub.nl/bootleglibrary/read/918/pdf">The
|
||||||
|
Machine: English translation</a></li>
|
||||||
|
<li><a href="https://hub.xpub.nl/bootleglibrary/book/789">Mainframe
|
||||||
|
Experimentalism</a>, Bellos article (chapter 2)</li>
|
||||||
|
<li><a
|
||||||
|
href="https://hub.xpub.nl/bootleglibrary/read/789/epub#epubcfi(/6/22%5Bchp02%5D!/4/2/4/1:0)"
|
||||||
|
class="uri">https://hub.xpub.nl/bootleglibrary/read/789/epub#epubcfi(/6/22[chp02]!/4/2/4/1:0)</a></li>
|
||||||
|
<li><a href="https://calibre.constantvzw.org/read/29/pdf">VJ12
|
||||||
|
programme</a></li>
|
||||||
|
</ul>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,7 @@
|
|||||||
|
Georges Perec - Die Maschine
|
||||||
|
|
||||||
|
* [The Machine: English translation](https://hub.xpub.nl/bootleglibrary/read/918/pdf)
|
||||||
|
* [Mainframe Experimentalism](https://hub.xpub.nl/bootleglibrary/book/789), Bellos article (chapter 2)
|
||||||
|
* <https://hub.xpub.nl/bootleglibrary/read/789/epub#epubcfi(/6/22[chp02]!/4/2/4/1:0)>
|
||||||
|
* [VJ12 programme](https://calibre.constantvzw.org/read/29/pdf)
|
||||||
|
|
@ -0,0 +1,48 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
ins { color: green }
|
||||||
|
del { color: red }
|
||||||
|
#comment { font-style: italic; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<button id="next">next</button>
|
||||||
|
<div id="timestamp"></div>
|
||||||
|
<div id="user"></div>
|
||||||
|
<div id="comment"></div>
|
||||||
|
<div id="result"></div>
|
||||||
|
<script>
|
||||||
|
let r = {
|
||||||
|
action: "compare",
|
||||||
|
format: "json",
|
||||||
|
fromtitle: "Han Kang",
|
||||||
|
totitle: "Han Kang",
|
||||||
|
torelative: "next",
|
||||||
|
formatversion: 2,
|
||||||
|
prop: "diff|ids|title|user|comment|parsedcomment|timestamp",
|
||||||
|
difftype: "inline", // table, inline, unified
|
||||||
|
origin: "*"
|
||||||
|
}
|
||||||
|
let api_url = "https://en.wikipedia.org/w/api.php"
|
||||||
|
let revid = 376586279;
|
||||||
|
// let url = "https://en.wikipedia.org/w/api.php?action=compare&format=json&fromtitle=Han%20Kang&fromrev=376586279&totitle=Han%20Kang&torelative=next&formatversion=2&origin=*";
|
||||||
|
let next = document.querySelector("button#next");
|
||||||
|
next.addEventListener("click", e=> {
|
||||||
|
r.fromrev = revid;
|
||||||
|
fetch(api_url + "?" + new URLSearchParams(r)).then(resp => resp.json()).then(data => {
|
||||||
|
console.log("data", data);
|
||||||
|
let result = document.querySelector("#result");
|
||||||
|
result.innerHTML = data.compare.body;
|
||||||
|
revid = data.compare.torevid;
|
||||||
|
console.log("next revid", revid);
|
||||||
|
document.querySelector("#user").textContent = data.compare.touser;
|
||||||
|
document.querySelector("#timestamp").textContent = data.compare.totimestamp;
|
||||||
|
document.querySelector("#comment").textContent = data.compare.tocomment;
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue