# -*- coding: utf-8 -*-
r"""B89: (1) tải PDF các kỳ 06.10 + 29.09 để so; (2) bóc text PDF 13.10.26; (3) dọn ảnh rác."""
import base64, os, re, glob
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build

TOKEN = r'C:\Users\admin\AppData\Local\hermes\google_token.json'
DIR = r'C:\Claw 2\Nghien cuu\Tinh-Gia-Thanh\GIA-NGUYEN-LIEU\_mail_hang_1310'
TRUOC = os.path.join(DIR, 'ky_truoc')
os.makedirs(TRUOC, exist_ok=True)
creds = Credentials.from_authorized_user_file(TOKEN)
if creds.expired and creds.refresh_token:
    from google.auth.transport.requests import Request
    creds.refresh(Request())
svc = build('gmail', 'v1', credentials=creds, cache_discovery=False)
print('  hộp thư:', svc.users().getProfile(userId='me').execute().get('emailAddress'))

for mid, ten in (('1a11009b942ee9c7', 'GIÁ DUNG MÔI 06.10.26.pdf'), ('1a0ec391f348296d', 'GIÁ DUNG MÔI 29.09.26.pdf')):
    m = svc.users().messages().get(userId='me', id=mid, format='full').execute()
    def tim(p):
        if (p.get('filename') or '').lower().endswith('.pdf'):
            return p
        for x in p.get('parts', []) or []:
            r = tim(x)
            if r:
                return r
        return None
    part = tim(m['payload'])
    if not part:
        print('  KHÔNG có PDF trong', ten); continue
    a = svc.users().messages().attachments().get(userId='me', messageId=mid, id=part['body']['attachmentId']).execute()
    raw = base64.urlsafe_b64decode(a['data'])
    p = os.path.join(TRUOC, ten)
    open(p, 'wb').write(raw)
    print('  -> %s (%d B)' % (p, len(raw)))

# bóc text PDF
try:
    import fitz
    MOD = 'pymupdf'
except ImportError:
    fitz = None; MOD = None
print('  thư viện PDF:', MOD)
if fitz:
    for f in [os.path.join(DIR, 'GIÁ DUNG MÔI 13.10.26.pdf')] + sorted(glob.glob(os.path.join(TRUOC, '*.pdf'))):
        d = fitz.open(f)
        txt = '\n'.join(pg.get_text() for pg in d)
        out = f.replace('.pdf', '.txt')
        open(out, 'w', encoding='utf-8').write(txt)
        print('  %-46s %d trang -> %d ký tự' % (os.path.basename(f), d.page_count, len(txt)))

# dọn ảnh rác trong DIR (giữ PDF/txt)
xoa = 0
for f in glob.glob(os.path.join(DIR, '*.png')):
    os.remove(f); xoa += 1
print('  đã xoá %d ảnh rác (chữ ký/logo trong mail)' % xoa)
