diff --git a/reader/rewrite/rewrite_functions.go b/reader/rewrite/rewrite_functions.go
index 8bcc1091..4ea9ce4e 100644
--- a/reader/rewrite/rewrite_functions.go
+++ b/reader/rewrite/rewrite_functions.go
@@ -15,10 +15,11 @@ import (
)
var (
- youtubeRegex = regexp.MustCompile(`youtube\.com/watch\?v=(.*)`)
- invidioRegex = regexp.MustCompile(`https?:\/\/(.*)\/watch\?v=(.*)`)
- imgRegex = regexp.MustCompile(`]+>`)
- textLinkRegex = regexp.MustCompile(`(?mi)(\bhttps?:\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])`)
+ youtubeRegex = regexp.MustCompile(`youtube\.com/watch\?v=(.*)`)
+ youtubeIdRegex = regexp.MustCompile(`youtube_id"?\s*[:=]\s*"([a-zA-Z0-9_-]{11})"`)
+ invidioRegex = regexp.MustCompile(`https?:\/\/(.*)\/watch\?v=(.*)`)
+ imgRegex = regexp.MustCompile(`]+>`)
+ textLinkRegex = regexp.MustCompile(`(?mi)(\bhttps?:\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])`)
)
func addImageTitle(entryURL, entryContent string) string {
@@ -219,6 +220,23 @@ func addYoutubeVideoUsingInvidiousPlayer(entryURL, entryContent string) string {
return entryContent
}
+func addYoutubeVideoFromId(entryContent string) string {
+ matches := youtubeIdRegex.FindAllStringSubmatch(entryContent, -1)
+ if matches == nil {
+ return entryContent
+ }
+ sb := strings.Builder{}
+ for _, match := range matches {
+ if len(match) == 2 {
+ sb.WriteString(`
`)
+ }
+ }
+ sb.WriteString(entryContent)
+ return sb.String()
+}
+
func addInvidiousVideo(entryURL, entryContent string) string {
matches := invidioRegex.FindStringSubmatch(entryURL)
if len(matches) == 3 {
diff --git a/reader/rewrite/rewriter.go b/reader/rewrite/rewriter.go
index 27058b55..e806bf16 100644
--- a/reader/rewrite/rewriter.go
+++ b/reader/rewrite/rewriter.go
@@ -74,6 +74,8 @@ func applyRule(entryURL, entryContent string, rule rule) string {
entryContent = addInvidiousVideo(entryURL, entryContent)
case "add_youtube_video_using_invidious_player":
entryContent = addYoutubeVideoUsingInvidiousPlayer(entryURL, entryContent)
+ case "add_youtube_video_from_id":
+ entryContent = addYoutubeVideoFromId(entryContent)
case "add_pdf_download_link":
entryContent = addPDFLink(entryURL, entryContent)
case "nl2br":
diff --git a/reader/rewrite/rules.go b/reader/rewrite/rules.go
index fb615546..29fce0db 100644
--- a/reader/rewrite/rules.go
+++ b/reader/rewrite/rules.go
@@ -26,7 +26,7 @@ var predefinedRules = map[string]string{
"oglaf.com": "add_image_title",
"optipess.com": "add_image_title",
"peebleslab.com": "add_image_title",
- "quantamagazine.org": `remove("h6:not(.byline,.post__title__kicker), #comments, .next-post__content, .footer__section, figure .outer--content")`,
+ "quantamagazine.org": `add_youtube_video_from_id, remove("h6:not(.byline,.post__title__kicker), #comments, .next-post__content, .footer__section, figure .outer--content, script")`,
"sentfromthemoon.com": "add_image_title",
"thedoghousediaries.com": "add_image_title",
"treelobsters.com": "add_image_title",
diff --git a/reader/scraper/rules.go b/reader/scraper/rules.go
index 0352b6bd..7666ac78 100644
--- a/reader/scraper/rules.go
+++ b/reader/scraper/rules.go
@@ -33,7 +33,7 @@ var predefinedRules = map[string]string{
"osnews.com": "div.newscontent1",
"phoronix.com": "div.content",
"pseudo-sciences.org": "#art_main",
- "quantamagazine.org": ".outer--content, figure",
+ "quantamagazine.org": ".outer--content, figure, script",
"raywenderlich.com": "article",
"slate.fr": ".field-items",
"techcrunch.com": "div.article-entry",