From 47bc224d3e06aaa3220d5b8354794d9db7698f7a Mon Sep 17 00:00:00 2001 From: NIXIDE Date: Wed, 18 Sep 2024 01:34:28 +0300 Subject: [PATCH] fix: error handling --- cmd/itunes-cover-scraper/main.go | 62 ++++++++++++++++---------------- pkg/itunes/itunes.go | 8 ++++- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/cmd/itunes-cover-scraper/main.go b/cmd/itunes-cover-scraper/main.go index 67d25e8..2430821 100644 --- a/cmd/itunes-cover-scraper/main.go +++ b/cmd/itunes-cover-scraper/main.go @@ -28,44 +28,44 @@ func main() { search, err := itunes.Search(query) if err != nil { fmt.Println("Search:", err) - } - - if search.ResultCount > 0 { - rawUrl := search.Results[0].ArtworkUrl100 - originalUrl := itunes.OriginalUrl(rawUrl) + } else { + if search.ResultCount > 0 { + rawUrl := search.Results[0].ArtworkUrl100 + originalUrl := itunes.OriginalUrl(rawUrl) - var coverUrl string - if originalUrl != "" { - coverUrl = originalUrl - } else { - coverUrl = strings.Replace(rawUrl, "100x100bb.jpg", "3000x3000bb.jpg", 1) - } + var coverUrl string + if originalUrl != "" { + coverUrl = originalUrl + } else { + coverUrl = strings.Replace(rawUrl, "100x100bb.jpg", "3000x3000bb.jpg", 1) + } - fmt.Println("Downloading...") - err := DownloadFile(coverUrl, coverFilename) - if err != nil { - fmt.Println("Error downloading cover:", err) - } + fmt.Println("Downloading...") + err := DownloadFile(coverUrl, coverFilename) + if err != nil { + fmt.Println("Error downloading cover:", err) + } - fmt.Println("Removing metadata...") - data, err := os.ReadFile(coverFilename) - if err != nil { - fmt.Println("Error reading cover:", err) - } + fmt.Println("Removing metadata...") + data, err := os.ReadFile(coverFilename) + if err != nil { + fmt.Println("Error reading cover:", err) + } - filtered, err := StripExif(data) - if err != nil { - if !errors.Is(err, ErrExifMarkerNotFound) { - fmt.Println("Error removing EXIF metadata:", err) + filtered, err := StripExif(data) + if err != nil { + if !errors.Is(err, ErrExifMarkerNotFound) { + fmt.Println("Error removing EXIF metadata:", err) + } + } else { + if err := os.WriteFile(coverFilename, filtered, 0644); err != nil { + fmt.Println("Error saving cover file:", err) + } } + } else { - if err := os.WriteFile(coverFilename, filtered, 0644); err != nil { - fmt.Println("Error saving cover file:", err) - } + fmt.Println("No results found") } - - } else { - fmt.Println("No results found") } fmt.Println("Press enter to exit") diff --git a/pkg/itunes/itunes.go b/pkg/itunes/itunes.go index f697734..62eef63 100644 --- a/pkg/itunes/itunes.go +++ b/pkg/itunes/itunes.go @@ -2,6 +2,7 @@ package itunes import ( "encoding/json" + "errors" "fmt" "io" "net/http" @@ -51,6 +52,10 @@ func PrepareQuery(query string) string { return query } +var ( + ErrInvalidJsonp = errors.New("invalid jsonp") +) + func Search(query string) (*SearchResponse, error) { endpoint := fmt.Sprintf( "https://itunes.apple.com/search?callback=jQuery20309382196007363668_1726162953706&entity=song,album&media=music&entity=song&term=%s&country=nz&limit=1", @@ -72,7 +77,8 @@ func Search(query string) (*SearchResponse, error) { start := strings.Index(bodyStr, "(") end := strings.LastIndex(bodyStr, ")") if start == -1 || end == -1 || start >= end { - return nil, fmt.Errorf("jsonp parse error: %w", err) + fmt.Println(bodyStr) + return nil, ErrInvalidJsonp } jsonData := bodyStr[start+1 : end]