mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 21:47:02 +00:00
feat: add embed support for YouTube Shorts (#734)
* feat: add embed support for YouTube Shorts Signed-off-by: ispik <ispik@ispik.dev> * feat: blacklist private ip ranges and add january domain blocklist Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> * fix: remove duplicates Signed-off-by: ispik <ispik@ispik.dev> --------- Signed-off-by: ispik <ispik@ispik.dev> Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> Co-authored-by: IAmTomahawkx <iamtomahawkx@gmail.com>
This commit is contained in:
@@ -33,6 +33,9 @@ lazy_static! {
|
||||
/// Regex for matching new Reddit URLs
|
||||
static ref RE_URL_NEW_REDDIT: Regex = Regex::new("^(?:(?:new\\.|www\\.)?reddit).com").expect("valid regex");
|
||||
|
||||
/// Regex for matching YouTube Shorts URLs
|
||||
static ref RE_URL_YOUTUBE_SHORTS: Regex = Regex::new("^(?:(?:https?:)?//)?(?:(?:www\\.)?youtube\\.com)/shorts/([a-zA-Z0-9_-]+)").expect("valid regex");
|
||||
|
||||
/// Cache for proxy results
|
||||
static ref PROXY_CACHE: moka::future::Cache<String, Result<(String, Vec<u8>)>> = moka::future::Cache::builder()
|
||||
.weigher(|_key, value: &Result<(String, Vec<u8>)>| -> u32 {
|
||||
@@ -214,6 +217,13 @@ impl Request {
|
||||
.to_string();
|
||||
}
|
||||
|
||||
// Re-map Youtube Shorts to regular Youtube links
|
||||
if let Some(captures) = RE_URL_YOUTUBE_SHORTS.captures(&url) {
|
||||
if let Some(video_id) = captures.get(1) {
|
||||
url = format!("https://youtube.com/watch?v={}", video_id.as_str());
|
||||
}
|
||||
}
|
||||
|
||||
// Generate the actual embed
|
||||
if let Some(hit) = EMBED_CACHE.get(&url).await {
|
||||
Ok(hit)
|
||||
|
||||
@@ -190,7 +190,7 @@ pub async fn create_website_embed(original_url: &str, document: &str) -> Option<
|
||||
|
||||
pub async fn populate_special(original_url: String, metadata: &mut WebsiteMetadata) {
|
||||
lazy_static! {
|
||||
static ref RE_YOUTUBE: Regex = Regex::new("^(?:(?:https?:)?//)?(?:(?:www|m)\\.)?(?:(?:youtube\\.com|youtu.be))(?:/(?:[\\w\\-]+\\?v=|embed/|v/)?)([\\w\\-]+)(?:\\S+)?$").unwrap();
|
||||
static ref RE_YOUTUBE: Regex = Regex::new("^(?:(?:https?:)?//)?(?:(?:www|m)\\.)?(?:(?:youtube\\.com|youtu.be))(?:/(?:[\\w\\-]+\\?v=|embed/|v/|shorts/)?)([\\w\\-]+)(?:\\S+)?$").unwrap();
|
||||
|
||||
static ref RE_LIGHTSPEED: Regex = Regex::new("^(?:https?://)?(?:[\\w]+\\.)?lightspeed\\.tv/([a-z0-9_]{4,25})").unwrap();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user