package main import ( "encoding/json" "log" "net" "os" ) type Race struct { Id int `json:"id"` Hash string `json:"hash"` Name string `json:"name"` Category string `json:"category"` Indexer string `json:"indexer"` Type string `json:"type"` Title string `json:"title"` Size string `json:"size"` Files string `json:"files"` } type PreRace struct { Id int `json:"id"` Hash string `json:"hash"` Name string `json:"name"` Category string `json:"category"` Indexer string `json:"indexer"` Type string `json:"type"` Title string `json:"title"` Season string `json:"season"` Episode string `json:"episode"` Year string `json:"year"` Resolution string `json:"resolution"` Source string `json:"source"` HDR string `json:"hdr"` TorrentURL string `json:"torrenturl"` } func main() { file, err := os.OpenFile("/opt/RaceNotifier/racer.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0777) if err != nil { log.Fatal(err) } log.SetOutput(file) defer file.Close() log.Println("Starting Program") if os.Args[1] == "PreRace" || os.Args[1] == "Prerace" || os.Args[1] == "prerace" { // This is a pre race, need to find all the details of the release log.Printf("[PreRace] Prerace launched with details %v, %v, %v", os.Args[1], os.Args[2], os.Args[3]) r, _ := json.Marshal(PreRace{Hash: os.Args[2], Name: os.Args[3], Category: os.Args[4], Indexer: os.Args[5], Type: os.Args[6], Title: os.Args[7], Season: os.Args[8], Episode: os.Args[9], Year: os.Args[10], Resolution: os.Args[11], Source: os.Args[12], HDR: os.Args[13], TorrentURL: os.Args[14], }) tcpAddr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:3000") if err != nil { log.Fatal("Could not parse IP address:", err) } conn, err := net.DialTCP("tcp", nil, tcpAddr) if err != nil { log.Fatal("Could not connect:", err) } defer conn.Close() _, err = conn.Write([]byte(r)) if err != nil { log.Fatal("Could not send message: ", err) } log.Println("Message sent...") os.Exit(0) } else if os.Args[1] == "test" { for n, args := range os.Args { log.Println("Arg", n, "->", args) } // } else { // // This is the race thus the torrent has finished downloading. // r := Race{Name: os.Args[1], Category: os.Args[2], Content_Path: os.Args[3], Root_Path: os.Args[4], Save_Path: os.Args[5], Hash: os.Args[6], Size: os.Args[7], Files: os.Args[8]} // data, err := json.Marshal(r) // if err != nil { // fmt.Println(err) // } // err = os.WriteFile("test.json", data, 0644) // if err != nil { // log.Fatal(err) // } // tcpAddr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:3000") // if err != nil { // log.Fatal("Could not parse IP address:", err) // } // conn, err := net.DialTCP("tcp", nil, tcpAddr) // if err != nil { // log.Fatal("Could not connect:", err) // } // defer conn.Close() // _, err = conn.Write([]byte(data)) // if err != nil { // log.Fatal("Could not send message: ", err) // } // os.Exit(0) } }