공공기관2 작업 중. _temp 몽타주(재생성가능)는 제외. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
55 lines
2.3 KiB
Python
55 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# 청양 175~끝 L/M/O/P/Q + N베이스 적용. N이미지는 몽타주 후속. 1~174 불변.
|
|
import openpyxl, json, io, sys, shutil
|
|
from collections import Counter
|
|
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
|
|
F=r'D:\01.프로젝트\DB수집\작업파일\광역_사이트맵\충청남도\13.청양군\충청남도_청양군.xlsx'
|
|
BK=r'D:\01.프로젝트\DB수집\작업파일\광역_사이트맵\충청남도\13.청양군\충청남도_청양군_backup_LMNO재수집전.xlsx'
|
|
shutil.copyfile(F,BK); print('백업',BK)
|
|
d=json.load(open('_cy4.json',encoding='utf-8'))
|
|
bd=json.load(open('_cy4_board.json',encoding='utf-8'))
|
|
wb=openpyxl.load_workbook(F); ws=wb.active
|
|
def types_str(ts): return ','.join('%d유형'%t for t in ts) if ts else None
|
|
chg=0
|
|
for rs,v in d.items():
|
|
r=int(rs)
|
|
L=v.get('L')
|
|
if L not in ('게시판','페이지','사이트'): continue # ERR/rel skip
|
|
curN=str(ws.cell(r,14).value or '')
|
|
# 보드확정 override
|
|
if L=='게시판' and rs in bd and not bd[rs].get('isboard'):
|
|
L='페이지' # 서브사이트홈 등 false-board
|
|
# L
|
|
ws.cell(r,12).value=L
|
|
# M
|
|
if L=='사이트':
|
|
for c in (13,14,15,16,17): ws.cell(r,c).value=None
|
|
chg+=1; continue
|
|
if L=='게시판':
|
|
M=bd.get(rs,{}).get('M',0) if rs in bd else 0
|
|
ws.cell(r,13).value=M
|
|
else:
|
|
ws.cell(r,13).value=1; M=1
|
|
# N 베이스
|
|
if L=='게시판' and (M==0 or M is None):
|
|
ws.cell(r,14).value='없음'
|
|
else:
|
|
extras=[]
|
|
if '영상' in curN or v.get('video'): extras.append('영상')
|
|
if '오디오' in curN or v.get('audio'): extras.append('오디오')
|
|
ws.cell(r,14).value='어문'+(','+','.join(extras) if extras else '')
|
|
# O/P/Q 공공누리
|
|
kt=v.get('kogl',{}).get('types') or []
|
|
if kt:
|
|
ws.cell(r,15).value=types_str(kt)
|
|
ws.cell(r,16).value='게시물'
|
|
ws.cell(r,17).value='Y' if v.get('kogl',{}).get('link') else 'N'
|
|
else:
|
|
ws.cell(r,15).value='미부착'; ws.cell(r,16).value=None; ws.cell(r,17).value=None
|
|
chg+=1
|
|
wb.save(F)
|
|
print('적용행',chg)
|
|
print('L',dict(Counter(ws.cell(r,12).value for r in range(175,ws.max_row+1))))
|
|
print('N',dict(Counter(ws.cell(r,14).value for r in range(175,ws.max_row+1))))
|
|
print('O',dict(Counter(ws.cell(r,15).value for r in range(175,ws.max_row+1))))
|