func DownloadPowerFile(url string) *PowerCatalog {
list := PowerCatalog{}
// скачиваем файл по ссылке и сохраняем в папку files
err := DownloadFilePower("Powerplant_Talapai.yml", url)
if err != nil {
fmt.Println(err)
return &list
}
var path string
path = "/root/go-workpath/src/stocks/files/"
// переконвертируем файл
cmd := exec.Command("iconv", "-f", "cp1251", "-t", "utf8", path + "Powerplant_Talapai.yml", "-o", path + "Powerplant_Talapai8.yml")
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Printf("cmd.Run() failed with %s\n", err)
}
fmt.Printf("combined out:\n%s\n", string(out))
// из файла Powerplant_Talapai8.yml убираем строку encoding="windows-1251". Надо проверит в наличие программу SED
cmd2 := exec.Command("sed", "-i", "s/ encoding=\"windows-1251\"//", path + "Powerplant_Talapai8.yml")
out2, err2 := cmd2.CombinedOutput()
if err2 != nil {
fmt.Printf("cmd.Run() failed with %s\n", err2)
}
fmt.Printf("combined out:\n%s\n", string(out2))
// открытие файла
resp, err := os.Open(path + "Powerplant_Talapai8.yml")
if(err != nil) {
fmt.Println("Невозможно найти файл или открыть")
return &list
} else {
defer resp.Close()
body, err := ioutil.ReadAll(resp)
if err != nil {
return &list
}
newbody := strings.Replace(string(body), "<offers>", "", -1)
newbody = strings.Replace(newbody, "</offers>", "", -1)
err = xml.Unmarshal([]byte(newbody), &list)
if err != nil {
fmt.Println(err)
return &list
}
return &list
}
}
func DownloadFilePower(filepath string, url string) error {
// Create the file
out, err := os.Create("files/"+filepath)
if err != nil {
return err
}
defer out.Close()
// Get the data
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
// Write the body to file
_, err = io.Copy(out, resp.Body)
if err != nil {
return err
}
return nil
}
func DownloadPowerFile(url string) *PowerCatalog {
list := PowerCatalog{}
// скачиваем файл по ссылке и сохраняем в папку files
err := DownloadFilePower("Powerplant_Talapai.yml", url)
if err != nil {
fmt.Println(err)
return &list
}
var path string
path = "/root/go-workpath/src/stocks/files/"
// переконвертируем файл
cmd := exec.Command("iconv", "-f", "cp1251", "-t", "utf8", path + "Powerplant_Talapai.yml", "-o", path + "Powerplant_Talapai8.yml")
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Printf("cmd.Run() failed with %s\n", err)
}
fmt.Printf("combined out:\n%s\n", string(out))
// из файла Powerplant_Talapai8.yml убираем строку encoding="windows-1251". Надо проверит в наличие программу SED
cmd2 := exec.Command("sed", "-i", "s/ encoding=\"windows-1251\"//", path + "Powerplant_Talapai8.yml")
out2, err2 := cmd2.CombinedOutput()
if err2 != nil {
fmt.Printf("cmd.Run() failed with %s\n", err2)
}
fmt.Printf("combined out:\n%s\n", string(out2))
// открытие файла
resp, err := os.Open(path + "Powerplant_Talapai8.yml")
if(err != nil) {
fmt.Println("Невозможно найти файл или открыть")
return &list
} else {
defer resp.Close()
body, err := ioutil.ReadAll(resp)
if err != nil {
return &list
}
newbody := strings.Replace(string(body), "<offers>", "", -1)
newbody = strings.Replace(newbody, "</offers>", "", -1)
err = xml.Unmarshal([]byte(newbody), &list)
if err != nil {
fmt.Println(err)
return &list
}
return &list
}
}
func DownloadFilePower(filepath string, url string) error {
// Create the file
out, err := os.Create("files/"+filepath)
if err != nil {
return err
}
defer out.Close()
// Get the data
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
// Write the body to file
_, err = io.Copy(out, resp.Body)
if err != nil {
return err
}
return nil
}