Skip to content

Commit

Permalink
完成 a300_漢字查標音 功能。
Browse files Browse the repository at this point in the history
  • Loading branch information
AlanJui committed Apr 13, 2024
1 parent 6f7371c commit 96f937a
Show file tree
Hide file tree
Showing 7 changed files with 153 additions and 4 deletions.
10 changes: 10 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,16 @@
"program": "a200_漢字補注音.py",
"console": "integratedTerminal",
},
{
"name": "a300_漢字查標音",
"type": "debugpy",
"request": "launch",
"program": "a300_漢字查標音.py",
"console": "integratedTerminal",
"args": [
""
]
},
{
"name": "a400_反切查拼音",
"type": "debugpy",
Expand Down
Binary file added Kong_Un_V2.db-journal
Binary file not shown.
97 changes: 97 additions & 0 deletions a300_漢字查標音.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
#==============================================================================
# 輸入漢字,查詢廣韻反切標音
#==============================================================================
import os
import sys

from mod_廣韻 import (
cha_ciat_gu_ha_ji,
cha_ciat_gu_siong_ji,
connect_to_db2,
han_ji_cha_piau_im,
)


def main():
# 確認使用者有輸入反切之切語參數
if len(sys.argv) != 2:
print("請輸入欲查詢讀音之【漢字】(無需輸入切語之反切上字及下字)!")
sys.exit(-1)

beh_cha_e_han_ji = sys.argv[1]

# 連上 DB
with connect_to_db2('.\\Kong_Un_V2.db') as conn:
cursor = conn.cursor()

# 查漢字之切語
han_ji_piau_im = han_ji_cha_piau_im(cursor, beh_cha_e_han_ji)
if not han_ji_piau_im:
print("找不到此【漢字】!")
sys.exit(-1)

ciat_gu = han_ji_piau_im[0]['切語']
siong_ji = ciat_gu[0]
ha_ji = ciat_gu[1]

# 顯示結果
os.system('cls')
print('\n=================================================')
print(f'查詢漢字:【{beh_cha_e_han_ji}】')
print(f'切語:{ciat_gu}')
print(f'標音:{han_ji_piau_im[0]["漢字標音"]}')
print(f'字義:{han_ji_piau_im[0]["字義"]}')

# 顯示廣韻參考資料
print('\n-------------------------------------------------')
print('【廣韻查找資料】:\n')
print(f'目次:{han_ji_piau_im[0]["目次"]},小韻字序號:{han_ji_piau_im[0]["小韻字序號"]},小韻字:{han_ji_piau_im[0]["小韻字"]}')

# 查詢反切上字
print('\n-------------------------------------------------')
print('【切語上字】:\n')
siong_ji_im = han_ji_cha_piau_im(cursor, siong_ji)
siong_ji_piau = cha_ciat_gu_siong_ji(cursor, siong_ji)
if not siong_ji_piau:
print(f'查不到【反切上字】:{siong_ji}')
else:
print(f"切語上字 = {siong_ji} (標音:{siong_ji_im[0]['漢字標音']})")
print(f"聲母:{siong_ji_piau[0]['聲母']} [{siong_ji_piau[0]['聲母拼音碼']}],國際音標:/{siong_ji_im[0]['聲母國際音標']}/ ")
print(f"(發音部位:{siong_ji_piau[0]['發音部位']},清濁:{siong_ji_piau[0]['清濁']},發送收:{siong_ji_piau[0]['發送收']})")

# 查詢反切下字
print('\n-------------------------------------------------')
print('【切語下字】:\n')
ha_ji_im = han_ji_cha_piau_im(cursor, ha_ji)
ha_ji_piau = cha_ciat_gu_ha_ji(cursor, ha_ji)
if not ha_ji_piau:
print(f'查不到【反切下字】:{ha_ji}')
else:
print(f"切語下字 = {ha_ji} (標音:{ha_ji_im[0]['漢字標音']})")
print(f"韻母:{ha_ji_piau[0]['韻母']} [{ha_ji_piau[0]['韻母拼音碼']}],國際音標:/{ha_ji_im[0]['韻母國際音標']}/")
print(f"攝:{ha_ji_piau[0]['攝']},調:{ha_ji_piau[0]['調']}聲,目次:{ha_ji_piau[0]['目次']}")
print(f"{ha_ji_piau[0]['韻系']}韻系,{ha_ji_piau[0]['韻目']}韻,{ha_ji_piau[0]['呼']}口呼,{ha_ji_piau[0]['等']}等 ({ha_ji_piau[0]['等呼']})")

# 組合拼音
tiau_ho_list = {
'清平': 1,
'清上': 2,
'清去': 3,
'清入': 4,
'濁平': 5,
'濁上': 2,
'濁去': 7,
'濁入': 8,
}
siann = siong_ji_piau[0]['聲母拼音碼']
cing_tok_str = siong_ji_piau[0]['清濁']
cing_tok = cing_tok_str[-1]
un = ha_ji_piau[0]['韻母拼音碼']
tiau_ho = tiau_ho_list[ f"{cing_tok}{ha_ji_piau[0]['調']}" ]

print('\n-------------------------------------------------')
print(f'【切語拼音】:{ciat_gu} [{siann}{un}{tiau_ho}]\n')


if __name__ == "__main__":
main()
File renamed without changes.
6 changes: 3 additions & 3 deletions a400_反切查拼音.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from mod_廣韻 import (
cha_ciat_gu_ha_ji,
cha_ciat_gu_siong_ji,
connect_to_db,
connect_to_db2,
han_ji_cha_piau_im,
)

Expand All @@ -26,8 +26,8 @@ def main():
sys.exit(-1)

# 連上 DB
with connect_to_db('.\\Kong_Un_V2.db') as conn:
cursor = conn.curson()
with connect_to_db2('.\\Kong_Un_V2.db') as conn:
cursor = conn.cursor()

# 根據反切上字和反切下字來查詢台羅拼音
siong_ji = ciat_gu[0]
Expand Down
42 changes: 42 additions & 0 deletions docs/SDD-420_漢字廣韻標音檢視規格.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,45 @@
- 閩拼韻母: text
- 台羅韻母: text
- 方音韻母: text

## 舊版檢視SQL Script

```sql
CREATE VIEW 漢字查廣韻標音 AS
SELECT
字表.識別號,
字表.字,
字表.同音字序,
字表.切語,
字表.拼音 AS 漢字標音,
字表.字義,
小韻表.小韻字,
小韻表.目次編碼,
小韻表.小韻字序號,
小韻表.小韻字集,
小韻表.字數,
切語上字表.發音部位,
切語上字表.聲母,
切語上字表.清濁,
切語上字表.發送收,
切語上字表.聲母拼音碼 AS 上字標音,
切語上字表.切語上字集,
切語下字表.韻系列號,
切語下字表.韻系行號,
切語下字表.韻目索引,
切語下字表.目次,
切語下字表.攝,
切語下字表.韻系,
切語下字表.韻目,
切語下字表.調,
切語下字表.呼,
切語下字表.等,
切語下字表.韻母,
切語下字表.切語下字集,
切語下字表.等呼,
切語下字表.韻母拼音碼 AS 下字標音
FROM 字表
JOIN 小韻表 ON 字表.小韻識別號 = 小韻表.識別號
JOIN 切語上字表 ON 小韻表.上字表識別號 = 切語上字表.識別號
JOIN 切語下字表 ON 小韻表.下字表識別號 = 切語下字表.識別號
```
2 changes: 1 addition & 1 deletion mod_廣韻.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def connect_to_db2(db_path):
conn = sqlite3.connect(db_path)

# 創建一個游標
cursor = conn.cursor()
cursor = conn.cursor() # noqa: F841

return conn

Expand Down

0 comments on commit 96f937a

Please sign in to comment.