diff --git a/internal/reader/rewrite/referer_override.go b/internal/reader/rewrite/referer_override.go new file mode 100644 index 00000000..9b8ff931 --- /dev/null +++ b/internal/reader/rewrite/referer_override.go @@ -0,0 +1,47 @@ +// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +package rewrite // import "miniflux.app/v2/internal/reader/rewrite" + +import ( + "net/url" + "strings" +) + +// GetRefererForURL returns the referer for the given URL if it exists, otherwise an empty string. +func GetRefererForURL(u string) string { + parsedUrl, err := url.Parse(u) + if err != nil { + return "" + } + + switch parsedUrl.Hostname() { + case "appinn.com": + return "https://appinn.com" + case "bjp.org.cn": + return "https://bjp.org.cn" + case "cdnfile.sspai.com": + return "https://sspai.com" + case "f.video.weibocdn.com": + return "https://weibo.com" + case "i.pximg.net": + return "https://www.pixiv.net" + case "img.hellogithub.com": + return "https://hellogithub.com" + case "moyu.im": + return "https://i.jandan.net" + case "www.parkablogs.com": + return "https://www.parkablogs.com" + } + + switch { + case strings.HasSuffix(parsedUrl.Hostname(), ".cdninstagram.com"): + return "https://www.instagram.com" + case strings.HasSuffix(parsedUrl.Hostname(), ".moyu.im"): + return "https://i.jandan.net" + case strings.HasSuffix(parsedUrl.Hostname(), ".sinaimg.cn"): + return "https://weibo.com" + } + + return "" +} diff --git a/internal/reader/rewrite/referer_override_test.go b/internal/reader/rewrite/referer_override_test.go index 8be57585..fe87164d 100644 --- a/internal/reader/rewrite/referer_override_test.go +++ b/internal/reader/rewrite/referer_override_test.go @@ -43,6 +43,11 @@ func TestGetRefererForURL(t *testing.T) { url: "https://img.hellogithub.com/example.png", expected: "https://hellogithub.com", }, + { + name: "Park Blogs", + url: "https://www.parkablogs.com/sites/default/files/2025/image.jpg", + expected: "https://www.parkablogs.com", + }, { name: "Non-matching URL", url: "https://example.com/image.jpg", diff --git a/internal/reader/rewrite/rules.go b/internal/reader/rewrite/rules.go index 85a79cc1..86763f03 100644 --- a/internal/reader/rewrite/rules.go +++ b/internal/reader/rewrite/rules.go @@ -3,13 +3,7 @@ package rewrite // import "miniflux.app/v2/internal/reader/rewrite" -import ( - "net/url" - "strings" -) - // List of predefined rewrite rules (alphabetically sorted) -// Available rules: "add_image_title", "add_youtube_video" // domain => rule name var predefinedRules = map[string]string{ "abstrusegoose.com": "add_image_title", @@ -40,39 +34,3 @@ var predefinedRules = map[string]string{ "xkcd.com": "add_image_title", "youtube.com": "add_youtube_video", } - -// GetRefererForURL returns the referer for the given URL if it exists, otherwise an empty string. -func GetRefererForURL(u string) string { - parsedUrl, err := url.Parse(u) - if err != nil { - return "" - } - - switch parsedUrl.Hostname() { - case "appinn.com": - return "https://appinn.com" - case "bjp.org.cn": - return "https://bjp.org.cn" - case "cdnfile.sspai.com": - return "https://sspai.com" - case "f.video.weibocdn.com": - return "https://weibo.com" - case "i.pximg.net": - return "https://www.pixiv.net" - case "img.hellogithub.com": - return "https://hellogithub.com" - case "moyu.im": - return "https://i.jandan.net" - } - - switch { - case strings.HasSuffix(parsedUrl.Hostname(), ".cdninstagram.com"): - return "https://www.instagram.com" - case strings.HasSuffix(parsedUrl.Hostname(), ".moyu.im"): - return "https://i.jandan.net" - case strings.HasSuffix(parsedUrl.Hostname(), ".sinaimg.cn"): - return "https://weibo.com" - } - - return "" -}