tdm_server_rust/utils/
rss_labels.rs1use crate::entity::manga::CollectedMembersVo;
12use crate::utils::shanghai_time::shanghai_offset;
13use chrono::{DateTime, Datelike, Timelike, Utc};
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 {
127 let Some(t) = time else {
128 return String::new();
129 };
130 let local = t.with_timezone(&shanghai_offset());
131 format!(
132 "{}年{}月{}日{}点{}分",
133 local.year(),
134 local.month(),
135 local.day(),
136 local.hour(),
137 local.minute()
138 )
139}
140
141pub fn format_members(members: &[CollectedMembersVo]) -> String {
145 members
146 .iter()
147 .filter_map(|m| m.username.as_deref())
148 .map(|name| format!("{name}. "))
149 .collect()
150}
151
152pub fn rss_category(category: Option<i16>, manga_status: Option<i16>) -> String {
156 let cat = category.map(category_label).unwrap_or("");
157 let st = manga_status.map(manga_status_label).unwrap_or("");
158 format!("长短篇:{cat} 连载状态:{st}")
159}