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