File size: 2,286 Bytes
c9ace58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import json
import os
import sys
import chardet

# βœ… μ™ΈλΆ€μ—μ„œ 파일 경둜λ₯Ό 인자둜 λ°›μŒ
if len(sys.argv) < 2:
    raise ValueError("❌ ν…μŠ€νŠΈ 파일 경둜λ₯Ό 인자둜 전달해야 ν•©λ‹ˆλ‹€. 예: python convert_txt_to_json.py data/raw_txt/μƒˆνŒŒμΌ.txt")

TXT_PATH = sys.argv[1]
JSON_PATH = "data/deposit_docs.json"

def read_txt_auto(path):
    """ν…μŠ€νŠΈ 파일 인코딩 μžλ™ 감지 ν›„ λ‚΄μš© 읽기"""
    try:
        # πŸ” 인코딩 μžλ™ 감지
        with open(path, "rb") as f:
            raw_data = f.read()
            encoding_info = chardet.detect(raw_data)
        
        encoding = encoding_info["encoding"] or "utf-8"
        print(f"βœ… 인코딩 감지됨: {encoding}")
        
        return raw_data.decode(encoding)
    except Exception as e:
        raise RuntimeError(f"TXT λ‘œλ“œ μ‹€νŒ¨: {e}")

# ν…μŠ€νŠΈ λ‚΄μš© 읽기
content = read_txt_auto(TXT_PATH)

# ============================================
# JSON 데이터 생성
# ============================================

# ν…μŠ€νŠΈ νŒŒμΌμ€ 전체 λ‚΄μš©μ„ ν•˜λ‚˜μ˜ λ¬Έμ„œλ‘œ μ²˜λ¦¬ν•˜κ±°λ‚˜, 
# ν•„μš”μ— 따라 λ‹¨λ½λ³„λ‘œ λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€. 
# μ—¬κΈ°μ„œλŠ” 전체 λ‚΄μš©μ„ ν•˜λ‚˜μ˜ 'content'둜 μ²˜λ¦¬ν•©λ‹ˆλ‹€.

record = {
    "source": os.path.basename(TXT_PATH),
    "content": content,
    "meta": {
        "type": "text_file",
        "original_path": TXT_PATH
    }
}

# ============================================
# κΈ°μ‘΄ JSON 병합 및 μ €μž₯
# ============================================

if os.path.exists(JSON_PATH):
    with open(JSON_PATH, "r", encoding="utf-8") as f:
        try:
            old_data = json.load(f)
        except json.JSONDecodeError:
            old_data = []
else:
    old_data = []

source_name = os.path.basename(TXT_PATH)
# 기쑴에 같은 파일λͺ…μœΌλ‘œ 처리된 데이터가 μžˆλ‹€λ©΄ 제거 (쀑볡 λ°©μ§€)
filtered_old = [item for item in old_data if item.get("source") != source_name]

# μƒˆ 데이터 μΆ”κ°€
filtered_old.append(record)

os.makedirs(os.path.dirname(JSON_PATH), exist_ok=True)
with open(JSON_PATH, "w", encoding="utf-8") as f:
    json.dump(filtered_old, f, ensure_ascii=False, indent=2)

print(f"\nβœ… ν…μŠ€νŠΈ 파일 처리 μ™„λ£Œ: {source_name}")
print(f"πŸ“ μ €μž₯ μœ„μΉ˜: {JSON_PATH}")