From 04b5bfa89d11c33dfde4b8d6af99a157e8e7c1dd Mon Sep 17 00:00:00 2001 From: Yevhen Odynets <6lo5jp@proton.me> Date: Thu, 1 Oct 2026 19:39:10 +0300 Subject: [PATCH] fixed 404 error on NFO downlaod --- pkg/repository/prescene.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/pkg/repository/prescene.go b/pkg/repository/prescene.go index efc0284..8126686 100644 --- a/pkg/repository/prescene.go +++ b/pkg/repository/prescene.go @@ -256,11 +256,10 @@ func parseSingleScnlog(db *sqlx.DB) ([]model.ExternalSources, error) { } onclick := dom.GetAttribute(a, "onclick") spew.Dump("NFO-ANCHOR", dom.TextContent(a), onclick) - if m := regexp.MustCompile(`'([^']+)'`).FindStringSubmatch(onclick); len(m) > 1 { + if m := regexp.MustCompile(`'([^']+)'`).FindStringSubmatch(dom.GetAttribute(a, "onclick")); len(m) > 1 { nfoURL := "https://scnlog.me" + m[1] - spew.Dump("NFO-URL", nfoURL, "NFO_DIR", viper.GetString("nfo_dir")) - if err := saveNfo(src.Title, nfoURL); err != nil { - return nil, err + if err := saveNfo(src.Title, nfoURL, src.ExSource); err != nil { + slog.Warn("nfo not saved", "title", src.Title, "err", err) } } break @@ -323,7 +322,7 @@ func secondsToHMS(total int) string { } // saveNfo пише NFO у /<перша літера title в lower>/.nfo -func saveNfo(title, nfoURL string) error { +func saveNfo(title, nfoURL, referer string) error { dir := viper.GetString("nfo_dir") if dir == "" { return errors.New("nfo_dir is empty") @@ -335,7 +334,7 @@ func saveNfo(title, nfoURL string) error { return err } - data, err := fetchNfoBytes(nfoURL) + data, err := fetchNfoBytes(nfoURL, referer) if err != nil { return err } @@ -344,14 +343,19 @@ func saveNfo(title, nfoURL string) error { } // fetchNfoBytes завантажує сирі байти NFO (не HTML) у []byte. -func fetchNfoBytes(nfoURL string) ([]byte, error) { +func fetchNfoBytes(nfoURL, referer string) ([]byte, error) { client := &http.Client{Timeout: 30 * time.Second} req, err := http.NewRequest(http.MethodGet, nfoURL, nil) if err != nil { return nil, err } - req.Header.Set("User-Agent", "Mozilla/5.0 (compatible; resource-scraper)") + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36") + req.Header.Set("Accept", "*/*") + req.Header.Set("Accept-Language", "en-US,en;q=0.9") + if referer != "" { + req.Header.Set("Referer", referer) + } resp, err := client.Do(req) if err != nil {