diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/wikiarticle.go | 9 | ||||
| -rw-r--r-- | src/wikidata.go | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/wikiarticle.go b/src/wikiarticle.go index 864f6c4..9c5845f 100644 --- a/src/wikiarticle.go +++ b/src/wikiarticle.go @@ -59,6 +59,10 @@ func (a *App) fetchWikiArticlesData() error { if err := rows.Scan(&r.id, &r.imdbID, &r.wikiArticle); err != nil { return fmt.Errorf("scan row: %w", err) } + // Decode — wiki_article may be URL-encoded from SPARQL + if dec, err := url.PathUnescape(r.wikiArticle); err == nil { + r.wikiArticle = dec + } entries = append(entries, r) } if err := rows.Err(); err != nil { @@ -155,11 +159,10 @@ func (a *App) fetchWikiArticlesData() error { return nil } -// queryWikiArticle fetches and parses a single wiki article from the custom server. func (a *App) queryWikiArticle(name string) (wikiArticleEntry, int, error) { - // Build URL manually — name is already URL-encoded in the DB + // Build URL — name is decoded from DB, encode it for the request reqURL := fmt.Sprintf("%s?username=%s&name=%s", - a.Config.WikiServer, url.QueryEscape(a.Config.WikiUsername), name) + a.Config.WikiServer, url.QueryEscape(a.Config.WikiUsername), url.PathEscape(name)) var resp *http.Response var err error diff --git a/src/wikidata.go b/src/wikidata.go index 20411d2..c775f1f 100644 --- a/src/wikidata.go +++ b/src/wikidata.go @@ -175,7 +175,7 @@ func (a *App) queryWikidataBatch(ids []string) (map[string]wikiAcc, error) { if n, ok := b["article"]; ok && n.Value != "" { // Extract title from URL: strip "https://en.wikipedia.org/wiki/" - title := strings.TrimPrefix(n.Value, "https://en.wikipedia.org/wiki/") + title, _ := url.PathUnescape(strings.TrimPrefix(n.Value, "https://en.wikipedia.org/wiki/")) results[imdb] = wikiAcc{ wikiArticle: n.Value, title: title, |
