import logging
import os
import sys
import json
from parsera import Parsera

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

os.environ["OPENAI_API_KEY"] = "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"

def run_scraper(url, elements):
    logger.info(f"Running scraper for URL: {url}")
    try:
        scraper = Parsera()
        result = scraper.run(url=url, elements=elements)
        return result
    except Exception as e:
        logger.error(f"Error in Parsera: {str(e)}")
        raise
    finally:
        del scraper

def main():
    try:
        # Read input from stdin
        input_data = json.loads(sys.stdin.read())
        url = input_data.get('url')
        elements = input_data.get('elements')

        if not url or not elements:
            print(json.dumps({'error': 'Invalid input, URL and elements are required'}))
            return

        result = run_scraper(url, elements)
        
        if not result:
            result = {'warning': 'No content found'}

        print(json.dumps(result))
    except Exception as e:
        logger.error(f"Unhandled error: {e}")
        print(json.dumps({'error': f'Unhandled error: {str(e)}'}))

if __name__ == '__main__':
    main()
