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