data2json.go: telling van bronnen

This commit is contained in:
Peter Kleiweg
2026-05-23 13:48:56 +02:00
parent 3a12056d5f
commit 0a43773ec8

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
}