init
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
RFC/W3C 문서 임시파일 복사 스크립트
|
||||
web_fetch로 다운로드된 임시파일들을 references 디렉토리로 복사합니다.
|
||||
"""
|
||||
import os
|
||||
import shutil
|
||||
import glob
|
||||
|
||||
TEMP_BASE = "/var/folders/q_/68sxgw3j073dgjg8wl9s08vw0000gn/T/claude-hostloop-plugins/b8db1e6c7fa308f5/projects/-Users-godopu16-Library-Application-Support-Claude-local-agent-mode-sessions-d296e3e8-b0b5-4f4f-bb64-8c0d840bb199-297e4cfe-e248-44e9-8c1d-151efb5c1d9c-local-0a2efad5-ff3c-41a8-bf0b-eefa704c64ee-output-l5mtkv/70a71999-c1c1-4c50-bb5d-1ed02fe6f250/tool-results"
|
||||
|
||||
DEST_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
FILES_MAP = {
|
||||
"mcp-workspace-web_fetch-1780816591394.txt": "RFC9000_QUIC_Transport.txt",
|
||||
"mcp-workspace-web_fetch-1780816603173.txt": "RFC7252_CoAP.txt",
|
||||
"mcp-workspace-web_fetch-1780816606749.txt": "RFC8949_CBOR.txt",
|
||||
"mcp-workspace-web_fetch-1780816616243.txt": "RFC9114_HTTP3.txt",
|
||||
"mcp-workspace-web_fetch-1780816619718.txt": "RFC8446_TLS13.txt",
|
||||
"toolu_01BFYbhdAjbXPLctFLnGVDP6.json": "W3C_TraceContext_Spec.html",
|
||||
}
|
||||
|
||||
os.makedirs(DEST_DIR, exist_ok=True)
|
||||
|
||||
for src_fname, dest_fname in FILES_MAP.items():
|
||||
src_path = os.path.join(TEMP_BASE, src_fname)
|
||||
dest_path = os.path.join(DEST_DIR, dest_fname)
|
||||
if os.path.exists(src_path):
|
||||
if dest_fname.endswith(".html"):
|
||||
# JSON wrapper에서 text 추출
|
||||
import json
|
||||
with open(src_path, "r", encoding="utf-8") as f:
|
||||
raw = f.read()
|
||||
try:
|
||||
data = json.loads(raw)
|
||||
if isinstance(data, list) and data and "text" in data[0]:
|
||||
content = data[0]["text"]
|
||||
# header 라인 제거 (첫 4줄: URL, redirect, content-type, blank)
|
||||
lines = content.split("\n")
|
||||
start = 0
|
||||
for i, ln in enumerate(lines[:10]):
|
||||
if ln.startswith("Content-Type:") or ln.startswith("→"):
|
||||
start = i + 2
|
||||
with open(dest_path, "w", encoding="utf-8") as f:
|
||||
f.write("\n".join(lines[start:]))
|
||||
size = os.path.getsize(dest_path)
|
||||
print(f"OK {dest_fname} ({size:,} bytes)")
|
||||
else:
|
||||
shutil.copy2(src_path, dest_path)
|
||||
size = os.path.getsize(dest_path)
|
||||
print(f"OK (raw copy) {dest_fname} ({size:,} bytes)")
|
||||
except Exception as e:
|
||||
shutil.copy2(src_path, dest_path)
|
||||
size = os.path.getsize(dest_path)
|
||||
print(f"OK (fallback copy) {dest_fname} ({size:,} bytes) [{e}]")
|
||||
else:
|
||||
# Plain text: strip header lines (URL, redirect, content-type)
|
||||
with open(src_path, "r", encoding="utf-8", errors="replace") as f:
|
||||
lines = f.readlines()
|
||||
# Skip first few lines that are metadata added by web_fetch
|
||||
start = 0
|
||||
for i, ln in enumerate(lines[:6]):
|
||||
stripped = ln.strip()
|
||||
if stripped.startswith("https://") or stripped.startswith("→") or stripped.startswith("Content-Type:"):
|
||||
start = i + 1
|
||||
with open(dest_path, "w", encoding="utf-8") as f:
|
||||
f.writelines(lines[start:])
|
||||
size = os.path.getsize(dest_path)
|
||||
print(f"OK {dest_fname} ({size:,} bytes)")
|
||||
else:
|
||||
print(f"MISSING: {src_path}")
|
||||
|
||||
print("\nDone. Files in references:")
|
||||
for f in sorted(os.listdir(DEST_DIR)):
|
||||
if not f.startswith("_"):
|
||||
path = os.path.join(DEST_DIR, f)
|
||||
size = os.path.getsize(path)
|
||||
print(f" {f} ({size:,} bytes)")
|
||||
Reference in New Issue
Block a user