fixed 404 error on NFO downlaod
This commit is contained in:
@@ -256,11 +256,10 @@ func parseSingleScnlog(db *sqlx.DB) ([]model.ExternalSources, error) {
|
|||||||
}
|
}
|
||||||
onclick := dom.GetAttribute(a, "onclick")
|
onclick := dom.GetAttribute(a, "onclick")
|
||||||
spew.Dump("NFO-ANCHOR", dom.TextContent(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]
|
nfoURL := "https://scnlog.me" + m[1]
|
||||||
spew.Dump("NFO-URL", nfoURL, "NFO_DIR", viper.GetString("nfo_dir"))
|
if err := saveNfo(src.Title, nfoURL, src.ExSource); err != nil {
|
||||||
if err := saveNfo(src.Title, nfoURL); err != nil {
|
slog.Warn("nfo not saved", "title", src.Title, "err", err)
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
@@ -323,7 +322,7 @@ func secondsToHMS(total int) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// saveNfo пише NFO у <nfo_dir>/<перша літера title в lower>/<title>.nfo
|
// 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")
|
dir := viper.GetString("nfo_dir")
|
||||||
if dir == "" {
|
if dir == "" {
|
||||||
return errors.New("nfo_dir is empty")
|
return errors.New("nfo_dir is empty")
|
||||||
@@ -335,7 +334,7 @@ func saveNfo(title, nfoURL string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := fetchNfoBytes(nfoURL)
|
data, err := fetchNfoBytes(nfoURL, referer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -344,14 +343,19 @@ func saveNfo(title, nfoURL string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// fetchNfoBytes завантажує сирі байти NFO (не HTML) у []byte.
|
// fetchNfoBytes завантажує сирі байти NFO (не HTML) у []byte.
|
||||||
func fetchNfoBytes(nfoURL string) ([]byte, error) {
|
func fetchNfoBytes(nfoURL, referer string) ([]byte, error) {
|
||||||
client := &http.Client{Timeout: 30 * time.Second}
|
client := &http.Client{Timeout: 30 * time.Second}
|
||||||
|
|
||||||
req, err := http.NewRequest(http.MethodGet, nfoURL, nil)
|
req, err := http.NewRequest(http.MethodGet, nfoURL, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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)
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user