from flask import Flask, jsonify, request from webscout import AsyncWEBS, WEBS from webscout.LLM import LLM from webscout.AI import OPENGPT # Import OPENGPT app = Flask(__name__) # Initialize the OPENGPT instance opengpt = OPENGPT(is_conversation=False, max_tokens=8000, timeout=30) @app.route('/search', methods=['POST']) def WEBScout2_search_search(): data = request.get_json() if 'query' not in data: return jsonify({'error': 'Query parameter missing'}) query = data['query'] limit = data.get('limit', 10) # Default limit to 10 if not provided WEBS_instance = WEBS() # Instantiate WEBS without context manager responses = [] for i, r in enumerate(WEBS_instance.text(query, region='wt-wt', safesearch='off', timelimit='y')): responses.append(r) return jsonify(responses) @app.route('/mws', methods=['POST']) def WEBScout_search(): data = request.get_json() if 'query' not in data: return jsonify({'error': 'Query parameter missing'}) query = data['query'] WEBS_instance = WEBS() # Instantiate WEBS without context manager responses = [] for i, r in enumerate(WEBS_instance.text(query, region='wt-wt', safesearch='off', timelimit='y')): if i == 2: # Limiting the results to 2 break responses.append(r) return jsonify(responses) @app.route('/health', methods=['GET']) def health_check(): return jsonify({'status': 'ok'}) @app.route('/video', methods=['GET']) def WEBScout_videos(): params = request.args if 'keywords' not in params: return jsonify({'error': 'Keywords parameter missing'}) keywords = params['keywords'] WEBS_instance = WEBS() # Instantiate WEBS without context manager responses = [] for r in WEBS_instance.videos( keywords, region="wt-wt", safesearch="off", timelimit="w", resolution="high", duration="medium", max_results=10, ): responses.append(r) return jsonify(responses) @app.route('/img', methods=['GET']) def WEBScout2_images(): params = request.args if 'keywords' not in params: return jsonify({'error': 'Keywords parameter missing'}) keywords = params['keywords'] WEBS_instance = WEBS() # Instantiate WEBS without context manager responses = [] for r in WEBS_instance.images( keywords, region="wt-wt", safesearch="off", size=None, type_image=None, layout=None, license_image=None, max_results=10, ): responses.append(r) return jsonify(responses) @app.route('/news', methods=['GET']) def WEBScout_news(): params = request.args if 'keywords' not in params: return jsonify({'error': 'Keywords parameter missing'}) keywords = params['keywords'] WEBS_instance = WEBS() # Instantiate WEBS without context manager responses = [] for r in WEBS_instance.news( keywords, region="wt-wt", safesearch="off", timelimit="d", max_results=10 ): responses.append(r) return jsonify(responses) @app.route('/translate', methods=['GET']) def WEBScout_translate(): params = request.args if 'keywords' not in params or 'to' not in params: return jsonify({'error': 'Keywords or target language parameter missing'}) keywords = params['keywords'] target_language = params['to'] WEBS_instance = WEBS() # Instantiate WEBS without context manager translation = WEBS_instance.translate(keywords, to=target_language) return jsonify(translation) @app.route('/chat', methods=['POST']) def chat_opengpt(): user_input = request.json.get('message') if user_input is None: return jsonify({'error': 'Message parameter missing'}) # Use the opengpt instance to process the chat message response_str = opengpt.chat(user_input) return jsonify({"response": response_str}) if __name__ == '__main__': app.run(debug=True)