tail-fin-xhs 0.7.8

Xiaohongshu adapter for tail-fin: search, notes, comments, feed
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Note {
    pub id: String,
    pub title: String,
    pub content: String,
    pub author: String,
    pub author_id: String,
    pub likes: u64,
    pub collects: u64,
    pub comments: u64,
    pub shares: u64,
    pub tags: Vec<String>,
    pub images: Vec<String>,
    pub video: Option<String>,
    pub published_at: String,
    pub note_type: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SearchNote {
    pub id: String,
    pub title: String,
    pub author: String,
    pub likes: u64,
    pub published_at: String,
    pub url: String,
    pub cover_image: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Comment {
    pub author: String,
    pub text: String,
    pub likes: u64,
    pub time: String,
    pub replies: Vec<Comment>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserNote {
    pub id: String,
    pub title: String,
    pub likes: u64,
    pub note_type: String,
    pub cover_image: Option<String>,
    pub published_at: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MediaItem {
    pub media_type: String,
    pub url: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FeedItem {
    pub id: String,
    pub title: String,
    pub author: String,
    pub likes: u64,
    pub note_type: String,
    pub url: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Notification {
    pub notification_type: String,
    pub user: String,
    pub content: String,
    pub time: String,
    pub target_note_id: Option<String>,
}