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
6 years ago
|
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
|
||
|
}
|