python-script
Cosenseのインポートファイル(JSON)を作成するスクリプト
code:color2CosenseJSON.py
# -*- coding: utf-8 -*-
"""
CSV形式の色名のデータを受け取ってJSON形式に変換するスクリプト
"""
import csv
import json
import os
def convert_csv_to_json(csv_path, json_path):
"""
CSVファイルを読み込んでJSONファイルに変換する
"""
pages_data = {}
try:
with open(csv_path, 'r', encoding='utf-8-sig') as csvfile:
reader = csv.DictReader(csvfile)
# ヘッダー(フィールド名)を取得
fieldnames = reader.fieldnames
if not fieldnames or len(fieldnames) < 2:
print("Error: CSV file does not have enough columns or is empty.")
return
color_name_key = fieldnames0 for row in reader:
hex_code_without_hash = rgb_value.lstrip('#')
url = f"https://idy.vercel.app/color/{hex_code_without_hash}#.svg"
# 色名をタイトルにしたエントリ(重複はない想定)
if color_name not in pages_data:
'title': color_name,
'lines': [
color_name,
rgb_value,
url
]
}
# HEX値をタイトルにしたエントリ(重複の可能性あり)
if hex_code_without_hash in pages_data:
# 既存のエントリのlinesに色名を追加(URLの前に)
else:
# 新しいエントリを作成
'title': hex_code_without_hash,
'lines': [
rgb_value,
url
]
}
# 最終的なJSON構造を作成
output_json = {'pages': list(pages_data.values())}
with open(json_path, 'w', encoding='utf-8') as jsonfile:
json.dump(output_json, jsonfile, indent=2, ensure_ascii=False)
print(f"Successfully converted {csv_path} to {json_path}")
except FileNotFoundError:
print(f"Error: The file '{csv_path}' was not found.")
except Exception as e:
print(f"An error occurred: {e}")
if __name__ == '__main__':
# スクリプトがあるディレクトリからの相対パスでファイルを指定
base_dir = os.path.dirname(__file__)
csv_file_path = os.path.join(base_dir, 'extended_color_keywords.csv')
json_file_path = os.path.join(base_dir, 'colors.json')
convert_csv_to_json(csv_file_path, json_file_path)