#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os, sys, json, re, subprocess, warnings
warnings.filterwarnings('ignore')

ROOT = '/data/www/files/scQxYjs'
KEYWORDS = ['网络培训','培训','能力提升','视频拍摄','党员教育片','课程制作','直播','视频','课件','系统','信息化','网络','数字','设备','平台','维护','软件']

files = []
for root, dirs, fnames in os.walk(ROOT):
    if '/_' in root: continue
    for f in fnames:
        if f.startswith('_'): continue
        if os.path.splitext(f)[1].lower() == '.pdf':
            files.append(os.path.join(root, f))
print(f'PDF文件: {len(files)}个')

results = []
for i, fp in enumerate(files):
    if i % 20 == 0:
        print(f'进度: {i}/{len(files)}', flush=True)
    try:
        proc = subprocess.run(['pdftotext', '-layout', fp, '-'],
                            capture_output=True, text=True, timeout=15)
        text = proc.stdout
        if not text.strip():
            continue
        lines = text.split('\n')
        for li, line in enumerate(lines, 1):
            line = line.strip()
            if len(line) < 2:
                continue
            for kw in KEYWORDS:
                if kw in line:
                    amt = 0.0
                    m = re.search(r'([\d.]+)\s*万?元', line)
                    if m:
                        try:
                            v = float(m.group(1))
                            if 0 < v < 100000:
                                amt = round(v, 2)
                        except:
                            pass
                    results.append({
                        'file': fp, 'sheet': 'pdf', 'row': li,
                        'name': line[:100], 'keyword': kw, 'amount': amt
                    })
    except Exception as e:
        pass

print(f'PDF匹配: {len(results)}条')
with open('/data/www/files/scQxYjs/_pdf_results.json', 'w') as f:
    json.dump(results, f, ensure_ascii=False)
print('PDF完成')
