litagin commited on
Commit
812906a
1 Parent(s): 535748d
Files changed (10) hide show
  1. .gitattributes +1 -0
  2. .gitignore +4 -0
  3. README.md +4 -4
  4. app.py +197 -0
  5. embeddings/all_embs.npy +3 -0
  6. embeddings/all_filelists.txt +3 -0
  7. game_info.json +1754 -0
  8. make.py +36 -0
  9. rename.ipynb +105 -0
  10. requirements.txt +7 -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
+ embeddings/all_filelists.txt filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ audio_files_zipped/
2
+ audio_files_zipped_22_050/
3
+ audio_files_zipped_by_game_22_050/
4
+ .venv/
README.md CHANGED
@@ -1,8 +1,8 @@
1
  ---
2
- title: Anime Voice Finder
3
- emoji: 📉
4
- colorFrom: pink
5
- colorTo: green
6
  sdk: gradio
7
  sdk_version: 5.7.1
8
  app_file: app.py
 
1
  ---
2
+ title: Galgame Voice Finder
3
+ emoji: 🎤
4
+ colorFrom: red
5
+ colorTo: pink
6
  sdk: gradio
7
  sdk_version: 5.7.1
8
  app_file: app.py
app.py ADDED
@@ -0,0 +1,197 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import tempfile
3
+ import zipfile
4
+ from pathlib import Path
5
+
6
+ import gradio as gr
7
+ import librosa
8
+ import numpy as np
9
+ import torch
10
+ from huggingface_hub import snapshot_download
11
+ from loguru import logger
12
+ from pyannote.audio import Inference, Model
13
+
14
+ os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
15
+
16
+ HF_REPO_ID = "litagin/galgame_voice_samples"
17
+ RESNET34_ROOT = Path("./embeddings")
18
+ RESNET34_DIM = 256
19
+ AUDIO_ZIP_DIR = Path("./audio_files_zipped_by_game_22_050")
20
+
21
+ if AUDIO_ZIP_DIR.exists():
22
+ logger.info("Audio files already downloaded. Skip downloading.")
23
+ else:
24
+ logger.info("Downloading audio files...")
25
+ token = os.getenv("HF_TOKEN")
26
+ snapshot_download(
27
+ HF_REPO_ID, repo_type="dataset", local_dir=AUDIO_ZIP_DIR, token=token
28
+ )
29
+
30
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
31
+
32
+ logger.info(f"Device: {device}")
33
+
34
+ logger.info("Loading resnet34 vectors...")
35
+ resnet34_embs = np.load(RESNET34_ROOT / "all_embs.npy")
36
+ resnet34_embs_normalized = resnet34_embs / np.linalg.norm(
37
+ resnet34_embs, axis=1, keepdims=True
38
+ )
39
+
40
+ logger.info("Loading resnet34 model...")
41
+ model_resnet34 = Model.from_pretrained("pyannote/wespeaker-voxceleb-resnet34-LM")
42
+ inference = Inference(model_resnet34, window="whole")
43
+ inference.to(device)
44
+
45
+ logger.info("Loading filelist...")
46
+ with open(RESNET34_ROOT / "all_filelists.txt", "r", encoding="utf-8") as file:
47
+ files = [line.strip() for line in file]
48
+
49
+
50
+ def get_speaker_name(file_idx: int):
51
+ filepath = Path(files[file_idx])
52
+ game_name = filepath.parent.parent.name
53
+ speaker_name = filepath.parent.name
54
+ return f"{game_name}/{speaker_name}" # ゲーム名とスピーカー名を返す
55
+
56
+
57
+ # スピーカーIDの配列を取得
58
+ logger.info("Getting speaker ids...")
59
+ all_speaker_set = set([get_speaker_name(i) for i in range(len(files))])
60
+ id2speaker = {i: speaker for i, speaker in enumerate(sorted(all_speaker_set))}
61
+ num_speakers = len(id2speaker)
62
+ speaker2id = {speaker: i for i, speaker in id2speaker.items()}
63
+ speaker_id_array = np.array(
64
+ [speaker2id[get_speaker_name(i)] for i in range(len(files))]
65
+ )
66
+
67
+
68
+ # def get_zip_archive_path_and_internal_path(file_path: Path) -> tuple[str, str]:
69
+ # # 構造: audio_files/{game_name}/{speaker_name}/{audio_file}
70
+ # game_name = file_path.parent.parent.name
71
+ # speaker_name = file_path.parent.name
72
+ # archive_path = AUDIO_ZIP_DIR / game_name / f"{speaker_name}.zip"
73
+ # internal_path = file_path.name # ZIP内のパスはファイル名のみ
74
+ # return str(archive_path), str(internal_path)
75
+
76
+
77
+ def get_zip_archive_path_and_internal_path(file_path: Path) -> tuple[str, str]:
78
+ # 構造: audio_files/{game_name}/{speaker_name}/{audio_file}
79
+ game_name = file_path.parent.parent.name
80
+ speaker_name = file_path.parent.name
81
+ archive_path = AUDIO_ZIP_DIR / f"{game_name}.zip"
82
+ internal_path = f"{speaker_name}/{file_path.name}" # ZIP内のパスを "speaker_name/ファイル名" とする
83
+ return str(archive_path), str(internal_path)
84
+
85
+
86
+ def load_audio_from_zip(file_path: Path) -> tuple[np.ndarray, int]:
87
+ archive_path, internal_path = get_zip_archive_path_and_internal_path(file_path)
88
+ with zipfile.ZipFile(archive_path, "r") as zf:
89
+ with zf.open(internal_path) as audio_file:
90
+ audio_bytes = audio_file.read()
91
+ # 一時ファイルに書き出してから読み込む
92
+ with tempfile.NamedTemporaryFile(
93
+ delete=False, suffix=Path(internal_path).suffix
94
+ ) as tmp_file:
95
+ tmp_file.write(audio_bytes)
96
+ tmp_file_path = tmp_file.name
97
+ waveform, sample_rate = librosa.load(tmp_file_path, sr=None)
98
+ # 一時ファイルを削除
99
+ Path(tmp_file_path).unlink()
100
+ return waveform, int(sample_rate)
101
+
102
+
103
+ def get_emb(audio_path: Path | str) -> np.ndarray:
104
+ emb = inference(str(audio_path))
105
+ assert isinstance(emb, np.ndarray)
106
+ assert emb.shape == (RESNET34_DIM,)
107
+ return emb
108
+
109
+
110
+ def search(audio_path: str):
111
+ logger.info("Computing embeddings...")
112
+ emb = get_emb(audio_path) # ユーザー入力の音声ファイル
113
+ emb = emb.reshape(1, -1) # (1, dim)
114
+ logger.success("Embeddings computed.")
115
+
116
+ # Normalize query vector
117
+ logger.info("Computing similarities...")
118
+ emb_normalized = emb / np.linalg.norm(emb, axis=1, keepdims=True)
119
+ similarities = np.dot(resnet34_embs_normalized, emb_normalized.T).flatten()
120
+ logger.success("Similarities computed.")
121
+
122
+ # Search max similarity files
123
+ top_k = 10
124
+ top_k_indices = np.argsort(similarities)[::-1][:top_k]
125
+ top_k_files = [files[file_idx] for file_idx in top_k_indices]
126
+ top_k_scores = similarities[top_k_indices]
127
+ logger.info("Fetching audio files...")
128
+ result = []
129
+
130
+ for i, (f, file_idx, score) in enumerate(
131
+ zip(top_k_files, top_k_indices, top_k_scores)
132
+ ):
133
+ waveform_np, sample_rate = load_audio_from_zip(Path(f))
134
+ result.append(
135
+ gr.Audio(
136
+ value=(sample_rate, waveform_np),
137
+ label=f"Top {i+1}: {get_speaker_name(file_idx)}, {score:.4f}",
138
+ )
139
+ )
140
+ logger.success("Audio files fetched.")
141
+ return result
142
+
143
+
144
+ def get_label(audio_path: str, num_top_classes: int = 10):
145
+ logger.info("Computing embeddings...")
146
+ emb = get_emb(audio_path) # ユーザー入力の音声ファイル
147
+ emb = emb.reshape(1, -1) # (1, dim)
148
+ logger.success("Embeddings computed.")
149
+
150
+ # Normalize query vector
151
+ emb_normalized = emb / np.linalg.norm(emb, axis=1, keepdims=True)
152
+
153
+ similarities = np.dot(resnet34_embs_normalized, emb_normalized.T).flatten()
154
+
155
+ logger.info("Calculating average scores...")
156
+ speaker_scores = {}
157
+ for character_id in range(num_speakers):
158
+ # 各キャラクターのインデックスを取得
159
+ character_indices = np.where(speaker_id_array == character_id)[0]
160
+
161
+ # このキャラクターのトップ10の類似度を選択
162
+ top_similarities = np.sort(similarities[character_indices])[::-1][
163
+ :num_top_classes
164
+ ]
165
+
166
+ # 平均スコアを計算
167
+ average_score = np.mean(top_similarities)
168
+
169
+ # スピーカー名を取得
170
+ speaker_name = id2speaker[character_id]
171
+
172
+ speaker_scores[speaker_name] = average_score
173
+
174
+ # スコアでソートして上位10件を返す
175
+ sorted_scores = dict(
176
+ sorted(speaker_scores.items(), key=lambda item: item[1], reverse=True)[:10]
177
+ )
178
+
179
+ logger.success("Average scores calculated.")
180
+ return sorted_scores
181
+
182
+
183
+ with gr.Blocks() as app:
184
+ input_audio = gr.Audio(type="filepath")
185
+ with gr.Row():
186
+ with gr.Column():
187
+ btn_audio = gr.Button("似ている音声を検索")
188
+ top_k = 10
189
+ components = [gr.Audio(label=f"Top {i+1}") for i in range(top_k)]
190
+ with gr.Column():
191
+ btn_label = gr.Button("似ている話者を検索")
192
+ label = gr.Label(num_top_classes=10)
193
+
194
+ btn_audio.click(search, inputs=[input_audio], outputs=components)
195
+ btn_label.click(get_label, inputs=[input_audio], outputs=[label])
196
+
197
+ app.launch()
embeddings/all_embs.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:378797bd49ba8a66ea6f5d606319fc402553ae164c28ce5fed2c30e5e01bf035
3
+ size 860352640
embeddings/all_filelists.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f6311e03b96d8f645bda03c60a0e65c77f5772e8835c442370a338d27fd0eb11
3
+ size 67733562
game_info.json ADDED
@@ -0,0 +1,1754 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "key": "Aino+Links_Sousaku_Kanojo_no_Ren'ai_Koushiki",
4
+ "company": "Aino+Links",
5
+ "name": "創作彼女の恋愛公式",
6
+ "url": "http://ainolinks.com/"
7
+ },
8
+ {
9
+ "key": "AKABEiSOFT3_CharaBration!_~Otome_wa_Koi_shite_Charabureru~",
10
+ "company": "あかべぇそふとすりぃ",
11
+ "name": "きゃらぶれーしょん! ~乙女は恋してキャラぶれる~",
12
+ "url": "https://www.akabeesoft3.com/products/charabration/"
13
+ },
14
+ {
15
+ "key": "AKABEiSOFT3_Dekinai_Watashi_ga,_Kurikaesu",
16
+ "company": "あかべぇそふとすりぃ",
17
+ "name": "できない私が、くり返す。",
18
+ "url": "https://www.akabeesoft3.com/products/timeleap/index.html"
19
+ },
20
+ {
21
+ "key": "AKABEiSOFT3_Hakata_DYINGZOMBIES_~Second_Chance_for_BEAUTIFUL_LIVE~",
22
+ "company": "あかべぇそふとすりぃ",
23
+ "name": "墓多DYINGZOMBIES ~Second Chance for BEAUTIFULLIVE~",
24
+ "url": "https://www.akabeesoft3.com/products/hakata_dz/index.html"
25
+ },
26
+ {
27
+ "key": "AKABEiSOFT3_Hataraku_Otona_no_Ren'ai_Jijou",
28
+ "company": "あかべぇそふとすりぃ",
29
+ "name": "働くオトナの恋愛事情",
30
+ "url": "https://www.akabeesoft3.com/products/hatarakuotona/index.html"
31
+ },
32
+ {
33
+ "key": "AKABEiSOFT3_Hataraku_Otona_no_Ren'ai_Jijou_2",
34
+ "company": "あかべぇそふとすりぃ",
35
+ "name": "働くオトナの恋愛事情2",
36
+ "url": "https://www.akabeesoft3.com/products/hatarakuotona2/index.html"
37
+ },
38
+ {
39
+ "key": "AKABEiSOFT3_Maho_x_Roba_-Witches_Spiritual_Home-",
40
+ "company": "あかべぇそふとすりぃ",
41
+ "name": "まほ×ろば -Witches spiritual home-",
42
+ "url": "https://www.akabeesoft3.com/products/mahoroba/index.html"
43
+ },
44
+ {
45
+ "key": "AKABEiSOFT3_Ryuukishi_Bloody_†_Saga",
46
+ "company": "あかべぇそふとすりぃ",
47
+ "name": "竜騎士 Bloody†Saga",
48
+ "url": "https://www.akabeesoft3.com/products/ryuukishi/index.html"
49
+ },
50
+ {
51
+ "key": "ALcot_Clover_Day's",
52
+ "company": "ALcot",
53
+ "name": "Clover Day's",
54
+ "url": "https://www.alcot.biz/product/cld/"
55
+ },
56
+ {
57
+ "key": "ALcot_Onigokko!",
58
+ "company": "ALcot",
59
+ "name": "鬼ごっこ!",
60
+ "url": "https://www.alcot.biz/product/oni_gokko/"
61
+ },
62
+ {
63
+ "key": "ALcot_Onigokko!_Fandisc",
64
+ "company": "ALcot",
65
+ "name": "鬼ごっこ! ファンディスク",
66
+ "url": "https://www.alcot.biz/product/oni_fd/"
67
+ },
68
+ {
69
+ "key": "ALcot_Shogun-sama_wa_Otoshigoro",
70
+ "company": "ALcot",
71
+ "name": "将軍様はお年頃",
72
+ "url": "https://www.alcot.biz/product/shogun/"
73
+ },
74
+ {
75
+ "key": "ALcot_Shogun-sama_wa_Otoshigoro_Fandisc_-Gosanke_Da_yo!_Zen'in_Shuugou-",
76
+ "company": "ALcot",
77
+ "name": "将軍様はお年頃 ふぁんでぃすく -御三家だヨ!全員集合-",
78
+ "url": "https://www.alcot.biz/product/shogun_fd/index.html"
79
+ },
80
+ {
81
+ "key": "ALcot_Yomegami_My_Sweet_Goddess!",
82
+ "company": "ALcot",
83
+ "name": "よめがみ My Sweet Goddess!",
84
+ "url": "https://www.alcot.biz/product/yomegami/"
85
+ },
86
+ {
87
+ "key": "Alice_Soft_Choukou_Shinki_Ixseal",
88
+ "company": "アリスソフト",
89
+ "name": "超昂神騎エクシール",
90
+ "url": "https://www.alicesoft.com/ixseal/"
91
+ },
92
+ {
93
+ "key": "Alice_Soft_doHna_doHna_-Issho_ni_Warui_Koto_o_Shiyou-",
94
+ "company": "アリスソフト",
95
+ "name": "ドーナドーナ いっしょにわるいことをしよう",
96
+ "url": "https://www.alicesoft.com/dohnadohna/"
97
+ },
98
+ {
99
+ "key": "Alice_Soft_Evenicle_2",
100
+ "company": "アリスソフト",
101
+ "name": "イブニクル2",
102
+ "url": "https://www.alicesoft.com/evenicle2/"
103
+ },
104
+ {
105
+ "key": "Alice_Soft_Rance_03_-_Leazas_Kanraku",
106
+ "company": "アリスソフト",
107
+ "name": "ランス03 リーザス陥落",
108
+ "url": "http://www.alicesoft.com/rance03/"
109
+ },
110
+ {
111
+ "key": "ASa_Project_Futamata_Ren'ai",
112
+ "company": "ASa Project",
113
+ "name": "フタマタ恋愛",
114
+ "url": "https://asa-pro.com/futakoi/"
115
+ },
116
+ {
117
+ "key": "ASa_Project_Futamata_Ren'ai_-_Rui_&_Miyako_Mini_After_Story",
118
+ "company": "ASa Project",
119
+ "name": "フタマタ恋愛 瑠衣&宮子ミニアフターストーリー",
120
+ "url": "https://asa-pro.com/futakoi/af/"
121
+ },
122
+ {
123
+ "key": "ASa_Project_Futamata_Ren'ai_-_Yua_&_Kirame_Mini_After_Story",
124
+ "company": "ASa Project",
125
+ "name": "フタマタ恋愛 結愛&煌ミニアフターストーリー",
126
+ "url": "https://asa-pro.com/futakoi/af/"
127
+ },
128
+ {
129
+ "key": "ASa_Project_Karigurashi_Ren'ai",
130
+ "company": "ASa Project",
131
+ "name": "かりぐらし恋愛",
132
+ "url": "https://www.asa-pro.com/karigurashi/"
133
+ },
134
+ {
135
+ "key": "ASa_Project_Koibana_Ren'ai",
136
+ "company": "ASa Project",
137
+ "name": "コイバナ恋愛",
138
+ "url": "https://www.asa-pro.com/koibana/"
139
+ },
140
+ {
141
+ "key": "ASa_Project_Koibana_Ren'ai_-_Mini_Fandisk_-_After_Festival",
142
+ "company": "ASa Project",
143
+ "name": "コイバナ恋愛 ミニファンディスク アフターフェスティバル",
144
+ "url": "https://www.asa-pro.com/koibana/af/"
145
+ },
146
+ {
147
+ "key": "ASa_Project_Puramai_Wars",
148
+ "company": "ASa Project",
149
+ "name": "プラマイウォーズ",
150
+ "url": "https://www.asa-pro.com/puramaiwars/"
151
+ },
152
+ {
153
+ "key": "ASa_Project_Ren'ai,_Karichaimashita",
154
+ "company": "ASa Project",
155
+ "name": "恋愛、借りちゃいました",
156
+ "url": "https://www.asa-pro.com/koikari/fd/"
157
+ },
158
+ {
159
+ "key": "ASa_Project_Ren'ai,_Karichaimashita_-_Emi_&_Hasumi_Mini_After_Story",
160
+ "company": "ASa Project",
161
+ "name": "恋愛、借りちゃいました 絵未&葉澄ミニアフターストーリー",
162
+ "url": "https://www.asa-pro.com/koikari/fd/"
163
+ },
164
+ {
165
+ "key": "ASa_Project_Ren'ai,_Karichaimashita_-_Tsubaki_&_Chinatsu_&_Konatsu_Mini_After_Story",
166
+ "company": "ASa Project",
167
+ "name": "恋愛、借りちゃいました 椿&千夏&小夏ミニアフターストーリー",
168
+ "url": "https://www.asa-pro.com/koikari/fd/"
169
+ },
170
+ {
171
+ "key": "ASa_Project_Ren'ai_x_Royale",
172
+ "company": "ASa Project",
173
+ "name": "恋愛×ロワイアル",
174
+ "url": "https://www.asa-pro.com/koirowa/"
175
+ },
176
+ {
177
+ "key": "ASa_Project_Ren'ai_x_Royale_-_Mari_&_Shione_&_Ao_Mini_After_Story",
178
+ "company": "ASa Project",
179
+ "name": "恋愛×ロワイアル まり&汐音&蒼ミニアフターストーリー",
180
+ "url": "https://www.asa-pro.com/koirowa/af/"
181
+ },
182
+ {
183
+ "key": "ASa_Project_Ren'ai_x_Royale_-_Nonoka_&_Renna_&_Yuna_Mini_After_Story",
184
+ "company": "ASa Project",
185
+ "name": "恋愛×ロワイアル 乃々香&蓮菜&由奈ミニアフターストーリー",
186
+ "url": "https://www.asa-pro.com/koirowa/af/"
187
+ },
188
+ {
189
+ "key": "ASa_Project_Suki_to_Suki_to_de_Sankaku_Ren'ai",
190
+ "company": "ASa Project",
191
+ "name": "スキとスキとでサンカク恋愛",
192
+ "url": "https://www.asa-pro.com/sankakurenai/"
193
+ },
194
+ {
195
+ "key": "Azarashi_Soft+1_Makimura_Hazuki_no_Koigatari",
196
+ "company": "あざらしそふと+1",
197
+ "name": "槇村葉月の恋語り",
198
+ "url": "https://azarashi-soft-plusone.nexton-net.jp/makikoi/"
199
+ },
200
+ {
201
+ "key": "Azarashi_Soft+1_Uchi_no_Aruji_wa_Youkai_no_Joushiki_o_Shiranai",
202
+ "company": "あざらしそふと+1",
203
+ "name": "うちの主は妖怪の常識を知らない",
204
+ "url": "https://azarashi-soft-plusone.nexton-net.jp/youjou/"
205
+ },
206
+ {
207
+ "key": "Azarashi_Soft_Aibeya",
208
+ "company": "あざらしそふと",
209
+ "name": "アイベヤ",
210
+ "url": "https://azarashi-soft.nexton-net.jp/aibeya/"
211
+ },
212
+ {
213
+ "key": "Azarashi_Soft_Aibeya_2",
214
+ "company": "あざらしそふと",
215
+ "name": "アイベヤ2",
216
+ "url": "https://azarashi-soft.nexton-net.jp/aibeya2/"
217
+ },
218
+ {
219
+ "key": "Azarashi_Soft_Aikagi_2",
220
+ "company": "あざらしそふと",
221
+ "name": "アイカギ2",
222
+ "url": "https://azarashi-soft.nexton-net.jp/aikagi2/"
223
+ },
224
+ {
225
+ "key": "Azarashi_Soft_Aikagi_3",
226
+ "company": "あざらしそふと",
227
+ "name": "アイカギ3",
228
+ "url": "https://azarashi-soft.nexton-net.jp/aikagi3/"
229
+ },
230
+ {
231
+ "key": "Azarashi_Soft_Amaemi_-longing_for_you-",
232
+ "company": "あざらしそふと",
233
+ "name": "アマエミ -longing for you-",
234
+ "url": "https://azarashi-soft.nexton-net.jp/amaemi/"
235
+ },
236
+ {
237
+ "key": "Azarashi_Soft_Amakano+",
238
+ "company": "あざらしそふと",
239
+ "name": "アマカノ+",
240
+ "url": "https://azarashi-soft.nexton-net.jp/amakano-plus/"
241
+ },
242
+ {
243
+ "key": "Azarashi_Soft_Amakano_-_Perfect_Edition",
244
+ "company": "あざらしそふと",
245
+ "name": "アマカノ~Perfect Edition~",
246
+ "url": "https://azarashi-soft.nexton-net.jp/amakano-pe/"
247
+ },
248
+ {
249
+ "key": "Azarashi_Soft_Amakano_2+",
250
+ "company": "あざらしそふと",
251
+ "name": "アマカノ2+",
252
+ "url": "https://azarashi-soft.nexton-net.jp/amakano2-plus/"
253
+ },
254
+ {
255
+ "key": "Azarashi_Soft_Amakano_2_-_Perfect_Edition",
256
+ "company": "あざらしそふと",
257
+ "name": "アマカノ2~Perfect Edition~",
258
+ "url": "https://azarashi-soft.nexton-net.jp/amakano2-pe/"
259
+ },
260
+ {
261
+ "key": "Azarashi_Soft_Amakano_~Second_Season~",
262
+ "company": "あざらしそふと",
263
+ "name": "アマカノ~Second Season~",
264
+ "url": "https://azarashi-soft.nexton-net.jp/amakano-ss/"
265
+ },
266
+ {
267
+ "key": "Azarashi_Soft_Amakano_~Second_Season~+",
268
+ "company": "あざらしそふと",
269
+ "name": "アマカノ~Second Season~+",
270
+ "url": "https://azarashi-soft.nexton-net.jp/amakano-ss-plus/reserved.html"
271
+ },
272
+ {
273
+ "key": "Azarashi_Soft_Amanatsu_-_Perfect_Edition",
274
+ "company": "あざらしそふと",
275
+ "name": "アマナツ~Perfect Edition~",
276
+ "url": "https://azarashi-soft.nexton-net.jp/amanatu-pe/"
277
+ },
278
+ {
279
+ "key": "Azarashi_Soft_Asuka-san_wa_Nabikanai",
280
+ "company": "あざらしそふと",
281
+ "name": "アスカさんはなびかない",
282
+ "url": "https://azarashi-soft.nexton-net.jp/asunabi/"
283
+ },
284
+ {
285
+ "key": "Azarashi_Soft_Maid-san_no_Iru_Kurashi",
286
+ "company": "あざらしそふと",
287
+ "name": "メイドさんのいる暮らし",
288
+ "url": "https://azarashi-soft.nexton-net.jp/meikura/"
289
+ },
290
+ {
291
+ "key": "Azarashi_Soft_Maid-san_no_Iru_Kurashi_S",
292
+ "company": "あざらしそふと",
293
+ "name": "メイドさんのいる暮らしS",
294
+ "url": "https://azarashi-soft.nexton-net.jp/meikura_s/"
295
+ },
296
+ {
297
+ "key": "Azarashi_Soft_Osananajimi_no_Iru_Kurashi",
298
+ "company": "あざらしそふと",
299
+ "name": "幼馴染のいる暮らし",
300
+ "url": "https://azarashi-soft.nexton-net.jp/osakura/"
301
+ },
302
+ {
303
+ "key": "Azarashi_Soft_Royal_Garden_~Otome_ni_Koi_Suru_Ouji_no_Gikyoku~",
304
+ "company": "あざらしそふと",
305
+ "name": "ロイヤルガーデン~乙女に恋する皇子の戯曲~",
306
+ "url": "https://azarashi-soft.nexton-net.jp/royalgarden/"
307
+ },
308
+ {
309
+ "key": "Azarashi_Soft_Tomodachi_Kara_Koibito_e",
310
+ "company": "あざらしそふと",
311
+ "name": "友だちから恋びとへ",
312
+ "url": "https://azarashi-soft.nexton-net.jp/tomokoi/"
313
+ },
314
+ {
315
+ "key": "Azarashi_Soft_Toshishita_Kanojo",
316
+ "company": "あざらしそふと",
317
+ "name": "年下彼女",
318
+ "url": "http://azarashi-soft.nexton-net.jp/y-kanojo/"
319
+ },
320
+ {
321
+ "key": "Azurite_Akumade,_Kore_wa_~_no_Monogatari",
322
+ "company": "Azurite",
323
+ "name": "あくまで、これは~の物語",
324
+ "url": "https://fanzagames-digination.com/azurite/korehano/"
325
+ },
326
+ {
327
+ "key": "Azurite_Tamayura_Mirai",
328
+ "company": "Azurite",
329
+ "name": "タマユラミライ",
330
+ "url": "https://fanzagames-digination.com/azurite/tamayura/"
331
+ },
332
+ {
333
+ "key": "Barista_Lab_Anabel_Maidgarden",
334
+ "company": "Barista Lab",
335
+ "name": "アナベル・メイドガーデン",
336
+ "url": "https://www.barista-lab.net/annabel/"
337
+ },
338
+ {
339
+ "key": "Barista_Lab_Lilium_Wedding_Plan",
340
+ "company": "Barista Lab",
341
+ "name": "リリウム・ウェディングプラン",
342
+ "url": "https://www.barista-lab.net/lilium/"
343
+ },
344
+ {
345
+ "key": "Barista_Lab_Sora_no_Ao_to_Shiro_to_Mabataki_no_Natsu",
346
+ "company": "Barista Lab",
347
+ "name": "空の青と白と/瞬きの夏",
348
+ "url": "https://www.barista-lab.net/soratoto/"
349
+ },
350
+ {
351
+ "key": "BaseSon_Momoiro_†_Sengoku_[Miku_Hen]",
352
+ "company": "BaseSon",
353
+ "name": "桃色†戦国[美空編]",
354
+ "url": "https://baseson.nexton-net.jp/momo-senkoi/"
355
+ },
356
+ {
357
+ "key": "BaseSon_Sengoku_†_Koihime_EX+PLUS_~Iyashi_Tokoro,_Kensuke_Hen~",
358
+ "company": "BaseSon",
359
+ "name": "戦国†恋姫EX+PLUS ~癒し処、剣丞編~",
360
+ "url": "https://baseson.nexton-net.jp/senkoi-ex-comp/"
361
+ },
362
+ {
363
+ "key": "BaseSon_Sengoku_†_Koihime_EX_1_~Oushuu_no_Dokugan_Ryuu_Hen~",
364
+ "company": "BaseSon",
365
+ "name": "戦国†恋姫EX壱 ~奥州の独眼竜編~",
366
+ "url": "https://baseson.nexton-net.jp/senkoi-ex1/"
367
+ },
368
+ {
369
+ "key": "BaseSon_Sengoku_†_Koihime_EX_2_~Oni_no_Kuni,_Echizen_Hen~",
370
+ "company": "BaseSon",
371
+ "name": "戦国†恋姫EX弐 ~鬼の国、越前編~",
372
+ "url": "https://baseson.nexton-net.jp/senkoi-ex2/"
373
+ },
374
+ {
375
+ "key": "BaseSon_Sengoku_†_Koihime_EX_3_~Mouri_Ke_no_Kizuna_Hen~",
376
+ "company": "BaseSon",
377
+ "name": "戦国†恋姫EX参 ~毛利家の絆編~",
378
+ "url": "http://baseson.nexton-net.jp/senkoi-ex3/"
379
+ },
380
+ {
381
+ "key": "BaseSon_Sengoku_†_Koihime_~Otome_Kenran_☆_Sengoku_Emaki~",
382
+ "company": "BaseSon",
383
+ "name": "戦国†恋姫 ~乙女絢爛☆戦国絵巻~",
384
+ "url": "https://nexton-net.jp/sengoku-koihime/"
385
+ },
386
+ {
387
+ "key": "BaseSon_Shin_Koihime_†_Eiyuutan_-_Gaiden_-_Hakugetsu_no_Tomoshibi",
388
+ "company": "BaseSon",
389
+ "name": "真・恋姫†英雄譚外伝 -白月の灯火-",
390
+ "url": "https://baseson.nexton-net.jp/koihaku/"
391
+ },
392
+ {
393
+ "key": "BaseSon_Shin_Koihime_†_Eiyuutan_1_~Otome_Enran_☆_Sangokushi_Engi_[Shoku]~",
394
+ "company": "BaseSon",
395
+ "name": "真・恋姫†英雄譚1 ~乙女艶乱☆三国志演義[蜀]~",
396
+ "url": "https://baseson.nexton-net.jp/sinkoi-eiyuutan/syoku/"
397
+ },
398
+ {
399
+ "key": "BaseSon_Shin_Koihime_†_Eiyuutan_2_~Otome_Enran_☆_Sangokushi_Engi_[Gi]~",
400
+ "company": "BaseSon",
401
+ "name": "真・恋姫†英雄譚2 ~乙女艶乱☆三国志演義[魏]~",
402
+ "url": "https://baseson.nexton-net.jp/sinkoi-eiyuutan/gi/"
403
+ },
404
+ {
405
+ "key": "BaseSon_Shin_Koihime_†_Eiyuutan_3_~Otome_Enran_☆_Sangokushi_Engi_[Go]~",
406
+ "company": "BaseSon",
407
+ "name": "真・恋姫†英雄譚3 ~乙女艶乱☆三国志演義[呉]~",
408
+ "url": "https://baseson.nexton-net.jp/sinkoi-eiyuutan/go/"
409
+ },
410
+ {
411
+ "key": "BaseSon_Shin_Koihime_†_Eiyuutan_4_~Otome_Enran_☆_Sangokushi_Engi_[Go]~",
412
+ "company": "BaseSon",
413
+ "name": "真・恋姫†英雄譚4 ~乙女耀乱☆三国志演義[呉]~",
414
+ "url": "https://baseson.nexton-net.jp/eiyu4/"
415
+ },
416
+ {
417
+ "key": "BaseSon_Shin_Koihime_†_Eiyuutan_5_~Otome_Enran_☆_Sangokushi_Engi_[Gi]~",
418
+ "company": "BaseSon",
419
+ "name": "真・恋姫†英雄譚5 ~乙女耀乱☆三国志演義[魏]~",
420
+ "url": "https://baseson.nexton-net.jp/eiyu5/"
421
+ },
422
+ {
423
+ "key": "BaseSon_Shin_Koihime_†_Eiyuutan_PLUS_~Otome_Enran_☆_Sangokushi_Engi~",
424
+ "company": "BaseSon",
425
+ "name": "真・恋姫†英雄譚123+PLUS ~乙女艶乱☆三国志演義~",
426
+ "url": "https://baseson.nexton-net.jp/sinkoi-eiyuutan123/"
427
+ },
428
+ {
429
+ "key": "BaseSon_Shin_Koihime_†_Musou_-Kakumei-_Ryuuki_no_Taimou",
430
+ "company": "BaseSon",
431
+ "name": "真・恋姫†夢想-革命- 劉旗の大望",
432
+ "url": "https://baseson.nexton-net.jp/kakumei-syoku/"
433
+ },
434
+ {
435
+ "key": "BaseSon_Shin_Koihime_†_Musou_-Kakumei-_Son_Go_no_Ketsumyaku",
436
+ "company": "BaseSon",
437
+ "name": "真・恋姫†夢想-革命- 孫呉の血脈",
438
+ "url": "https://baseson.nexton-net.jp/kakumei-go/"
439
+ },
440
+ {
441
+ "key": "BaseSon_Shin_Koihime_†_Musou_-Kakumei-_Souten_no_Haou",
442
+ "company": "BaseSon",
443
+ "name": "真・恋姫†夢想-革命- 蒼天の覇王",
444
+ "url": "https://baseson.nexton-net.jp/kakumei-gi/"
445
+ },
446
+ {
447
+ "key": "BasiL_Sore_wa_Maichiru_Sakura_no_You_ni",
448
+ "company": "BasiL",
449
+ "name": "それは舞い散る桜のように",
450
+ "url": "https://project-navel.com/sorechiru/"
451
+ },
452
+ {
453
+ "key": "Bug_System_Haze_Man_-The_Local_Hero-",
454
+ "company": "バグシステム",
455
+ "name": "ヘイズマン",
456
+ "url": "http://bug-system.com/product/03_he/"
457
+ },
458
+ {
459
+ "key": "Bug_System_Manakashi_no_Yuri_wa_Akaku_Somaru",
460
+ "company": "バグシステム",
461
+ "name": "真愛の百合は赤く染まる",
462
+ "url": "http://bug-system.com/product/04_mk/"
463
+ },
464
+ {
465
+ "key": "Bug_System_Shiniyuku_Kimi,_Yakata_ni_Mebuku_Zouo",
466
+ "company": "バグシステム",
467
+ "name": "死に逝く君、館に芽吹く憎悪",
468
+ "url": "http://bug-system.com/product/02_si/"
469
+ },
470
+ {
471
+ "key": "Bug_System_Shiniyuku_Kishi,_Isekai_ni_Hibiku_Danmatsuma",
472
+ "company": "バグシステム",
473
+ "name": "死に逝く騎士、異世界に響く断末魔",
474
+ "url": "http://bug-system.com/product/05_nknk/"
475
+ },
476
+ {
477
+ "key": "Cabbage_Soft_Hoshi_Koi_Twinkle",
478
+ "company": "きゃべつそふと",
479
+ "name": "星恋*ティンクル",
480
+ "url": "https://cabbage-soft.com/products/hoshikoi/"
481
+ },
482
+ {
483
+ "key": "catwalkNero_Anastasia_to_7-nin_no_Himegami_~Inmon_no_Rakuin~",
484
+ "company": "catwalkNero",
485
+ "name": "アナスタシアと7人の姫神 ~淫紋の烙印~",
486
+ "url": "https://catwalk.product.co.jp/nero/products/cn11/"
487
+ },
488
+ {
489
+ "key": "CIRCUS_D.C.4_~Da_Capo_4~_Fortunate_Departures",
490
+ "company": "CIRCUS",
491
+ "name": "D.C.4 ~ダ・カーポ4~ フォーチュネイトデパーチャーズ",
492
+ "url": "https://circus-co.jp/product/dc4fd/"
493
+ },
494
+ {
495
+ "key": "CIRCUS_D.C.4_~Da_Capo_4~_Sweet_Harmony",
496
+ "company": "CIRCUS",
497
+ "name": "D.C.4 ~ダ・カーポ4~ スイートハーモニー",
498
+ "url": "https://circus-co.jp/product/dc4sh/"
499
+ },
500
+ {
501
+ "key": "CIRCUS_D.C.5_~Da_Capo_5~",
502
+ "company": "CIRCUS",
503
+ "name": "D.C.5 ~ダ・カーポ5~",
504
+ "url": "https://circus-co.jp/product/dc5/"
505
+ },
506
+ {
507
+ "key": "CIRCUS_D.C.5_~Da_Capo_5~_Future_Link",
508
+ "company": "CIRCUS",
509
+ "name": "D.C.5 ~ダ・カーポ5~ フューチャーリンク",
510
+ "url": "https://circus-co.jp/product/dc5fl/"
511
+ },
512
+ {
513
+ "key": "CIRCUS_Royal_Garden_~Otome_ni_Koi_Suru_Ouji_no_Gikyoku~",
514
+ "company": "あざらしそふと",
515
+ "name": "ロイヤルガーデン~乙女に恋する皇子の戯曲~",
516
+ "url": "https://azarashi-soft.nexton-net.jp/royalgarden/"
517
+ },
518
+ {
519
+ "key": "COSMIC_CUTE_Gleam_Garden_no_Shoujo_-witch_in_gleamgarden-",
520
+ "company": "COSMIC CUTE",
521
+ "name": "グリムガーデンの少女 -witch in gleamgarden-",
522
+ "url": "http://www.cosmiccute.com/products/gleamgarden/index.html"
523
+ },
524
+ {
525
+ "key": "COSMIC_CUTE_Lovesick_Puppies_-Bokura_wa_Koi_Suru_Tame_ni_Umaretekita-",
526
+ "company": "COSMIC CUTE",
527
+ "name": "LOVESICK PUPPIES -僕らは恋するために生まれてきた-",
528
+ "url": "http://www.cosmiccute.com/products/lovesickpuppies/"
529
+ },
530
+ {
531
+ "key": "CRYSTALiA_Akatsuki_Yureru_Koi_Akari",
532
+ "company": "CRYSTALiA",
533
+ "name": "紅月ゆれる恋あかり",
534
+ "url": "https://crystalia.amusecraft.com/yureaka/"
535
+ },
536
+ {
537
+ "key": "CRYSTALiA_Asahi_to_One_Room_~Toaru_Natsu_no_Ichinichi~",
538
+ "company": "CRYSTALiA",
539
+ "name": "旭とワンルーム ~とある夏の一日~",
540
+ "url": "https://crystalia.amusecraft.com/oneroom2/"
541
+ },
542
+ {
543
+ "key": "CRYSTALiA_Kizuna_Kirameku_Koi_Iroha",
544
+ "company": "CRYSTALiA",
545
+ "name": "絆きらめく恋いろは",
546
+ "url": "https://crystalia.amusecraft.com/mekuiro/"
547
+ },
548
+ {
549
+ "key": "CRYSTALiA_Kizuna_Kirameku_Koi_Iroha_-Tsubaki_Renka-",
550
+ "company": "CRYSTALiA",
551
+ "name": "絆きらめく恋いろは 椿恋歌",
552
+ "url": "https://crystalia.amusecraft.com/tsubaki/index.html"
553
+ },
554
+ {
555
+ "key": "CRYSTALiA_Momiji_to_One_Room_~Toaru_Natsu_no_Ichinichi~",
556
+ "company": "CRYSTALiA",
557
+ "name": "紅葉とワンルーム ~とある夏の一日~",
558
+ "url": "https://crystalia.amusecraft.com/oneroom2/"
559
+ },
560
+ {
561
+ "key": "CRYSTALiA_RED_Cherish!",
562
+ "company": "CRYSTALiA",
563
+ "name": "RE:D Cherish!",
564
+ "url": "https://crystalia.amusecraft.com/red/"
565
+ },
566
+ {
567
+ "key": "CRYSTALiA_RED_Cherish!_-Eternity_Blood-",
568
+ "company": "CRYSTALiA",
569
+ "name": "RE:D Cherish! -Eternity Blood-",
570
+ "url": "https://crystalia.amusecraft.com/red_eb/"
571
+ },
572
+ {
573
+ "key": "CRYSTALiA_RED_Cherish!_SS_Des_no_One_Operation",
574
+ "company": "CRYSTALiA",
575
+ "name": "RE:D Cherish! SS デスのワンオペレーション",
576
+ "url": "https://dlsoft.dmm.co.jp/detail/spal_0180/"
577
+ },
578
+ {
579
+ "key": "CRYSTALiA_RED_Cherish!_SS_Rouge_no_One_Operation",
580
+ "company": "CRYSTALiA",
581
+ "name": "RE:D Cherish! SS ルージュのワンオペレーション",
582
+ "url": "https://dlsoft.dmm.co.jp/detail/spal_0179/"
583
+ },
584
+ {
585
+ "key": "CRYSTALiA_Setsuna_ni_Kakeru_Koi_Hanabi",
586
+ "company": "CRYSTALiA",
587
+ "name": "刹那にかける恋はなび",
588
+ "url": "https://crystalia.amusecraft.com/kakehana/"
589
+ },
590
+ {
591
+ "key": "CRYSTALiA_Shion_to_One_Room_-Kizuna_Kirameku_Koi_Iroha_SS-",
592
+ "company": "CRYSTALiA",
593
+ "name": "詩音とワンルーム -絆きらめく恋いろは SS-",
594
+ "url": "http://crystalia.amusecraft.com/oneroom/"
595
+ },
596
+ {
597
+ "key": "CRYSTALiA_Shiraha_Kirameku_Koi_Shirabe",
598
+ "company": "CRYSTALiA",
599
+ "name": "白刃きらめく恋しらべ",
600
+ "url": "https://crystalia.amusecraft.com/mekurabe/"
601
+ },
602
+ {
603
+ "key": "CRYSTALiA_Tsubaki_to_One_Room_-Kizuna_Kirameku_Koi_Iroha_SS-",
604
+ "company": "CRYSTALiA",
605
+ "name": "椿とワンルーム -絆きらめく恋いろは SS-",
606
+ "url": "http://crystalia.amusecraft.com/oneroom/"
607
+ },
608
+ {
609
+ "key": "CUBE_Kami-sama_no_You_na_Kimi_e_Extended_Edition",
610
+ "company": "CUBE",
611
+ "name": "神様のような君へ Extended Edition",
612
+ "url": "https://www.cuffs.co.jp/products/kamikimi_ext/"
613
+ },
614
+ {
615
+ "key": "CUBE_Koishi_Irodoru_Seigiranman",
616
+ "company": "CUBE",
617
+ "name": "恋し彩る正義爛漫",
618
+ "url": "https://www.cuffs.co.jp/products/hero/"
619
+ },
620
+ {
621
+ "key": "CUBE_Koi_Suru_Kanojo_no_Bukiyou_na_Butai",
622
+ "company": "CUBE",
623
+ "name": "恋する彼女の不器用な舞台",
624
+ "url": "http://www.cuffs-cube.jp/products/koikano/"
625
+ },
626
+ {
627
+ "key": "CUBE_Kurano-kunchi_no_Futago_Jijou",
628
+ "company": "CUBE",
629
+ "name": "倉野くんちのふたご事情",
630
+ "url": "http://www.cuffs-cube.jp/products/kurafuta/"
631
+ },
632
+ {
633
+ "key": "CUBE_Mamiya-kunchi_no_Itsutsugo_Jijou",
634
+ "company": "CUBE",
635
+ "name": "間宮くんちの五つ子事情",
636
+ "url": "http://www.cuffs-cube.jp/products/mamiya/"
637
+ },
638
+ {
639
+ "key": "CUBE_Natsu_no_Owari",
640
+ "company": "CUBE",
641
+ "name": "夏ノ終熄",
642
+ "url": "https://www.cuffs.co.jp/products/endofsummer/"
643
+ },
644
+ {
645
+ "key": "CUBE_Neko_to_Wakai_Seyo!",
646
+ "company": "CUBE",
647
+ "name": "ネコと女子寮せよ!",
648
+ "url": "https://www.cuffs.co.jp/products/nekoking/"
649
+ },
650
+ {
651
+ "key": "CUBE_Same_to_Ikiru_Nanokakan",
652
+ "company": "CUBE",
653
+ "name": "サメと生きる七日間",
654
+ "url": "https://www.cuffs.co.jp/enquete/samenana/"
655
+ },
656
+ {
657
+ "key": "CUBE_Umi_to_Yuki_no_Cyan_Blue",
658
+ "company": "CUBE",
659
+ "name": "海と雪のシアンブルー",
660
+ "url": "https://www.cuffs.co.jp/products/cyanblue/"
661
+ },
662
+ {
663
+ "key": "CUBE_Your_Diary_+_H",
664
+ "company": "CUBE",
665
+ "name": "your diary+H",
666
+ "url": "http://www.cuffs-cube.jp/products/yourdiary_h/"
667
+ },
668
+ {
669
+ "key": "CUBE_Yurameku_Kokoro_ni_Michita_Sekai_de,_Kimi_no_Yume_to_Yokubou_wa_Kanau_ka",
670
+ "company": "CUBE",
671
+ "name": "ゆらめく心に満ちた世界で、君の夢と欲望は叶うか",
672
+ "url": "http://www.cuffs-cube.jp/products/yurauka/"
673
+ },
674
+ {
675
+ "key": "DiGination_FLIP_FLOP_~INNOCENCE_OVERCLOCK~",
676
+ "company": "DiGination",
677
+ "name": "FLIP*FLOP ~INNOCENCE OVERCLOCK~",
678
+ "url": "https://www.fanzagames-digination.com/flipflop_io/"
679
+ },
680
+ {
681
+ "key": "DiGination_FLIP_FLOP_~RAMBLING_OVERRUN~",
682
+ "company": "DiGination",
683
+ "name": "FLIP*FLOP ~RAMBLING OVERRUN~",
684
+ "url": "https://www.fanzagames-digination.com/flipflop_ran/"
685
+ },
686
+ {
687
+ "key": "ensemble_Damatte_Watashi_no_Muko_ni_Nare!",
688
+ "company": "ensemble",
689
+ "name": "黙って私のムコになれ!",
690
+ "url": "https://www.ensemble-game.com/03.damamuko/"
691
+ },
692
+ {
693
+ "key": "ensemble_Golden_Marriage",
694
+ "company": "ensemble",
695
+ "name": "ゴールデンマリッジ",
696
+ "url": "https://www.ensemble-game.com/08.goldenmarriage/"
697
+ },
698
+ {
699
+ "key": "ensemble_Golden_Marriage_-Jewel_Days-",
700
+ "company": "ensemble",
701
+ "name": "ゴールデンマリッジ -ジュエルデイズ-",
702
+ "url": "https://www.ensemble-game.com/11.gm_jeweldays/"
703
+ },
704
+ {
705
+ "key": "ensemble_Hana_to_Otome_ni_Shukufuku_o_-Royal_Bouquet-",
706
+ "company": "ensemble",
707
+ "name": "花と乙女に祝福を ロイヤルブーケ",
708
+ "url": "https://www.ensemble-game.com/02.hanaotofd/top.html"
709
+ },
710
+ {
711
+ "key": "ensemble_Hana_wa_Mijikashi,_Odoreyo_Otome",
712
+ "company": "ensemble",
713
+ "name": "花は短し、踊れよ乙女",
714
+ "url": "https://www.ensemble-game.com/28.hanaoto/"
715
+ },
716
+ {
717
+ "key": "ensemble_Hoshi_no_Otome_to_Rikka_no_Shimai",
718
+ "company": "ensemble",
719
+ "name": "星の乙女と六華の姉妹",
720
+ "url": "https://www.ensemble-game.com/27.hoshioto/"
721
+ },
722
+ {
723
+ "key": "ensemble_Koi_Suru_Kimochi_no_Kasanekata",
724
+ "company": "ensemble",
725
+ "name": "恋する気持ちのかさねかた",
726
+ "url": "https://www.ensemble-game.com/12.koikata/"
727
+ },
728
+ {
729
+ "key": "ensemble_Koi_wa_Sotto_Saku_Hana_no_You_ni_~Futari_wa_Eien_ni_Yorisotte_Iku~",
730
+ "company": "ensemble",
731
+ "name": "恋はそっと咲く花のように ~二人は永遠に寄り添っていく~",
732
+ "url": "https://www.ensemble-game.com/22.koihana_eien/"
733
+ },
734
+ {
735
+ "key": "ensemble_Ojou-sama_wa_Gokigen_Naname",
736
+ "company": "ensemble",
737
+ "name": "お嬢様はご機嫌ナナメ",
738
+ "url": "https://www.ensemble-game.com/06.ojyonana/top.html"
739
+ },
740
+ {
741
+ "key": "ensemble_Ojou-sama_wa_Sunao_ni_Narenai",
742
+ "company": "ensemble",
743
+ "name": "お嬢様は素直になれない",
744
+ "url": "https://www.ensemble-game.com/17.ojonai/"
745
+ },
746
+ {
747
+ "key": "ensemble_Ojou-sama_wa_Sunao_ni_Narenai_~Daisuki_o_Kimi_dake_ni~",
748
+ "company": "ensemble",
749
+ "name": "お嬢様は素直になれない ~大好きを君だけに~",
750
+ "url": "https://www.ensemble-game.com/19.ojonai_daisuki/"
751
+ },
752
+ {
753
+ "key": "ensemble_Omoi_o_Sasageru_Otome_no_Melody",
754
+ "company": "ensemble",
755
+ "name": "想いを捧げる乙女のメロディー",
756
+ "url": "https://www.ensemble-game.com/16.otomelo/"
757
+ },
758
+ {
759
+ "key": "ensemble_Omoi_o_Sasageru_Otome_no_Melody_~Afureru_Omoi_o_Shirabe_ni_Nosete~",
760
+ "company": "ensemble",
761
+ "name": "想いを捧げる乙女のメロディー ~溢れる想いを調べに乗せて~",
762
+ "url": "https://www.ensemble-game.com/18.otomelo_shirabe/"
763
+ },
764
+ {
765
+ "key": "ensemble_Otome_Domain_Collab_Mini_ADV",
766
+ "company": "ensemble",
767
+ "name": "オトメ*ドメイン コラボミニADV",
768
+ "url": "https://www.ensemble-game.com/15.otoiro_egao/collabo.html"
769
+ },
770
+ {
771
+ "key": "ensemble_Otome_ga_Irodoru_Koi_no_Essence",
772
+ "company": "ensemble",
773
+ "name": "乙女が彩る恋のエッセンス",
774
+ "url": "https://www.ensemble-game.com/13.otoiro/"
775
+ },
776
+ {
777
+ "key": "ensemble_Otome_ga_Irodoru_Koi_no_Essence_~Egao_de_Orinasu_Mirai~",
778
+ "company": "ensemble",
779
+ "name": "乙女が彩る恋のエッセンス ~笑顔で織りなす未来~",
780
+ "url": "https://www.ensemble-game.com/15.otoiro_egao/"
781
+ },
782
+ {
783
+ "key": "ensemble_Otome_ga_Kanaderu_Koi_no_Aria",
784
+ "company": "ensemble",
785
+ "name": "乙女が奏でる恋のアリア",
786
+ "url": "https://www.ensemble-game.com/10.otokana/"
787
+ },
788
+ {
789
+ "key": "ensemble_Otome_ga_Kanaderu_Koi_no_Aria_~Kimi_ni_Sasageru_Encore~",
790
+ "company": "ensemble",
791
+ "name": "乙女が奏でる恋のアリア ~君に捧げるアンコール~",
792
+ "url": "https://www.ensemble-game.com/12.ok_encore/"
793
+ },
794
+ {
795
+ "key": "ensemble_Otome_ga_Musubu_Tsukiyo_no_Kirameki",
796
+ "company": "ensemble",
797
+ "name": "乙女が結ぶ月夜の煌めき",
798
+ "url": "https://www.ensemble-game.com/21.ototsuki/"
799
+ },
800
+ {
801
+ "key": "ensemble_Otome_ga_Musubu_Tsukiyo_no_Kirameki_Fullmoon_Days",
802
+ "company": "ensemble",
803
+ "name": "乙女が結ぶ月夜の煌めき Fullmoon Days",
804
+ "url": "https://www.ensemble-game.com/23.ototsukiFD/"
805
+ },
806
+ {
807
+ "key": "ensemble_Otome_no_Ken_to_Himegoto_Concerto",
808
+ "company": "ensemble",
809
+ "name": "乙女の剣と秘め事コンチェルト",
810
+ "url": "https://www.ensemble-game.com/29.otohime/"
811
+ },
812
+ {
813
+ "key": "ensemble_Sakura_Mau_Otome_no_Rondo",
814
+ "company": "ensemble",
815
+ "name": "桜舞う乙女のロンド",
816
+ "url": "https://www.ensemble-game.com/07.sakuoto/"
817
+ },
818
+ {
819
+ "key": "ensemble_Sakura_Mau_Otome_no_Rondo_~Anata_to_Miru_Fuyuzakura~",
820
+ "company": "ensemble",
821
+ "name": "桜舞う乙女のロンド ~あなたと見る冬桜~",
822
+ "url": "https://www.ensemble-game.com/09.sakuoto_fd/"
823
+ },
824
+ {
825
+ "key": "ensemble_Secret_Agent_Kagebana_~Shadow_Flower~",
826
+ "company": "ensemble",
827
+ "name": "Secret Agent 影華 ~shadow flower~",
828
+ "url": "https://www.ensemble-game.com/26.secretagent_sf/"
829
+ },
830
+ {
831
+ "key": "ensemble_Secret_Agent_~Kishi_Gakuen_no_Shinobi_Naru_Mono~",
832
+ "company": "ensemble",
833
+ "name": "Secret Agent ~騎士学園の忍びなるもの~",
834
+ "url": "https://www.ensemble-game.com/25.secretagent/"
835
+ },
836
+ {
837
+ "key": "ensemble_Shiny_Sisters",
838
+ "company": "ensemble",
839
+ "name": "シャイニー・シスターズ",
840
+ "url": "https://www.ensemble-game.com/24.shinysisters/"
841
+ },
842
+ {
843
+ "key": "FAVORITE_AstralAir_no_Shiroki_Towa",
844
+ "company": "FAVORITE",
845
+ "name": "アストラエアの白き永遠",
846
+ "url": "http://www.favo-soft.jp/soft/product/WhiteEternity/index.html"
847
+ },
848
+ {
849
+ "key": "FAVORITE_AstralAir_no_Shiroki_Towa_Finale_-Shiroki_Hoshi_no_Yume-",
850
+ "company": "FAVORITE",
851
+ "name": "アストラエアの白き永遠 Finale -白き星の夢-",
852
+ "url": "http://www.favo-soft.jp/soft/product/AstralAirFinale/index.html"
853
+ },
854
+ {
855
+ "key": "FAVORITE_Hoshizora_no_Memoria_-Eternal_Heart-_HD",
856
+ "company": "FAVORITE",
857
+ "name": "星空のメモリア -Eternal Heart- HD",
858
+ "url": "http://www.favo-soft.jp/soft/product/hoshimemo_hd/index.html"
859
+ },
860
+ {
861
+ "key": "FAVORITE_Hoshizora_no_Memoria_-Wish_Upon_a_Shooting_Star-_HD",
862
+ "company": "FAVORITE",
863
+ "name": "星空のメモリア -Wish upon a shooting star- HD",
864
+ "url": "http://www.favo-soft.jp/soft/product/hoshimemo_hd/index.html"
865
+ },
866
+ {
867
+ "key": "FAVORITE_Irotoridori_no_Sekai_HD",
868
+ "company": "FAVORITE",
869
+ "name": "いろとりどりのセカイ HD",
870
+ "url": "http://www.favo-soft.jp/soft/product/WorldsEndHD/index.html"
871
+ },
872
+ {
873
+ "key": "FAVORITE_Sakura,_Moyu._-as_the_Night's,_Reincarnation-",
874
+ "company": "FAVORITE",
875
+ "name": "さくら、もゆ。 -as the Night's, Reincarnation-",
876
+ "url": "http://www.favo-soft.jp/soft/product/sakura/index.html"
877
+ },
878
+ {
879
+ "key": "feng_Yume_to_Iro_de_Dekiteiru",
880
+ "company": "feng",
881
+ "name": "夢と色でできている",
882
+ "url": "http://www.feng.jp/feng8th/"
883
+ },
884
+ {
885
+ "key": "Fluorite_Missing-X-Link_~Ten_no_Yurikago,_Togi_no_Hana~",
886
+ "company": "Fluorite",
887
+ "name": "Missing-X-Link ~天のゆりかご、伽の花~",
888
+ "url": "https://www.fanzagames-digination.com/fluorite/missingxlink/"
889
+ },
890
+ {
891
+ "key": "Fluorite_Sorceress__Alive!_~the_World's_End_Fallen_Star~",
892
+ "company": "Fluorite",
893
+ "name": "ソーサレス*アライヴ! ~the World's End Fallen Star~",
894
+ "url": "https://fanzagames-digination.com/fluorite/sorceress-alive/"
895
+ },
896
+ {
897
+ "key": "Frontwing_Corona_Blossom_Vol.1",
898
+ "company": "Frontwing",
899
+ "name": "コロナ・ブロッサム Vol.1",
900
+ "url": "http://coroblo.com/jp/index.html"
901
+ },
902
+ {
903
+ "key": "Frontwing_Corona_Blossom_Vol.2",
904
+ "company": "Frontwing",
905
+ "name": "コロナ・ブロッサム Vol.2",
906
+ "url": "http://coroblo.com/jp/index.html"
907
+ },
908
+ {
909
+ "key": "Frontwing_Corona_Blossom_Vol.3",
910
+ "company": "Frontwing",
911
+ "name": "コロナ・ブロッサム Vol.3",
912
+ "url": "http://coroblo.com/jp/index.html"
913
+ },
914
+ {
915
+ "key": "Frontwing_GINKA",
916
+ "company": "Frontwing",
917
+ "name": "GINKA",
918
+ "url": "http://ginka.frontwing.jp/"
919
+ },
920
+ {
921
+ "key": "Frontwing_Grisaia_Chronos_Rebellion",
922
+ "company": "Frontwing",
923
+ "name": "グリザイア クロノスリベリオン",
924
+ "url": "https://gri-chro.grisaia-pt.com/"
925
+ },
926
+ {
927
+ "key": "Frontwing_Grisaia_Phantom_Trigger_Vol.1",
928
+ "company": "Frontwing",
929
+ "name": "グリザイア ファントムトリガー Vol.1",
930
+ "url": "https://grisaia-pt.com/"
931
+ },
932
+ {
933
+ "key": "Frontwing_Grisaia_Phantom_Trigger_Vol.2",
934
+ "company": "Frontwing",
935
+ "name": "グリザイア ファントムトリガー Vol.2",
936
+ "url": "https://grisaia-pt.com/"
937
+ },
938
+ {
939
+ "key": "Frontwing_Grisaia_Phantom_Trigger_Vol.3",
940
+ "company": "Frontwing",
941
+ "name": "グリザイア ファントムトリガー Vol.3",
942
+ "url": "https://grisaia-pt.com/"
943
+ },
944
+ {
945
+ "key": "Frontwing_Grisaia_Phantom_Trigger_Vol.4",
946
+ "company": "Frontwing",
947
+ "name": "グリザイア ファントムトリガー Vol.4",
948
+ "url": "https://grisaia-pt.com/"
949
+ },
950
+ {
951
+ "key": "Frontwing_Grisaia_Phantom_Trigger_Vol.5",
952
+ "company": "Frontwing",
953
+ "name": "グリザイア ファントムトリガー Vol.5",
954
+ "url": "https://grisaia-pt.com/"
955
+ },
956
+ {
957
+ "key": "Frontwing_Grisaia_Phantom_Trigger_Vol.5.5",
958
+ "company": "Frontwing",
959
+ "name": "グリザイア ファントムトリガー Vol.5.5",
960
+ "url": "https://grisaia-pt.com/"
961
+ },
962
+ {
963
+ "key": "Frontwing_Grisaia_Phantom_Trigger_Vol.6",
964
+ "company": "Frontwing",
965
+ "name": "グリザイア ファントムトリガー Vol.6",
966
+ "url": "https://grisaia-pt.com/"
967
+ },
968
+ {
969
+ "key": "Frontwing_Grisaia_Phantom_Trigger_Vol.7",
970
+ "company": "Frontwing",
971
+ "name": "グリザイア ファントムトリガー Vol.7",
972
+ "url": "https://grisaia-pt.com/"
973
+ },
974
+ {
975
+ "key": "Frontwing_Grisaia_Phantom_Trigger_Vol.8",
976
+ "company": "Frontwing",
977
+ "name": "グリザイア ファントムトリガー Vol.8",
978
+ "url": "https://grisaia-pt.com/"
979
+ },
980
+ {
981
+ "key": "Hearts_Koi_Saku_Miyako_ni_Ai_no_Yakusoku_o_~Annaffiare~",
982
+ "company": "Hearts",
983
+ "name": "恋咲く都に愛の約束を ~Annaffiare~",
984
+ "url": "https://hearts.amusecraft.com/anna/index.html"
985
+ },
986
+ {
987
+ "key": "Hearts_Koi_Suru_Kokoro_to_Mahou_no_Kotoba",
988
+ "company": "Hearts",
989
+ "name": "恋するココロと��法のコトバ",
990
+ "url": "https://hearts.amusecraft.com/koikoro/index.html"
991
+ },
992
+ {
993
+ "key": "Hearts_Natsuiro_Kokoro_Log",
994
+ "company": "Hearts",
995
+ "name": "ナツイロココロログ",
996
+ "url": "https://hearts.amusecraft.com/rorolog/"
997
+ },
998
+ {
999
+ "key": "Hearts_Natsuiro_Kokoro_Log_~Happy_Summer~",
1000
+ "company": "Hearts",
1001
+ "name": "ナツイロココロログ ~Happy Summer~",
1002
+ "url": "https://hearts.amusecraft.com/rorologhs/"
1003
+ },
1004
+ {
1005
+ "key": "Heliodor_Ryuusei_World_Actor",
1006
+ "company": "Heliodor",
1007
+ "name": "流星ワールドアクター",
1008
+ "url": "https://fanzagames-digination.com/heliodor/world-actor/"
1009
+ },
1010
+ {
1011
+ "key": "hibiki_works_PRETTY×CATION",
1012
+ "company": "hibiki works",
1013
+ "name": "PRETTY×CATION",
1014
+ "url": "https://www.hibiki-site.com/products/pretty-cation/"
1015
+ },
1016
+ {
1017
+ "key": "hibiki_works_PRETTY×CATION2",
1018
+ "company": "hibiki works",
1019
+ "name": "PRETTY×CATION2",
1020
+ "url": "https://www.hibiki-site.com/products/pretty-cation2/"
1021
+ },
1022
+ {
1023
+ "key": "Hulotte_Deatte_5-fun_wa_Ore_no_Mono!_Jikan_Teishi_to_Atropos",
1024
+ "company": "Hulotte",
1025
+ "name": "出会って5分は俺のもの! 時間停止と不可避な運命",
1026
+ "url": "https://hulotte.jp/product/atropos/"
1027
+ },
1028
+ {
1029
+ "key": "Hulotte_Imouto_no_Okage_de_Motesugite_Yabai",
1030
+ "company": "Hulotte",
1031
+ "name": "妹のおかげでモテすぎてヤバい。",
1032
+ "url": "https://hulotte.jp/product/moteyaba/"
1033
+ },
1034
+ {
1035
+ "key": "Hulotte_Kamidanomi_Shisugite_Ore_no_Mirai_ga_Yabai",
1036
+ "company": "Hulotte",
1037
+ "name": "神頼みしすぎて俺の未来がヤバい。",
1038
+ "url": "https://hulotte.jp/product/kamiyaba/"
1039
+ },
1040
+ {
1041
+ "key": "Hulotte_Ore_no_Cupid_ga_Ponkotsu_Sugite_Kowa~i",
1042
+ "company": "Hulotte",
1043
+ "name": "俺の恋天使がポンコツすぎてコワ~い。",
1044
+ "url": "https://hulotte.jp/product/cupid/"
1045
+ },
1046
+ {
1047
+ "key": "Hulotte_Ore_no_Hitomi_de_Maruhadaka!_Fukachi_na_Mirai_to_Misukasu_Vision",
1048
+ "company": "Hulotte",
1049
+ "name": "俺の瞳で丸裸! 不可知な未来と視透かす運命",
1050
+ "url": "https://hulotte.jp/product/vision/"
1051
+ },
1052
+ {
1053
+ "key": "Hulotte_Ore_no_Sugata_ga,_Toumei_ni!_Invisible_to_Suuki_na_Unmei",
1054
+ "company": "Hulotte",
1055
+ "name": "俺の姿が、透明に!? 不可視の薬と数奇な運命",
1056
+ "url": "https://hulotte.jp/product/invisible/"
1057
+ },
1058
+ {
1059
+ "key": "Hulotte_With_Ribbon",
1060
+ "company": "Hulotte",
1061
+ "name": "With Ribbon",
1062
+ "url": "https://hulotte.jp/product/with-ribbon/"
1063
+ },
1064
+ {
1065
+ "key": "Hulotte_Yome_Sagashi_ga_Hakadorisugite_Yabai",
1066
+ "company": "Hulotte",
1067
+ "name": "嫁探しが捗りすぎてヤバい。",
1068
+ "url": "https://hulotte.jp/product/yomeyaba/"
1069
+ },
1070
+ {
1071
+ "key": "KAI_Aoi_Sora_no_Camus",
1072
+ "company": "KAI",
1073
+ "name": "青い空のカミュ",
1074
+ "url": "http://kai-soft.jp/BSC/"
1075
+ },
1076
+ {
1077
+ "key": "key_Angel_Beats!_-1st_beat-",
1078
+ "company": "Key",
1079
+ "name": "Angel Beats! -1st beat-",
1080
+ "url": "http://key.visualarts.gr.jp/angelbeats/"
1081
+ },
1082
+ {
1083
+ "key": "key_LUNARiA_-Virtualized_Moonchild-",
1084
+ "company": "Key",
1085
+ "name": "LUNARiA -Virtualized Moonchild-",
1086
+ "url": "https://key.visualarts.gr.jp/kinetic/lunaria/"
1087
+ },
1088
+ {
1089
+ "key": "key_Prima_Doll_Fuyuzora_Hanabi_Sekka_Mon'you",
1090
+ "company": "Key",
1091
+ "name": "プリマドール 冬空花火/雪華文様",
1092
+ "url": "https://primadoll.jp/kineticnovel/01/"
1093
+ },
1094
+ {
1095
+ "key": "key_Rewrite+",
1096
+ "company": "Key",
1097
+ "name": "Rewrite+",
1098
+ "url": "http://key.visualarts.gr.jp/rewrite/"
1099
+ },
1100
+ {
1101
+ "key": "key_Rewrite_Harvest_festa!",
1102
+ "company": "Key",
1103
+ "name": "Rewrite Harvest festa!",
1104
+ "url": "https://key.visualarts.gr.jp/rewrite_hf/"
1105
+ },
1106
+ {
1107
+ "key": "key_Summer_Pockets",
1108
+ "company": "Key",
1109
+ "name": "Summer Pockets",
1110
+ "url": "https://key.visualarts.gr.jp/summer_rb/"
1111
+ },
1112
+ {
1113
+ "key": "key_Tsui_no_Stella",
1114
+ "company": "Key",
1115
+ "name": "終のステラ",
1116
+ "url": "https://key.visualarts.gr.jp/kinetic/stella/"
1117
+ },
1118
+ {
1119
+ "key": "Lass_Mayoeru_Futari_to_Sekai_no_Subete",
1120
+ "company": "Lass",
1121
+ "name": "迷える2人とセカイのすべて",
1122
+ "url": "https://dlsoft.dmm.co.jp/detail/russ_0145/"
1123
+ },
1124
+ {
1125
+ "key": "Liaison_Amase-Jima_wa_Irokoi_Zakari",
1126
+ "company": "Liaison",
1127
+ "name": "天瀬島は色恋ざかり",
1128
+ "url": "https://liaison.product.co.jp/works/amakoi/index.html"
1129
+ },
1130
+ {
1131
+ "key": "Lose_Maitetsu",
1132
+ "company": "Lose",
1133
+ "name": "まいてつ",
1134
+ "url": "https://maitetsucs.com/"
1135
+ },
1136
+ {
1137
+ "key": "Lump_of_Sugar_Animal☆Panic",
1138
+ "company": "Lump of Sugar",
1139
+ "name": "あにまる☆ぱにっく",
1140
+ "url": "http://quincesoft.jp/product/anipani/"
1141
+ },
1142
+ {
1143
+ "key": "Madosoft_Hamidashi_Creative",
1144
+ "company": "まどそふと",
1145
+ "name": "はみだしクリエイティブ",
1146
+ "url": "https://madosoft.net/hamidashi/"
1147
+ },
1148
+ {
1149
+ "key": "Madosoft_Hamidashi_Creative_Totsu",
1150
+ "company": "ま��そふと",
1151
+ "name": "はみだしクリエイティブ凸",
1152
+ "url": "https://madosoft.net/totsu/"
1153
+ },
1154
+ {
1155
+ "key": "Madosoft_Raspberry_Cube",
1156
+ "company": "まどそふと",
1157
+ "name": "ラズベリーキューブ",
1158
+ "url": "https://madosoft.net/raspberry/"
1159
+ },
1160
+ {
1161
+ "key": "Madosoft_Wagamama_High_Spec_OC",
1162
+ "company": "まどそふと",
1163
+ "name": "ワガママハイスペックOC",
1164
+ "url": "https://wagahigh.com/oc/"
1165
+ },
1166
+ {
1167
+ "key": "Makura_Sakura_no_Toki_-Sakura_no_Mori_no_Shita_o_Ayumu-",
1168
+ "company": "枕",
1169
+ "name": "サクラノ刻 -櫻の森の下を歩む-",
1170
+ "url": "https://www.makura-soft.com/sakuranotoki/"
1171
+ },
1172
+ {
1173
+ "key": "minori_12_no_Tsuki_no_Eve",
1174
+ "company": "minori",
1175
+ "name": "12の月のイヴ",
1176
+ "url": "http://www.minori.ph/lineup/12mooneve/"
1177
+ },
1178
+ {
1179
+ "key": "minori_Eden_They_Were_Only_Two,_On_The_Planet",
1180
+ "company": "minori",
1181
+ "name": "eden* They were only two, on the planet.",
1182
+ "url": "https://dlsoft.dmm.com/detail/minori_0012/"
1183
+ },
1184
+ {
1185
+ "key": "minori_Natsuzora_no_Perseus",
1186
+ "company": "minori",
1187
+ "name": "夏空のペルセウス",
1188
+ "url": "http://www.minori.ph/lineup/perseus/shinra01.html"
1189
+ },
1190
+ {
1191
+ "key": "minori_Sono_Hi_no_Kemono_ni_wa,",
1192
+ "company": "minori",
1193
+ "name": "その日の獣には、",
1194
+ "url": "http://www.minori.ph/lineup/sonokemo/"
1195
+ },
1196
+ {
1197
+ "key": "minori_Soreyori_no_Prologue",
1198
+ "company": "minori",
1199
+ "name": "ソレヨリノ前奏詩",
1200
+ "url": "http://www.minori.ph/lineup/_yorino/_index01.html"
1201
+ },
1202
+ {
1203
+ "key": "minori_Supipara_Story_#01_-_Spring_Has_Come!",
1204
+ "company": "minori",
1205
+ "name": "すぴぱら STORY #01 - Spring Has Come!",
1206
+ "url": "https://www.minori.ph/lineup/sppl/"
1207
+ },
1208
+ {
1209
+ "key": "minori_Trinoline",
1210
+ "company": "minori",
1211
+ "name": "トリノライン",
1212
+ "url": "http://www.minori.ph/lineup/trinoline/_index01_.html"
1213
+ },
1214
+ {
1215
+ "key": "minori_Trinoline_Genesis",
1216
+ "company": "minori",
1217
+ "name": "トリノライン:ジェネシス",
1218
+ "url": "http://www.minori.ph/lineup/trinoline/_genesis_.html"
1219
+ },
1220
+ {
1221
+ "key": "minori_Tsumi_no_Hikari_Rendezvous",
1222
+ "company": "minori",
1223
+ "name": "罪ノ光ランデヴー",
1224
+ "url": "http://www.minori.ph/lineup/_tsuminohi/index01_.html"
1225
+ },
1226
+ {
1227
+ "key": "minori_Tsumi_no_Hikari_Rendezvous_Mikan_Blossom",
1228
+ "company": "minori",
1229
+ "name": "罪ノ光ランデヴー みかんブロッサム",
1230
+ "url": "https://www.minori.ph/lineup/_tsuminohi/index01_.html"
1231
+ },
1232
+ {
1233
+ "key": "Navel_Kimi_to_Mezameru_Ikutsuka_no_Houhou",
1234
+ "company": "Navel",
1235
+ "name": "君と目覚める幾つかの方法",
1236
+ "url": "https://project-navel.com/kimimeza/"
1237
+ },
1238
+ {
1239
+ "key": "Navel_Otome_Riron_to_Sono_go_no_Shuuhen_-Belle_Epoque-",
1240
+ "company": "Navel",
1241
+ "name": "乙女理論とその後の周辺 -Belle Époque-",
1242
+ "url": "https://project-navel.com/otome_sonogo/"
1243
+ },
1244
+ {
1245
+ "key": "Navel_Otome_Riron_to_Sono_Shuuhen_-Ecole_de_Paris-",
1246
+ "company": "Navel",
1247
+ "name": "乙女理論とその周辺 -École de Paris-",
1248
+ "url": "https://project-navel.com/otomeriron/"
1249
+ },
1250
+ {
1251
+ "key": "Navel_Princess_x_Princess",
1252
+ "company": "Navel",
1253
+ "name": "Princess×Princess",
1254
+ "url": "https://project-navel.com/pripri/"
1255
+ },
1256
+ {
1257
+ "key": "Navel_SHUFFLE!_Episode_2_~Kami_ni_mo_Akuma_ni_mo_Nerawareteiru_Otoko~",
1258
+ "company": "Navel",
1259
+ "name": "SHUFFLE! エピソード2 ~神にも悪魔にも狙われている男~",
1260
+ "url": "https://project-navel.com/shuffle_ep2/"
1261
+ },
1262
+ {
1263
+ "key": "Navel_SPIRAL!!",
1264
+ "company": "Navel",
1265
+ "name": "SPIRAL!!",
1266
+ "url": "https://project-navel.com/spiral/"
1267
+ },
1268
+ {
1269
+ "key": "Navel_Tsuki_ni_Yorisou_Otome_no_Sahou_-Full_Voice_Edition-",
1270
+ "company": "Navel",
1271
+ "name": "月に寄りそう乙女の作法 -Full Voice Edition-",
1272
+ "url": "https://project-navel.com/tsukiniyorisou/"
1273
+ },
1274
+ {
1275
+ "key": "Navel_Tsuki_ni_Yorisou_Otome_no_Sahou_2",
1276
+ "company": "Navel",
1277
+ "name": "月に寄りそう乙女の作法2",
1278
+ "url": "https://project-navel.com/tsukiniyorisou_2nd/"
1279
+ },
1280
+ {
1281
+ "key": "Orthros_Zwei_Trigger",
1282
+ "company": "Orthros",
1283
+ "name": "ツヴァイトリガー",
1284
+ "url": "https://orthrossoft.jp/tweitrigger/"
1285
+ },
1286
+ {
1287
+ "key": "Palette_9-nine-_Deluxe_Edition",
1288
+ "company": "ぱれっと",
1289
+ "name": "9-nine- Deluxe Edition",
1290
+ "url": "https://9-nine-project.com/game/nine-pc/"
1291
+ },
1292
+ {
1293
+ "key": "Palette_Mashiro_Iro_Symphony_-Love_is_pure_white-_Remake_for_FHD",
1294
+ "company": "ぱれっと",
1295
+ "name": "ましろ色シンフォニー -Love is pure white- Remake for FHD",
1296
+ "url": "https://palette.clearrave.co.jp/product/mashiro-project/mashiro/"
1297
+ },
1298
+ {
1299
+ "key": "Palette_Qualia_Otome_Domain",
1300
+ "company": "ぱれっとクオリア",
1301
+ "name": "オトメ*ドメイン",
1302
+ "url": "http://qualia.clearrave.co.jp/"
1303
+ },
1304
+ {
1305
+ "key": "PULLTOP_Kono_Oozora_ni,_Tsubasa_o_Hirogete",
1306
+ "company": "PULLTOP",
1307
+ "name": "この大空に、翼をひろげて",
1308
+ "url": "https://konosora.jp/"
1309
+ },
1310
+ {
1311
+ "key": "PULLTOP_Kono_Oozora_ni,_Tsubasa_o_Hirogete_Flight_Diary",
1312
+ "company": "PULLTOP",
1313
+ "name": "この大空に、翼をひろげて FLIGHT DIARY",
1314
+ "url": "https://konosora.jp/fd/"
1315
+ },
1316
+ {
1317
+ "key": "PULLTOP_Miagete_Goran,_Yozora_no_Hoshi_o",
1318
+ "company": "PULLTOP",
1319
+ "name": "見上げてごらん、夜空の星を",
1320
+ "url": "https://www.pulltop.com/full-of-stars/"
1321
+ },
1322
+ {
1323
+ "key": "PULLTOP_Miagete_Goran,_Yozora_no_Hoshi_o_Fine_Days",
1324
+ "company": "PULLTOP",
1325
+ "name": "見上げてごらん、夜空の星を FINE DAYS",
1326
+ "url": "https://www.pulltop.com/full-of-stars/fd/"
1327
+ },
1328
+ {
1329
+ "key": "PULLTOP_Miagete_Goran,_Yozora_no_Hoshi_o_Interstellar_Focus",
1330
+ "company": "PULLTOP",
1331
+ "name": "見上げてごらん、夜空の星を Interstellar Focus",
1332
+ "url": "https://www.pulltop.com/full-of-stars/if/"
1333
+ },
1334
+ {
1335
+ "key": "PULLTOP_Pure_Song_Garden!",
1336
+ "company": "PULLTOP",
1337
+ "name": "ピュアソングガーデン!",
1338
+ "url": "https://www.pulltop.com/PSG/top.html"
1339
+ },
1340
+ {
1341
+ "key": "Purple_software_Amatsutsumi",
1342
+ "company": "Purple software",
1343
+ "name": "アマツツミ",
1344
+ "url": "https://www.purplesoftware.jp/products/amatsutsumi/"
1345
+ },
1346
+ {
1347
+ "key": "Purple_software_Aoi_Tori",
1348
+ "company": "Purple software",
1349
+ "name": "アオイトリ",
1350
+ "url": "https://www.purplesoftware.jp/products/aoitori/"
1351
+ },
1352
+ {
1353
+ "key": "Purple_software_Chrono_Clock",
1354
+ "company": "Purple software",
1355
+ "name": "クロノクロック",
1356
+ "url": "https://www.purplesoftware.jp/products/chronoclock/"
1357
+ },
1358
+ {
1359
+ "key": "Purple_software_Criminal_Border_1st_offence",
1360
+ "company": "Purple software",
1361
+ "name": "クリミナルボーダー 1st offence",
1362
+ "url": "https://www.purplesoftware.jp/products/criminalborder/1st.html"
1363
+ },
1364
+ {
1365
+ "key": "Purple_software_Criminal_Border_2nd_offence",
1366
+ "company": "Purple software",
1367
+ "name": "クリミナルボーダー 2nd offence",
1368
+ "url": "https://www.purplesoftware.jp/products/criminalborder/2nd.html"
1369
+ },
1370
+ {
1371
+ "key": "Purple_software_Criminal_Border_3rd_offence",
1372
+ "company": "Purple software",
1373
+ "name": "クリミナルボーダー 3rd offence",
1374
+ "url": "https://www.purplesoftware.jp/products/criminalborder/3rd.html"
1375
+ },
1376
+ {
1377
+ "key": "Qoobrand_Majo_Koi_Nikki",
1378
+ "company": "Qoobrand",
1379
+ "name": "魔女こいにっき",
1380
+ "url": "http://qoo.amusecraft.com/01_mazyokoi/"
1381
+ },
1382
+ {
1383
+ "key": "Qruppo_Hentai_Prison",
1384
+ "company": "Qruppo",
1385
+ "name": "ヘンタイ・プリズン",
1386
+ "url": "https://qruppo.com/products/henpri/"
1387
+ },
1388
+ {
1389
+ "key": "Qruppo_Nukige_Mitai_na_Shima_ni_Sunderu_Watashi_wa_Dou_Surya_Ii_Desu_ka",
1390
+ "company": "Qruppo",
1391
+ "name": "抜きゲーみたいな島に住んでる私はどうすりゃいいですか?",
1392
+ "url": "https://qruppo.com/products/nukitashi/"
1393
+ },
1394
+ {
1395
+ "key": "Recette_Shugaten!_-sugarfull_tempering-",
1396
+ "company": "Recette",
1397
+ "name": "しゅがてん!-sugarfull tempering-",
1398
+ "url": "http://recette.clearrave.co.jp/"
1399
+ },
1400
+ {
1401
+ "key": "SAGA_PLANETS_AMBITIOUS_MISSION",
1402
+ "company": "SAGA PLANETS",
1403
+ "name": "AMBITIOUS MISSION",
1404
+ "url": "https://sagapla.net/works/ambitious/"
1405
+ },
1406
+ {
1407
+ "key": "SAGA_PLANETS_AMBITIOUS_MISSION_After_Episode_1_Kaguya_&_Atena",
1408
+ "company": "SAGA PLANETS",
1409
+ "name": "AMBITIOUS MISSION アフターエピソード1 かぐや&アテナ",
1410
+ "url": "https://sagapla.net/works/ambitious_after/"
1411
+ },
1412
+ {
1413
+ "key": "SAGA_PLANETS_AMBITIOUS_MISSION_After_Episode_2_Yae_&_Nijimu_&_Charl",
1414
+ "company": "SAGA PLANETS",
1415
+ "name": "AMBITIOUS MISSION アフターエピソード2 八重&にじむ&シャル",
1416
+ "url": "https://sagapla.net/works/ambitious_after/"
1417
+ },
1418
+ {
1419
+ "key": "SAGA_PLANETS_Floral_Flowlove",
1420
+ "company": "SAGA PLANETS",
1421
+ "name": "フローラル・フローラブ",
1422
+ "url": "https://sagapla.net/works/floflo/"
1423
+ },
1424
+ {
1425
+ "key": "SAGA_PLANETS_Hanasaki_Work_Spring!",
1426
+ "company": "SAGA PLANETS",
1427
+ "name": "花咲ワークスプリング!",
1428
+ "url": "https://sagapla.net/works/hanasaki/"
1429
+ },
1430
+ {
1431
+ "key": "SAGA_PLANETS_Hatsuyuki_Sakura",
1432
+ "company": "SAGA PLANETS",
1433
+ "name": "はつゆきさくら",
1434
+ "url": "https://sagapla.net/works/hatuyuki/"
1435
+ },
1436
+ {
1437
+ "key": "SAGA_PLANETS_Kakenuke★Seishun_Sparking!",
1438
+ "company": "SAGA PLANETS",
1439
+ "name": "かけぬけ★青春スパーキング!",
1440
+ "url": "https://sagapla.net/works/kakenuke/"
1441
+ },
1442
+ {
1443
+ "key": "SAGA_PLANETS_Karumaruka_Circle",
1444
+ "company": "SAGA PLANETS",
1445
+ "name": "カルマルカ*サークル",
1446
+ "url": "https://sagapla.net/works/karumaruka/"
1447
+ },
1448
+ {
1449
+ "key": "SAGA_PLANETS_Kin'iro_Loveriche",
1450
+ "company": "SAGA PLANETS",
1451
+ "name": "金色ラブリッチェ",
1452
+ "url": "https://sagapla.net/works/kinkoi/"
1453
+ },
1454
+ {
1455
+ "key": "SAGA_PLANETS_Kin'iro_Loveriche_-Golden_Time-",
1456
+ "company": "SAGA PLANETS",
1457
+ "name": "金色ラブリッチェ -Golden Time-",
1458
+ "url": "https://sagapla.net/works/kinkoigt/"
1459
+ },
1460
+ {
1461
+ "key": "Sonora_Boku_no_Mirai_wa,_Koi_to_Kakin_to._~Charge_To_The_Future~",
1462
+ "company": "Sonora",
1463
+ "name": "僕の未来は、恋と課金と。~Charge To The Future~",
1464
+ "url": "https://www.cuffs.co.jp/products/koi-kakin/"
1465
+ },
1466
+ {
1467
+ "key": "Sonora_Hibikino-san-chi_wa_Eroge-ya-san!",
1468
+ "company": "Sonora",
1469
+ "name": "響野さん家はエロゲ屋さん!",
1470
+ "url": "https://www.cuffs.co.jp/products/hibikino/"
1471
+ },
1472
+ {
1473
+ "key": "Sonora_Onaji_Class_no_Idol-san._Around_me_is_full_by_a_celebrity",
1474
+ "company": "Sonora",
1475
+ "name": "同じクラスのアイドルさん。Around me is full by a celebrity",
1476
+ "url": "https://www.cuffs.co.jp/products/idol-san/"
1477
+ },
1478
+ {
1479
+ "key": "Sonora_Uchi_wa_Mou,_Enki_Dekinai",
1480
+ "company": "Sonora",
1481
+ "name": "ウチはもう、延期できない。",
1482
+ "url": "https://www.cuffs.co.jp/products/enking/"
1483
+ },
1484
+ {
1485
+ "key": "Sphere_Berry's",
1486
+ "company": "Sphere",
1487
+ "name": "Berry's",
1488
+ "url": "https://www.cuffs.co.jp/products/berrys/"
1489
+ },
1490
+ {
1491
+ "key": "Sphere_Haruka_na_Sora",
1492
+ "company": "Sphere",
1493
+ "name": "ハルカナソラ",
1494
+ "url": "https://www.cuffs.co.jp/products/haruka/"
1495
+ },
1496
+ {
1497
+ "key": "Sphere_Imouto_no_Katachi",
1498
+ "company": "Sphere",
1499
+ "name": "妹のカタチ",
1500
+ "url": "https://www.cuffs.co.jp/products/imouto/"
1501
+ },
1502
+ {
1503
+ "key": "Sphere_Yosuga_no_Sora",
1504
+ "company": "Sphere",
1505
+ "name": "ヨスガノソラ",
1506
+ "url": "https://www.cuffs.co.jp/products/yosuga/"
1507
+ },
1508
+ {
1509
+ "key": "Sumikko_Soft_Akiyume_Kukuru",
1510
+ "company": "すみっこソフト",
1511
+ "name": "あきゆめくくる",
1512
+ "url": "http://www.sumikko-soft.com/akikuru/"
1513
+ },
1514
+ {
1515
+ "key": "Sweet_&_Tea_Karenai_Sekai_to_Owaru_Hana",
1516
+ "company": "SWEET&TEA",
1517
+ "name": "枯れない世界と終わる花",
1518
+ "url": "http://sweet.clearrave.co.jp/karehana/"
1519
+ },
1520
+ {
1521
+ "key": "tone_work's_Gin'iro,_Haruka",
1522
+ "company": "tone work's",
1523
+ "name": "銀色、遥か",
1524
+ "url": "http://toneworks.product.co.jp/ginharu/"
1525
+ },
1526
+ {
1527
+ "key": "tone_work's_Hatsukoi_11",
1528
+ "company": "tone work's",
1529
+ "name": "初恋1/1",
1530
+ "url": "http://toneworks.product.co.jp/hatsukoi/"
1531
+ },
1532
+ {
1533
+ "key": "tone_work's_Hoshi_Ori_Yume_Mirai_-_Perfect_Edition",
1534
+ "company": "tone work's",
1535
+ "name": "星織ユメミライ -Perfect Edition-",
1536
+ "url": "http://toneworks.product.co.jp/hoshiori_pe/"
1537
+ },
1538
+ {
1539
+ "key": "tone_work's_Tsuki_no_Kanata_de_Aimashou",
1540
+ "company": "tone work's",
1541
+ "name": "月の彼方で逢いましょう",
1542
+ "url": "https://toneworks.product.co.jp/tsukikana/"
1543
+ },
1544
+ {
1545
+ "key": "tone_work's_Tsuki_no_Kanata_de_Aimashou_SweetSummerRainbow",
1546
+ "company": "tone work's",
1547
+ "name": "月の彼方で逢いましょう SweetSummerRainbow",
1548
+ "url": "https://toneworks.product.co.jp/ssr/"
1549
+ },
1550
+ {
1551
+ "key": "Unison_Shift_Anata_ni_Koi_Suru_Ren'ai_Recette",
1552
+ "company": "ユニゾンシフト",
1553
+ "name": "あなたに恋する恋愛ルセット",
1554
+ "url": "https://unisonshift.amusecraft.com/products/project31/index.html"
1555
+ },
1556
+ {
1557
+ "key": "Unison_Shift_Blossom_Tokeijikake_no_Ley_Line_-Asagiri_ni_Chiru_Hana-",
1558
+ "company": "ユニゾンシフト:ブロッサム",
1559
+ "name": "時計仕掛けのレイライン -朝霧に散る花-",
1560
+ "url": "https://unisonshift.amusecraft.com/products/project30/main.html"
1561
+ },
1562
+ {
1563
+ "key": "Unison_Shift_Blossom_Tokeijikake_no_Ley_Line_-Tasogaredoki_no_Kyoukaisen-",
1564
+ "company": "ユニゾンシフト:ブロッサム",
1565
+ "name": "時計仕掛けのレイライン -黄昏時の境界線-",
1566
+ "url": "https://unisonshift.amusecraft.com/products/project26/main.html"
1567
+ },
1568
+ {
1569
+ "key": "Unison_Shift_Blossom_Tokeijikake_no_Ley_Line_-Zan'ei_no_Yoru_ga_Akeru_Toki-",
1570
+ "company": "ユニゾンシフト:ブロッサム",
1571
+ "name": "時計仕掛けのレイライン -残影の夜が明ける時-",
1572
+ "url": "https://unisonshift.amusecraft.com/products/project28/main.html"
1573
+ },
1574
+ {
1575
+ "key": "Us_track_Koi_x_Shin_Ai_Kanojo",
1576
+ "company": "Us:track",
1577
+ "name": "恋×シンアイ彼女",
1578
+ "url": "http://ustrack.amusecraft.com/koikake/index.html"
1579
+ },
1580
+ {
1581
+ "key": "WhitePowder_LAMUNATION!",
1582
+ "company": "WhitePowder",
1583
+ "name": "LAMUNATION!",
1584
+ "url": "https://whitepowder.jp/lamune/"
1585
+ },
1586
+ {
1587
+ "key": "Windmill_Hatsukoi_Sankaime",
1588
+ "company": "ウィンドミル",
1589
+ "name": "初恋サンカイメ",
1590
+ "url": "https://windmill.suki.jp/product/sankaime/"
1591
+ },
1592
+ {
1593
+ "key": "Windmill_HHG_Megami_no_Shuuen",
1594
+ "company": "ウィンドミル",
1595
+ "name": "HHG 女神の終焉",
1596
+ "url": "https://windmill.suki.jp/product/HHGX/"
1597
+ },
1598
+ {
1599
+ "key": "Windmill_Hyper→Highspeed→Genius",
1600
+ "company": "ウィ���ドミル",
1601
+ "name": "Hyper→Highspeed→Genius",
1602
+ "url": "https://windmill.suki.jp/product/HHG/"
1603
+ },
1604
+ {
1605
+ "key": "Windmill_Kamigakari_Cross_Heart!",
1606
+ "company": "ウィンドミル",
1607
+ "name": "神がかりクロスハート!",
1608
+ "url": "https://windmill.suki.jp/product/kamigakari/"
1609
+ },
1610
+ {
1611
+ "key": "Windmill_Oasis_Happiness!_2_ReLucks",
1612
+ "company": "ウィンドミルOasis",
1613
+ "name": "はぴねす!2 りらっくす",
1614
+ "url": "https://windmill.suki.jp/product/relucks2/"
1615
+ },
1616
+ {
1617
+ "key": "Windmill_Oasis_Happiness!_2_Sakura_Celebration",
1618
+ "company": "ウィンドミルOasis",
1619
+ "name": "はぴねす!2 Sakura Celebration",
1620
+ "url": "https://windmill.suki.jp/product/happiness2/"
1621
+ },
1622
+ {
1623
+ "key": "Windmill_Oasis_Harukaze_Sensation!",
1624
+ "company": "ウィンドミルOasis",
1625
+ "name": "春風センセーション!",
1626
+ "url": "https://windmill.suki.jp/product/harukaze/"
1627
+ },
1628
+ {
1629
+ "key": "Windmill_Oasis_Shukufuku_no_Campanella_-_Plus_Stories",
1630
+ "company": "ウィンドミルOasis",
1631
+ "name": "祝福のカンパネラ Plus Stories",
1632
+ "url": "https://windmill.suki.jp/product/campanella_ps/"
1633
+ },
1634
+ {
1635
+ "key": "Windmill_Oasis_Shukusai_no_Campanella!",
1636
+ "company": "ウィンドミルOasis",
1637
+ "name": "祝祭のカンパネラ!",
1638
+ "url": "https://windmill.suki.jp/product/campanella_fd/"
1639
+ },
1640
+ {
1641
+ "key": "Windmill_Oasis_Witch's_Garden",
1642
+ "company": "ウィンドミルOasis",
1643
+ "name": "ウィッチズガーデン",
1644
+ "url": "https://windmill.suki.jp/product/witch/"
1645
+ },
1646
+ {
1647
+ "key": "Windmill_Oasis_Wizards_Complex",
1648
+ "company": "ウィンドミルOasis",
1649
+ "name": "ウィザーズコンプレックス",
1650
+ "url": "https://windmill.suki.jp/product/wiz/"
1651
+ },
1652
+ {
1653
+ "key": "Windmill_Unlucky_Re_Birth_Reverse",
1654
+ "company": "ウィンドミル",
1655
+ "name": "アンラッキーリバース",
1656
+ "url": "https://windmill.suki.jp/product/unlucky/"
1657
+ },
1658
+ {
1659
+ "key": "Windmill_Yakusoku_no_Natsu,_Mahoroba_no_Yume",
1660
+ "company": "ウィンドミル",
1661
+ "name": "約束の夏、まほろばの夢",
1662
+ "url": "https://windmill.suki.jp/product/natsumaho/"
1663
+ },
1664
+ {
1665
+ "key": "Wonder_Fool_Kanata_no_Ningyo_Hime",
1666
+ "company": "Wonder Fool",
1667
+ "name": "彼方の人魚姫",
1668
+ "url": "https://wonder-fool.jp/ningyohime/"
1669
+ },
1670
+ {
1671
+ "key": "Wonder_Fool_Maokatsu!_~Maou_to_Yuusha_no_Idol_Seikatsu~",
1672
+ "company": "Wonder Fool",
1673
+ "name": "まおかつ!~魔王と勇者のアイドル生活~",
1674
+ "url": "https://wonder-fool.jp/maokatsu/"
1675
+ },
1676
+ {
1677
+ "key": "Wonder_Fool_Yukiiro_Sign",
1678
+ "company": "Wonder Fool",
1679
+ "name": "ユキイロサイン",
1680
+ "url": "https://wonder-fool.jp/yukiiro/"
1681
+ },
1682
+ {
1683
+ "key": "Yuzusoft_Amairo_Islenauts",
1684
+ "company": "ゆずソフト",
1685
+ "name": "天色*アイルノーツ",
1686
+ "url": "https://www.yuzu-soft.com/ja/amairo.html"
1687
+ },
1688
+ {
1689
+ "key": "Yuzusoft_Cafe_Stella_to_Shinigami_no_Chou",
1690
+ "company": "ゆずソフト",
1691
+ "name": "喫茶ステラと死神の蝶",
1692
+ "url": "https://www.yuzu-soft.com/products/stella/"
1693
+ },
1694
+ {
1695
+ "key": "Yuzusoft_DRACU-RIOT!",
1696
+ "company": "ゆずソフト",
1697
+ "name": "DRACU-RIOT!",
1698
+ "url": "https://www.yuzu-soft.com/ja/dracuriot.html"
1699
+ },
1700
+ {
1701
+ "key": "Yuzusoft_RIDDLE_JOKER",
1702
+ "company": "ゆずソフト",
1703
+ "name": "RIDDLE JOKER",
1704
+ "url": "https://www.yuzu-soft.com/products/riddle/"
1705
+ },
1706
+ {
1707
+ "key": "Yuzusoft_Sanoba_Witch",
1708
+ "company": "ゆずソフト",
1709
+ "name": "サノバウィッチ",
1710
+ "url": "https://www.yuzu-soft.com/products/sothewitch/"
1711
+ },
1712
+ {
1713
+ "key": "Yuzusoft_Tenshi☆Souzou_RE-BOOT!",
1714
+ "company": "ゆずソフト",
1715
+ "name": "天使☆騒々 RE-BOOT!",
1716
+ "url": "https://www.yuzu-soft.com/products/ten_sz/"
1717
+ },
1718
+ {
1719
+ "key": "ωstar_Bishoujo_Mangekyou_-Kami_ga_Tsukuritamouta_Shoujo-tachi-",
1720
+ "company": "ωstar",
1721
+ "name": "美少女万華鏡 -神が造りたもうた少女たち-",
1722
+ "url": "http://www.omega-star.jp/biman3html/"
1723
+ },
1724
+ {
1725
+ "key": "ωstar_Bishoujo_Mangekyou_-Kotowari_to_Meikyuu_no_Shoujo-",
1726
+ "company": "ωstar",
1727
+ "name": "美少女万華鏡 -理と迷宮の少女-",
1728
+ "url": "http://www.favo-soft.jp/omega-star/biman5html/"
1729
+ },
1730
+ {
1731
+ "key": "ωstar_Bishoujo_Mangekyou_-Norowareshi_Densetsu_no_Shoujo-",
1732
+ "company": "ωstar",
1733
+ "name": "美少女万華鏡 -呪われし伝説の少女-",
1734
+ "url": "http://www.omega-star.jp/bimanhtml/"
1735
+ },
1736
+ {
1737
+ "key": "ωstar_Bishoujo_Mangekyou_-Tsumi_to_Batsu_no_Shoujo-",
1738
+ "company": "ωstar",
1739
+ "name": "美少女万華鏡 -罪と罰の少女-",
1740
+ "url": "http://www.omega-star.jp/biman4html/"
1741
+ },
1742
+ {
1743
+ "key": "ωstar_Bishoujo_Mangekyou_-Wasurenagusa_to_Eien_no_Shoujo-",
1744
+ "company": "ωstar",
1745
+ "name": "美少女万華鏡 -忘れな草と永遠の少女-",
1746
+ "url": "http://www.omega-star.jp/biman2html/"
1747
+ },
1748
+ {
1749
+ "key": "ωstar_Bishoujo_Mangekyou_Ibun_-_Yuki_Onna",
1750
+ "company": "ωstar",
1751
+ "name": "美少女万華鏡異聞 雪おんな",
1752
+ "url": "http://www.omega-star.jp/ibun_brandnew.html"
1753
+ }
1754
+ ]
make.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ from pathlib import Path
3
+
4
+
5
+ def txt_to_json(input_path: Path, output_path: Path) -> None:
6
+ """
7
+ パイプ区切りのTXT形式ファイルをJSON形式に変換する。
8
+
9
+ :param input_path: 入力ファイルのパス(TXT形式)
10
+ :param output_path: 出力ファイルのパス(JSON形式)
11
+ """
12
+ data_list: list[dict[str, str]] = []
13
+
14
+ with input_path.open(encoding="utf-8") as file:
15
+ for line in file:
16
+ line = line.strip()
17
+ if not line:
18
+ continue # 空行はスキップ
19
+
20
+ columns = line.split("|")
21
+ if len(columns) == 4:
22
+ key, company, name, url = columns
23
+ data_list.append(
24
+ {"key": key, "company": company, "name": name, "url": url}
25
+ )
26
+
27
+ # JSONファイルに書き込み
28
+ with output_path.open("w", encoding="utf-8") as json_file:
29
+ json.dump(data_list, json_file, ensure_ascii=False, indent=4)
30
+
31
+
32
+ # 使用例
33
+ input_file = Path("search_results.txt") # 入力ファイルのパス
34
+ output_file = Path("game_info.json") # 出力ファイルのパス
35
+
36
+ txt_to_json(input_file, output_file)
rename.ipynb ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "data": {
10
+ "text/plain": [
11
+ "2"
12
+ ]
13
+ },
14
+ "execution_count": 1,
15
+ "metadata": {},
16
+ "output_type": "execute_result"
17
+ }
18
+ ],
19
+ "source": [
20
+ "1 + 1"
21
+ ]
22
+ },
23
+ {
24
+ "cell_type": "code",
25
+ "execution_count": 2,
26
+ "metadata": {},
27
+ "outputs": [],
28
+ "source": [
29
+ "all_filelists_path = \"embeddings/all_filelists.txt\"\n",
30
+ "\n",
31
+ "with open(all_filelists_path, \"r\", encoding=\"utf-8\") as f:\n",
32
+ " all_filelists = f.readlines()\n",
33
+ "\n",
34
+ "all_filelists = [x.strip() for x in all_filelists]"
35
+ ]
36
+ },
37
+ {
38
+ "cell_type": "code",
39
+ "execution_count": 5,
40
+ "metadata": {},
41
+ "outputs": [
42
+ {
43
+ "data": {
44
+ "text/plain": [
45
+ "\"audio_files\\\\Aino+Links_Sousaku_Kanojo_no_Ren'ai_Koushiki\\\\ちなみ\\\\tin_0000.ogg\""
46
+ ]
47
+ },
48
+ "execution_count": 5,
49
+ "metadata": {},
50
+ "output_type": "execute_result"
51
+ }
52
+ ],
53
+ "source": [
54
+ "all_filelists[0]"
55
+ ]
56
+ },
57
+ {
58
+ "cell_type": "code",
59
+ "execution_count": 6,
60
+ "metadata": {},
61
+ "outputs": [],
62
+ "source": [
63
+ "# Make all suffice to \".ogg\"\n",
64
+ "from pathlib import Path\n",
65
+ "\n",
66
+ "all_filelists = [str(Path(x).with_suffix(\".ogg\")) for x in all_filelists]"
67
+ ]
68
+ },
69
+ {
70
+ "cell_type": "code",
71
+ "execution_count": 7,
72
+ "metadata": {},
73
+ "outputs": [],
74
+ "source": [
75
+ "# Write\n",
76
+ "\n",
77
+ "all_filelists_path = \"embeddings/all_filelists_ogg.txt\"\n",
78
+ "\n",
79
+ "with open(all_filelists_path, \"w\", encoding=\"utf-8\") as f:\n",
80
+ " f.write(\"\\n\".join(all_filelists))"
81
+ ]
82
+ }
83
+ ],
84
+ "metadata": {
85
+ "kernelspec": {
86
+ "display_name": ".venv",
87
+ "language": "python",
88
+ "name": "python3"
89
+ },
90
+ "language_info": {
91
+ "codemirror_mode": {
92
+ "name": "ipython",
93
+ "version": 3
94
+ },
95
+ "file_extension": ".py",
96
+ "mimetype": "text/x-python",
97
+ "name": "python",
98
+ "nbconvert_exporter": "python",
99
+ "pygments_lexer": "ipython3",
100
+ "version": "3.11.10"
101
+ }
102
+ },
103
+ "nbformat": 4,
104
+ "nbformat_minor": 2
105
+ }
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ gradio
2
+ librosa
3
+ loguru
4
+ numpy<2
5
+ pyannote.audio
6
+ torch
7
+ huggingface_hub[hf_transfer]