Compare commits
10 Commits
7ce910203d
...
4b56c0cd70
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b56c0cd70 | ||
|
|
81cc653ee7 | ||
|
|
c0335f5b57 | ||
|
|
0a43773ec8 | ||
|
|
3a12056d5f | ||
|
|
6d1dee6f3a | ||
|
|
4f9284c6d6 | ||
|
|
dbc8f9bfb8 | ||
|
|
b68a77c67a | ||
|
|
24dc3946f4 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -8,6 +8,8 @@ BuurtGrn/buurtgrn
|
|||||||
BuurtGrn/metadata
|
BuurtGrn/metadata
|
||||||
GG/gg
|
GG/gg
|
||||||
GG/metadata
|
GG/metadata
|
||||||
|
HLN/metadata
|
||||||
|
HLN/hln
|
||||||
LitNL/litnl
|
LitNL/litnl
|
||||||
LitNL/metadata
|
LitNL/metadata
|
||||||
LitNL/xml2txt
|
LitNL/xml2txt
|
||||||
|
|||||||
9
HLN/Makefile
Normal file
9
HLN/Makefile
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
all: \
|
||||||
|
metadata \
|
||||||
|
hln
|
||||||
|
|
||||||
|
metadata: cmd/metadata/*.go
|
||||||
|
go build -o $@ $^
|
||||||
|
|
||||||
|
hln: cmd/hln/*.go
|
||||||
|
go build -o $@ $^
|
||||||
341
HLN/cmd/hln/hln.go
Normal file
341
HLN/cmd/hln/hln.go
Normal file
@@ -0,0 +1,341 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
e "codeberg.org/pebbe/errors"
|
||||||
|
"github.com/jbowtie/gokogiri"
|
||||||
|
|
||||||
|
"encoding/xml"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Rss struct {
|
||||||
|
XMLName xml.Name `xml:"rss"`
|
||||||
|
Items []ItemT `xml:"channel>item"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ItemT struct {
|
||||||
|
PubDate string `xml:"pubDate"`
|
||||||
|
UnixTime int64 `xml:"unixTime"`
|
||||||
|
Guid string `xml:"guid"`
|
||||||
|
Link string `xml:"link"`
|
||||||
|
Data []byte `xml:",innerxml"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
p = e.PanicErr
|
||||||
|
w = e.WarnErr
|
||||||
|
agent = "AhrefsBot/7.0"
|
||||||
|
)
|
||||||
|
|
||||||
|
func exists(filename string) bool {
|
||||||
|
_, err := os.Stat(filename)
|
||||||
|
return err == nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func fileDate(filename string) string {
|
||||||
|
b, err := os.ReadFile(filename)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
s := string(b)
|
||||||
|
i1 := strings.Index(s, "<unixTime>") + 10
|
||||||
|
i2 := strings.Index(s, "</unixTime>")
|
||||||
|
if i2 < i1 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return s[i1:i2]
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
defer func() {
|
||||||
|
if e.Panicked {
|
||||||
|
_ = recover()
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
myLock := "/net/corpora/nlnieuws/HLN/lock"
|
||||||
|
mkLock(myLock)
|
||||||
|
defer func() {
|
||||||
|
_ = os.Remove(myLock)
|
||||||
|
}()
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", "https://www.hln.be/home/rss.xml", nil)
|
||||||
|
p(err)
|
||||||
|
req.Header.Set("User-Agent", agent)
|
||||||
|
|
||||||
|
client := &http.Client{}
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
p(err)
|
||||||
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
p(err)
|
||||||
|
p(resp.Body.Close())
|
||||||
|
|
||||||
|
var rss Rss
|
||||||
|
p(xml.Unmarshal(body, &rss))
|
||||||
|
|
||||||
|
if len(rss.Items) == 0 {
|
||||||
|
p(fmt.Errorf("len(rss.Items) == 0"))
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, item := range rss.Items {
|
||||||
|
t, err := time.Parse(time.RFC1123Z, item.PubDate)
|
||||||
|
if err != nil {
|
||||||
|
t, err = time.Parse(time.RFC1123, item.PubDate)
|
||||||
|
}
|
||||||
|
p(err)
|
||||||
|
year, week := t.ISOWeek()
|
||||||
|
dirname := fmt.Sprintf("/net/corpora/nlnieuws/HLN/%d/%02d", year, week)
|
||||||
|
if exists(dirname + "/lock") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
basename := strings.TrimPrefix(item.Guid, "https://www.hln.be/")
|
||||||
|
basename = strings.TrimSuffix(basename, "/")
|
||||||
|
if n, i := len(basename), strings.Index(basename, "~"); i < n-1 && i > 0 {
|
||||||
|
basename = basename[i+1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
filename := dirname + "/" + url.PathEscape(basename)
|
||||||
|
|
||||||
|
ts := fmt.Sprintf("%d", t.Unix())
|
||||||
|
needUpdate := fileDate(filename+".xml") != ts
|
||||||
|
|
||||||
|
p(os.MkdirAll(dirname, 0777))
|
||||||
|
func() {
|
||||||
|
var ok bool
|
||||||
|
defer func() {
|
||||||
|
if e.Panicked {
|
||||||
|
fmt.Fprintln(os.Stderr, "----", filename)
|
||||||
|
fmt.Fprintln(os.Stderr, "----", item.Link)
|
||||||
|
}
|
||||||
|
if !ok {
|
||||||
|
_ = os.Remove(filename + ".xml")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
fp, err := os.Create(filename + ".xml")
|
||||||
|
p(err)
|
||||||
|
p(fp.WriteString("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<item>\n"))
|
||||||
|
p(fmt.Fprintf(fp, "<unixTime>%d</unixTime>", t.Unix()))
|
||||||
|
p(fp.Write(item.Data))
|
||||||
|
p(fp.WriteString("</item>\n"))
|
||||||
|
p(fp.Close())
|
||||||
|
p(os.Chtimes(filename+".xml", t, t))
|
||||||
|
ok = doArticle(filename, item.Link, t, needUpdate)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func doArticle(filename string, url string, timestamp time.Time, needUpdate bool) (ok bool) {
|
||||||
|
if exists(filename + ".skip") {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if needUpdate {
|
||||||
|
_ = os.Remove(filename + ".err")
|
||||||
|
_ = os.Remove(filename + ".html")
|
||||||
|
_ = os.Remove(filename + ".txt")
|
||||||
|
} else {
|
||||||
|
if exists(filename + ".txt") {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
time.Sleep(2 * time.Second)
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", url, nil)
|
||||||
|
p(err)
|
||||||
|
req.Header.Set("User-Agent", agent)
|
||||||
|
|
||||||
|
client := &http.Client{}
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
p(err)
|
||||||
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
p(err)
|
||||||
|
p(resp.Body.Close())
|
||||||
|
|
||||||
|
doc, err := gokogiri.ParseHtml(body)
|
||||||
|
p(err)
|
||||||
|
|
||||||
|
root := doc.Root()
|
||||||
|
|
||||||
|
articles, err := root.Search(`//article[@id="article-content"]`)
|
||||||
|
p(err)
|
||||||
|
if len(articles) == 0 {
|
||||||
|
_ = w(fmt.Errorf("empty: %s", url))
|
||||||
|
|
||||||
|
fp, err := os.Create(filename + ".err")
|
||||||
|
p(err)
|
||||||
|
p(fmt.Fprintf(fp, "empty: %s\n", url))
|
||||||
|
p(fp.Close())
|
||||||
|
p(os.Chtimes(filename+".err", timestamp, timestamp))
|
||||||
|
|
||||||
|
fp, err = os.Create(filename + ".html")
|
||||||
|
p(err)
|
||||||
|
p(fp.Write(body))
|
||||||
|
p(fp.Close())
|
||||||
|
p(os.Chtimes(filename+".html", timestamp, timestamp))
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
article := articles[0]
|
||||||
|
|
||||||
|
tags := make([]string, 0)
|
||||||
|
ell, err := article.Search(`.//*[@data-content-type="LABEL"]`)
|
||||||
|
p(err)
|
||||||
|
for _, el := range ell {
|
||||||
|
s := strings.TrimSpace(el.Content())
|
||||||
|
if s != "" {
|
||||||
|
tags = append(tags, s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pars := make([]string, 0)
|
||||||
|
|
||||||
|
ell, err = article.Search(`.//*[@data-content-type="TITLE"]`)
|
||||||
|
p(err)
|
||||||
|
if len(ell) != 1 {
|
||||||
|
_ = w(fmt.Errorf("found %d titles: %s", len(ell), url))
|
||||||
|
}
|
||||||
|
for _, el := range ell {
|
||||||
|
s := strings.TrimSpace(el.Content())
|
||||||
|
if s != "" {
|
||||||
|
pars = append(pars, s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hasIntro := false
|
||||||
|
ell, err = article.Search(`.//*[@data-content-type="INTRO"]`)
|
||||||
|
p(err)
|
||||||
|
for _, el := range ell {
|
||||||
|
s := strings.TrimSpace(el.Content())
|
||||||
|
if s != "" {
|
||||||
|
pars = append(pars, s)
|
||||||
|
hasIntro = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !hasIntro {
|
||||||
|
_ = w(fmt.Errorf("no intro: %s", url))
|
||||||
|
}
|
||||||
|
|
||||||
|
specials, err := article.Search(`.//*[@data-content-type="GROUP"]`)
|
||||||
|
p(err)
|
||||||
|
for _, special := range specials {
|
||||||
|
special.Remove()
|
||||||
|
}
|
||||||
|
|
||||||
|
other, err := article.Search(`.//*[@data-content-type="PODCAST"]`)
|
||||||
|
p(err)
|
||||||
|
hasOther := len(other) > 0
|
||||||
|
|
||||||
|
ell, err = article.Search(`.//*[@data-content-type="PARAGRAPH"]`)
|
||||||
|
p(err)
|
||||||
|
if len(ell) == 0 && !hasOther && !hasIntro {
|
||||||
|
_ = w(fmt.Errorf("no paragraphs: %s", url))
|
||||||
|
|
||||||
|
fp, err := os.Create(filename + ".err")
|
||||||
|
p(err)
|
||||||
|
p(fmt.Fprintf(fp, "no paragraphs: %s\n", url))
|
||||||
|
p(fp.Close())
|
||||||
|
p(os.Chtimes(filename+".err", timestamp, timestamp))
|
||||||
|
|
||||||
|
fp, err = os.Create(filename + ".html")
|
||||||
|
p(err)
|
||||||
|
p(fp.Write(body))
|
||||||
|
p(fp.Close())
|
||||||
|
p(os.Chtimes(filename+".html", timestamp, timestamp))
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
hasPar := false
|
||||||
|
for _, el := range ell {
|
||||||
|
s := strings.TrimSpace(el.Content())
|
||||||
|
if s != "" {
|
||||||
|
pars = append(pars, s)
|
||||||
|
hasPar = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !hasPar {
|
||||||
|
if !hasOther && !hasIntro {
|
||||||
|
_ = w(fmt.Errorf("no text, skipping: %s", url))
|
||||||
|
}
|
||||||
|
fp, err := os.Create(filename + ".skip")
|
||||||
|
p(fp.WriteString(url + "\n"))
|
||||||
|
p(err)
|
||||||
|
p(os.Chtimes(filename+".skip", timestamp, timestamp))
|
||||||
|
|
||||||
|
fp, err = os.Create(filename + ".html")
|
||||||
|
p(err)
|
||||||
|
p(fp.Write(body))
|
||||||
|
p(fp.Close())
|
||||||
|
p(os.Chtimes(filename+".html", timestamp, timestamp))
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fp, err := os.Create(filename + ".txt")
|
||||||
|
p(err)
|
||||||
|
|
||||||
|
if len(tags) == 0 {
|
||||||
|
p(fmt.Fprintln(fp, "##META text tag ="))
|
||||||
|
} else {
|
||||||
|
for _, tag := range tags {
|
||||||
|
p(fmt.Fprintf(fp, "##META text tag = %s\n", fixSpace(tag)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, par := range pars {
|
||||||
|
p(fp.WriteString(addEnd(fixSpace(par))))
|
||||||
|
}
|
||||||
|
|
||||||
|
p(fp.Close())
|
||||||
|
|
||||||
|
p(os.Chtimes(filename+".txt", timestamp, timestamp))
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func addEnd(s string) string {
|
||||||
|
s = strings.TrimSpace(s)
|
||||||
|
n := len(s)
|
||||||
|
if n == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if n > 0 {
|
||||||
|
if strings.ContainsAny(s[n-1:], ".!?") {
|
||||||
|
return s + "\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if n > 1 {
|
||||||
|
s2 := s[n-2:]
|
||||||
|
if s2 == `."` || s2 == `!"` || s2 == `?"` || s2 == `.'` || s2 == `!'` || s2 == `?'` {
|
||||||
|
return s + "\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(s, `.”`) || strings.HasSuffix(s, `!”`) || strings.HasSuffix(s, `?”`) {
|
||||||
|
return s + "\n"
|
||||||
|
}
|
||||||
|
return s + ".\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
func fixSpace(s string) string {
|
||||||
|
return strings.Join(strings.Fields(s), " ")
|
||||||
|
}
|
||||||
|
|
||||||
|
func mkLock(filename string) {
|
||||||
|
pid := os.Getpid()
|
||||||
|
link := fmt.Sprintf("%s.%d", filepath.Base(filename), pid)
|
||||||
|
p(os.Symlink(link, filename))
|
||||||
|
|
||||||
|
name, err := os.Readlink(filename)
|
||||||
|
p(err)
|
||||||
|
|
||||||
|
if name != link {
|
||||||
|
p(fmt.Errorf("wrong lock name %q, should be %q", name, link))
|
||||||
|
}
|
||||||
|
}
|
||||||
131
HLN/cmd/metadata/metadata.go
Normal file
131
HLN/cmd/metadata/metadata.go
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
e "codeberg.org/pebbe/errors"
|
||||||
|
|
||||||
|
"bufio"
|
||||||
|
"encoding/xml"
|
||||||
|
"fmt"
|
||||||
|
"html"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Item struct {
|
||||||
|
XMLName xml.Name `xml:"item"`
|
||||||
|
UnixTime int64 `xml:"unixTime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
x = e.ExitErr
|
||||||
|
escape = html.EscapeString
|
||||||
|
data = make(map[string][]string)
|
||||||
|
location *time.Location
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var err error
|
||||||
|
location, err = time.LoadLocation("Europe/Amsterdam")
|
||||||
|
x(err)
|
||||||
|
|
||||||
|
files, err := os.ReadDir(".")
|
||||||
|
x(err)
|
||||||
|
for _, file := range files {
|
||||||
|
filename := file.Name()
|
||||||
|
if strings.HasSuffix(filename, ".txt") {
|
||||||
|
doText("", filename)
|
||||||
|
} else if strings.HasSuffix(filename, ".xml") {
|
||||||
|
doXml("", filename)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
files, err = os.ReadDir("..")
|
||||||
|
x(err)
|
||||||
|
for _, file := range files {
|
||||||
|
filename := file.Name()
|
||||||
|
if strings.HasSuffix(filename, ".txt") {
|
||||||
|
doText("../", filename)
|
||||||
|
} else if strings.HasSuffix(filename, ".xml") {
|
||||||
|
doXml("../", filename)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
files, err = os.ReadDir("xml")
|
||||||
|
x(err)
|
||||||
|
for _, file := range files {
|
||||||
|
filename := file.Name()
|
||||||
|
if !strings.HasSuffix(filename, ".xml") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
aa := strings.Split(filename, ".")
|
||||||
|
base := strings.Join(aa[1:len(aa)-2], ".")
|
||||||
|
b, err := os.ReadFile("xml/" + filename)
|
||||||
|
x(err)
|
||||||
|
s := string(b)
|
||||||
|
i := strings.Index(s, "<alpino") + 1
|
||||||
|
i += strings.Index(s[i:], "<")
|
||||||
|
fp, err := os.Create("xml/" + filename + ".tmp")
|
||||||
|
x(err)
|
||||||
|
x(fp.WriteString(s[:i]))
|
||||||
|
x(fp.WriteString("<metadata>\n <meta type=\"text\" name=\"source\" value=\"HLN\"/>\n"))
|
||||||
|
for _, m := range data[base] {
|
||||||
|
x(fp.WriteString(" " + m + "\n"))
|
||||||
|
}
|
||||||
|
x(fp.WriteString(" </metadata>\n "))
|
||||||
|
x(fp.WriteString(stripMeta(s[i:])))
|
||||||
|
x(fp.Close())
|
||||||
|
x(os.Rename("xml/"+filename+".tmp", "xml/"+filename))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func doText(dirname, filename string) {
|
||||||
|
base := filename[:len(filename)-4]
|
||||||
|
if _, ok := data[base]; !ok {
|
||||||
|
data[base] = make([]string, 0)
|
||||||
|
}
|
||||||
|
fp, err := os.Open(dirname + filename)
|
||||||
|
x(err)
|
||||||
|
defer func() { x(fp.Close()) }()
|
||||||
|
scanner := bufio.NewScanner(fp)
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
if !strings.HasPrefix(line, "##META") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
aa := strings.Fields(line)
|
||||||
|
if len(aa) > 4 {
|
||||||
|
data[base] = append(data[base],
|
||||||
|
fmt.Sprintf(`<meta type="%s" name="%s" value="%s"/>`,
|
||||||
|
aa[1],
|
||||||
|
escape(aa[2]),
|
||||||
|
escape(strings.Join(aa[4:], " "))))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
x(scanner.Err())
|
||||||
|
}
|
||||||
|
|
||||||
|
func doXml(dirname, filename string) {
|
||||||
|
base := filename[:len(filename)-4]
|
||||||
|
if _, ok := data[base]; !ok {
|
||||||
|
data[base] = make([]string, 0)
|
||||||
|
}
|
||||||
|
b, err := os.ReadFile(dirname + filename)
|
||||||
|
x(err)
|
||||||
|
var item Item
|
||||||
|
x(xml.Unmarshal(b, &item))
|
||||||
|
t := time.Unix(item.UnixTime, 0).In(location)
|
||||||
|
data[base] = append(data[base],
|
||||||
|
fmt.Sprintf(`<meta type="date" name="pubdate" value="%d-%02d-%02d"/>`,
|
||||||
|
t.Year(),
|
||||||
|
int(t.Month()),
|
||||||
|
t.Day()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func stripMeta(s string) string {
|
||||||
|
i1 := strings.Index(s, "<metadata>")
|
||||||
|
if i1 < 0 {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
i2 := i1 + strings.Index(s[i1:], "</metadata>") + 11
|
||||||
|
return s[:i1] + strings.TrimLeft(s[i2:], " \t\r\n")
|
||||||
|
}
|
||||||
66
HLN/txt2corpus.sh
Executable file
66
HLN/txt2corpus.sh
Executable file
@@ -0,0 +1,66 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
unset CDPATH
|
||||||
|
PATH=/net/corpora/nlnieuws/bin:/net/aps/bin:$PATH
|
||||||
|
export TZ=Europe/Amsterdam
|
||||||
|
. /net/aps/etc/alpino-activate.sh > /dev/null
|
||||||
|
|
||||||
|
if [ "$1" = "" ]
|
||||||
|
then
|
||||||
|
ds=`date -d -7days +%G-%V`
|
||||||
|
else
|
||||||
|
case "$1" in
|
||||||
|
2[0-9][0-9][0-9]-[0-5][0-9])
|
||||||
|
ds=$1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo INVALID
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
dp=${ds//-//}
|
||||||
|
|
||||||
|
corpus=/net/corpora/nlnieuws/HLN/corpus/$ds
|
||||||
|
|
||||||
|
cd /net/corpora/nlnieuws/HLN/$dp
|
||||||
|
|
||||||
|
ln -s lock.$$ lock
|
||||||
|
if [ "`readlink lock`" != lock.$$ ]
|
||||||
|
then
|
||||||
|
echo Getting lock failed
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -fr out
|
||||||
|
mkdir out
|
||||||
|
|
||||||
|
rm -f $corpus.lines
|
||||||
|
for i in *.txt
|
||||||
|
do
|
||||||
|
b=`basename $i .txt`
|
||||||
|
perl -p -e 's/^\s*//; s/^##META.*\n//' $i | tokenize.sh \
|
||||||
|
| perl -e '$n = 0; while(<>) { $n++; print("hln.'$b'.$n|$_"); }' \
|
||||||
|
>> $corpus.lines
|
||||||
|
done
|
||||||
|
|
||||||
|
cd out
|
||||||
|
mkdir xml
|
||||||
|
Alpino -flag treebank xml debug=1 end_hook=xml user_max=900000 -parse < $corpus.lines 2> $corpus.log
|
||||||
|
|
||||||
|
../../../metadata
|
||||||
|
|
||||||
|
cd xml
|
||||||
|
rm -f $corpus.data.dz $corpus.index
|
||||||
|
alto -q -o $corpus.data.dz *.xml
|
||||||
|
|
||||||
|
# telling per bericht, niet per zin
|
||||||
|
/net/corpora/nlnieuws/namen.sh -x T -s $corpus.data.dz > $corpus.tag.txt
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
rm -fr out
|
||||||
|
|
||||||
|
rm -f lock
|
||||||
1
Makefile
1
Makefile
@@ -4,6 +4,7 @@ all:
|
|||||||
make -C BuurtAdam
|
make -C BuurtAdam
|
||||||
make -C BuurtGrn
|
make -C BuurtGrn
|
||||||
make -C GG
|
make -C GG
|
||||||
|
make -C HLN
|
||||||
make -C LitNL
|
make -C LitNL
|
||||||
make -C NieuwsNL
|
make -C NieuwsNL
|
||||||
make -C NOS
|
make -C NOS
|
||||||
|
|||||||
@@ -179,70 +179,24 @@ func doArticle(filename string, url string, timestamp time.Time, needUpdate bool
|
|||||||
}
|
}
|
||||||
article := articles[0]
|
article := articles[0]
|
||||||
|
|
||||||
tags := make([]string, 0)
|
live, err := article.Search(`.//*[@data-test-id="live-blog-label"]`)
|
||||||
ell, err := article.Search(`//header//*[@data-test-id="article-label"]`)
|
|
||||||
p(err)
|
p(err)
|
||||||
for _, el := range ell {
|
if len(live) > 0 {
|
||||||
s := strings.TrimSpace(el.Content())
|
fp, err := os.Create(filename + ".skip")
|
||||||
if s != "" {
|
p(fp.WriteString("liveblog\n"))
|
||||||
tags = append(tags, s)
|
p(err)
|
||||||
}
|
p(os.Chtimes(filename+".skip", timestamp, timestamp))
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
fouten := make([]string, 0)
|
headers, err := article.Search(`.//header`)
|
||||||
pars := make([]string, 0)
|
|
||||||
|
|
||||||
ell, err = article.Search(`//header//*[@data-test-id="article-title"]`)
|
|
||||||
p(err)
|
p(err)
|
||||||
for _, el := range ell {
|
if len(headers) == 0 {
|
||||||
s := strings.TrimSpace(el.Content())
|
_ = w(fmt.Errorf("no header: %s", url))
|
||||||
if s != "" {
|
|
||||||
pars = append(pars, s)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
found := false
|
|
||||||
ell, err = article.Search(`//header//*[@data-test-id="header-intro"]`)
|
|
||||||
p(err)
|
|
||||||
for _, el := range ell {
|
|
||||||
s := strings.TrimSpace(el.Content())
|
|
||||||
if s != "" {
|
|
||||||
pars = append(pars, s)
|
|
||||||
found = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !found {
|
|
||||||
fouten = append(fouten, fmt.Sprintf("no heading: %s\n", url))
|
|
||||||
_ = w(fmt.Errorf("no heading: %s", url))
|
|
||||||
}
|
|
||||||
|
|
||||||
specials, err := article.Search(`//section//aside | //section//figure | //section//b`)
|
|
||||||
p(err)
|
|
||||||
for _, special := range specials {
|
|
||||||
special.Remove()
|
|
||||||
}
|
|
||||||
|
|
||||||
found = false
|
|
||||||
ell, err = article.Search(`//section//*[@data-article-element-index]`)
|
|
||||||
p(err)
|
|
||||||
for _, el := range ell {
|
|
||||||
s := strings.TrimSpace(el.Content())
|
|
||||||
if s != "" {
|
|
||||||
pars = append(pars, s)
|
|
||||||
found = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !found {
|
|
||||||
fouten = append(fouten, fmt.Sprintf("no text: %s\n", url))
|
|
||||||
_ = w(fmt.Errorf("no text: %s", url))
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(fouten) > 0 {
|
|
||||||
fp, err := os.Create(filename + ".err")
|
fp, err := os.Create(filename + ".err")
|
||||||
p(err)
|
p(err)
|
||||||
for _, fout := range fouten {
|
p(fmt.Fprintf(fp, "no elements: %s\n", url))
|
||||||
p(fp.WriteString(fout))
|
|
||||||
}
|
|
||||||
p(fp.Close())
|
p(fp.Close())
|
||||||
p(os.Chtimes(filename+".err", timestamp, timestamp))
|
p(os.Chtimes(filename+".err", timestamp, timestamp))
|
||||||
|
|
||||||
@@ -253,6 +207,99 @@ func doArticle(filename string, url string, timestamp time.Time, needUpdate bool
|
|||||||
p(os.Chtimes(filename+".html", timestamp, timestamp))
|
p(os.Chtimes(filename+".html", timestamp, timestamp))
|
||||||
|
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
}
|
||||||
|
header := headers[0]
|
||||||
|
|
||||||
|
tags := make([]string, 0)
|
||||||
|
ell, err := header.Search(`.//*[@data-test-id="article-label"]`)
|
||||||
|
p(err)
|
||||||
|
if len(ell) == 0 {
|
||||||
|
_ = w(fmt.Errorf("no labels: %s", url))
|
||||||
|
}
|
||||||
|
for _, el := range ell {
|
||||||
|
s := strings.TrimSpace(el.Content())
|
||||||
|
if s != "" {
|
||||||
|
tags = append(tags, s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pars := make([]string, 0)
|
||||||
|
|
||||||
|
ell, err = header.Search(`.//*[@data-test-id="article-title"]`)
|
||||||
|
p(err)
|
||||||
|
if len(ell) != 1 {
|
||||||
|
_ = w(fmt.Errorf("found %d titles: %s", len(ell), url))
|
||||||
|
}
|
||||||
|
for _, el := range ell {
|
||||||
|
s := strings.TrimSpace(el.Content())
|
||||||
|
if s != "" {
|
||||||
|
pars = append(pars, s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
found := false
|
||||||
|
ell, err = header.Search(`.//*[@data-test-id="header-intro"]`)
|
||||||
|
p(err)
|
||||||
|
for _, el := range ell {
|
||||||
|
s := strings.TrimSpace(el.Content())
|
||||||
|
if s != "" {
|
||||||
|
pars = append(pars, s)
|
||||||
|
found = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
_ = w(fmt.Errorf("no intro: %s", url))
|
||||||
|
}
|
||||||
|
|
||||||
|
specials, err := article.Search(`.//section//aside | .//section//figure | .//section//b`)
|
||||||
|
p(err)
|
||||||
|
for _, special := range specials {
|
||||||
|
special.Remove()
|
||||||
|
}
|
||||||
|
|
||||||
|
ell, err = article.Search(`.//section//*[@data-article-element-index]`)
|
||||||
|
p(err)
|
||||||
|
if len(ell) == 0 {
|
||||||
|
_ = w(fmt.Errorf("no elements: %s", url))
|
||||||
|
|
||||||
|
fp, err := os.Create(filename + ".err")
|
||||||
|
p(err)
|
||||||
|
p(fmt.Fprintf(fp, "no elements: %s\n", url))
|
||||||
|
p(fp.Close())
|
||||||
|
p(os.Chtimes(filename+".err", timestamp, timestamp))
|
||||||
|
|
||||||
|
fp, err = os.Create(filename + ".html")
|
||||||
|
p(err)
|
||||||
|
p(fp.Write(body))
|
||||||
|
p(fp.Close())
|
||||||
|
p(os.Chtimes(filename+".html", timestamp, timestamp))
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
found = false
|
||||||
|
for _, el := range ell {
|
||||||
|
s := strings.TrimSpace(el.Content())
|
||||||
|
if s != "" {
|
||||||
|
pars = append(pars, s)
|
||||||
|
found = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
_ = w(fmt.Errorf("no text, skipping: %s", url))
|
||||||
|
fp, err := os.Create(filename + ".skip")
|
||||||
|
p(fp.WriteString(url + "\n"))
|
||||||
|
p(err)
|
||||||
|
p(os.Chtimes(filename+".skip", timestamp, timestamp))
|
||||||
|
|
||||||
|
fp, err = os.Create(filename + ".html")
|
||||||
|
p(err)
|
||||||
|
p(fp.Write(body))
|
||||||
|
p(fp.Close())
|
||||||
|
p(os.Chtimes(filename+".html", timestamp, timestamp))
|
||||||
|
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
fp, err := os.Create(filename + ".txt")
|
fp, err := os.Create(filename + ".txt")
|
||||||
|
|||||||
@@ -13,17 +13,19 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Data struct {
|
type Data struct {
|
||||||
Year int `json:"year"`
|
Year int `json:"year"`
|
||||||
Week int `json:"week"`
|
Week int `json:"week"`
|
||||||
First string `json:"first"`
|
First string `json:"first"`
|
||||||
Last string `json:"last"`
|
Last string `json:"last"`
|
||||||
Period int `json:"period"`
|
Period int `json:"period"`
|
||||||
Start string `json:"start"`
|
Start string `json:"start"`
|
||||||
Algemeen *Parts `json:"Algemeen"`
|
Max int `json:"max"`
|
||||||
Groningen *Parts `json:"Groningen"`
|
Sources map[string]int `json:"sources"`
|
||||||
Amsterdam *Parts `json:"Amsterdam"`
|
Algemeen *Parts `json:"Algemeen"`
|
||||||
Literatuur *Parts `json:"Literatuur"`
|
Groningen *Parts `json:"Groningen"`
|
||||||
Vlaanderen *Parts `json:"Vlaanderen"`
|
Amsterdam *Parts `json:"Amsterdam"`
|
||||||
|
Literatuur *Parts `json:"Literatuur"`
|
||||||
|
Vlaanderen *Parts `json:"Vlaanderen"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Parts struct {
|
type Parts struct {
|
||||||
@@ -88,8 +90,9 @@ func main() {
|
|||||||
x(fmt.Errorf("ongeldige week: %d", week))
|
x(fmt.Errorf("ongeldige week: %d", week))
|
||||||
}
|
}
|
||||||
|
|
||||||
start, first, last := dates()
|
start, first, last, names := dates()
|
||||||
|
|
||||||
|
max, sources := makeCounts(names)
|
||||||
data := &Data{
|
data := &Data{
|
||||||
Year: year,
|
Year: year,
|
||||||
Week: week,
|
Week: week,
|
||||||
@@ -97,6 +100,8 @@ func main() {
|
|||||||
Last: last,
|
Last: last,
|
||||||
Period: size,
|
Period: size,
|
||||||
Start: start,
|
Start: start,
|
||||||
|
Max: max,
|
||||||
|
Sources: sources,
|
||||||
Algemeen: makeParts("Algemeen"),
|
Algemeen: makeParts("Algemeen"),
|
||||||
Groningen: makeParts("Groningen"),
|
Groningen: makeParts("Groningen"),
|
||||||
Amsterdam: makeParts("Amsterdam"),
|
Amsterdam: makeParts("Amsterdam"),
|
||||||
@@ -107,7 +112,6 @@ func main() {
|
|||||||
b, err := json.Marshal(data)
|
b, err := json.Marshal(data)
|
||||||
x(err)
|
x(err)
|
||||||
fmt.Println(string(b))
|
fmt.Println(string(b))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeParts(source string) *Parts {
|
func makeParts(source string) *Parts {
|
||||||
@@ -163,7 +167,43 @@ func makeValues(source, part string) [][5]any {
|
|||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
func dates() (start, first, last string) {
|
func makeCounts(names []string) (int, map[string]int) {
|
||||||
|
max := 0
|
||||||
|
counts := make(map[string]int)
|
||||||
|
x(os.Chdir("/net/corpora/nlnieuws"))
|
||||||
|
files, err := os.ReadDir(".")
|
||||||
|
x(err)
|
||||||
|
for _, file := range files {
|
||||||
|
if !file.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
filename := file.Name()
|
||||||
|
if filename[0] < 'A' || filename[0] > 'Z' {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
count := 0
|
||||||
|
for _, name := range names {
|
||||||
|
files2, err := os.ReadDir(filename + "/" + name)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for _, f := range files2 {
|
||||||
|
if n := f.Name(); strings.HasSuffix(n, ".xml") {
|
||||||
|
count++
|
||||||
|
} else if strings.HasSuffix(n, ".skip") {
|
||||||
|
count--
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
counts[filename] = count
|
||||||
|
if count > max {
|
||||||
|
max = count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return max, counts
|
||||||
|
}
|
||||||
|
|
||||||
|
func dates() (start, first, last string, names []string) {
|
||||||
|
|
||||||
// 1 januari
|
// 1 januari
|
||||||
t := time.Date(year, 1, 1, 12, 0, 0, 0, time.UTC)
|
t := time.Date(year, 1, 1, 12, 0, 0, 0, time.UTC)
|
||||||
@@ -182,7 +222,20 @@ func dates() (start, first, last string) {
|
|||||||
t2 := t.AddDate(0, 0, 6)
|
t2 := t.AddDate(0, 0, 6)
|
||||||
tStart := t.AddDate(0, 0, (1-size)*7)
|
tStart := t.AddDate(0, 0, (1-size)*7)
|
||||||
|
|
||||||
return makeDate(tStart), makeDate(t), makeDate(t2)
|
names = make([]string, 0)
|
||||||
|
t3 := tStart
|
||||||
|
for range size {
|
||||||
|
y, w := t3.ISOWeek()
|
||||||
|
names = append(names, fmt.Sprintf("%d/%02d", y, w))
|
||||||
|
t3 = t3.AddDate(0, 0, 7)
|
||||||
|
}
|
||||||
|
t3 = tStart
|
||||||
|
for range 7 * size {
|
||||||
|
names = append(names, fmt.Sprintf("%d/%02d/%02d", t3.Year(), t3.Month(), t3.Day()))
|
||||||
|
t3 = t3.AddDate(0, 0, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return makeDate(tStart), makeDate(t), makeDate(t2), names
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,11 +43,12 @@ parts[algemeen]='NOS|NU|NieuwsNL|RO|Sargasso'
|
|||||||
parts[amsterdam]='AT5|BuurtAdam|Parool'
|
parts[amsterdam]='AT5|BuurtAdam|Parool'
|
||||||
parts[groningen]='BuurtGrn|GG|Oog|RTVNoord|Sikkom'
|
parts[groningen]='BuurtGrn|GG|Oog|RTVNoord|Sikkom'
|
||||||
parts[literatuur]='LitNL|Tzum'
|
parts[literatuur]='LitNL|Tzum'
|
||||||
parts[vlaanderen]='VRT'
|
parts[vlaanderen]='HLN|VRT'
|
||||||
#parts[AT5]='AT5'
|
#parts[AT5]='AT5'
|
||||||
#parts[BuurtAdam]='BuurtAdam'
|
#parts[BuurtAdam]='BuurtAdam'
|
||||||
#parts[BuurtGrn]='BuurtGrn'
|
#parts[BuurtGrn]='BuurtGrn'
|
||||||
#parts[GG]='GG'
|
#parts[GG]='GG'
|
||||||
|
#parts[HLN]='HLN'
|
||||||
#parts[LitNL]='LitNL'
|
#parts[LitNL]='LitNL'
|
||||||
#parts[NOS]='NOS'
|
#parts[NOS]='NOS'
|
||||||
#parts[NU]='NU'
|
#parts[NU]='NU'
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
for i in ../data/*2026-14-4*; do ./top2html.py $i > `basename $i`.table; done
|
|
||||||
for i in *t20*; do rm -f `basename $i .t20.table`.table; done
|
|
||||||
|
|
||||||
104
www/app.html
104
www/app.html
@@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<link rel="icon" href="favicon.ico" type="image/ico" />
|
<link rel="icon" href="favicon.ico" type="image/ico" />
|
||||||
<link rel="stylesheet" href="style2.css" />
|
<link rel="stylesheet" href="style.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="tooltip.css" />
|
<link rel="stylesheet" type="text/css" href="tooltip.css" />
|
||||||
<script type="text/javascript" src="tooltip.js"></script>
|
<script type="text/javascript" src="tooltip.js"></script>
|
||||||
<script type="text/javascript" src="app.js" defer></script>
|
<script type="text/javascript" src="app.js" defer></script>
|
||||||
@@ -86,5 +86,107 @@
|
|||||||
<h2 id="subtitle"></h2>
|
<h2 id="subtitle"></h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="main" id="data"></div>
|
<div class="main" id="data"></div>
|
||||||
|
<div class="foot">
|
||||||
|
<h2>Bronnen</h2>
|
||||||
|
<table class="bron">
|
||||||
|
<tr>
|
||||||
|
<td>Algemeen</td>
|
||||||
|
<td class="bar"><div id="NieuwsNL" style="width: 100%"></div></td>
|
||||||
|
<td><a href="https://nieuws.nl/">NieuwsNL</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="NOS"></div></td>
|
||||||
|
<td><a href="https://nos.nl/">NOS</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="NU"></div></td>
|
||||||
|
<td><a href="https://www.nu.nl/">NU</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="RO"></div></td>
|
||||||
|
<td><a href="https://reportersonline.nl/">Reporters Online</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="last">
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="Sargasso"></div></td>
|
||||||
|
<td><a href="https://sargasso.nl/">Sargasso</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="first">
|
||||||
|
<td>Amsterdam</td>
|
||||||
|
<td class="bar"><div id="AT5"></div></td>
|
||||||
|
<td><a href="https://www.at5.nl/">AT5</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="BuurtAdam"></div></td>
|
||||||
|
<td>
|
||||||
|
<a href="https://indebuurt.nl/amsterdam/">In de buurt Amsterdam</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="last">
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="Parool"></div></td>
|
||||||
|
<td>
|
||||||
|
<a href="https://www.parool.nl/amsterdam/">Parool Amsterdam</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="first">
|
||||||
|
<td>Groningen</td>
|
||||||
|
<td class="bar"><div id="GG"></div></td>
|
||||||
|
<td>
|
||||||
|
<a href="https://gemeente.groningen.nl/nieuwsoverzicht"
|
||||||
|
>Gemeente Groningen</a
|
||||||
|
>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="BuurtGrn"></div></td>
|
||||||
|
<td>
|
||||||
|
<a href="https://indebuurt.nl/groningen/">In de buurt Groningen</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="Oog"></div></td>
|
||||||
|
<td><a href="https://www.oogtv.nl/">Oog</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="RTVNoord"></div></td>
|
||||||
|
<td><a href="https://www.rtvnoord.nl/">RTV Noord</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="last">
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="Sikkom"></div></td>
|
||||||
|
<td><a href="https://sikkom.nl/">Sikkom</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="first">
|
||||||
|
<td>Literatuur</td>
|
||||||
|
<td class="bar"><div id="LitNL"></div></td>
|
||||||
|
<td>
|
||||||
|
<a href="https://www.literairnederland.nl/">Literair Nederland</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="last">
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="Tzum"></div></td>
|
||||||
|
<td><a href="https://www.tzum.info/">Tzum</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="first">
|
||||||
|
<td>Vlaanderen</td>
|
||||||
|
<td class="bar"><div id="HLN"></div></td>
|
||||||
|
<td><a href="https://www.hln.be/">HLN</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td class="bar"><div id="VRT"></div></td>
|
||||||
|
<td><a href="https://www.vrt.be/vrtnws/nl/">VRT NWS</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
16
www/app.js
16
www/app.js
@@ -1,5 +1,6 @@
|
|||||||
var dates
|
var dates
|
||||||
var datesNr
|
var datesNr
|
||||||
|
var countsWeek
|
||||||
|
|
||||||
var parts = [
|
var parts = [
|
||||||
'nieuwe namen',
|
'nieuwe namen',
|
||||||
@@ -29,6 +30,18 @@ function sleep(ms) {
|
|||||||
return new Promise((resolve) => setTimeout(resolve, ms))
|
return new Promise((resolve) => setTimeout(resolve, ms))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setCounts(week) {
|
||||||
|
if (week != countsWeek) {
|
||||||
|
countsWeek = week
|
||||||
|
var max = data[week].max
|
||||||
|
var pp = Object.entries(data[week].sources)
|
||||||
|
for (var i in pp) {
|
||||||
|
document.getElementById(pp[i][0]).style.width =
|
||||||
|
(pp[i][1] / max) * 100 + '%'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function getJSON(url) {
|
function getJSON(url) {
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
var xhr = new XMLHttpRequest()
|
var xhr = new XMLHttpRequest()
|
||||||
@@ -136,6 +149,7 @@ async function loadSource(source, week) {
|
|||||||
tab.appendChild(tr)
|
tab.appendChild(tr)
|
||||||
d.appendChild(tab)
|
d.appendChild(tab)
|
||||||
idData.innerHTML = d.innerHTML
|
idData.innerHTML = d.innerHTML
|
||||||
|
setCounts(week)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadPart(part, week) {
|
async function loadPart(part, week) {
|
||||||
@@ -156,6 +170,7 @@ async function loadPart(part, week) {
|
|||||||
tab.appendChild(tr)
|
tab.appendChild(tr)
|
||||||
d.appendChild(tab)
|
d.appendChild(tab)
|
||||||
idData.innerHTML = d.innerHTML
|
idData.innerHTML = d.innerHTML
|
||||||
|
setCounts(week)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadWeken(source, part) {
|
async function loadWeken(source, part) {
|
||||||
@@ -180,6 +195,7 @@ async function loadWeken(source, part) {
|
|||||||
tab.appendChild(tr)
|
tab.appendChild(tr)
|
||||||
d.appendChild(tab)
|
d.appendChild(tab)
|
||||||
idData.innerHTML = d.innerHTML
|
idData.innerHTML = d.innerHTML
|
||||||
|
setCounts(dates[datesNr].week)
|
||||||
}
|
}
|
||||||
|
|
||||||
function locateWeek(date) {
|
function locateWeek(date) {
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
unset CDPATH
|
|
||||||
PATH=/net/corpora/nlnieuws/bin:/net/aps/bin:$PATH
|
|
||||||
export TZ=Europe/Amsterdam
|
|
||||||
|
|
||||||
item=tag
|
|
||||||
if [ "$1" = "cat" ]
|
|
||||||
then
|
|
||||||
item=cat
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" = "" ]
|
|
||||||
then
|
|
||||||
ds=`date -d -7days +%G-%V`
|
|
||||||
else
|
|
||||||
case "$1" in
|
|
||||||
2[0-9][0-9][0-9]-[0-5][0-9])
|
|
||||||
ds=$1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo INVALID
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
w=4
|
|
||||||
|
|
||||||
cd /net/corpora/nlnieuws
|
|
||||||
|
|
||||||
collect() {
|
|
||||||
declare -gA counts
|
|
||||||
declare -i val
|
|
||||||
count="$1"
|
|
||||||
shift
|
|
||||||
word="$*"
|
|
||||||
val=${counts["$word"]}
|
|
||||||
counts["$word"]=$(( $val + $count ))
|
|
||||||
}
|
|
||||||
|
|
||||||
for file in $( find . -name $ds-$w.$item.txt -or $( week2files $ds $w | sed -e "s/data.dz/$item.txt/g" ) )
|
|
||||||
do
|
|
||||||
IFS=$'\n'
|
|
||||||
for line in $(cat $file)
|
|
||||||
do
|
|
||||||
IFS=' '$'\t'$'\n'
|
|
||||||
collect $line
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
for i in "${!counts[@]}"
|
|
||||||
do
|
|
||||||
printf "%8d\t%s\n" ${counts[$i]} "$i"
|
|
||||||
#echo -e "${counts[$i]}\t$i"
|
|
||||||
done | sort -f -k 2 | sort -n -r -k 1,1 -s
|
|
||||||
70
www/mkAll.py
70
www/mkAll.py
@@ -1,70 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import re
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
head = '''<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>{} {} week {}</title>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<link rel="icon" href="favicon.ico" type="image/ico" />
|
|
||||||
<link rel="stylesheet" href="style.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="tooltip.css" />
|
|
||||||
<script type="text/javascript" src="tooltip.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="title">
|
|
||||||
<h1>{} {} week {}</h1>
|
|
||||||
terugkijkend over vier weken
|
|
||||||
</div>
|
|
||||||
<div class="main">
|
|
||||||
'''
|
|
||||||
|
|
||||||
tail=''' </div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
'''
|
|
||||||
|
|
||||||
namen = {
|
|
||||||
'algemeen': 'Algemeen',
|
|
||||||
'VRT': 'Vlaanderen',
|
|
||||||
'groningen': 'Groningen',
|
|
||||||
'AT5': 'Amsterdam',
|
|
||||||
'Tzum': 'Literatuur'
|
|
||||||
}
|
|
||||||
|
|
||||||
verbose=False
|
|
||||||
if sys.argv[1] == '-v':
|
|
||||||
verbose=True
|
|
||||||
sys.argv = sys.argv[:1] + sys.argv[2:]
|
|
||||||
|
|
||||||
ep=sys.argv[1]
|
|
||||||
if not re.match('^2[0-9][0-9][0-9]-[0-5][0-9]$', ep):
|
|
||||||
print("Ongeldig patroon '", ep, "', moet yyyy-ww zijn")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
jaar=ep[:4]
|
|
||||||
week=ep[5:].lstrip('0')
|
|
||||||
|
|
||||||
for base in ('algemeen', 'VRT', 'groningen', 'AT5', 'Tzum'):
|
|
||||||
name = namen[base]
|
|
||||||
with open(name + '.html', 'wt', encoding='utf-8') as fp:
|
|
||||||
fp.write(head.format(name, jaar, week, name, jaar, week))
|
|
||||||
fp.flush()
|
|
||||||
for part in ('nieuwe-namen', 'nieuwe-woorden', 'personen', 'overige-namen', 'locaties', 'organisaties'):
|
|
||||||
if verbose:
|
|
||||||
print(base, part)
|
|
||||||
if part == 'locaties':
|
|
||||||
fp.write('</div>\n<div class="main next">\n')
|
|
||||||
fp.flush()
|
|
||||||
top = ''
|
|
||||||
if part.startswith('nieuwe'):
|
|
||||||
top = '.t20'
|
|
||||||
subprocess.run(
|
|
||||||
['./top2html.py', '../data/{}-{}-{}-4{}'.format(base, part, ep, top)],
|
|
||||||
stdout = fp,
|
|
||||||
check = False)
|
|
||||||
fp.write(tail)
|
|
||||||
@@ -1,673 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Nieuwe namen 2026 week 15</title>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<link rel="icon" href="favicon.ico" type="image/ico" />
|
|
||||||
<link rel="stylesheet" href="style2.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="tooltip.css" />
|
|
||||||
<script type="text/javascript" src="tooltip.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="title">
|
|
||||||
<h1>Nieuwe namen 2026 week 15</h1>
|
|
||||||
terugkijkend over vier weken
|
|
||||||
</div>
|
|
||||||
<div class="main">
|
|
||||||
<table class="outer">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<h2>Algemeen</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('23 Sjoerd Sjoerdsma<br><small>Politiek, Landelijk</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Sjoerd Sjoerdsma</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('23 Wireless Festival<br><small>Entertainment, muziek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Wireless Festival</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 Dean James<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 83%"></div></td>
|
|
||||||
<td>Dean James</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 Inspectie Gezondheidszorg en Jeugd<br><small>binnenland, Landelijk</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 83%"></div></td>
|
|
||||||
<td>Inspectie Gezondheidszorg en Jeugd</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 Jeremy Hansen<br><small>Buitenland, Artemis II, maan, wetenschap</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 83%"></div></td>
|
|
||||||
<td>Jeremy Hansen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('17 Artemis II<br><small>Buitenland, nasa, tech</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 74%"></div></td>
|
|
||||||
<td>Artemis II</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('17 Lieke Klaver<br><small>sport-overig, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 74%"></div></td>
|
|
||||||
<td>Lieke Klaver</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('17 Progressief Nederland<br><small>Landelijk, GroenLinks, politiek, pro, PvdA</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 74%"></div></td>
|
|
||||||
<td>Progressief Nederland</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('17 Tjaronn Chery<br><small>Voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 74%"></div></td>
|
|
||||||
<td>Tjaronn Chery</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('16 Artemis II-missie<br><small>Buitenland, wetenschap</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 70%"></div></td>
|
|
||||||
<td>Artemis II-missie</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('16 Christina Koch<br><small>Buitenland, Artemis II, maan, wetenschap</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 70%"></div></td>
|
|
||||||
<td>Christina Koch</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('16 Popjournalist<br><small>Cultuur, Google Nieuws, muziek, Oncko van Kammen, Oncko van Kammen - Popjournalist, www.onckovankammen.nl</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 70%"></div></td>
|
|
||||||
<td>Popjournalist</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('16 Victor Glover<br><small>Buitenland, Artemis II, wetenschap</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 70%"></div></td>
|
|
||||||
<td>Victor Glover</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Erling Haaland<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Erling Haaland</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Etienne Vaessen<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Etienne Vaessen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Gennaro Gattuso<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Gennaro Gattuso</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 GL-PvdA<br><small>Landelijk, politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>GL-PvdA</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Hansi Flick<br><small>Voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Hansi Flick</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Heil Hitler<br><small>Entertainment, muziek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Heil Hitler</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 IDF<br><small>Buitenland</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>IDF</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<h2>Groningen</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Korreweg')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Korreweg</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Oosterhamriklaan')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Oosterhamriklaan</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Turfsingel')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Turfsingel</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Vrijheidsplein')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Vrijheidsplein</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><div style="width: 0%"></div></td>
|
|
||||||
<td> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<h2>Amsterdam</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Skatecafé')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Skatecafé</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('3 De Vondeling')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 75%"></div></td>
|
|
||||||
<td>De Vondeling</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('3 Geuzenveld')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 75%"></div></td>
|
|
||||||
<td>Geuzenveld</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('3 Godts')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 75%"></div></td>
|
|
||||||
<td>Godts</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('3 Imane Nadif')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 75%"></div></td>
|
|
||||||
<td>Imane Nadif</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Buikslotermeerplein')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Buikslotermeerplein</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Burgernet')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Burgernet</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Carel Willinkplantsoen')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Carel Willinkplantsoen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Caro Ottenhof')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Caro Ottenhof</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Chun')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Chun</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Clen V.')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Clen V.</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Darlencho E.')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Darlencho E.</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 De Nieuwe Meer')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>De Nieuwe Meer</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Dolf Pasker')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Dolf Pasker</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Dorle Kok')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Dorle Kok</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Eid al-Fitr')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Eid al-Fitr</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Fabel Friet')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Fabel Friet</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Felyx')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Felyx</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Flevopark')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Flevopark</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Funda')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Funda</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<h2>Literatuur</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('3 Jacques Maes & Lise Braekers<br><small>Woutertje Pieterse Prijs</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Jacques Maes & Lise Braekers</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('3 Konijntjes<br><small>Woutertje Pieterse Prijs</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Konijntjes</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('3 Rik van de Westelaken<br><small>Woutertje Pieterse Prijs</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Rik van de Westelaken</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Charlotte Remarque')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Charlotte Remarque</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 De Taalstaat<br><small>Woutertje Pieterse Prijs</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>De Taalstaat</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Ezo Wolf<br><small>Radio</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Ezo Wolf</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Fixdit<br><small>Radio</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Fixdit</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Gescinska<br><small>Socratesbeker</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Gescinska</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Grote Gebeuren 2026<br><small>Filmpje</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Grote Gebeuren 2026</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Hebban')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Hebban</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Hedy Tjin')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Hedy Tjin</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Hession<br><small>Rónán Hession</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Hession</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Het Grote Gebeuren<br><small>Filmpje</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Het Grote Gebeuren</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Hungry Paul<br><small>Rónán Hession</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Hungry Paul</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Inktaap<br><small>De Inktaap, Joost Oomen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Inktaap</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Jamal Ouariachi<br><small>Hendrik Groen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Jamal Ouariachi</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Janneke Siebelink')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Janneke Siebelink</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Jazzportretten')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Jazzportretten</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Koenraad Tinel<br><small>Thomas Mann</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Koenraad Tinel</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('2 Krekel van Annet Schaap')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Krekel van Annet Schaap</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<h2>Vlaanderen</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('8 Artemis II-missie<br><small>Ruimtevaart</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Artemis II-missie</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('5 Christina Koch<br><small>Ruimtevaart</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 62%"></div></td>
|
|
||||||
<td>Christina Koch</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('5 Fedasil<br><small>Politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 62%"></div></td>
|
|
||||||
<td>Fedasil</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('5 Hilde Crevits<br><small>Binnenland</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 62%"></div></td>
|
|
||||||
<td>Hilde Crevits</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('5 Jeremy Hansen<br><small>Ruimtevaart</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 62%"></div></td>
|
|
||||||
<td>Jeremy Hansen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('5 Wegen<br><small>Mobiliteit</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 62%"></div></td>
|
|
||||||
<td>Wegen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 AFAS Dome<br><small>Economie</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>AFAS Dome</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Cel Vermiste Personen<br><small>Justitie</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Cel Vermiste Personen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Deurganckdok<br><small>Economie</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Deurganckdok</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Edouard Philippe<br><small>Frankrijk</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Edouard Philippe</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Gonnissen<br><small>Economie</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Gonnissen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Instituut voor Natuur- en Bosonderzoek<br><small>Milieu & Klimaat</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Instituut voor Natuur- en Bosonderzoek</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Internationaal Ruimtestation ISS<br><small>Ruimtevaart</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Internationaal Ruimtestation ISS</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Jan Haelters<br><small>Technologie & Wetenschap</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Jan Haelters</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Jan Loos<br><small>Milieu & Klimaat</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Jan Loos</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 KMSKA<br><small>Expo</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>KMSKA</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Natuur en Bos<br><small>Milieu & Klimaat</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Natuur en Bos</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Noëlla')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Noëlla</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Omgeving')"
|
|
||||||
onmouseout="tooltip.hide()">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Omgeving</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('4 Peter Bruyninckx van het Vlaams Verkeerscentrum<br><small>Mobiliteit</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>Peter Bruyninckx van het Vlaams Verkeerscentrum</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
151
www/style.css
151
www/style.css
@@ -13,52 +13,16 @@ html {
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
border: 0px;
|
border: 0px;
|
||||||
margin: 0px;
|
margin: 2em;
|
||||||
padding: 0px 0px 8em 0px;
|
padding: 0px 0px 2em 0px;
|
||||||
color: black;
|
color: black;
|
||||||
background-color: #fcfffc;
|
background-color: #fcfffc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
margin: 2em 0px 0px 0px;
|
margin: 1em 0px 0px 0px;
|
||||||
padding: 0.4em 0.2em;
|
width: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
column-count: 4;
|
|
||||||
column-width: 22em;
|
|
||||||
|
|
||||||
-webkit-column-gap: 0px;
|
|
||||||
-moz-column-gap: 0px;
|
|
||||||
column-gap: 0px;
|
|
||||||
|
|
||||||
column-rule: 1px solid lightgrey;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main > div {
|
|
||||||
-webkit-column-break-inside: avoid;
|
|
||||||
-moz-column-break-inside: avoid;
|
|
||||||
-o-column-break-inside: avoid;
|
|
||||||
-ms-column-break-inside: avoid;
|
|
||||||
column-break-inside: avoid;
|
|
||||||
column-fill: balance;
|
|
||||||
page-break-inside: avoid;
|
|
||||||
|
|
||||||
/* zo moet het */
|
|
||||||
break-inside: avoid;
|
|
||||||
|
|
||||||
padding: 0px 1em;
|
|
||||||
margin: 0px 0.2em;
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
text-align: center;
|
|
||||||
font-size: small;
|
|
||||||
margin-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
text-align: center;
|
|
||||||
padding-bottom: 4em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
@@ -66,7 +30,8 @@ h1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
h1,
|
h1,
|
||||||
h2 {
|
h2,
|
||||||
|
h3 {
|
||||||
color: #62757f;
|
color: #62757f;
|
||||||
letter-spacing: 0.1em;
|
letter-spacing: 0.1em;
|
||||||
margin-top: 2em;
|
margin-top: 2em;
|
||||||
@@ -76,6 +41,11 @@ h1 {
|
|||||||
font-weight: 200;
|
font-weight: 200;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
|
line-height: 120%;
|
||||||
|
font-size: x-large;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
margin-top: 0px;
|
margin-top: 0px;
|
||||||
font-size: large;
|
font-size: large;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -94,23 +64,106 @@ a:hover {
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
div.option {
|
||||||
border-collapse: collapse;
|
display: inline-block;
|
||||||
border-spacing: 2em;
|
margin-right: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
td {
|
table.outer > tr > td,
|
||||||
padding: 0.2em 0.5em 0.2em 0px;
|
table.outer > tbody > tr > td {
|
||||||
|
padding: 0px 1em;
|
||||||
|
border-left: 1px solid #62757f;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.outer > tr > td:first-child,
|
||||||
|
table.outer > tbody > tr > td:first-child {
|
||||||
|
border-left: 0px;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table table {
|
||||||
|
width: 20em;
|
||||||
|
min-width: 20em;
|
||||||
|
max-width: 20em;
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
table table td {
|
||||||
|
/* cursor: pointer; */
|
||||||
|
padding: 0.2em 0px;
|
||||||
vertical-align: center;
|
vertical-align: center;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr > td:first-child {
|
table table tr > td:first-child {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
min-width: 100px;
|
min-width: 100px;
|
||||||
|
padding-right: 0.5em;
|
||||||
}
|
}
|
||||||
td > div {
|
|
||||||
|
table.bron td > div,
|
||||||
|
table table td > div {
|
||||||
height: 10px;
|
height: 10px;
|
||||||
margin-top: auto;
|
margin-top: auto;
|
||||||
background-color: #62757f;
|
background-color: #62757f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form {
|
||||||
|
line-height: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.choice {
|
||||||
|
padding-top: 1em;
|
||||||
|
border: 1px solid #62757f;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.choice td {
|
||||||
|
vertical-align: top;
|
||||||
|
text-align: left;
|
||||||
|
padding: 0.4em 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
label:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.disabled {
|
||||||
|
opacity: 0.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
#subtitle,
|
||||||
|
#data {
|
||||||
|
opacity: 1;
|
||||||
|
transition: opacity 200ms linear;
|
||||||
|
}
|
||||||
|
#subtitle.fade,
|
||||||
|
#data.fade {
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 20ms linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.bar {
|
||||||
|
width: 200px;
|
||||||
|
min-width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.bron {
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.bron td {
|
||||||
|
padding: 0.2em 1em 0.2em 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.last td {
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
border-bottom: 1px solid #62757f;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.first td {
|
||||||
|
padding-top: 0.5em;
|
||||||
|
}
|
||||||
|
|||||||
146
www/style2.css
146
www/style2.css
@@ -1,146 +0,0 @@
|
|||||||
/* */
|
|
||||||
|
|
||||||
* {
|
|
||||||
box-sizing: border-box;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
html {
|
|
||||||
font-family: 'IBM Plex Serif', serif;
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
border: 0px;
|
|
||||||
margin: 2em;
|
|
||||||
padding: 0px 0px 2em 0px;
|
|
||||||
color: black;
|
|
||||||
background-color: #fcfffc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main {
|
|
||||||
margin: 1em 0px 0px 0px;
|
|
||||||
width: 100%;
|
|
||||||
overflow-x: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-top: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1,
|
|
||||||
h2,
|
|
||||||
h3 {
|
|
||||||
color: #62757f;
|
|
||||||
letter-spacing: 0.1em;
|
|
||||||
margin-top: 2em;
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
font-size: xx-large;
|
|
||||||
font-weight: 200;
|
|
||||||
}
|
|
||||||
h2 {
|
|
||||||
line-height: 120%;
|
|
||||||
font-size: x-large;
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
h3 {
|
|
||||||
margin-top: 0px;
|
|
||||||
font-size: large;
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tags {
|
|
||||||
color: #0000ee;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #0000ee;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.option {
|
|
||||||
display: inline-block;
|
|
||||||
margin-right: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.outer > tr > td,
|
|
||||||
table.outer > tbody > tr > td {
|
|
||||||
padding: 0px 1em;
|
|
||||||
border-left: 1px solid #62757f;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.outer > tr > td:first-child,
|
|
||||||
table.outer > tbody > tr > td:first-child {
|
|
||||||
border-left: 0px;
|
|
||||||
padding-left: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table table {
|
|
||||||
width: 20em;
|
|
||||||
min-width: 20em;
|
|
||||||
max-width: 20em;
|
|
||||||
table-layout: fixed;
|
|
||||||
}
|
|
||||||
|
|
||||||
table table td {
|
|
||||||
/* cursor: pointer; */
|
|
||||||
padding: 0.2em 0px;
|
|
||||||
vertical-align: center;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
table table tr > td:first-child {
|
|
||||||
width: 100px;
|
|
||||||
min-width: 100px;
|
|
||||||
padding-right: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table table td > div {
|
|
||||||
height: 10px;
|
|
||||||
margin-top: auto;
|
|
||||||
background-color: #62757f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form {
|
|
||||||
line-height: 150%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.choice {
|
|
||||||
padding-top: 1em;
|
|
||||||
border: 1px solid #62757f;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.choice td {
|
|
||||||
vertical-align: top;
|
|
||||||
text-align: left;
|
|
||||||
padding: 0.4em 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
label:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disabled {
|
|
||||||
opacity: 0.4;
|
|
||||||
}
|
|
||||||
|
|
||||||
#subtitle,
|
|
||||||
#data {
|
|
||||||
opacity: 1;
|
|
||||||
transition: opacity 200ms linear;
|
|
||||||
}
|
|
||||||
#subtitle.fade,
|
|
||||||
#data.fade {
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity 20ms linear;
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title><!--TITLE--></title>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<link rel="icon" href="favicon.ico" type="image/ico" />
|
|
||||||
<link rel="stylesheet" href="style.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="tooltip.css" />
|
|
||||||
<script type="text/javascript" src="tooltip.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="title">
|
|
||||||
<h1><!--TITLE--></h1>
|
|
||||||
terugkijkend over vier weken
|
|
||||||
</div>
|
|
||||||
<div class="main">
|
|
||||||
<!--MAIN-->
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import html, sys
|
|
||||||
|
|
||||||
titles = {
|
|
||||||
'nieuwe-namen': 'nieuwe namen',
|
|
||||||
'nieuwe-woorden': 'nieuwe woorden',
|
|
||||||
'locaties':'locaties',
|
|
||||||
'personen':'personen',
|
|
||||||
'organisaties':'organisaties',
|
|
||||||
'overige-namen':'andere namen',
|
|
||||||
'nieuwe-adjww':'nieuwe adjectieven, deelwoorden en werkwoorden',
|
|
||||||
'cat.txt': 'categoriën',
|
|
||||||
'tag.txt': 'tags'
|
|
||||||
}
|
|
||||||
|
|
||||||
def e(s):
|
|
||||||
return s.replace(''', '&#x27;')
|
|
||||||
|
|
||||||
omt0 = ''' onmouseover="tooltip.show('{} {}')" onmouseout="tooltip.hide()"'''
|
|
||||||
omt1 = ''' onmouseover="tooltip.show('{} {}<br><small>{}</small>')" onmouseout="tooltip.hide()" class="tags"'''
|
|
||||||
|
|
||||||
title = sys.argv[1]
|
|
||||||
for key, value in titles.items():
|
|
||||||
if sys.argv[1].find(key) >= 0:
|
|
||||||
title = value
|
|
||||||
break
|
|
||||||
|
|
||||||
sys.stdout.buffer.write('''<div>
|
|
||||||
<h2>{}</h2>
|
|
||||||
<table>
|
|
||||||
'''.format(html.escape(title)).encode('utf-8'))
|
|
||||||
|
|
||||||
cols=0
|
|
||||||
with open(sys.argv[1], 'rt', encoding='utf-8') as fp:
|
|
||||||
lineno = 0
|
|
||||||
mx = 0
|
|
||||||
for line in fp:
|
|
||||||
line = line.strip()
|
|
||||||
aa = line.split('\t')
|
|
||||||
if len(aa) == 1:
|
|
||||||
bb = line.split()
|
|
||||||
aa[0] = bb[0]
|
|
||||||
aa.append(' '.join(bb[1:]))
|
|
||||||
for i in range(1, len(aa)):
|
|
||||||
aa[i] = html.escape(aa[i])
|
|
||||||
v = int(aa[0])
|
|
||||||
if lineno == 0:
|
|
||||||
mx = v
|
|
||||||
cols=len(aa)
|
|
||||||
p = 100 / mx * v
|
|
||||||
if len(aa) > 2:
|
|
||||||
mo = omt1.format(e(aa[0]), e(aa[1]), e(aa[2]))
|
|
||||||
else:
|
|
||||||
mo = omt0.format(e(aa[0]), e(aa[1]))
|
|
||||||
sys.stdout.buffer.write('<tr{}><td><div style="width:{:.0f}%"></div><td>{}</tr>\n'.format(mo, p, aa[1]).encode('utf-8'))
|
|
||||||
lineno += 1
|
|
||||||
if lineno == 20:
|
|
||||||
break
|
|
||||||
while lineno < 20:
|
|
||||||
lineno += 1
|
|
||||||
sys.stdout.buffer.write(b'<tr><td><div style="width:0%"></div><td> </tr>\n')
|
|
||||||
|
|
||||||
|
|
||||||
sys.stdout.buffer.write(b'</table>\n</div>\n\n')
|
|
||||||
@@ -1,899 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Algemeen -- Nieuwe namen</title>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<link rel="icon" href="favicon.ico" type="image/ico" />
|
|
||||||
<link rel="stylesheet" href="style2.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="tooltip.css" />
|
|
||||||
<script type="text/javascript" src="tooltip.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="title">
|
|
||||||
<h1>Algemeen — Nieuwe namen</h1>
|
|
||||||
terugkijkend over vier weken
|
|
||||||
</div>
|
|
||||||
<div class="main">
|
|
||||||
<table class="outer">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<h2>2026 week 15</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('23 Sjoerd Sjoerdsma<br><small>Politiek, Landelijk</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Sjoerd Sjoerdsma</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('23 Wireless Festival<br><small>Entertainment, muziek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Wireless Festival</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 Dean James<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 83%"></div></td>
|
|
||||||
<td>Dean James</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 Inspectie Gezondheidszorg en Jeugd<br><small>binnenland, Landelijk</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 83%"></div></td>
|
|
||||||
<td>Inspectie Gezondheidszorg en Jeugd</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 Jeremy Hansen<br><small>Buitenland, Artemis II, maan, wetenschap</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 83%"></div></td>
|
|
||||||
<td>Jeremy Hansen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('17 Artemis II<br><small>Buitenland, nasa, tech</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 74%"></div></td>
|
|
||||||
<td>Artemis II</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('17 Lieke Klaver<br><small>sport-overig, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 74%"></div></td>
|
|
||||||
<td>Lieke Klaver</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('17 Progressief Nederland<br><small>Landelijk, GroenLinks, politiek, pro, PvdA</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 74%"></div></td>
|
|
||||||
<td>Progressief Nederland</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('17 Tjaronn Chery<br><small>Voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 74%"></div></td>
|
|
||||||
<td>Tjaronn Chery</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('16 Artemis II-missie<br><small>Buitenland, wetenschap</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 70%"></div></td>
|
|
||||||
<td>Artemis II-missie</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('16 Christina Koch<br><small>Buitenland, Artemis II, maan, wetenschap</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 70%"></div></td>
|
|
||||||
<td>Christina Koch</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('16 Popjournalist<br><small>Cultuur, Google Nieuws, muziek, Oncko van Kammen, Oncko van Kammen - Popjournalist, www.onckovankammen.nl</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 70%"></div></td>
|
|
||||||
<td>Popjournalist</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('16 Victor Glover<br><small>Buitenland, Artemis II, wetenschap</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 70%"></div></td>
|
|
||||||
<td>Victor Glover</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Erling Haaland<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Erling Haaland</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Etienne Vaessen<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Etienne Vaessen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Gennaro Gattuso<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Gennaro Gattuso</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 GL-PvdA<br><small>Landelijk, politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>GL-PvdA</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Hansi Flick<br><small>Voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Hansi Flick</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 Heil Hitler<br><small>Entertainment, muziek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Heil Hitler</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('15 IDF<br><small>Buitenland</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>IDF</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<h2>2026 week 14</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('26 Ali B.<br><small>Entertainment, muziek, Ali B, hoger beroep, rapper</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Ali B.</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('24 TORUN<br><small>Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 92%"></div></td>
|
|
||||||
<td>TORUN</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('23 Tadej Pogacar<br><small>wielrennen, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 88%"></div></td>
|
|
||||||
<td>Tadej Pogacar</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('23 Ten Damme<br><small>Entertainment, muziek, Ali B</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 88%"></div></td>
|
|
||||||
<td>Ten Damme</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('22 Brian Brobbey<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 85%"></div></td>
|
|
||||||
<td>Brian Brobbey</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('22 Donyell Malen<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 85%"></div></td>
|
|
||||||
<td>Donyell Malen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('22 Julie Ng<br><small>Entertainment</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 85%"></div></td>
|
|
||||||
<td>Julie Ng</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('21 Carola Schouten<br><small>Landelijk, explosie, gemeenteraadsverkiezingen, Politiek, synagoge</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 81%"></div></td>
|
|
||||||
<td>Carola Schouten</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('21 Westerwolde<br><small>Landelijk, COA, asielcrisis, binnenland, politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 81%"></div></td>
|
|
||||||
<td>Westerwolde</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('20 Babi Pangang<br><small>Entertainment</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 77%"></div></td>
|
|
||||||
<td>Babi Pangang</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('20 Noa Lang<br><small>Voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 77%"></div></td>
|
|
||||||
<td>Noa Lang</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('20 One Battle After Another<br><small>Entertainment, film</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 77%"></div></td>
|
|
||||||
<td>One Battle After Another</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('20 Red Bull-coureur<br><small>formule-1, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 77%"></div></td>
|
|
||||||
<td>Red Bull-coureur</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('20 Remco Evenepoel<br><small>wielrennen, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 77%"></div></td>
|
|
||||||
<td>Remco Evenepoel</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('20 Videoland<br><small>Entertainment, film, media</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 77%"></div></td>
|
|
||||||
<td>Videoland</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('20 Wout van Aert<br><small>wielrennen, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 77%"></div></td>
|
|
||||||
<td>Wout van Aert</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 Bart Swier<br><small>Entertainment, hoger beroep, muziek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 73%"></div></td>
|
|
||||||
<td>Bart Swier</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 NTR<br><small>Entertainment</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 73%"></div></td>
|
|
||||||
<td>NTR</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 People<br><small>Entertainment</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 73%"></div></td>
|
|
||||||
<td>People</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('19 Politico<br><small>Buitenland, cafeyn, Internationaal, trumpdag, midden-oostenconflict</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 73%"></div></td>
|
|
||||||
<td>Politico</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<h2>2026 week 13</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('36 Jonas Vingegaard<br><small>wielrennen, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Jonas Vingegaard</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('32 Lando Norris<br><small>formule-1, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 89%"></div></td>
|
|
||||||
<td>Lando Norris</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('30 Jill Helena<br><small>Entertainment, muziek, Ali B, hoger beroep</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 83%"></div></td>
|
|
||||||
<td>Jill Helena</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('30 Oscar Piastri<br><small>formule-1, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 83%"></div></td>
|
|
||||||
<td>Oscar Piastri</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('29 Jeroen Kampschreur<br><small>Sport, sport-overig</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 81%"></div></td>
|
|
||||||
<td>Jeroen Kampschreur</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('28 Charles Leclerc<br><small>formule-1, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 78%"></div></td>
|
|
||||||
<td>Charles Leclerc</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('28 Fallout<br><small>trumpdag</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 78%"></div></td>
|
|
||||||
<td>Fallout</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('28 NPO Luister<br><small>podcast</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 78%"></div></td>
|
|
||||||
<td>NPO Luister</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('27 Isack Hadjar<br><small>formule-1, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 75%"></div></td>
|
|
||||||
<td>Isack Hadjar</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('27 Suzuka<br><small>formule-1, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 75%"></div></td>
|
|
||||||
<td>Suzuka</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('26 B.<br><small>Landelijk, misdaad, cold case, Den Haag</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 72%"></div></td>
|
|
||||||
<td>B.</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('25 Closing Time<br><small>Cultuur & Media</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 69%"></div></td>
|
|
||||||
<td>Closing Time</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('25 NRK<br><small>Koningshuis</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 69%"></div></td>
|
|
||||||
<td>NRK</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('25 Paralympische Winterspelen<br><small>Sport, sport-overig</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 69%"></div></td>
|
|
||||||
<td>Paralympische Winterspelen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('24 AFAS Live<br><small>Entertainment, muziek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>AFAS Live</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('24 ANP Verkiezingsdienst<br><small>Landelijk, gemeenteraadsverkiezingen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>ANP Verkiezingsdienst</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('24 Antonelli<br><small>formule-1, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Antonelli</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('24 Asiel<br><small>Landelijk, asiel, asielcrisis</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Asiel</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('24 Axios<br><small>Buitenland, midden-oostenconflict, cafeyn, Internationaal, Iran</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Axios</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('24 Telegram<br><small>Buitenland, Rusland, spanningen-oekraine</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Telegram</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<h2>2026 week 12</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('49 Hormuz<br><small>Zakelijk, midden-oostenconflict, Iran, cafeyn, Internationaal, trumpdag</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Hormuz</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('44 Revolutionaire Garde<br><small>Buitenland, Iran, cafeyn, Internationaal, midden-oostenconflict</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 90%"></div></td>
|
|
||||||
<td>Revolutionaire Garde</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('44 Torun<br><small>Sport, sport-overig</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 90%"></div></td>
|
|
||||||
<td>Torun</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('40 Mojtaba Khamenei<br><small>Buitenland, Iran, midden-oostenconflict, cafeyn, Internationaal, trumpdag</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 82%"></div></td>
|
|
||||||
<td>Mojtaba Khamenei</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('39 Keir Starmer<br><small>Buitenland, midden-oostenconflict</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 80%"></div></td>
|
|
||||||
<td>Keir Starmer</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('39 Mathieu van der Poel<br><small>wielrennen, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 80%"></div></td>
|
|
||||||
<td>Mathieu van der Poel</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('38 Conference League<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 78%"></div></td>
|
|
||||||
<td>Conference League</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('36 Berendsen<br><small>Landelijk, Iran, midden-oostenconflict, politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 73%"></div></td>
|
|
||||||
<td>Berendsen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('35 ANP/RTR/AFP<br><small>Buitenland</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 71%"></div></td>
|
|
||||||
<td>ANP/RTR/AFP</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('34 Bart van den Brink<br><small>Landelijk, asielcrisis</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 69%"></div></td>
|
|
||||||
<td>Bart van den Brink</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('34 Dilan Yeşilgöz<br><small>Landelijk</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 69%"></div></td>
|
|
||||||
<td>Dilan Yeşilgöz</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('33 VAE<br><small>Buitenland, cafeyn, Internationaal, buitenland, Iran, midden-oostenconflict, oorlog</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>VAE</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('33 X.<br><small>Buitenland, formule-1, Iran</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>X.</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('32 Klimaat<br><small>Landelijk, klimaat, aardbeving, Eleveld, Iran, oorlog</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 65%"></div></td>
|
|
||||||
<td>Klimaat</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('31 Keuken<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 63%"></div></td>
|
|
||||||
<td>Keuken</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('31 Kimi Antonelli<br><small>formule-1, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 63%"></div></td>
|
|
||||||
<td>Kimi Antonelli</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('31 VAR<br><small>voetbal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 63%"></div></td>
|
|
||||||
<td>VAR</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('30 Jan Paternotte<br><small>Politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 61%"></div></td>
|
|
||||||
<td>Jan Paternotte</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('30 Mirjam Bikker<br><small>Politiek, Landelijk</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 61%"></div></td>
|
|
||||||
<td>Mirjam Bikker</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('30 Richard de Mos<br><small>Landelijk, gemeenteraadsverkiezingen, politiek, uitgelicht</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 61%"></div></td>
|
|
||||||
<td>Richard de Mos</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<h2>2026 week 11</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('58 Kyiv<br><small>Buitenland, Oekraïne, spanningen-oekraine</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Kyiv</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('58 TikTok<br><small>Entertainment, tech, cafeyn</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>TikTok</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('56 JA21<br><small>Landelijk, politiek, Tweede Kamer, Politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 97%"></div></td>
|
|
||||||
<td>JA21</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('53 Iraanse Revolutionaire Garde<br><small>Buitenland, Iran, midden-oostenconflict</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 91%"></div></td>
|
|
||||||
<td>Iraanse Revolutionaire Garde</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('52 ANP/AFP/RTR<br><small>Buitenland</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 90%"></div></td>
|
|
||||||
<td>ANP/AFP/RTR</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('49 Truth Social<br><small>Buitenland, midden-oostenconflict, Trump</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 84%"></div></td>
|
|
||||||
<td>Truth Social</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('46 Tom Berendsen<br><small>Landelijk, midden-oostenconflict, politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 79%"></div></td>
|
|
||||||
<td>Tom Berendsen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('43 Groep Markuszower<br><small>Politiek, Iran, Mona Keijzer, Tweede Kamer</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 74%"></div></td>
|
|
||||||
<td>Groep Markuszower</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('42 Henk Vermeer<br><small>Politiek, BBB</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 72%"></div></td>
|
|
||||||
<td>Henk Vermeer</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('42 Mona Keijzer<br><small>Politiek, Landelijk, BBB</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 72%"></div></td>
|
|
||||||
<td>Mona Keijzer</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('41 David van Weel<br><small>Landelijk, binnenland, Amsterdam</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 71%"></div></td>
|
|
||||||
<td>David van Weel</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('39 George Russell<br><small>formule-1, Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>George Russell</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('39 Jordan Stolz<br><small>Sport, schaatsen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Jordan Stolz</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('39 Leyen<br><small>Buitenland, midden-oostenconflict, EU</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Leyen</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('39 Ursula von<br><small>Buitenland, midden-oostenconflict, EU</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 67%"></div></td>
|
|
||||||
<td>Ursula von</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('38 Suzanne Schulting<br><small>Sport, schaatsen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 66%"></div></td>
|
|
||||||
<td>Suzanne Schulting</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('37 Hegseth<br><small>cafeyn, Internationaal, Buitenland, Iran, midden-oostenconflict</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 64%"></div></td>
|
|
||||||
<td>Hegseth</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('37 TeamNL<br><small>Sport</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 64%"></div></td>
|
|
||||||
<td>TeamNL</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('36 Internationaal Energieagentschap<br><small>Zakelijk, economie, Iran</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 62%"></div></td>
|
|
||||||
<td>Internationaal Energieagentschap</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('36 Jenning de Boo<br><small>schaatsen, Sport, wekdienst</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 62%"></div></td>
|
|
||||||
<td>Jenning de Boo</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<h2>2026 week 10</h2>
|
|
||||||
<table>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('133 Rob Jetten<br><small>Landelijk, politiek, premier</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 100%"></div></td>
|
|
||||||
<td>Rob Jetten</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('114 Jetten<br><small>Landelijk, politiek, AOW, kabinet, Politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 86%"></div></td>
|
|
||||||
<td>Jetten</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('106 Jeffrey Epstein<br><small>Buitenland, Epstein</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 80%"></div></td>
|
|
||||||
<td>Jeffrey Epstein</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('81 Straat van Hormuz<br><small>Zakelijk, economie, Iran, cafeyn, Internationaal, trumpdag</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 61%"></div></td>
|
|
||||||
<td>Straat van Hormuz</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('69 Femke Kok<br><small>Sport, schaatsen, wekdienst</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 52%"></div></td>
|
|
||||||
<td>Femke Kok</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('66 AI<br><small>Zakelijk, tweakers, kunstmatige intelligentie, cafeyn, Internationaal</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 50%"></div></td>
|
|
||||||
<td>AI</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('64 Marius Borg Høiby<br><small>Koningshuis</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 48%"></div></td>
|
|
||||||
<td>Marius Borg Høiby</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('61 Antoinette Rijpma-de Jong<br><small>Sport, schaatsen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 46%"></div></td>
|
|
||||||
<td>Antoinette Rijpma-de Jong</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('60 Marijke Groenewoud<br><small>Sport, schaatsen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 45%"></div></td>
|
|
||||||
<td>Marijke Groenewoud</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('56 Høiby<br><small>Koningshuis</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 42%"></div></td>
|
|
||||||
<td>Høiby</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('56 Jutta Leerdam<br><small>Sport, schaatsen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 42%"></div></td>
|
|
||||||
<td>Jutta Leerdam</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('56 Xandra Velzeboer<br><small>Sport, olympische-spelen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 42%"></div></td>
|
|
||||||
<td>Xandra Velzeboer</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('55 GroenLinks-PvdA<br><small>Landelijk, Tweede Kamer, politiek</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 41%"></div></td>
|
|
||||||
<td>GroenLinks-PvdA</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('55 Jens van &#x27;t Wout<br><small>Sport, olympische-spelen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 41%"></div></td>
|
|
||||||
<td>Jens van 't Wout</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('55 Odido<br><small>Zakelijk, tech</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 41%"></div></td>
|
|
||||||
<td>Odido</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('53 Volodymyr Zelensky<br><small>Buitenland, spanningen-oekraine</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 40%"></div></td>
|
|
||||||
<td>Volodymyr Zelensky</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('53 Zelensky<br><small>Buitenland, Oekraïne, spanningen-oekraine</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 40%"></div></td>
|
|
||||||
<td>Zelensky</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('51 Jorrit Bergsma<br><small>Sport, olympische-spelen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 38%"></div></td>
|
|
||||||
<td>Jorrit Bergsma</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('50 Andrew Mountbatten-Windsor<br><small>Koningshuis, Andrew</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 38%"></div></td>
|
|
||||||
<td>Andrew Mountbatten-Windsor</td>
|
|
||||||
</tr>
|
|
||||||
<tr
|
|
||||||
onmouseover="tooltip.show('49 Joy Beune<br><small>Sport, schaatsen</small>')"
|
|
||||||
onmouseout="tooltip.hide()"
|
|
||||||
class="tags">
|
|
||||||
<td><div style="width: 37%"></div></td>
|
|
||||||
<td>Joy Beune</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
Reference in New Issue
Block a user