2023-06-19 14:42:47 -07:00
|
|
|
// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
|
|
|
|
// SPDX-License-Identifier: Apache-2.0
|
2017-12-11 22:16:32 -08:00
|
|
|
|
2023-08-10 19:46:45 -07:00
|
|
|
package rewrite // import "miniflux.app/v2/internal/reader/rewrite"
|
2017-12-11 22:16:32 -08:00
|
|
|
|
2024-12-13 22:50:12 +00:00
|
|
|
import (
|
|
|
|
"net/url"
|
|
|
|
"strings"
|
|
|
|
)
|
2024-10-30 01:08:31 +08:00
|
|
|
|
2017-12-11 22:16:32 -08:00
|
|
|
// 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",
|
|
|
|
"amazingsuperpowers.com": "add_image_title",
|
2023-01-09 00:45:08 +01:00
|
|
|
"blog.cloudflare.com": `add_image_title,remove("figure.kg-image-card figure.kg-image + img")`,
|
2017-12-11 22:16:32 -08:00
|
|
|
"cowbirdsinlove.com": "add_image_title",
|
|
|
|
"drawingboardcomic.com": "add_image_title",
|
|
|
|
"exocomics.com": "add_image_title",
|
2021-12-16 14:00:38 -05:00
|
|
|
"framatube.org": "nl2br,convert_text_link",
|
2017-12-11 22:16:32 -08:00
|
|
|
"happletea.com": "add_image_title",
|
2023-04-27 18:38:11 +02:00
|
|
|
"ilpost.it": `remove(".art_tag, #audioPlayerArticle, .author-container, .caption, .ilpostShare, .lastRecents, #mc_embed_signup, .outbrain_inread, p:has(.leggi-anche), .youtube-overlay")`,
|
2017-12-11 22:16:32 -08:00
|
|
|
"imogenquest.net": "add_image_title",
|
|
|
|
"lukesurl.com": "add_image_title",
|
2021-12-16 14:00:38 -05:00
|
|
|
"medium.com": "fix_medium_images",
|
2017-12-11 22:16:32 -08:00
|
|
|
"mercworks.net": "add_image_title",
|
2021-12-16 14:02:07 -05:00
|
|
|
"monkeyuser.com": "add_image_title",
|
2017-12-11 22:16:32 -08:00
|
|
|
"mrlovenstein.com": "add_image_title",
|
|
|
|
"nedroid.com": "add_image_title",
|
2024-04-01 19:01:48 +02:00
|
|
|
"oglaf.com": `replace("media.oglaf.com/story/tt(.+).gif"|"media.oglaf.com/comic/$1.jpg"),add_image_title`,
|
2017-12-11 22:16:32 -08:00
|
|
|
"optipess.com": "add_image_title",
|
|
|
|
"peebleslab.com": "add_image_title",
|
2022-01-03 17:47:10 +02:00
|
|
|
"quantamagazine.org": `add_youtube_video_from_id, remove("h6:not(.byline,.post__title__kicker), #comments, .next-post__content, .footer__section, figure .outer--content, script")`,
|
2017-12-11 22:16:32 -08:00
|
|
|
"sentfromthemoon.com": "add_image_title",
|
|
|
|
"thedoghousediaries.com": "add_image_title",
|
2024-06-09 15:30:27 -04:00
|
|
|
"theverge.com": `add_dynamic_image, remove("div.duet--recirculation--related-list, .hidden")`,
|
2017-12-11 22:16:32 -08:00
|
|
|
"treelobsters.com": "add_image_title",
|
2023-07-11 05:26:50 +02:00
|
|
|
"webtoons.com": `add_dynamic_image,replace("webtoon"|"swebtoon")`,
|
2021-12-16 14:00:38 -05:00
|
|
|
"www.qwantz.com": "add_image_title,add_mailto_subject",
|
2017-12-11 22:16:32 -08:00
|
|
|
"xkcd.com": "add_image_title",
|
2021-12-16 14:00:38 -05:00
|
|
|
"youtube.com": "add_youtube_video",
|
2017-12-11 22:16:32 -08:00
|
|
|
}
|
2024-10-30 01:08:31 +08:00
|
|
|
|
2024-12-13 22:50:12 +00:00
|
|
|
// 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 ""
|
|
|
|
}
|
2024-10-30 01:08:31 +08:00
|
|
|
|
2024-12-13 22:50:12 +00:00
|
|
|
switch parsedUrl.Hostname() {
|
2025-03-02 20:16:00 +00:00
|
|
|
case "appinn.com":
|
|
|
|
return "https://appinn.com"
|
|
|
|
case "bjp.org.cn":
|
|
|
|
return "https://bjp.org.cn"
|
2024-12-13 22:50:12 +00:00
|
|
|
case "cdnfile.sspai.com":
|
|
|
|
return "https://sspai.com"
|
|
|
|
case "f.video.weibocdn.com":
|
|
|
|
return "https://weibo.com"
|
2025-03-02 20:16:00 +00:00
|
|
|
case "i.pximg.net":
|
|
|
|
return "https://www.pixiv.net"
|
2024-12-13 22:50:12 +00:00
|
|
|
case "img.hellogithub.com":
|
|
|
|
return "https://hellogithub.com"
|
2025-03-02 20:16:00 +00:00
|
|
|
case "moyu.im":
|
|
|
|
return "https://i.jandan.net"
|
2024-12-13 22:50:12 +00:00
|
|
|
}
|
2024-10-30 01:08:31 +08:00
|
|
|
|
2024-12-13 22:50:12 +00:00
|
|
|
switch {
|
|
|
|
case strings.HasSuffix(parsedUrl.Hostname(), ".cdninstagram.com"):
|
|
|
|
return "https://www.instagram.com"
|
2024-12-20 15:33:29 +01:00
|
|
|
case strings.HasSuffix(parsedUrl.Hostname(), ".moyu.im"):
|
|
|
|
return "https://i.jandan.net"
|
2025-03-02 20:16:00 +00:00
|
|
|
case strings.HasSuffix(parsedUrl.Hostname(), ".sinaimg.cn"):
|
|
|
|
return "https://weibo.com"
|
2024-10-30 01:08:31 +08:00
|
|
|
}
|
2024-12-13 22:50:12 +00:00
|
|
|
|
2024-10-30 01:08:31 +08:00
|
|
|
return ""
|
|
|
|
}
|