123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package main
- import (
- "bufio"
- "encoding/json"
- "fmt"
- "net/http"
- "os"
- "strings"
- )
- func main() {
- url := "https://publicsuffix.org/list/public_suffix_list.dat"
- err := downloadAndParseTLDs(url, "tld.json")
- if err != nil {
- fmt.Println("Error:", err)
- }
- }
- func downloadAndParseTLDs(url, outputFilename string) error {
- resp, err := http.Get(url)
- if err != nil {
- return err
- }
- defer resp.Body.Close()
- tlds := make(map[string]bool)
- scanner := bufio.NewScanner(resp.Body)
- for scanner.Scan() {
- line := strings.TrimSpace(scanner.Text())
- if strings.HasPrefix(line, "//") || line == "" {
- continue
- }
- tlds[line] = true
- }
- if err := scanner.Err(); err != nil {
- return err
- }
- jsonData, err := json.MarshalIndent(tlds, "", " ")
- if err != nil {
- return err
- }
- outputFile, err := os.Create(outputFilename)
- if err != nil {
- return err
- }
- defer outputFile.Close()
- _, err = outputFile.Write(jsonData)
- if err != nil {
- return err
- }
- fmt.Println("TLDs successfully downloaded and saved to", outputFilename)
- return nil
- }
|