Merge pull request #88 from ButteredCats/better_preview_handling

Handle preview embedding better
This commit is contained in:
Matthew Esposito 2024-04-08 10:04:23 -04:00 committed by GitHub
commit 27f25e0fb1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 17 deletions

View File

@ -877,8 +877,8 @@ pub fn format_url(url: &str) -> String {
static REDDIT_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r#"href="(https|http|)://(www\.|old\.|np\.|amp\.|new\.|)(reddit\.com|redd\.it)/"#).unwrap()); static REDDIT_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r#"href="(https|http|)://(www\.|old\.|np\.|amp\.|new\.|)(reddit\.com|redd\.it)/"#).unwrap());
static REDDIT_PREVIEW_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r"https?://(external-preview|preview)\.redd\.it(.*)[^?]").unwrap()); static REDDIT_PREVIEW_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r"https?://(external-preview|preview)\.redd\.it(.*)[^?]").unwrap());
static REDDIT_EMOJI_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r"https?://(www|).redditstatic\.com/(.*)").unwrap()); static REDDIT_EMOJI_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r"https?://(www|).redditstatic\.com/(.*)").unwrap());
static REDLIB_PREVIEW_LINK_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r#"/preview/(pre|external-pre)/(.*)">"#).unwrap()); static REDLIB_PREVIEW_LINK_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r#"/preview/(pre|external-pre)/(.*?)>"#).unwrap());
static REDLIB_PREVIEW_TEXT_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r">(.*)</a>").unwrap()); static REDLIB_PREVIEW_TEXT_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r">(.*?)</a>").unwrap());
// Rewrite Reddit links to Redlib in body of text // Rewrite Reddit links to Redlib in body of text
pub fn rewrite_urls(input_text: &str) -> String { pub fn rewrite_urls(input_text: &str) -> String {
@ -894,24 +894,23 @@ pub fn rewrite_urls(input_text: &str) -> String {
.replace("\\_", "_"); .replace("\\_", "_");
// Rewrite external media previews to Redlib // Rewrite external media previews to Redlib
if REDDIT_PREVIEW_REGEX.is_match(&text1) { loop {
loop { if REDDIT_PREVIEW_REGEX.find(&text1).is_none() {
if REDDIT_PREVIEW_REGEX.find(&text1).is_none() { return text1;
return text1; } else {
} else { let formatted_url = format_url(REDDIT_PREVIEW_REGEX.find(&text1).map(|x| x.as_str()).unwrap_or_default());
let formatted_url = format_url(REDDIT_PREVIEW_REGEX.find(&text1).map(|x| x.as_str()).unwrap_or_default());
let image_url = REDLIB_PREVIEW_LINK_REGEX.find(&formatted_url).map_or("", |m| m.as_str()).to_string(); let image_url = REDLIB_PREVIEW_LINK_REGEX.find(&formatted_url).map_or("", |m| m.as_str()).to_string();
let image_text = REDLIB_PREVIEW_TEXT_REGEX.find(&formatted_url).map_or("", |m| m.as_str()).to_string(); let image_text = REDLIB_PREVIEW_TEXT_REGEX.find(&formatted_url).map_or("", |m| m.as_str()).to_string();
text1 = REDDIT_PREVIEW_REGEX let image_to_replace = format!("<a href=\"{image_url}{image_text}").replace(">>", ">");
.replace(&text1, format_url(REDDIT_PREVIEW_REGEX.find(&text1).map(|x| x.as_str()).unwrap_or_default())) let image_replacement = format!("<a href=\"{image_url}<img src=\"{image_url}</a>");
.replace(&image_text, &format!("><img src=\"{image_url}</a>"))
.to_string() text1 = REDDIT_PREVIEW_REGEX
} .replace(&text1, formatted_url)
.replace(&image_to_replace, &image_replacement)
.to_string()
} }
} else {
text1
} }
} }

View File

@ -1177,11 +1177,13 @@ a.search_subreddit:hover {
.comment img { .comment img {
max-width: 50%; max-width: 50%;
height: auto;
} }
@media screen and (max-width: 500px) { @media screen and (max-width: 500px) {
.comment img { .comment img {
max-width: 80%; max-width: 80%;
height: auto;
} }
} }