import g4f from webscout import DDGS from time import time as t from flask import Flask, jsonify, request app = Flask(__name__) @app.route('/search', methods=['POST']) def webscout2_search(): data = request.get_json() if 'query' not in data: return jsonify({'error': 'Query parameter missing'}), 400 query = data['query'] with DDGS() as ddgs: responses = [] for i, r in enumerate(ddgs.text(query, region='wt-wt', safesearch='off', timelimit='y')): if i == 10: # Limiting the results to 10 break responses.append(r) return jsonify(responses) @app.route('/health', methods=['GET']) def health_check(): # You can add more sophisticated checks here if needed 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'}), 400 keywords = params['keywords'] with DDGS() as ddgs: responses = [] for r in ddgs.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'}), 400 keywords = params['keywords'] with DDGS() as ddgs: responses = [] for r in ddgs.images( keywords, region="wt-wt", safesearch="off", size=None, # color="Monochrome", 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'}), 400 keywords = params['keywords'] with DDGS() as ddgs: responses = [] for r in ddgs.news( keywords, region="wt-wt", safesearch="off", timelimit="m", max_results=10 ): responses.append(r) return jsonify(responses) @app.route('/int', methods=['GET']) def webscout3_search(): query = request.args.get('query') if not query: return jsonify({'error': 'Query parameter missing'}), 400 # Initialize the DDGS (DuckDuckGo Search) object with DDGS() as ddgs: responses = [] for i, r in enumerate(ddgs.text(query, region='wt-wt', safesearch='off', timelimit='y')): if i == 2: # Limiting the results to 10 break responses.append(r) # You can process the search results further or customize the response # For now, let's return the search results as-is return jsonify(responses) app = Flask(__name__) @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'}), 400 keywords = params['keywords'] target_language = params['to'] with DDGS() as ddgs: translation = ddgs.translate(keywords, to=target_language) return jsonify(translation) @app.route('/chat', methods=['POST']) def chat_gpt(): user_input = request.json.get('message') messages = [ { "role": "system", "content": "Hello! I'm your virtual assistant. How can I help you?" } ] assert user_input is not None messages.append({"role": "user", "content": user_input}) response = g4f.ChatCompletion.create( model="gpt-4-32k-0613", provider=g4f.Provider.GPTalk, messages=messages, stream=True, ) ms = "" for message in response: ms += message messages.append({"role": "assistant", "content": ms}) return jsonify({"response": ms}) if __name__ == '__main__': app.run()