You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"encoding/csv"
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"sort"
|
|
"strconv"
|
|
)
|
|
|
|
type torrent struct {
|
|
ID string `json:"id"`
|
|
Text string `json:"text"`
|
|
Len int `json:"len"`
|
|
S int `json:"s"`
|
|
L int `json:"l"`
|
|
C int `json:"c"`
|
|
}
|
|
|
|
func main() {
|
|
// https://www.dotnetperls.com/csv-go
|
|
f, err := os.Open("index-generator/dump.csv") // expects that you will run it from the parent dir
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
records, err := csv.NewReader(bufio.NewReader(f)).ReadAll()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
sort.Slice(records, func(i, j int) bool {
|
|
return toInt(records[i][3]) > toInt(records[j][3])
|
|
})
|
|
var topResults [500]torrent
|
|
for i, record := range records {
|
|
if i < 500 {
|
|
topResults[i] = torrent{string(record[0]), string(record[1]), toInt(record[2]), toInt(record[3]), toInt(record[4]), toInt(record[5])}
|
|
}
|
|
}
|
|
out, err := json.Marshal(topResults)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Println(string(out))
|
|
}
|
|
|
|
func toInt(s string) int {
|
|
i, err := strconv.Atoi(s)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
return i
|
|
}
|