diff --git a/composer/0.json b/composer/0.json
new file mode 100644
index 00000000..4978642f
--- /dev/null
+++ b/composer/0.json
@@ -0,0 +1,18 @@
+{
+ "uuid": "53226565-0815-4f6a-9396-13939ef5d995",
+ "filetype": 6,
+ "no": 0,
+
+ "name": {
+ "realname": "",
+ "nickname": "Blue Archive"
+ },
+ "intro": "",
+ "contact": {
+ "platform": -1,
+ "value": "",
+ "short_desc": ""
+ },
+
+ "image": ""
+}
\ No newline at end of file
diff --git a/composer/1.json b/composer/1.json
new file mode 100644
index 00000000..36c2740a
--- /dev/null
+++ b/composer/1.json
@@ -0,0 +1,18 @@
+{
+ "uuid": "c7bae7b2-2c52-4786-95c0-b8cff84415e2",
+ "filetype": 6,
+ "no": 1,
+
+ "name": {
+ "realname": "",
+ "nickname": "Mitsukiyo"
+ },
+ "intro": "",
+ "contact": {
+ "platform": 1,
+ "value": "https://twitter.com/mitsukiyo_5",
+ "short_desc": ""
+ },
+
+ "image": ""
+}
\ No newline at end of file
diff --git a/composer/2.json b/composer/2.json
new file mode 100644
index 00000000..f7b3481f
--- /dev/null
+++ b/composer/2.json
@@ -0,0 +1,18 @@
+{
+ "uuid": "1095c152-19a5-4a15-b8bf-ad08e861629b",
+ "filetype": 6,
+ "no": 2,
+
+ "name": {
+ "realname": "",
+ "nickname": "KARUT"
+ },
+ "intro": "",
+ "contact": {
+ "platform": 1,
+ "value": "https://twitter.com/triplebullets",
+ "short_desc": ""
+ },
+
+ "image": ""
+}
\ No newline at end of file
diff --git a/composer/3.json b/composer/3.json
new file mode 100644
index 00000000..0c28aac0
--- /dev/null
+++ b/composer/3.json
@@ -0,0 +1,18 @@
+{
+ "uuid": "70f190ea-ea16-497f-b35d-f5e63c8b0b7f",
+ "filetype": 6,
+ "no": 3,
+
+ "name": {
+ "realname": "",
+ "nickname": "Nor"
+ },
+ "intro": "",
+ "contact": {
+ "platform": 1,
+ "value": "https://twitter.com/NOR0910",
+ "short_desc": ""
+ },
+
+ "image": ""
+}
\ No newline at end of file
diff --git a/composer/4.json b/composer/4.json
new file mode 100644
index 00000000..0cb6ef05
--- /dev/null
+++ b/composer/4.json
@@ -0,0 +1,18 @@
+{
+ "uuid": "88269c2f-c8f7-4a6c-80e6-5f332bc47d35",
+ "filetype": 6,
+ "no": 4,
+
+ "name": {
+ "realname": "",
+ "nickname": "Aiobahn"
+ },
+ "intro": "",
+ "contact": {
+ "platform": 1,
+ "value": "https://twitter.com/Aiobahn",
+ "short_desc": ""
+ },
+
+ "image": ""
+}
\ No newline at end of file
diff --git a/composer/_all.json b/composer/_all.json
new file mode 100644
index 00000000..0dc4ed73
--- /dev/null
+++ b/composer/_all.json
@@ -0,0 +1,11 @@
+{
+ "uuid": "d8d841c6-60b2-4610-b850-a813be5d83ab",
+ "filetype": -14,
+ "name": "[COMPOSER_ALL_NAME]",
+ "namespace": "composer",
+ "desc": "[COMPOSER_ALL_DES]",
+
+ "include": [
+ "[AUTO]"
+ ]
+}
\ No newline at end of file
diff --git a/constant/composer.json b/constant/composer.json
deleted file mode 100644
index 5ff77814..00000000
--- a/constant/composer.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "filetype": 0,
- "file_id": "composer",
- "0": {
- "realname": "Unknown",
- "nickname": "Unknown",
- "contact": {
- "platform": -1,
- "url": {
- "platform": -1,
- "value": "",
- "short_desc": ""
- }
- }
- },
- "1": {
- "realname": "",
- "nickname": "Mitsukiyo",
- "contact": {
- "platform": 1,
- "url": {
- "platform": 1,
- "value": "https://twitter.com/mitsukiyo_5",
- "short_desc": ""
- }
- }
- },
- "2": {
- "realname": "",
- "nickname": "KARUT",
- "contact": {
- "platform": 1,
- "url": {
- "platform": 1,
- "value": "https://twitter.com/triplebullets",
- "short_desc": ""
- }
- }
- },
- "3": {
- "realname": "",
- "nickname": "Nor",
- "contact": {
- "platform": 1,
- "url": {
- "platform": 1,
- "value": "https://twitter.com/NOR0910",
- "short_desc": ""
- }
- }
- },
- "4": {
- "realname": "",
- "nickname": "Aiobahn",
- "contact": {
- "platform": 1,
- "url": {
- "platform": 1,
- "value": "https://twitter.com/Aiobahn",
- "short_desc": ""
- }
- }
- }
-}
\ No newline at end of file
diff --git a/i18n/en/data.json b/i18n/en/data.json
index 196713b4..be00776f 100644
--- a/i18n/en/data.json
+++ b/i18n/en/data.json
@@ -43,5 +43,8 @@
"[CHAR_NPC_NAME]": "All NPCs",
"[CHAR_NPC_DESC]": "This page lists all the NPCs (non-playable characters) of Blue Archive.",
"[CHAR_STU_NAME]": "All students",
- "[CHAR_STU_DESC]": "This page lists all the students of Blue Archive. The related information is auto generated based on Schale DB and therefore there might be some data lag (i.e. no data for newly-released characters), advanced data (i.e. characters can not be found in international server due to the half year gap), or even data errors. You're advised to proceed with caution."
+ "[CHAR_STU_DESC]": "This page lists all the students of Blue Archive. The related information is auto generated based on Schale DB and therefore there might be some data lag (i.e. no data for newly-released characters), advanced data (i.e. characters can not be found in international server due to the half year gap), or even data errors. You're advised to proceed with caution.",
+
+ "[COMPOSER_ALL_NAME]": "All composers",
+ "[COMPOSER_ALL_DESC]": "This page lists all the composers for Blue Archive's music."
}
\ No newline at end of file
diff --git a/i18n/zh_cn/data.json b/i18n/zh_cn/data.json
index 97ba17f5..344b521a 100644
--- a/i18n/zh_cn/data.json
+++ b/i18n/zh_cn/data.json
@@ -45,5 +45,8 @@
"[CHAR_NPC_NAME]": "全部NPC",
"[CHAR_NPC_DESC]": "本页列出所有蔚蓝档案的NPC(不可游玩角色)。",
"[CHAR_STU_NAME]": "全部学生",
- "[CHAR_STU_DESC]": "本页列出所有蔚蓝档案的学生。学生的相关信息基于Schale DB的数据自动生成,因而可能会出现数据滞后(如刚出的新角色没有数据)、超前(国际服晚半年),以至于是不准确的情况,敬请注意。"
+ "[CHAR_STU_DESC]": "本页列出所有蔚蓝档案的学生。学生的相关信息基于Schale DB的数据自动生成,因而可能会出现数据滞后(如刚出的新角色没有数据)、超前(国际服晚半年),以至于是不准确的情况,敬请注意。",
+
+ "[COMPOSER_ALL_NAME]": "全部作曲人",
+ "[COMPOSER_ALL_DESC]": "本页列出所有为蔚蓝档案制作过歌曲的作曲人。"
}
\ No newline at end of file