#!python
import json
from os import walk
from os.path import join
import argparse
import yaml


def 揣規个資料夾(專案名, 來源):
    全部資料 = []
    for 所在, _資料夾, 檔名陣列 in walk(來源):
        for 檔名 in 檔名陣列:
            來源檔案 = join(所在, 檔名)
            with open(來源檔案) as 檔:
                資料 = json.load(檔)
            來源屬性 = {'名': 專案名}
            for 欄位, 內容 in 資料.items():
                if 欄位 != '資料':
                    來源屬性[欄位] = 內容
            for 篇 in 資料['資料']:
                篇來源屬性 = {}
                for 欄位, 內容 in 篇.items():
                    if 欄位 != '段':
                        篇來源屬性[欄位] = 內容
                篇來源屬性.update(來源屬性)
#                 if len(s['段']) == 0:
#                     print(來源檔案)
                for 漢字, 白話字 in 篇['段']:
                    段資料 = {'來源': 篇來源屬性}
                    段資料['文本資料'] = 漢字
                    段資料['屬性'] = {'音標': 白話字}
                    全部資料.append(段資料)
#     print((json.dumps(全部資料,ensure_ascii=False,indent=2,sort_keys=True)))
#     print(len(json.dumps(全部資料,indent=2,sort_keys=True)))
    return 全部資料

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='共全部的json敆做資料庫用的json')
    parser.add_argument(
        '專案名',
        choices=['教育部臺灣閩南語字詞頻調查工作', '臺語國校仔課本', '新約聖經語料'],
        help='欲處理佗一个專案，需要設定欄位資料'
    )
    args = parser.parse_args()

    if args.專案名 == '教育部臺灣閩南語字詞頻調查工作':
        資料 = {
            '版權': '會使公開',
            '種類': '語句',
            '語言腔口': '閩南語',
            '著作年': '2009',
            '著作所在地': '臺灣',
        }
    elif args.專案名 == '臺語國校仔課本':
        資料 = {
            '版權': '會使公開',
            '種類': '語句',
            '語言腔口': '閩南語',
            '著作年': '200x',
            '著作所在地': '臺灣',
        }
    elif args.專案名 == '新約聖經語料':
        資料 = {
            '版權': '會使公開',
            '種類': '語句',
            '語言腔口': '閩南語',
            '著作年': '1916/1975/2008',
            '著作所在地': '臺灣',
        }
    下層資料 = 揣規个資料夾(args.專案名, 'JSON格式資料')
    資料['下層'] = 下層資料
    with open(args.專案名 + '.yaml', 'w') as 檔案:
        yaml.dump(資料, 檔案, default_flow_style=False, allow_unicode=True)
