mirror of
https://gitlab.com/Anson-Projects/projects.git
synced 2025-09-14 09:35:04 +00:00
fix: improve RSS feed error handling and debugging
- Add comprehensive error handling for RSS feed fetching - Log detailed error messages and feed content preview - Handle empty feeds gracefully instead of panicking - Exit early if no entries found instead of continuing with empty list
This commit is contained in:
@@ -228,10 +228,47 @@ async fn get_existing_post_id(slug: &str, token: &str) -> Option<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn fetch_feed(url: &str) -> Vec<Entry> {
|
async fn fetch_feed(url: &str) -> Vec<Entry> {
|
||||||
let content = reqwest::get(url).await.unwrap().text().await.unwrap();
|
println!("Fetching RSS feed from: {}", url);
|
||||||
|
|
||||||
let feed = parser::parse(content.as_bytes()).unwrap();
|
let response = reqwest::get(url).await;
|
||||||
|
let response = match response {
|
||||||
|
Ok(resp) => resp,
|
||||||
|
Err(e) => {
|
||||||
|
println!("Failed to fetch RSS feed: {}", e);
|
||||||
|
return vec![];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if !response.status().is_success() {
|
||||||
|
println!("RSS feed request failed with status: {}", response.status());
|
||||||
|
return vec![];
|
||||||
|
}
|
||||||
|
|
||||||
|
let content = match response.text().await {
|
||||||
|
Ok(text) => text,
|
||||||
|
Err(e) => {
|
||||||
|
println!("Failed to read RSS feed content: {}", e);
|
||||||
|
return vec![];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if content.trim().is_empty() {
|
||||||
|
println!("RSS feed content is empty");
|
||||||
|
return vec![];
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("RSS feed content preview: {}", &content[..content.len().min(200)]);
|
||||||
|
|
||||||
|
let feed = match parser::parse(content.as_bytes()) {
|
||||||
|
Ok(f) => f,
|
||||||
|
Err(e) => {
|
||||||
|
println!("Failed to parse RSS feed: {:?}", e);
|
||||||
|
println!("Feed content starts with: {}", &content[..content.len().min(500)]);
|
||||||
|
return vec![];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
println!("Successfully parsed RSS feed with {} entries", feed.entries.len());
|
||||||
feed.entries
|
feed.entries
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -329,6 +366,13 @@ async fn main() {
|
|||||||
// Prepare the post data
|
// Prepare the post data
|
||||||
let entries = fetch_feed(feed).await;
|
let entries = fetch_feed(feed).await;
|
||||||
|
|
||||||
|
if entries.is_empty() {
|
||||||
|
println!("No entries found in RSS feed or feed parsing failed. Exiting.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Processing {} entries from RSS feed", entries.len());
|
||||||
|
|
||||||
let post_exists_futures = entries.into_iter().map(|entry| {
|
let post_exists_futures = entries.into_iter().map(|entry| {
|
||||||
let entry_clone = entry.clone();
|
let entry_clone = entry.clone();
|
||||||
let token_clone = token.clone();
|
let token_clone = token.clone();
|
||||||
|
Reference in New Issue
Block a user