Skip to content

Commit

Permalink
Fix: 一部キャラで動かないのを修正
Browse files Browse the repository at this point in the history
  • Loading branch information
sevenc-nanashi committed Oct 6, 2023
1 parent 9910c04 commit 474c334
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 23 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ AIVoiceVox は[A.I.Voice](https://aivoice.jp/)を[Voicevox](https://voicevox.hir

## ライセンス

MIT License で公開しています。詳しくは[LICENSE](LICENSE)をご覧ください。
生成された音声については、A.I.Voice の利用規約に従ってください。
このブリッジ自体にはクレジット表記は必要ありませんが、このリポジトリのリンクを貼ったりや紹介動画(TODO)をおや作品登録していただくと助かります
MIT License で公開しています。詳しくは[LICENSE](LICENSE)をご覧ください。
生成された音声については、A.I.Voice の利用規約に従ってください。
このブリッジ自体にはクレジット表記は必要ありませんが、このリポジトリのリンクを貼ったり紹介動画(TODO)を親作品登録していただくと助かります
52 changes: 43 additions & 9 deletions src/icon_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,24 @@ impl IconManager {
)
.await
.map_err(|e| Error::ReadImageFailed(e.into()))?;
{

let root = {
let mut images = zip_reader.file().entries().iter().enumerate();
let icon = match images.find(|(_, x)| {
let (icon, root) = match images.find(|(_, x)| {
let filename = x.entry().filename().as_str().unwrap_or("");

filename == "images/icon.png" || filename == "icon.png"
filename.ends_with("icon.png")
}) {
Some((icon, _)) => icon,
Some((icon, entry)) => {
let filename = entry
.entry()
.filename()
.as_str()
.unwrap_or("")
.replace('\\', "/");

(icon, filename.replace("icon.png", ""))
}
None => return Err(Error::ReadImageFailed(anyhow!("Icon not found"))),
};

Expand Down Expand Up @@ -141,7 +151,11 @@ impl IconManager {
sorrow: sorrow_icon_buf,
},
);
}

root
};

info!("{} root: {}", speaker.internal_name(), root);

let mut portraits = StyleImages {
normal: Vec::new(),
Expand All @@ -152,10 +166,14 @@ impl IconManager {
for emotion in ['A', 'J', 'N', 'S'].iter() {
let mut images = zip_reader.file().entries().iter().enumerate();
let image_index = match images.find(|(_, x)| {
let name = x.entry().filename().as_str().unwrap_or("");

(name.starts_with(&format!("images/{}/OpenEyes", emotion))
|| name.starts_with(&format!("{}/OpenEyes", emotion)))
let name = x
.entry()
.filename()
.as_str()
.unwrap_or("")
.replace('\\', "/");

name.starts_with(&format!("{}{}/OpenEyes", root, emotion))
&& name.split('/').last().and_then(|n| n.chars().nth(4)) == Some('0')
}) {
Some((i, _)) => i,
Expand Down Expand Up @@ -189,6 +207,22 @@ impl IconManager {
.write_to(&mut final_image_cursor, image::ImageOutputFormat::Png)
.map_err(|e| Error::ReadImageFailed(e.into()))?;
}
for (name, portrait) in [
("Normal", &portraits.normal),
("Joy", &portraits.joy),
("Anger", &portraits.anger),
("Sorrow", &portraits.sorrow),
]
.iter()
{
if portrait.is_empty() {
return Err(Error::ReadImageFailed(anyhow!(
"{}の{}の立ち絵が見つかりませんでした。",
speaker.internal_name(),
name,
)));
}
}

self.portraits
.insert(speaker.internal_name().to_string(), portraits);
Expand Down
31 changes: 20 additions & 11 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,26 @@ struct Cli {
#[tokio::main]
async fn main() -> Result<()> {
let args = Cli::parse();

tracing_subscriber::fmt()
.with_writer(std::io::stderr)
.with_ansi(cfg!(debug_assertions))
.init();

AIVOICE.lock().await.setup().await?;

let result = main_impl(args).await;

info!("Shutting down...");

AIVOICE.lock().await.shutdown().await?;

result?;

Ok(())
}

async fn main_impl(args: Cli) -> Result<()> {
let app = Router::new()
.route("/", get(get_index))
.route("/version", get(routes::info::get_version))
Expand Down Expand Up @@ -80,13 +100,6 @@ async fn main() -> Result<()> {
.on_response(trace::DefaultOnResponse::new().level(Level::INFO)),
);

tracing_subscriber::fmt()
.with_writer(std::io::stderr)
.with_ansi(cfg!(debug_assertions))
.init();

AIVOICE.lock().await.setup().await?;

ICON_MANAGER.lock().await.setup().await?;

let port = args.port.unwrap_or(50201);
Expand Down Expand Up @@ -119,10 +132,6 @@ async fn main() -> Result<()> {
})
.await?;

info!("Shutting down...");

AIVOICE.lock().await.shutdown().await?;

Ok(())
}

Expand Down

0 comments on commit 474c334

Please sign in to comment.