Compare commits

...

10 Commits

Author SHA1 Message Date
Peter Kleiweg
4b56c0cd70 HLN, Parool: fix relatief xpath 2026-05-23 14:43:07 +02:00
Peter Kleiweg
81cc653ee7 Parool: dubbele <header> 2026-05-23 13:50:14 +02:00
Peter Kleiweg
c0335f5b57 HLN: ontbrekende paragrafen 2026-05-23 13:49:39 +02:00
Peter Kleiweg
0a43773ec8 data2json.go: telling van bronnen 2026-05-23 13:48:56 +02:00
Peter Kleiweg
3a12056d5f opschonen www 2026-05-23 13:47:20 +02:00
Peter Kleiweg
6d1dee6f3a HLN: podcasts 2026-05-22 12:45:39 +02:00
Peter Kleiweg
4f9284c6d6 HLN geen labels komt vaak voor 2026-05-21 18:37:07 +02:00
Peter Kleiweg
dbc8f9bfb8 Parool: skip liveblog 2026-05-21 18:34:41 +02:00
Peter Kleiweg
b68a77c67a HLN 2026-05-21 18:27:57 +02:00
Peter Kleiweg
24dc3946f4 update Parool 2026-05-21 18:27:10 +02:00
20 changed files with 945 additions and 2057 deletions

2
.gitignore vendored
View File

@@ -8,6 +8,8 @@ BuurtGrn/buurtgrn
BuurtGrn/metadata
GG/gg
GG/metadata
HLN/metadata
HLN/hln
LitNL/litnl
LitNL/metadata
LitNL/xml2txt

9
HLN/Makefile Normal file
View 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
View 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))
}
}

View 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
View 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

View File

@@ -4,6 +4,7 @@ all:
make -C BuurtAdam
make -C BuurtGrn
make -C GG
make -C HLN
make -C LitNL
make -C NieuwsNL
make -C NOS

View File

@@ -179,70 +179,24 @@ func doArticle(filename string, url string, timestamp time.Time, needUpdate bool
}
article := articles[0]
tags := make([]string, 0)
ell, err := article.Search(`//header//*[@data-test-id="article-label"]`)
live, err := article.Search(`.//*[@data-test-id="live-blog-label"]`)
p(err)
for _, el := range ell {
s := strings.TrimSpace(el.Content())
if s != "" {
tags = append(tags, s)
}
if len(live) > 0 {
fp, err := os.Create(filename + ".skip")
p(fp.WriteString("liveblog\n"))
p(err)
p(os.Chtimes(filename+".skip", timestamp, timestamp))
return true
}
fouten := make([]string, 0)
pars := make([]string, 0)
ell, err = article.Search(`//header//*[@data-test-id="article-title"]`)
headers, err := article.Search(`.//header`)
p(err)
for _, el := range ell {
s := strings.TrimSpace(el.Content())
if s != "" {
pars = append(pars, s)
}
}
if len(headers) == 0 {
_ = w(fmt.Errorf("no header: %s", url))
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")
p(err)
for _, fout := range fouten {
p(fp.WriteString(fout))
}
p(fmt.Fprintf(fp, "no elements: %s\n", url))
p(fp.Close())
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))
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")

View File

@@ -13,17 +13,19 @@ import (
)
type Data struct {
Year int `json:"year"`
Week int `json:"week"`
First string `json:"first"`
Last string `json:"last"`
Period int `json:"period"`
Start string `json:"start"`
Algemeen *Parts `json:"Algemeen"`
Groningen *Parts `json:"Groningen"`
Amsterdam *Parts `json:"Amsterdam"`
Literatuur *Parts `json:"Literatuur"`
Vlaanderen *Parts `json:"Vlaanderen"`
Year int `json:"year"`
Week int `json:"week"`
First string `json:"first"`
Last string `json:"last"`
Period int `json:"period"`
Start string `json:"start"`
Max int `json:"max"`
Sources map[string]int `json:"sources"`
Algemeen *Parts `json:"Algemeen"`
Groningen *Parts `json:"Groningen"`
Amsterdam *Parts `json:"Amsterdam"`
Literatuur *Parts `json:"Literatuur"`
Vlaanderen *Parts `json:"Vlaanderen"`
}
type Parts struct {
@@ -88,8 +90,9 @@ func main() {
x(fmt.Errorf("ongeldige week: %d", week))
}
start, first, last := dates()
start, first, last, names := dates()
max, sources := makeCounts(names)
data := &Data{
Year: year,
Week: week,
@@ -97,6 +100,8 @@ func main() {
Last: last,
Period: size,
Start: start,
Max: max,
Sources: sources,
Algemeen: makeParts("Algemeen"),
Groningen: makeParts("Groningen"),
Amsterdam: makeParts("Amsterdam"),
@@ -107,7 +112,6 @@ func main() {
b, err := json.Marshal(data)
x(err)
fmt.Println(string(b))
}
func makeParts(source string) *Parts {
@@ -163,7 +167,43 @@ func makeValues(source, part string) [][5]any {
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
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)
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
}

View File

@@ -43,11 +43,12 @@ parts[algemeen]='NOS|NU|NieuwsNL|RO|Sargasso'
parts[amsterdam]='AT5|BuurtAdam|Parool'
parts[groningen]='BuurtGrn|GG|Oog|RTVNoord|Sikkom'
parts[literatuur]='LitNL|Tzum'
parts[vlaanderen]='VRT'
parts[vlaanderen]='HLN|VRT'
#parts[AT5]='AT5'
#parts[BuurtAdam]='BuurtAdam'
#parts[BuurtGrn]='BuurtGrn'
#parts[GG]='GG'
#parts[HLN]='HLN'
#parts[LitNL]='LitNL'
#parts[NOS]='NOS'
#parts[NU]='NU'

View File

@@ -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

View File

@@ -5,7 +5,7 @@
<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" href="style.css" />
<link rel="stylesheet" type="text/css" href="tooltip.css" />
<script type="text/javascript" src="tooltip.js"></script>
<script type="text/javascript" src="app.js" defer></script>
@@ -86,5 +86,107 @@
<h2 id="subtitle"></h2>
</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>
</html>

View File

@@ -1,5 +1,6 @@
var dates
var datesNr
var countsWeek
var parts = [
'nieuwe namen',
@@ -29,6 +30,18 @@ function sleep(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) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest()
@@ -136,6 +149,7 @@ async function loadSource(source, week) {
tab.appendChild(tr)
d.appendChild(tab)
idData.innerHTML = d.innerHTML
setCounts(week)
}
async function loadPart(part, week) {
@@ -156,6 +170,7 @@ async function loadPart(part, week) {
tab.appendChild(tr)
d.appendChild(tab)
idData.innerHTML = d.innerHTML
setCounts(week)
}
async function loadWeken(source, part) {
@@ -180,6 +195,7 @@ async function loadWeken(source, part) {
tab.appendChild(tr)
d.appendChild(tab)
idData.innerHTML = d.innerHTML
setCounts(dates[datesNr].week)
}
function locateWeek(date) {

View File

@@ -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

View File

@@ -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)

View File

@@ -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 &nbsp; Sjoerd Sjoerdsma&lt;br&gt;&lt;small&gt;Politiek, Landelijk&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Sjoerd Sjoerdsma</td>
</tr>
<tr
onmouseover="tooltip.show('23 &nbsp; Wireless Festival&lt;br&gt;&lt;small&gt;Entertainment, muziek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Wireless Festival</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; Dean James&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 83%"></div></td>
<td>Dean James</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; Inspectie Gezondheidszorg en Jeugd&lt;br&gt;&lt;small&gt;binnenland, Landelijk&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 83%"></div></td>
<td>Inspectie Gezondheidszorg en Jeugd</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; Jeremy Hansen&lt;br&gt;&lt;small&gt;Buitenland, Artemis II, maan, wetenschap&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 83%"></div></td>
<td>Jeremy Hansen</td>
</tr>
<tr
onmouseover="tooltip.show('17 &nbsp; Artemis II&lt;br&gt;&lt;small&gt;Buitenland, nasa, tech&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 74%"></div></td>
<td>Artemis II</td>
</tr>
<tr
onmouseover="tooltip.show('17 &nbsp; Lieke Klaver&lt;br&gt;&lt;small&gt;sport-overig, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 74%"></div></td>
<td>Lieke Klaver</td>
</tr>
<tr
onmouseover="tooltip.show('17 &nbsp; Progressief Nederland&lt;br&gt;&lt;small&gt;Landelijk, GroenLinks, politiek, pro, PvdA&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 74%"></div></td>
<td>Progressief Nederland</td>
</tr>
<tr
onmouseover="tooltip.show('17 &nbsp; Tjaronn Chery&lt;br&gt;&lt;small&gt;Voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 74%"></div></td>
<td>Tjaronn Chery</td>
</tr>
<tr
onmouseover="tooltip.show('16 &nbsp; Artemis II-missie&lt;br&gt;&lt;small&gt;Buitenland, wetenschap&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 70%"></div></td>
<td>Artemis II-missie</td>
</tr>
<tr
onmouseover="tooltip.show('16 &nbsp; Christina Koch&lt;br&gt;&lt;small&gt;Buitenland, Artemis II, maan, wetenschap&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 70%"></div></td>
<td>Christina Koch</td>
</tr>
<tr
onmouseover="tooltip.show('16 &nbsp; Popjournalist&lt;br&gt;&lt;small&gt;Cultuur, Google Nieuws, muziek, Oncko van Kammen, Oncko van Kammen - Popjournalist, www.onckovankammen.nl&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 70%"></div></td>
<td>Popjournalist</td>
</tr>
<tr
onmouseover="tooltip.show('16 &nbsp; Victor Glover&lt;br&gt;&lt;small&gt;Buitenland, Artemis II, wetenschap&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 70%"></div></td>
<td>Victor Glover</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Erling Haaland&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Erling Haaland</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Etienne Vaessen&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Etienne Vaessen</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Gennaro Gattuso&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Gennaro Gattuso</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; GL-PvdA&lt;br&gt;&lt;small&gt;Landelijk, politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>GL-PvdA</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Hansi Flick&lt;br&gt;&lt;small&gt;Voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Hansi Flick</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Heil Hitler&lt;br&gt;&lt;small&gt;Entertainment, muziek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Heil Hitler</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; IDF&lt;br&gt;&lt;small&gt;Buitenland&lt;/small&gt;')"
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 &nbsp; Korreweg')"
onmouseout="tooltip.hide()">
<td><div style="width: 100%"></div></td>
<td>Korreweg</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Oosterhamriklaan')"
onmouseout="tooltip.hide()">
<td><div style="width: 100%"></div></td>
<td>Oosterhamriklaan</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Turfsingel')"
onmouseout="tooltip.hide()">
<td><div style="width: 100%"></div></td>
<td>Turfsingel</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Vrijheidsplein')"
onmouseout="tooltip.hide()">
<td><div style="width: 100%"></div></td>
<td>Vrijheidsplein</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><div style="width: 0%"></div></td>
<td>&nbsp;</td>
</tr>
</table>
</td>
<td>
<h2>Amsterdam</h2>
<table>
<tr
onmouseover="tooltip.show('4 &nbsp; Skatecafé')"
onmouseout="tooltip.hide()">
<td><div style="width: 100%"></div></td>
<td>Skatecafé</td>
</tr>
<tr
onmouseover="tooltip.show('3 &nbsp; De Vondeling')"
onmouseout="tooltip.hide()">
<td><div style="width: 75%"></div></td>
<td>De Vondeling</td>
</tr>
<tr
onmouseover="tooltip.show('3 &nbsp; Geuzenveld')"
onmouseout="tooltip.hide()">
<td><div style="width: 75%"></div></td>
<td>Geuzenveld</td>
</tr>
<tr
onmouseover="tooltip.show('3 &nbsp; Godts')"
onmouseout="tooltip.hide()">
<td><div style="width: 75%"></div></td>
<td>Godts</td>
</tr>
<tr
onmouseover="tooltip.show('3 &nbsp; Imane Nadif')"
onmouseout="tooltip.hide()">
<td><div style="width: 75%"></div></td>
<td>Imane Nadif</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Buikslotermeerplein')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Buikslotermeerplein</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Burgernet')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Burgernet</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Carel Willinkplantsoen')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Carel Willinkplantsoen</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Caro Ottenhof')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Caro Ottenhof</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Chun')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Chun</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Clen V.')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Clen V.</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Darlencho E.')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Darlencho E.</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; De Nieuwe Meer')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>De Nieuwe Meer</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Dolf Pasker')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Dolf Pasker</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Dorle Kok')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Dorle Kok</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Eid al-Fitr')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Eid al-Fitr</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Fabel Friet')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Fabel Friet</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Felyx')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Felyx</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Flevopark')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Flevopark</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; 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 &nbsp; Jacques Maes &amp; Lise Braekers&lt;br&gt;&lt;small&gt;Woutertje Pieterse Prijs&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Jacques Maes &amp; Lise Braekers</td>
</tr>
<tr
onmouseover="tooltip.show('3 &nbsp; Konijntjes&lt;br&gt;&lt;small&gt;Woutertje Pieterse Prijs&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Konijntjes</td>
</tr>
<tr
onmouseover="tooltip.show('3 &nbsp; Rik van de Westelaken&lt;br&gt;&lt;small&gt;Woutertje Pieterse Prijs&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Rik van de Westelaken</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Charlotte Remarque')"
onmouseout="tooltip.hide()">
<td><div style="width: 67%"></div></td>
<td>Charlotte Remarque</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; De Taalstaat&lt;br&gt;&lt;small&gt;Woutertje Pieterse Prijs&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>De Taalstaat</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Ezo Wolf&lt;br&gt;&lt;small&gt;Radio&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Ezo Wolf</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Fixdit&lt;br&gt;&lt;small&gt;Radio&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Fixdit</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Gescinska&lt;br&gt;&lt;small&gt;Socratesbeker&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Gescinska</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Grote Gebeuren 2026&lt;br&gt;&lt;small&gt;Filmpje&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Grote Gebeuren 2026</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Hebban')"
onmouseout="tooltip.hide()">
<td><div style="width: 67%"></div></td>
<td>Hebban</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Hedy Tjin')"
onmouseout="tooltip.hide()">
<td><div style="width: 67%"></div></td>
<td>Hedy Tjin</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Hession&lt;br&gt;&lt;small&gt;Rónán Hession&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Hession</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Het Grote Gebeuren&lt;br&gt;&lt;small&gt;Filmpje&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Het Grote Gebeuren</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Hungry Paul&lt;br&gt;&lt;small&gt;Rónán Hession&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Hungry Paul</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Inktaap&lt;br&gt;&lt;small&gt;De Inktaap, Joost Oomen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Inktaap</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Jamal Ouariachi&lt;br&gt;&lt;small&gt;Hendrik Groen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Jamal Ouariachi</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Janneke Siebelink')"
onmouseout="tooltip.hide()">
<td><div style="width: 67%"></div></td>
<td>Janneke Siebelink</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Jazzportretten')"
onmouseout="tooltip.hide()">
<td><div style="width: 67%"></div></td>
<td>Jazzportretten</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; Koenraad Tinel&lt;br&gt;&lt;small&gt;Thomas Mann&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Koenraad Tinel</td>
</tr>
<tr
onmouseover="tooltip.show('2 &nbsp; 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 &nbsp; Artemis II-missie&lt;br&gt;&lt;small&gt;Ruimtevaart&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Artemis II-missie</td>
</tr>
<tr
onmouseover="tooltip.show('5 &nbsp; Christina Koch&lt;br&gt;&lt;small&gt;Ruimtevaart&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 62%"></div></td>
<td>Christina Koch</td>
</tr>
<tr
onmouseover="tooltip.show('5 &nbsp; Fedasil&lt;br&gt;&lt;small&gt;Politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 62%"></div></td>
<td>Fedasil</td>
</tr>
<tr
onmouseover="tooltip.show('5 &nbsp; Hilde Crevits&lt;br&gt;&lt;small&gt;Binnenland&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 62%"></div></td>
<td>Hilde Crevits</td>
</tr>
<tr
onmouseover="tooltip.show('5 &nbsp; Jeremy Hansen&lt;br&gt;&lt;small&gt;Ruimtevaart&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 62%"></div></td>
<td>Jeremy Hansen</td>
</tr>
<tr
onmouseover="tooltip.show('5 &nbsp; Wegen&lt;br&gt;&lt;small&gt;Mobiliteit&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 62%"></div></td>
<td>Wegen</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; AFAS Dome&lt;br&gt;&lt;small&gt;Economie&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>AFAS Dome</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Cel Vermiste Personen&lt;br&gt;&lt;small&gt;Justitie&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>Cel Vermiste Personen</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Deurganckdok&lt;br&gt;&lt;small&gt;Economie&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>Deurganckdok</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Edouard Philippe&lt;br&gt;&lt;small&gt;Frankrijk&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>Edouard Philippe</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Gonnissen&lt;br&gt;&lt;small&gt;Economie&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>Gonnissen</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Instituut voor Natuur- en Bosonderzoek&lt;br&gt;&lt;small&gt;Milieu &amp; Klimaat&lt;/small&gt;')"
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 &nbsp; Internationaal Ruimtestation ISS&lt;br&gt;&lt;small&gt;Ruimtevaart&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>Internationaal Ruimtestation ISS</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Jan Haelters&lt;br&gt;&lt;small&gt;Technologie &amp; Wetenschap&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>Jan Haelters</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Jan Loos&lt;br&gt;&lt;small&gt;Milieu &amp; Klimaat&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>Jan Loos</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; KMSKA&lt;br&gt;&lt;small&gt;Expo&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>KMSKA</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Natuur en Bos&lt;br&gt;&lt;small&gt;Milieu &amp; Klimaat&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>Natuur en Bos</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Noëlla')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Noëlla</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Omgeving')"
onmouseout="tooltip.hide()">
<td><div style="width: 50%"></div></td>
<td>Omgeving</td>
</tr>
<tr
onmouseover="tooltip.show('4 &nbsp; Peter Bruyninckx van het Vlaams Verkeerscentrum&lt;br&gt;&lt;small&gt;Mobiliteit&lt;/small&gt;')"
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>

View File

@@ -13,52 +13,16 @@ html {
body {
border: 0px;
margin: 0px;
padding: 0px 0px 8em 0px;
margin: 2em;
padding: 0px 0px 2em 0px;
color: black;
background-color: #fcfffc;
}
.main {
margin: 2em 0px 0px 0px;
padding: 0.4em 0.2em;
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;
margin: 1em 0px 0px 0px;
width: 100%;
overflow-x: auto;
}
h1 {
@@ -66,7 +30,8 @@ h1 {
}
h1,
h2 {
h2,
h3 {
color: #62757f;
letter-spacing: 0.1em;
margin-top: 2em;
@@ -76,6 +41,11 @@ h1 {
font-weight: 200;
}
h2 {
line-height: 120%;
font-size: x-large;
font-weight: 300;
}
h3 {
margin-top: 0px;
font-size: large;
font-weight: 400;
@@ -94,23 +64,106 @@ a:hover {
text-decoration: underline;
}
table {
border-collapse: collapse;
border-spacing: 2em;
div.option {
display: inline-block;
margin-right: 2em;
}
td {
padding: 0.2em 0.5em 0.2em 0px;
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;
}
tr > td:first-child {
table table tr > td:first-child {
width: 100px;
min-width: 100px;
padding-right: 0.5em;
}
td > div {
table.bron td > div,
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;
}
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;
}

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;', '&amp;#x27;')
omt0 = ''' onmouseover="tooltip.show('{} &nbsp; {}')" onmouseout="tooltip.hide()"'''
omt1 = ''' onmouseover="tooltip.show('{} &nbsp; {}&lt;br&gt;&lt;small&gt;{}&lt;/small&gt;')" 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>&nbsp;</tr>\n')
sys.stdout.buffer.write(b'</table>\n</div>\n\n')

View File

@@ -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 &mdash; 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 &nbsp; Sjoerd Sjoerdsma&lt;br&gt;&lt;small&gt;Politiek, Landelijk&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Sjoerd Sjoerdsma</td>
</tr>
<tr
onmouseover="tooltip.show('23 &nbsp; Wireless Festival&lt;br&gt;&lt;small&gt;Entertainment, muziek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Wireless Festival</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; Dean James&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 83%"></div></td>
<td>Dean James</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; Inspectie Gezondheidszorg en Jeugd&lt;br&gt;&lt;small&gt;binnenland, Landelijk&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 83%"></div></td>
<td>Inspectie Gezondheidszorg en Jeugd</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; Jeremy Hansen&lt;br&gt;&lt;small&gt;Buitenland, Artemis II, maan, wetenschap&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 83%"></div></td>
<td>Jeremy Hansen</td>
</tr>
<tr
onmouseover="tooltip.show('17 &nbsp; Artemis II&lt;br&gt;&lt;small&gt;Buitenland, nasa, tech&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 74%"></div></td>
<td>Artemis II</td>
</tr>
<tr
onmouseover="tooltip.show('17 &nbsp; Lieke Klaver&lt;br&gt;&lt;small&gt;sport-overig, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 74%"></div></td>
<td>Lieke Klaver</td>
</tr>
<tr
onmouseover="tooltip.show('17 &nbsp; Progressief Nederland&lt;br&gt;&lt;small&gt;Landelijk, GroenLinks, politiek, pro, PvdA&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 74%"></div></td>
<td>Progressief Nederland</td>
</tr>
<tr
onmouseover="tooltip.show('17 &nbsp; Tjaronn Chery&lt;br&gt;&lt;small&gt;Voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 74%"></div></td>
<td>Tjaronn Chery</td>
</tr>
<tr
onmouseover="tooltip.show('16 &nbsp; Artemis II-missie&lt;br&gt;&lt;small&gt;Buitenland, wetenschap&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 70%"></div></td>
<td>Artemis II-missie</td>
</tr>
<tr
onmouseover="tooltip.show('16 &nbsp; Christina Koch&lt;br&gt;&lt;small&gt;Buitenland, Artemis II, maan, wetenschap&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 70%"></div></td>
<td>Christina Koch</td>
</tr>
<tr
onmouseover="tooltip.show('16 &nbsp; Popjournalist&lt;br&gt;&lt;small&gt;Cultuur, Google Nieuws, muziek, Oncko van Kammen, Oncko van Kammen - Popjournalist, www.onckovankammen.nl&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 70%"></div></td>
<td>Popjournalist</td>
</tr>
<tr
onmouseover="tooltip.show('16 &nbsp; Victor Glover&lt;br&gt;&lt;small&gt;Buitenland, Artemis II, wetenschap&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 70%"></div></td>
<td>Victor Glover</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Erling Haaland&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Erling Haaland</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Etienne Vaessen&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Etienne Vaessen</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Gennaro Gattuso&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Gennaro Gattuso</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; GL-PvdA&lt;br&gt;&lt;small&gt;Landelijk, politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>GL-PvdA</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Hansi Flick&lt;br&gt;&lt;small&gt;Voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Hansi Flick</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; Heil Hitler&lt;br&gt;&lt;small&gt;Entertainment, muziek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Heil Hitler</td>
</tr>
<tr
onmouseover="tooltip.show('15 &nbsp; IDF&lt;br&gt;&lt;small&gt;Buitenland&lt;/small&gt;')"
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 &nbsp; Ali B.&lt;br&gt;&lt;small&gt;Entertainment, muziek, Ali B, hoger beroep, rapper&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Ali B.</td>
</tr>
<tr
onmouseover="tooltip.show('24 &nbsp; TORUN&lt;br&gt;&lt;small&gt;Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 92%"></div></td>
<td>TORUN</td>
</tr>
<tr
onmouseover="tooltip.show('23 &nbsp; Tadej Pogacar&lt;br&gt;&lt;small&gt;wielrennen, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 88%"></div></td>
<td>Tadej Pogacar</td>
</tr>
<tr
onmouseover="tooltip.show('23 &nbsp; Ten Damme&lt;br&gt;&lt;small&gt;Entertainment, muziek, Ali B&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 88%"></div></td>
<td>Ten Damme</td>
</tr>
<tr
onmouseover="tooltip.show('22 &nbsp; Brian Brobbey&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 85%"></div></td>
<td>Brian Brobbey</td>
</tr>
<tr
onmouseover="tooltip.show('22 &nbsp; Donyell Malen&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 85%"></div></td>
<td>Donyell Malen</td>
</tr>
<tr
onmouseover="tooltip.show('22 &nbsp; Julie Ng&lt;br&gt;&lt;small&gt;Entertainment&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 85%"></div></td>
<td>Julie Ng</td>
</tr>
<tr
onmouseover="tooltip.show('21 &nbsp; Carola Schouten&lt;br&gt;&lt;small&gt;Landelijk, explosie, gemeenteraadsverkiezingen, Politiek, synagoge&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 81%"></div></td>
<td>Carola Schouten</td>
</tr>
<tr
onmouseover="tooltip.show('21 &nbsp; Westerwolde&lt;br&gt;&lt;small&gt;Landelijk, COA, asielcrisis, binnenland, politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 81%"></div></td>
<td>Westerwolde</td>
</tr>
<tr
onmouseover="tooltip.show('20 &nbsp; Babi Pangang&lt;br&gt;&lt;small&gt;Entertainment&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 77%"></div></td>
<td>Babi Pangang</td>
</tr>
<tr
onmouseover="tooltip.show('20 &nbsp; Noa Lang&lt;br&gt;&lt;small&gt;Voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 77%"></div></td>
<td>Noa Lang</td>
</tr>
<tr
onmouseover="tooltip.show('20 &nbsp; One Battle After Another&lt;br&gt;&lt;small&gt;Entertainment, film&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 77%"></div></td>
<td>One Battle After Another</td>
</tr>
<tr
onmouseover="tooltip.show('20 &nbsp; Red Bull-coureur&lt;br&gt;&lt;small&gt;formule-1, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 77%"></div></td>
<td>Red Bull-coureur</td>
</tr>
<tr
onmouseover="tooltip.show('20 &nbsp; Remco Evenepoel&lt;br&gt;&lt;small&gt;wielrennen, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 77%"></div></td>
<td>Remco Evenepoel</td>
</tr>
<tr
onmouseover="tooltip.show('20 &nbsp; Videoland&lt;br&gt;&lt;small&gt;Entertainment, film, media&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 77%"></div></td>
<td>Videoland</td>
</tr>
<tr
onmouseover="tooltip.show('20 &nbsp; Wout van Aert&lt;br&gt;&lt;small&gt;wielrennen, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 77%"></div></td>
<td>Wout van Aert</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; Bart Swier&lt;br&gt;&lt;small&gt;Entertainment, hoger beroep, muziek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 73%"></div></td>
<td>Bart Swier</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; NTR&lt;br&gt;&lt;small&gt;Entertainment&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 73%"></div></td>
<td>NTR</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; People&lt;br&gt;&lt;small&gt;Entertainment&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 73%"></div></td>
<td>People</td>
</tr>
<tr
onmouseover="tooltip.show('19 &nbsp; Politico&lt;br&gt;&lt;small&gt;Buitenland, cafeyn, Internationaal, trumpdag, midden-oostenconflict&lt;/small&gt;')"
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 &nbsp; Jonas Vingegaard&lt;br&gt;&lt;small&gt;wielrennen, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Jonas Vingegaard</td>
</tr>
<tr
onmouseover="tooltip.show('32 &nbsp; Lando Norris&lt;br&gt;&lt;small&gt;formule-1, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 89%"></div></td>
<td>Lando Norris</td>
</tr>
<tr
onmouseover="tooltip.show('30 &nbsp; Jill Helena&lt;br&gt;&lt;small&gt;Entertainment, muziek, Ali B, hoger beroep&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 83%"></div></td>
<td>Jill Helena</td>
</tr>
<tr
onmouseover="tooltip.show('30 &nbsp; Oscar Piastri&lt;br&gt;&lt;small&gt;formule-1, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 83%"></div></td>
<td>Oscar Piastri</td>
</tr>
<tr
onmouseover="tooltip.show('29 &nbsp; Jeroen Kampschreur&lt;br&gt;&lt;small&gt;Sport, sport-overig&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 81%"></div></td>
<td>Jeroen Kampschreur</td>
</tr>
<tr
onmouseover="tooltip.show('28 &nbsp; Charles Leclerc&lt;br&gt;&lt;small&gt;formule-1, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 78%"></div></td>
<td>Charles Leclerc</td>
</tr>
<tr
onmouseover="tooltip.show('28 &nbsp; Fallout&lt;br&gt;&lt;small&gt;trumpdag&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 78%"></div></td>
<td>Fallout</td>
</tr>
<tr
onmouseover="tooltip.show('28 &nbsp; NPO Luister&lt;br&gt;&lt;small&gt;podcast&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 78%"></div></td>
<td>NPO Luister</td>
</tr>
<tr
onmouseover="tooltip.show('27 &nbsp; Isack Hadjar&lt;br&gt;&lt;small&gt;formule-1, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 75%"></div></td>
<td>Isack Hadjar</td>
</tr>
<tr
onmouseover="tooltip.show('27 &nbsp; Suzuka&lt;br&gt;&lt;small&gt;formule-1, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 75%"></div></td>
<td>Suzuka</td>
</tr>
<tr
onmouseover="tooltip.show('26 &nbsp; B.&lt;br&gt;&lt;small&gt;Landelijk, misdaad, cold case, Den Haag&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 72%"></div></td>
<td>B.</td>
</tr>
<tr
onmouseover="tooltip.show('25 &nbsp; Closing Time&lt;br&gt;&lt;small&gt;Cultuur &amp; Media&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 69%"></div></td>
<td>Closing Time</td>
</tr>
<tr
onmouseover="tooltip.show('25 &nbsp; NRK&lt;br&gt;&lt;small&gt;Koningshuis&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 69%"></div></td>
<td>NRK</td>
</tr>
<tr
onmouseover="tooltip.show('25 &nbsp; Paralympische Winterspelen&lt;br&gt;&lt;small&gt;Sport, sport-overig&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 69%"></div></td>
<td>Paralympische Winterspelen</td>
</tr>
<tr
onmouseover="tooltip.show('24 &nbsp; AFAS Live&lt;br&gt;&lt;small&gt;Entertainment, muziek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>AFAS Live</td>
</tr>
<tr
onmouseover="tooltip.show('24 &nbsp; ANP Verkiezingsdienst&lt;br&gt;&lt;small&gt;Landelijk, gemeenteraadsverkiezingen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>ANP Verkiezingsdienst</td>
</tr>
<tr
onmouseover="tooltip.show('24 &nbsp; Antonelli&lt;br&gt;&lt;small&gt;formule-1, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Antonelli</td>
</tr>
<tr
onmouseover="tooltip.show('24 &nbsp; Asiel&lt;br&gt;&lt;small&gt;Landelijk, asiel, asielcrisis&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Asiel</td>
</tr>
<tr
onmouseover="tooltip.show('24 &nbsp; Axios&lt;br&gt;&lt;small&gt;Buitenland, midden-oostenconflict, cafeyn, Internationaal, Iran&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Axios</td>
</tr>
<tr
onmouseover="tooltip.show('24 &nbsp; Telegram&lt;br&gt;&lt;small&gt;Buitenland, Rusland, spanningen-oekraine&lt;/small&gt;')"
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 &nbsp; Hormuz&lt;br&gt;&lt;small&gt;Zakelijk, midden-oostenconflict, Iran, cafeyn, Internationaal, trumpdag&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Hormuz</td>
</tr>
<tr
onmouseover="tooltip.show('44 &nbsp; Revolutionaire Garde&lt;br&gt;&lt;small&gt;Buitenland, Iran, cafeyn, Internationaal, midden-oostenconflict&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 90%"></div></td>
<td>Revolutionaire Garde</td>
</tr>
<tr
onmouseover="tooltip.show('44 &nbsp; Torun&lt;br&gt;&lt;small&gt;Sport, sport-overig&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 90%"></div></td>
<td>Torun</td>
</tr>
<tr
onmouseover="tooltip.show('40 &nbsp; Mojtaba Khamenei&lt;br&gt;&lt;small&gt;Buitenland, Iran, midden-oostenconflict, cafeyn, Internationaal, trumpdag&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 82%"></div></td>
<td>Mojtaba Khamenei</td>
</tr>
<tr
onmouseover="tooltip.show('39 &nbsp; Keir Starmer&lt;br&gt;&lt;small&gt;Buitenland, midden-oostenconflict&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 80%"></div></td>
<td>Keir Starmer</td>
</tr>
<tr
onmouseover="tooltip.show('39 &nbsp; Mathieu van der Poel&lt;br&gt;&lt;small&gt;wielrennen, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 80%"></div></td>
<td>Mathieu van der Poel</td>
</tr>
<tr
onmouseover="tooltip.show('38 &nbsp; Conference League&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 78%"></div></td>
<td>Conference League</td>
</tr>
<tr
onmouseover="tooltip.show('36 &nbsp; Berendsen&lt;br&gt;&lt;small&gt;Landelijk, Iran, midden-oostenconflict, politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 73%"></div></td>
<td>Berendsen</td>
</tr>
<tr
onmouseover="tooltip.show('35 &nbsp; ANP/RTR/AFP&lt;br&gt;&lt;small&gt;Buitenland&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 71%"></div></td>
<td>ANP/RTR/AFP</td>
</tr>
<tr
onmouseover="tooltip.show('34 &nbsp; Bart van den Brink&lt;br&gt;&lt;small&gt;Landelijk, asielcrisis&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 69%"></div></td>
<td>Bart van den Brink</td>
</tr>
<tr
onmouseover="tooltip.show('34 &nbsp; Dilan Yeşilgöz&lt;br&gt;&lt;small&gt;Landelijk&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 69%"></div></td>
<td>Dilan Yeşilgöz</td>
</tr>
<tr
onmouseover="tooltip.show('33 &nbsp; VAE&lt;br&gt;&lt;small&gt;Buitenland, cafeyn, Internationaal, buitenland, Iran, midden-oostenconflict, oorlog&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>VAE</td>
</tr>
<tr
onmouseover="tooltip.show('33 &nbsp; X.&lt;br&gt;&lt;small&gt;Buitenland, formule-1, Iran&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>X.</td>
</tr>
<tr
onmouseover="tooltip.show('32 &nbsp; Klimaat&lt;br&gt;&lt;small&gt;Landelijk, klimaat, aardbeving, Eleveld, Iran, oorlog&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 65%"></div></td>
<td>Klimaat</td>
</tr>
<tr
onmouseover="tooltip.show('31 &nbsp; Keuken&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 63%"></div></td>
<td>Keuken</td>
</tr>
<tr
onmouseover="tooltip.show('31 &nbsp; Kimi Antonelli&lt;br&gt;&lt;small&gt;formule-1, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 63%"></div></td>
<td>Kimi Antonelli</td>
</tr>
<tr
onmouseover="tooltip.show('31 &nbsp; VAR&lt;br&gt;&lt;small&gt;voetbal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 63%"></div></td>
<td>VAR</td>
</tr>
<tr
onmouseover="tooltip.show('30 &nbsp; Jan Paternotte&lt;br&gt;&lt;small&gt;Politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 61%"></div></td>
<td>Jan Paternotte</td>
</tr>
<tr
onmouseover="tooltip.show('30 &nbsp; Mirjam Bikker&lt;br&gt;&lt;small&gt;Politiek, Landelijk&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 61%"></div></td>
<td>Mirjam Bikker</td>
</tr>
<tr
onmouseover="tooltip.show('30 &nbsp; Richard de Mos&lt;br&gt;&lt;small&gt;Landelijk, gemeenteraadsverkiezingen, politiek, uitgelicht&lt;/small&gt;')"
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 &nbsp; Kyiv&lt;br&gt;&lt;small&gt;Buitenland, Oekraïne, spanningen-oekraine&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Kyiv</td>
</tr>
<tr
onmouseover="tooltip.show('58 &nbsp; TikTok&lt;br&gt;&lt;small&gt;Entertainment, tech, cafeyn&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>TikTok</td>
</tr>
<tr
onmouseover="tooltip.show('56 &nbsp; JA21&lt;br&gt;&lt;small&gt;Landelijk, politiek, Tweede Kamer, Politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 97%"></div></td>
<td>JA21</td>
</tr>
<tr
onmouseover="tooltip.show('53 &nbsp; Iraanse Revolutionaire Garde&lt;br&gt;&lt;small&gt;Buitenland, Iran, midden-oostenconflict&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 91%"></div></td>
<td>Iraanse Revolutionaire Garde</td>
</tr>
<tr
onmouseover="tooltip.show('52 &nbsp; ANP/AFP/RTR&lt;br&gt;&lt;small&gt;Buitenland&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 90%"></div></td>
<td>ANP/AFP/RTR</td>
</tr>
<tr
onmouseover="tooltip.show('49 &nbsp; Truth Social&lt;br&gt;&lt;small&gt;Buitenland, midden-oostenconflict, Trump&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 84%"></div></td>
<td>Truth Social</td>
</tr>
<tr
onmouseover="tooltip.show('46 &nbsp; Tom Berendsen&lt;br&gt;&lt;small&gt;Landelijk, midden-oostenconflict, politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 79%"></div></td>
<td>Tom Berendsen</td>
</tr>
<tr
onmouseover="tooltip.show('43 &nbsp; Groep Markuszower&lt;br&gt;&lt;small&gt;Politiek, Iran, Mona Keijzer, Tweede Kamer&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 74%"></div></td>
<td>Groep Markuszower</td>
</tr>
<tr
onmouseover="tooltip.show('42 &nbsp; Henk Vermeer&lt;br&gt;&lt;small&gt;Politiek, BBB&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 72%"></div></td>
<td>Henk Vermeer</td>
</tr>
<tr
onmouseover="tooltip.show('42 &nbsp; Mona Keijzer&lt;br&gt;&lt;small&gt;Politiek, Landelijk, BBB&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 72%"></div></td>
<td>Mona Keijzer</td>
</tr>
<tr
onmouseover="tooltip.show('41 &nbsp; David van Weel&lt;br&gt;&lt;small&gt;Landelijk, binnenland, Amsterdam&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 71%"></div></td>
<td>David van Weel</td>
</tr>
<tr
onmouseover="tooltip.show('39 &nbsp; George Russell&lt;br&gt;&lt;small&gt;formule-1, Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>George Russell</td>
</tr>
<tr
onmouseover="tooltip.show('39 &nbsp; Jordan Stolz&lt;br&gt;&lt;small&gt;Sport, schaatsen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Jordan Stolz</td>
</tr>
<tr
onmouseover="tooltip.show('39 &nbsp; Leyen&lt;br&gt;&lt;small&gt;Buitenland, midden-oostenconflict, EU&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Leyen</td>
</tr>
<tr
onmouseover="tooltip.show('39 &nbsp; Ursula von&lt;br&gt;&lt;small&gt;Buitenland, midden-oostenconflict, EU&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 67%"></div></td>
<td>Ursula von</td>
</tr>
<tr
onmouseover="tooltip.show('38 &nbsp; Suzanne Schulting&lt;br&gt;&lt;small&gt;Sport, schaatsen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 66%"></div></td>
<td>Suzanne Schulting</td>
</tr>
<tr
onmouseover="tooltip.show('37 &nbsp; Hegseth&lt;br&gt;&lt;small&gt;cafeyn, Internationaal, Buitenland, Iran, midden-oostenconflict&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 64%"></div></td>
<td>Hegseth</td>
</tr>
<tr
onmouseover="tooltip.show('37 &nbsp; TeamNL&lt;br&gt;&lt;small&gt;Sport&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 64%"></div></td>
<td>TeamNL</td>
</tr>
<tr
onmouseover="tooltip.show('36 &nbsp; Internationaal Energieagentschap&lt;br&gt;&lt;small&gt;Zakelijk, economie, Iran&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 62%"></div></td>
<td>Internationaal Energieagentschap</td>
</tr>
<tr
onmouseover="tooltip.show('36 &nbsp; Jenning de Boo&lt;br&gt;&lt;small&gt;schaatsen, Sport, wekdienst&lt;/small&gt;')"
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 &nbsp; Rob Jetten&lt;br&gt;&lt;small&gt;Landelijk, politiek, premier&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 100%"></div></td>
<td>Rob Jetten</td>
</tr>
<tr
onmouseover="tooltip.show('114 &nbsp; Jetten&lt;br&gt;&lt;small&gt;Landelijk, politiek, AOW, kabinet, Politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 86%"></div></td>
<td>Jetten</td>
</tr>
<tr
onmouseover="tooltip.show('106 &nbsp; Jeffrey Epstein&lt;br&gt;&lt;small&gt;Buitenland, Epstein&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 80%"></div></td>
<td>Jeffrey Epstein</td>
</tr>
<tr
onmouseover="tooltip.show('81 &nbsp; Straat van Hormuz&lt;br&gt;&lt;small&gt;Zakelijk, economie, Iran, cafeyn, Internationaal, trumpdag&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 61%"></div></td>
<td>Straat van Hormuz</td>
</tr>
<tr
onmouseover="tooltip.show('69 &nbsp; Femke Kok&lt;br&gt;&lt;small&gt;Sport, schaatsen, wekdienst&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 52%"></div></td>
<td>Femke Kok</td>
</tr>
<tr
onmouseover="tooltip.show('66 &nbsp; AI&lt;br&gt;&lt;small&gt;Zakelijk, tweakers, kunstmatige intelligentie, cafeyn, Internationaal&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 50%"></div></td>
<td>AI</td>
</tr>
<tr
onmouseover="tooltip.show('64 &nbsp; Marius Borg Høiby&lt;br&gt;&lt;small&gt;Koningshuis&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 48%"></div></td>
<td>Marius Borg Høiby</td>
</tr>
<tr
onmouseover="tooltip.show('61 &nbsp; Antoinette Rijpma-de Jong&lt;br&gt;&lt;small&gt;Sport, schaatsen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 46%"></div></td>
<td>Antoinette Rijpma-de Jong</td>
</tr>
<tr
onmouseover="tooltip.show('60 &nbsp; Marijke Groenewoud&lt;br&gt;&lt;small&gt;Sport, schaatsen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 45%"></div></td>
<td>Marijke Groenewoud</td>
</tr>
<tr
onmouseover="tooltip.show('56 &nbsp; Høiby&lt;br&gt;&lt;small&gt;Koningshuis&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 42%"></div></td>
<td>Høiby</td>
</tr>
<tr
onmouseover="tooltip.show('56 &nbsp; Jutta Leerdam&lt;br&gt;&lt;small&gt;Sport, schaatsen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 42%"></div></td>
<td>Jutta Leerdam</td>
</tr>
<tr
onmouseover="tooltip.show('56 &nbsp; Xandra Velzeboer&lt;br&gt;&lt;small&gt;Sport, olympische-spelen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 42%"></div></td>
<td>Xandra Velzeboer</td>
</tr>
<tr
onmouseover="tooltip.show('55 &nbsp; GroenLinks-PvdA&lt;br&gt;&lt;small&gt;Landelijk, Tweede Kamer, politiek&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 41%"></div></td>
<td>GroenLinks-PvdA</td>
</tr>
<tr
onmouseover="tooltip.show('55 &nbsp; Jens van &amp;#x27;t Wout&lt;br&gt;&lt;small&gt;Sport, olympische-spelen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 41%"></div></td>
<td>Jens van &#x27;t Wout</td>
</tr>
<tr
onmouseover="tooltip.show('55 &nbsp; Odido&lt;br&gt;&lt;small&gt;Zakelijk, tech&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 41%"></div></td>
<td>Odido</td>
</tr>
<tr
onmouseover="tooltip.show('53 &nbsp; Volodymyr Zelensky&lt;br&gt;&lt;small&gt;Buitenland, spanningen-oekraine&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 40%"></div></td>
<td>Volodymyr Zelensky</td>
</tr>
<tr
onmouseover="tooltip.show('53 &nbsp; Zelensky&lt;br&gt;&lt;small&gt;Buitenland, Oekraïne, spanningen-oekraine&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 40%"></div></td>
<td>Zelensky</td>
</tr>
<tr
onmouseover="tooltip.show('51 &nbsp; Jorrit Bergsma&lt;br&gt;&lt;small&gt;Sport, olympische-spelen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 38%"></div></td>
<td>Jorrit Bergsma</td>
</tr>
<tr
onmouseover="tooltip.show('50 &nbsp; Andrew Mountbatten-Windsor&lt;br&gt;&lt;small&gt;Koningshuis, Andrew&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 38%"></div></td>
<td>Andrew Mountbatten-Windsor</td>
</tr>
<tr
onmouseover="tooltip.show('49 &nbsp; Joy Beune&lt;br&gt;&lt;small&gt;Sport, schaatsen&lt;/small&gt;')"
onmouseout="tooltip.hide()"
class="tags">
<td><div style="width: 37%"></div></td>
<td>Joy Beune</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>