// NNM-Club torrent filess mass downloader // Created for Uploaders group // Copyright (c) 2012-2019 Vladimir "fat0troll" Hodakov package fetcherv1 import ( "io" "io/ioutil" "net/http" "strconv" "time" "golang.org/x/text/encoding/charmap" "golang.org/x/text/transform" ) func downloadAdditionalPages() { for i := range forumPagesLinks { forumPage, _ := strconv.Atoi(i) dlog.Info().Int("номер страницы", forumPage).Msg("Скачивается ещё одна страница форума") pageFile, err := dumpForumPage("https://" + c.Config.URL + "/forum/" + forumPagesLinks[i]) if err != nil { dlog.Fatal().Err(err).Msg("Не удалось загрузить страницу форума") } _ = setQuerier(pageFile, "forumPage", forumPage) } } func dumpForumPage(url string) (string, error) { req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { return "", err } for i := range c.Cookies { req.AddCookie(c.Cookies[i]) } var resp *http.Response retryCount := 0 for { if retryCount < 5 { resp, err = dclient.Do(req) if err != nil { if uberDebug { dlog.Debug().Err(err).Int("попытка", retryCount+1).Msg("Не удалось получить данные, пытаемся ещё раз") } time.Sleep(time.Second) retryCount++ } else { break } } else { return "", err } } defer resp.Body.Close() tempF, err := ioutil.TempFile("", "massdl-*") if err != nil { return "", err } defer tempF.Close() respInUTF8 := transform.NewReader(resp.Body, charmap.Windows1251.NewDecoder()) _, err = io.Copy(tempF, respInUTF8) if err != nil { return "", err } return tempF.Name(), nil }