diff --git a/rss.toml b/rss.toml index e4c96f0..3a82609 100644 --- a/rss.toml +++ b/rss.toml @@ -16,7 +16,7 @@ pubDate = "published" channel = "1448338163864174867" tag = "1448338289147908108" emoji = "💻" -rss = "https://svrforum.com/rss" +rss = "https://api.imnya.ng/svrforum/rss.xml" category_filter = ["유머&정보"] [svrforum.setup] diff --git a/src/rss.rs b/src/rss.rs index 5f72b87..449f802 100644 --- a/src/rss.rs +++ b/src/rss.rs @@ -4,9 +4,21 @@ use htmd::HtmlToMarkdown; use feed_rs::model::{Feed, Entry}; pub async fn fetch_feed(url: &str) -> Result { - let content = reqwest::get(url).await?.bytes().await?; - let feed = feed_rs::parser::parse(&content[..])?; - Ok(feed) + let client = reqwest::Client::builder() + .user_agent("NekoRSS/1.0 (+abuse@imnya.ng)") + .build()?; + + let resp = client.get(url).send().await?; + let status = resp.status(); + let content = resp.bytes().await?; + + match feed_rs::parser::parse(&content[..]) { + Ok(feed) => Ok(feed), + Err(e) => { + let body_preview = String::from_utf8_lossy(&content).chars().take(200).collect::(); + anyhow::bail!("Failed to parse feed (Status: {}): {} | Body preview: {}", status, e, body_preview); + } + } } pub fn get_field_value(