-
Notifications
You must be signed in to change notification settings - Fork 304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ファイルの書き出し時の名前設定にプロジェクトファイル名を含められるようにする #2137
ファイルの書き出し時の名前設定にプロジェクトファイル名を含められるようにする #2137
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PRありがとうございます!!
src/store/utility.ts
Outdated
@@ -342,12 +352,14 @@ export function buildAudioFileNameFromRawData( | |||
const index = (vars.index + 1).toString().padStart(3, "0"); | |||
const styleName = sanitizeFileName(vars.styleName); | |||
const date = vars.date; | |||
const projectName = removeExtension(store.getters.PROJECT_NAME); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あ! store->utilityへの参照がすでにあるので、可能ならutility->storeへの参照は避けられると嬉しそうです!
(プログラミング的に言うと、依存関係を綺麗にしておきたい感じです)
buildAudioFileNameFromRawData
のvars
にprojectName
的なのを増やし、buildAudioFileNameFromRawData
を呼んでいるところでstore.getters.PROJECT_NAME
を使ってvars
にprojectName
をいれるとかどうでしょう?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
store->utilityへの参照がすでにあるので、可能ならutility->storeへの参照は避けられると嬉しそうです!
(プログラミング的に言うと、依存関係を綺麗にしておきたい感じです)
こちらについては依存関係について把握していなかったため、
import { store } from "./index";
は削除します。
buildAudioFileNameFromRawDataのvarsにprojectName的なのを増やし
vars
にDEFAULT_AUDIO_FILE_NAME_VARIABLES
が代入されているので、DEFAULT_AUDIO_FILE_NAME_VARIABLES
に以下のような形でprojectName
を増やします。
const DEFAULT_AUDIO_FILE_NAME_VARIABLES = {
index: 0,
characterName: "四国めたん",
text: "テキストテキストテキスト",
styleName: DEFAULT_STYLE_NAME,
date: currentDateString(),
projectName: "VOICEVOXプロジェクト",
};
buildAudioFileNameFromRawDataを呼んでいるところでstore.getters.PROJECT_NAMEを使ってvarsにprojectNameをいれるとかどうでしょう?
この件に関しては、src/store/audio.ts
のように、buildAudioFileNameFromRawData
を呼び出している箇所で
const projectName = getter.projectName;
return buildAudioFileNameFromRawData(fileNamePattern, {
characterName: character.metas.speakerName,
index,
styleName,
text: audioItem.text,
date: currentDateString(),
projectName,
});
のような形をとるのかな?と考えております。
実際に動かしていないので動くかどうかは分からないのですが、考え方というか認識がこれであっているのか確認させていただきたいです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あ、ですです! 多分あってると思います!!
src/store/utility.ts
Outdated
/** | ||
* 書き出しファイルにプロジェクトファイル名を拡張子を取り除いて追加する | ||
*/ | ||
export function removeExtension(projectNameWithExtension?: string): string { | ||
const projectName = projectNameWithExtension?.replace(".vvproj", "") ?? ""; | ||
return projectName; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ほかで使う機会は今のところなさそう?なので、関数にせずconst projectName = removeExtension(store.getters.PROJECT_NAME);
の部分に組み込んでしまっても良いかも?
というよりそもそもgetters.PROJECT_NAME
が拡張子なしの値を返すべきな気がしますね!!
ちょっとこっちはDiscordで意見募集してみます。とりあえず拡張子ありの実装で進めていただけると・・・! 🙇
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
お待たせしました!
とりあえず今の拡張子を返す方をPROJECT_NAME_WITH_EXT
に名前変更して、別でPROJECT_NAME
を作ってそっちは拡張子なしのを返すとかどうでしょう!
プロジェクトファイルを拡張子が複数になった時、拡張子があった方が便利な時もあるな~と。
で、ファイル名パターンはPROJECT_NAME
の方を使う感じに・・・!
もしその更新の場合、ファイル全体検索した感じPROJECT_NAME
を使ってる箇所が一箇所だけあったのでそちらも変更が必要かもです。
ちなみにそっちは拡張子なしの方を必要としてそうでした・・・!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらについて、認識が合っているのか確認したいため、質問させていただきたいです。
- 現状ある
PROJECT_NAME
は拡張子が無しのものにする。 PROJECT_NAME_WITH_EXT
を新しく作成する。中身は現状のPROJECT_NAME
と同じものである。- 拡張子を除いた
PROJECT_NAME
を返すために関数をどこかに書く必要がある。 PROJECT_NAME
を返すための関数はPR内で書いたremoveExtension()
を利用する。
ということであっていますでしょうか?
また、現状VOICEVOX全体のコードを追えることができず、拡張子を除いたPROJECT_NAME
を返すための関数をかいてもいいコードの場所がどこにあたるのか分からないのですが、ここに書くといいという場所がありましたら教えていただきたいです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あっ分かりづらくてすみません!!
src\store\project.ts
にPROJECT_NAME
・PROJECT_NAME_WITH_EXT
の実装を書いて、
src\store\type.ts
にPROJECT_NAME
・PROJECT_NAME_WITH_EXT
の型を書く感じになると思います!
removeExtension
はおそらくここでしか使わないので、関数のコードをPROJECT_NAME
内に移動するとスリムかもです!
雰囲気、実装はこんな感じ・・・?
export const projectStore = createPartialStore<ProjectStoreTypes>({
PROJECT_NAME_WITH_EXT: {
getter(state) {
return state.projectFilePath
? getBaseName(state.projectFilePath)
: undefined;
},
},
PROJECT_NAME: {
getter(state) {
return state.projectFilePath
? getBaseName(state.projectFilePath).replace(".vvproj", "")
: undefined;
},
},
不明な点あれば何でも聞いてください・・・! 🙏
@Hiroshiba
出力結果はPRの画像2と変わりません。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!!!
変更ありがとうございました!!!
分からないところを聞いてくださったのがとても嬉しかったです・・・!!
微調整としてこちらでちょっと変更させていただきます!
もしよかったらまたプルリクエストお待ちしています!!!
src/store/audio.ts
Outdated
|
||
const projectName = getters.PROJECT_NAME ?? ""; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(細かいですが)
ここは意味がまとまってるので空行はない方がいいかもです!
まあ人によりそうですが・・・!
const projectName = getters.PROJECT_NAME ?? ""; | |
const projectName = getters.PROJECT_NAME ?? ""; | |
src/store/audio.ts
Outdated
@@ -1220,12 +1220,16 @@ export const audioStore = createPartialStore<AudioStoreTypes>({ | |||
if (style == undefined) throw new Error("assert style != undefined"); | |||
|
|||
const styleName = style.styleName || DEFAULT_STYLE_NAME; | |||
|
|||
const projectName = getters.PROJECT_NAME ?? ""; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あ! デフォルトのプロジェクト名を適当に決めた方がいいかもですね!
ちょっとこちらで変えさせていただきます!
内容
関連 Issue
close #2075
close #2136
スクリーンショット・動画など
画像1
画像2
画像1の書き出しファイル名パターンを使用し、音声を書き出した際、
001_.wav
はプロジェクトファイル名を設定していない音声ファイル001_開発テスト用.wav
、002_開発テスト用.wav
はプロジェクトファイル名を設定した上で書き出したファイルとなっています。
その他