fixed 404 error on NFO downlaod

This commit is contained in:
Yevhen Odynets
2026-10-01 19:39:10 +03:00
parent 9812bc3552
commit 04b5bfa89d
+12 -8
View File
@@ -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 у <nfo_dir>/<перша літера title в lower>/<title>.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 {