import os
from googleapiclient.discovery import build
from dotenv import load_dotenv
from googleapiclient.errors import HttpError
from difflib import SequenceMatcher

load_dotenv()

api_key = os.getenv("GOOGLE_API")
cse_id = os.getenv("SEARCH_ENGINE_ID")

def generate_html_embed_code():
    if cse_id:
        html_code = f"""
        <script async src="https://cse.google.com/cse.js?cx={cse_id}"></script>
        <div class="gcse-search"></div>
        """
        return html_code
    else:
        return "Error: SEARCH_ENGINE_ID is not defined in the .env file."

def calculate_similarity(a, b):
    return SequenceMatcher(None, a, b).ratio()

def check_duplicate_content(content_snippet):
    try:
        service = build("customsearch", "v1", developerKey=api_key)
        res = service.cse().list(q=content_snippet, cx=cse_id).execute()

        if 'items' in res and res['items']:
            duplicates_found = False
            print(f"Checking content similarity for: '{content_snippet}'")
            
            for item in res['items']:
                page_snippet = item.get('snippet', '')
                similarity = calculate_similarity(content_snippet, page_snippet)
                
                if similarity >= 0.3:  # Threshold for similarity (30%)
                    duplicates_found = True
                    print(f"- Similar content found: {item['title']} (URL: {item['link']}, Similarity: {similarity:.2%})")
                else:
                    print(f"- Low similarity content: {item['title']} (URL: {item['link']}, Similarity: {similarity:.2%})")
            
            if duplicates_found:
                return True  # Indicating duplicate content was found
            else:
                print("No sufficiently similar content was found.")
                return False
        else:
            print("Your text was not found on the internet.")
            return False  # Indicating no duplicates found
    except HttpError as err:
        print(f"An error occurred: {err}")
        if err.resp.status == 403:
            print("Error 403: Access Forbidden. Check your API key permissions and quota.")
        else:
            print("An unknown error occurred.")
        return False 
