DB_JOB/작업파일/완료/광역_사이트맵/충청북도/_cy4_apply.py
hehihoho3 df16c98366 백업: DB수집 전체 스냅샷 (공공기관2 정리 전)
공공기관2 작업 중. _temp 몽타주(재생성가능)는 제외.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 18:15:40 +09:00

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))))