Fix linter warnings
This commit is contained in:
parent
f30fb4dc67
commit
fd184225f1
@ -5,7 +5,7 @@ linters:
|
||||
disable:
|
||||
- gochecknoglobals
|
||||
- funlen
|
||||
- wsl
|
||||
- gomnd
|
||||
linters-settings:
|
||||
lll:
|
||||
line-length: 120
|
||||
|
@ -64,9 +64,11 @@ func New(cc *context.Context) {
|
||||
func Process() {
|
||||
uberDebug, _ = c.Flagger.GetBoolValue("fetcherDebug")
|
||||
forumID, _ := c.Flagger.GetIntValue("forum")
|
||||
|
||||
if forumID == 0 {
|
||||
dlog.Fatal().Msg("Номер форума не указан. Используйте ключ -forum XXX, чтобы указать номер форума")
|
||||
}
|
||||
|
||||
outputDirPathPrefix, _ := c.Flagger.GetStringValue("outputDir")
|
||||
|
||||
dlog.Info().Int("forum ID", forumID).Msg("Получен ID форума, начинаем работу...")
|
||||
|
@ -29,6 +29,7 @@ func download(topic *forumTopic) {
|
||||
|
||||
dlog.Info().Str("название топика", topic.Name).Int("количество топиков", len(forumTopics)).
|
||||
Int("номер топика", forumTopicInProgress).Msg("Скачивается топик")
|
||||
|
||||
fileName, err := downloadFile(topic.Link, true)
|
||||
if err != nil {
|
||||
dlog.Error().Err(err).Str("название топика", topic.Name).Msg("Не удалось загрузить страницу топика. Пропуск")
|
||||
|
@ -22,21 +22,26 @@ func moveFile(sourcePath, destPath string) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("couldn't open source file: %s", err)
|
||||
}
|
||||
|
||||
outputFile, err := os.Create(destPath)
|
||||
if err != nil {
|
||||
inputFile.Close()
|
||||
return fmt.Errorf("couldn't open destination file: %s", err)
|
||||
}
|
||||
defer outputFile.Close()
|
||||
|
||||
_, err = io.Copy(outputFile, inputFile)
|
||||
inputFile.Close()
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("writing to output file failed: %s", err)
|
||||
}
|
||||
|
||||
// The copy was successful, so now delete the original file
|
||||
err = os.Remove(sourcePath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed removing original file: %s", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ var (
|
||||
// checkLoginness checks if downloaded page belongs to user
|
||||
func checkLoginness(querier *goquery.Document) bool {
|
||||
authorized := false
|
||||
|
||||
querier.Find(".mainmenu").Each(func(i int, sel *goquery.Selection) {
|
||||
if strings.Contains(sel.Text(), "Выход") {
|
||||
if strings.Contains(sel.Text(), c.Config.Username) {
|
||||
@ -39,11 +40,13 @@ func checkLoginness(querier *goquery.Document) bool {
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return authorized
|
||||
}
|
||||
|
||||
func getDownloadLink(querier *goquery.Document) string {
|
||||
var downloadLink string
|
||||
|
||||
querier.Find("a[rel=nofollow]").Each(func(i int, sel *goquery.Selection) {
|
||||
if strings.Contains(sel.Text(), "Скачать") {
|
||||
href, _ := sel.Attr("href")
|
||||
@ -61,7 +64,9 @@ func getForumName(querier *goquery.Document) string {
|
||||
func getLastModeratedDate(querier *goquery.Document) string {
|
||||
var dateValue time.Time
|
||||
var err error
|
||||
|
||||
haveDate := false
|
||||
|
||||
querier.Find("table.btTbl td.genmed").Each(func(i int, sel *goquery.Selection) {
|
||||
if strings.Contains(sel.Text(), "модератором") {
|
||||
date := strings.TrimPrefix(sel.Text(), " Оформление проверено модератором ")
|
||||
|
@ -37,7 +37,9 @@ func setQuerier(pageFile string, pageType string, page int) error {
|
||||
if !checkLoginness(querier) {
|
||||
return errors.New("получена анонимная страница")
|
||||
}
|
||||
|
||||
forumPages[page] = querier
|
||||
|
||||
default:
|
||||
return errors.New("неизвестный тип страницы")
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ func downloadAdditionalPages() {
|
||||
for i := range forumPagesLinks {
|
||||
forumPage, _ := strconv.Atoi(i)
|
||||
dlog.Info().Int("номер страницы", forumPage).Msg("Скачивается ещё одна страница форума")
|
||||
|
||||
pageFile, err := downloadFile("https://"+c.Config.URL+"/forum/"+forumPagesLinks[i], true)
|
||||
if err != nil {
|
||||
dlog.Fatal().Err(err).Msg("Не удалось загрузить страницу форума")
|
||||
@ -33,12 +34,14 @@ func downloadFile(url string, transformEncoding bool) (string, error) {
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
for i := range c.Cookies {
|
||||
req.AddCookie(c.Cookies[i])
|
||||
}
|
||||
|
||||
var resp *http.Response
|
||||
retryCount := 0
|
||||
var retryCount int = 0
|
||||
|
||||
for {
|
||||
if retryCount < 5 {
|
||||
resp, err = dclient.Do(req)
|
||||
@ -46,6 +49,7 @@ func downloadFile(url string, transformEncoding bool) (string, error) {
|
||||
if uberDebug {
|
||||
dlog.Debug().Err(err).Int("попытка", retryCount+1).Msg("Не удалось получить данные, пытаемся ещё раз")
|
||||
}
|
||||
|
||||
time.Sleep(time.Second)
|
||||
retryCount++
|
||||
} else {
|
||||
@ -55,6 +59,7 @@ func downloadFile(url string, transformEncoding bool) (string, error) {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
|
||||
tempF, err := ioutil.TempFile("", "massdl-*")
|
||||
@ -65,6 +70,7 @@ func downloadFile(url string, transformEncoding bool) (string, error) {
|
||||
|
||||
if transformEncoding {
|
||||
respInUTF8 := transform.NewReader(resp.Body, charmap.Windows1251.NewDecoder())
|
||||
|
||||
_, err = io.Copy(tempF, respInUTF8)
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
@ -21,22 +21,28 @@ func login() {
|
||||
// First enter is site name, second and third are user credentials
|
||||
scanner := bufio.NewScanner(os.Stdin)
|
||||
scanline := 0
|
||||
|
||||
for scanner.Scan() {
|
||||
scanline++
|
||||
|
||||
switch {
|
||||
case scanline == 1:
|
||||
c.Config.URL = scanner.Text()
|
||||
|
||||
dlog.Info().Msg("Введите имя пользователя")
|
||||
case scanline == 2:
|
||||
c.Config.Username = scanner.Text()
|
||||
|
||||
dlog.Info().Msg("Введите пароль")
|
||||
default:
|
||||
c.Config.Password = scanner.Text()
|
||||
}
|
||||
|
||||
if scanline == 3 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if scanner.Err() != nil {
|
||||
dlog.Fatal().Err(scanner.Err()).Msg("Не удалось прочитать пользовательский ввод.")
|
||||
}
|
||||
@ -78,19 +84,23 @@ func obtainCookies() {
|
||||
retryCount := 0
|
||||
var resp *http.Response
|
||||
var err error
|
||||
|
||||
for {
|
||||
if retryCount == 10 {
|
||||
dlog.Fatal().Err(err).Msg("Не удалось отправить запрос на авторизацию в NNM-Club.")
|
||||
}
|
||||
|
||||
resp, err = client.Do(req)
|
||||
if err != nil {
|
||||
dlog.Debug().Err(err).Int("попытка", retryCount).Msg("Не удалось отправить запрос, попробуем ещё раз")
|
||||
retryCount++
|
||||
|
||||
time.Sleep(2 * time.Second)
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
|
||||
if len(resp.Cookies()) == 0 {
|
||||
|
@ -21,6 +21,7 @@ import (
|
||||
// getMemoryUsage returns memory usage for logger.
|
||||
func (c *Context) getMemoryUsage(e *zerolog.Event, level zerolog.Level, message string) {
|
||||
var m runtime.MemStats
|
||||
|
||||
runtime.ReadMemStats(&m)
|
||||
|
||||
e.Str("memalloc", fmt.Sprintf("%dMB", m.Alloc/1024/1024))
|
||||
|
Loading…
Reference in New Issue
Block a user