init
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +1 -0
- .gitignore +1 -0
- app.py +85 -0
- requirements.txt +1 -0
- specs/0verflow_Cross Days/spec1.png +3 -0
- specs/0verflow_Cross Days/spec2.png +3 -0
- specs/0verflow_Cross Days/spec3.png +3 -0
- specs/0verflow_Cross Days/spec4.png +3 -0
- specs/0verflow_Cross Days/spec5.png +3 -0
- specs/0verflow_School Days HQ/spec1.png +3 -0
- specs/0verflow_School Days HQ/spec2.png +3 -0
- specs/0verflow_School Days HQ/spec3.png +3 -0
- specs/0verflow_School Days HQ/spec4.png +3 -0
- specs/0verflow_School Days HQ/spec5.png +3 -0
- specs/0verflow_Shiny Days/spec1.png +3 -0
- specs/0verflow_Shiny Days/spec2.png +3 -0
- specs/0verflow_Shiny Days/spec3.png +3 -0
- specs/0verflow_Shiny Days/spec4.png +3 -0
- specs/0verflow_Shiny Days/spec5.png +3 -0
- specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec1.png +3 -0
- specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec2.png +3 -0
- specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec3.png +3 -0
- specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec4.png +3 -0
- specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec5.png +3 -0
- specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec1.png +3 -0
- specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec2.png +3 -0
- specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec3.png +3 -0
- specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec4.png +3 -0
- specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec5.png +3 -0
- specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec1.png +3 -0
- specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec2.png +3 -0
- specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec3.png +3 -0
- specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec4.png +3 -0
- specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec5.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec1.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec2.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec3.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec4.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec5.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec1.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec2.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec3.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec4.png +3 -0
- specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec5.png +3 -0
- specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec1.png +3 -0
- specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec2.png +3 -0
- specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec3.png +3 -0
- specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec4.png +3 -0
- specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec5.png +3 -0
- specs/AKABEiSOFT3_Ryuukishi Bloody † Saga/spec1.png +3 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
.venv/
|
app.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# app.py
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
|
| 4 |
+
import gradio as gr
|
| 5 |
+
|
| 6 |
+
# -----------------------------
|
| 7 |
+
# 設定
|
| 8 |
+
# -----------------------------
|
| 9 |
+
SPECS_DIR = Path("specs")
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
# -----------------------------
|
| 13 |
+
# ユーティリティ
|
| 14 |
+
# -----------------------------
|
| 15 |
+
def list_game_names():
|
| 16 |
+
"""specs/ 以下のディレクトリ名をゲーム名として列挙"""
|
| 17 |
+
if not SPECS_DIR.exists():
|
| 18 |
+
return []
|
| 19 |
+
return sorted([p.name for p in SPECS_DIR.iterdir() if p.is_dir()])
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def gallery_images(game_name: str):
|
| 23 |
+
"""選択ゲームの spec1..5 のパス(存在するものだけ)を返す"""
|
| 24 |
+
images = []
|
| 25 |
+
for i in range(1, 6):
|
| 26 |
+
p = SPECS_DIR / game_name / f"spec{i}.png"
|
| 27 |
+
if p.exists():
|
| 28 |
+
images.append(str(p))
|
| 29 |
+
return images
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
def filter_table(query: str, all_names: list[str]):
|
| 33 |
+
"""簡易フィルタ:部分一致でゲーム名を絞り込み(大文字小文字無視)"""
|
| 34 |
+
q = (query or "").strip().lower()
|
| 35 |
+
names = all_names if not q else [n for n in all_names if q in n.lower()]
|
| 36 |
+
# Dataframe は 2次元配列でもOK
|
| 37 |
+
return [[n] for n in names]
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
def on_select(evt: gr.SelectData):
|
| 41 |
+
"""左の表の行クリックでギャラリー更新"""
|
| 42 |
+
# Dataframe の select は SelectData を受け取り、row_value に行全体の値が入る
|
| 43 |
+
# row_value[0] が 1列目(=ゲーム名)
|
| 44 |
+
row = evt.row_value or []
|
| 45 |
+
game = row[0] if row else None
|
| 46 |
+
if not game:
|
| 47 |
+
return "## ゲームを選んでください", []
|
| 48 |
+
return f"## `{game}`", gallery_images(game)
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
with gr.Blocks() as app:
|
| 52 |
+
gr.Markdown(
|
| 53 |
+
"# VisualNovel_Dataset Spectrogram Viewer\n- 左のゲーム名をクリックすると、右にそのスペクトログラム5枚が表示されます。"
|
| 54 |
+
)
|
| 55 |
+
|
| 56 |
+
all_names_state = gr.State(list_game_names())
|
| 57 |
+
|
| 58 |
+
with gr.Row():
|
| 59 |
+
with gr.Column(scale=1):
|
| 60 |
+
search = gr.Textbox(
|
| 61 |
+
placeholder="ゲーム名をフィルタ(部分一致)", show_label=False
|
| 62 |
+
)
|
| 63 |
+
table = gr.Dataframe(
|
| 64 |
+
value=[[n] for n in all_names_state.value],
|
| 65 |
+
headers=["game_name"],
|
| 66 |
+
show_row_numbers=True,
|
| 67 |
+
)
|
| 68 |
+
with gr.Column(scale=2):
|
| 69 |
+
title_md = gr.Markdown("## ゲームをクリックしてください")
|
| 70 |
+
gallery = gr.Gallery(
|
| 71 |
+
columns=3,
|
| 72 |
+
height="auto",
|
| 73 |
+
preview=True,
|
| 74 |
+
show_fullscreen_button=True,
|
| 75 |
+
)
|
| 76 |
+
|
| 77 |
+
# クリックでギャラリー更新
|
| 78 |
+
table.select(fn=on_select, outputs=[title_md, gallery])
|
| 79 |
+
|
| 80 |
+
# フィルタで左表の表示を更新
|
| 81 |
+
search.change(fn=filter_table, inputs=[search, all_names_state], outputs=table)
|
| 82 |
+
|
| 83 |
+
# ローカル実行
|
| 84 |
+
if __name__ == "__main__":
|
| 85 |
+
app.launch(inbrowser=True)
|
requirements.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
gradio
|
specs/0verflow_Cross Days/spec1.png
ADDED
|
Git LFS Details
|
specs/0verflow_Cross Days/spec2.png
ADDED
|
Git LFS Details
|
specs/0verflow_Cross Days/spec3.png
ADDED
|
Git LFS Details
|
specs/0verflow_Cross Days/spec4.png
ADDED
|
Git LFS Details
|
specs/0verflow_Cross Days/spec5.png
ADDED
|
Git LFS Details
|
specs/0verflow_School Days HQ/spec1.png
ADDED
|
Git LFS Details
|
specs/0verflow_School Days HQ/spec2.png
ADDED
|
Git LFS Details
|
specs/0verflow_School Days HQ/spec3.png
ADDED
|
Git LFS Details
|
specs/0verflow_School Days HQ/spec4.png
ADDED
|
Git LFS Details
|
specs/0verflow_School Days HQ/spec5.png
ADDED
|
Git LFS Details
|
specs/0verflow_Shiny Days/spec1.png
ADDED
|
Git LFS Details
|
specs/0verflow_Shiny Days/spec2.png
ADDED
|
Git LFS Details
|
specs/0verflow_Shiny Days/spec3.png
ADDED
|
Git LFS Details
|
specs/0verflow_Shiny Days/spec4.png
ADDED
|
Git LFS Details
|
specs/0verflow_Shiny Days/spec5.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec1.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec2.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec3.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec4.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_CharaBration! ~Otome wa Koi shite Charabureru~/spec5.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec1.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec2.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec3.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec4.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Dekinai Watashi ga, Kurikaesu/spec5.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec1.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec2.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec3.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec4.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hakata DYINGZOMBIES ~Second Chance for BEAUTIFUL LIVE~/spec5.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec1.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec2.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec3.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec4.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou 2/spec5.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec1.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec2.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec3.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec4.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Hataraku Otona no Ren'ai Jijou/spec5.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec1.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec2.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec3.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec4.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Maho x Roba -Witches Spiritual Home-/spec5.png
ADDED
|
Git LFS Details
|
specs/AKABEiSOFT3_Ryuukishi Bloody † Saga/spec1.png
ADDED
|
Git LFS Details
|