#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
模糊搜索adid工具
从两个数据库位置查询匹配的adid
用法: python find_adid.py <搜索文本>
"""

import os
import sys
import sqlite3


def search_adid(search_text):
    """
    从两个数据库位置模糊搜索adid
    """
    # 数据库路径
    db_paths = [
        r'\\ll\D\xtrssvjj\db\dpd.db',  # 主数据库
        r"\\ll\d\wxvddata\dpd.db"    # 作者数据库
    ]
    
    results = []
    
    for db_path in db_paths:
        try:
            # 连接数据库
            conn = sqlite3.connect(db_path)
            cursor = conn.cursor()
            
            # 搜索srts表的adname列
            cursor.execute("""
                SELECT DISTINCT adid, adname FROM srts 
                WHERE adname LIKE ? 
                ORDER BY adid
            """, (f"%{search_text}%",))
            
            # 获取结果
            for row in cursor.fetchall():
                adid, adname = row
                results.append((adid, adname, db_path))
            
            # 搜索ads表的name列（如果存在）
            try:
                cursor.execute("""
                    SELECT DISTINCT id, name FROM ads 
                    WHERE name LIKE ? 
                    ORDER BY id
                """, (f"%{search_text}%",))
                
                for row in cursor.fetchall():
                    adid, adname = row
                    results.append((adid, adname, db_path))
            except sqlite3.OperationalError:
                # 表或列不存在，忽略
                pass
            
            conn.close()
            
        except Exception as e:
            print(f"查询数据库 {db_path} 失败: {e}")
    
    # 去重
    unique_results = []
    seen = set()
    for adid, adname, db_path in results:
        if adid not in seen:
            seen.add(adid)
            unique_results.append((adid, adname, db_path))
    
    return unique_results


def main():
    """
    主函数
    """
    if len(sys.argv) < 2:
        print("用法: python find_adid.py <搜索文本>")
        print("示例: python find_adid.py 千里营救飞行员")
        sys.exit(1)
    
    search_text = ' '.join(sys.argv[1:])
    print(f"=== 模糊搜索adid ===")
    print(f"搜索文本: {search_text}")
    
    results = search_adid(search_text)
    
    if not results:
        print("未找到匹配的结果")
    else:
        print(f"找到 {len(results)} 个匹配结果:")
        print("-" * 80)
        for i, (adid, adname, db_path) in enumerate(results):
            db_name = os.path.basename(db_path)
            print(f"[{i+1}] adid: {adid}")
            print(f"   adname: {adname}")
            print(f"   数据库: {db_name}")
            print("-" * 80)


if __name__ == "__main__":
    main()
