mirror of
https://github.com/TheFunny/TelegramTwitterMediaBot.git
synced 2026-10-01 00:32:05 +00:00
refactor(twitter): delegate the tweet caption to the shared builder
Tweet::caption duplicated site::caption byte for byte for non-empty text (and dropped the shared empty-text rule, leaving a dangling ': ' behind the author link when a tweet's text comes out empty after link expansion). It delegates now, like bsky's Post::caption a commit earlier and bilibili/misskey before them; encode_double_quoted_attribute loses its last twitter user.
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
use super::model;
|
use super::model;
|
||||||
use crate::media::Media;
|
use crate::media::Media;
|
||||||
use crate::site::{FetchError, Fetched, Site, SiteFuture};
|
use crate::site::{FetchError, Fetched, Site, SiteFuture};
|
||||||
use html_escape::{decode_html_entities, encode_double_quoted_attribute, encode_text};
|
use html_escape::{decode_html_entities, encode_text};
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use std::sync::LazyLock;
|
use std::sync::LazyLock;
|
||||||
|
|
||||||
@@ -199,13 +199,7 @@ impl Tweet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn caption(&self) -> String {
|
pub fn caption(&self) -> String {
|
||||||
format!(
|
crate::site::caption(&self.url(), &self.author_url(), &self.author, &self.text)
|
||||||
"{url}\n<a href=\"{author_url}\">{author}</a>: {text}",
|
|
||||||
url = encode_double_quoted_attribute(&self.url()),
|
|
||||||
author_url = encode_double_quoted_attribute(&self.author_url()),
|
|
||||||
author = encode_text(&self.author),
|
|
||||||
text = encode_text(&self.text),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Builds a tweet from an already-parsed syndication body. Takes the value
|
/// Builds a tweet from an already-parsed syndication body. Takes the value
|
||||||
@@ -332,7 +326,6 @@ impl From<Tweet> for Fetched {
|
|||||||
let author_url = tweet.author_url();
|
let author_url = tweet.author_url();
|
||||||
// A tweet has no title: its text is all content.
|
// A tweet has no title: its text is all content.
|
||||||
let render_data = Some(crate::site::RenderData {
|
let render_data = Some(crate::site::RenderData {
|
||||||
url: url.clone(),
|
|
||||||
author: encode_text(&tweet.author).into_owned(),
|
author: encode_text(&tweet.author).into_owned(),
|
||||||
author_url: author_url.clone(),
|
author_url: author_url.clone(),
|
||||||
title: String::new(),
|
title: String::new(),
|
||||||
|
|||||||
Reference in New Issue
Block a user