tdm_server_rust/utils/
rss_labels.rs1use chrono::{DateTime, Datelike, Timelike, Utc};
12use crate::entity::manga::CollectedMembersVo;
13use crate::utils::shanghai_time::shanghai_offset;
14
15pub fn category_label(code: i16) -> &'static str {
26 match code {
27 1 => "长篇连载",
28 2 => "短篇漫画",
29 3 => "漫画合集",
30 4 => "百合动画",
31 _ => "",
32 }
33}
34
35pub fn manga_status_label(code: i16) -> &'static str {
50 match code {
51 1 => "正常连载中",
52 2 => "☆求人中☆",
53 3 => "现在立刻非常需要人手!",
54 4 => "已完结",
55 5 => "暂时搁置",
56 6 => "已腰斩",
57 7 => "已弃坑",
58 8 => "作者不更新",
59 _ => "",
60 }
61}
62
63pub fn intern_label(intern: i16) -> &'static str {
75 match intern {
76 0 => "正式组员",
77 1 => "实习组员",
78 2 => "暂不接稿",
79 3 => "退休组员",
80 4 => "已退组",
81 _ => "",
82 }
83}
84
85pub fn current_post_label(my_name: &str) -> &'static str {
89 match my_name.to_lowercase().as_str() {
90 "provider" => "图源",
91 "translator" => "翻译",
92 "proofreader" => "校对",
93 "letterer" => "嵌字",
94 "reviewer" => "审稿",
95 "timer" => "时轴",
96 "publisher" => "发布",
97 _ => "",
98 }
99}
100
101pub fn next_post_label(my_name: &str) -> &'static str {
115 match my_name.to_lowercase().as_str() {
116 "provider" => "翻译",
117 "translator" => "校对",
118 "proofreader" => "嵌字",
119 "letterer" => "审稿",
120 "timer" => "审稿",
121 _ => "",
122 }
123}
124
125pub fn format_rss_time(time: Option<DateTime<Utc>>) -> String {
134 let Some(t) = time else {
135 return String::new();
136 };
137 let local = t.with_timezone(&shanghai_offset());
138 format!(
139 "{}年{}月{}日{}点{}分",
140 local.year(),
141 local.month(),
142 local.day(),
143 local.hour(),
144 local.minute()
145 )
146}
147
148pub fn format_members(members: &[CollectedMembersVo]) -> String {
152 members
153 .iter()
154 .filter_map(|m| m.username.as_deref())
155 .map(|name| format!("{name}. "))
156 .collect()
157}
158
159pub fn rss_category(category: Option<i16>, manga_status: Option<i16>) -> String {
163 let cat = category.map(category_label).unwrap_or("");
164 let st = manga_status.map(manga_status_label).unwrap_or("");
165 format!("长短篇:{cat} 连载状态:{st}")
166}