|
import g4f |
|
from webscout import WEBS |
|
from flask import Flask, jsonify, request |
|
import google.generativeai as palm |
|
app = Flask(__name__) |
|
|
|
@app.route('/search', methods=['POST']) |
|
def WEBScout_search(): |
|
data = request.get_json() |
|
if 'query' not in data: |
|
return jsonify({'error': 'Query parameter missing'}) |
|
|
|
query = data['query'] |
|
limit = data.get('limit', 10) |
|
WEBS_instance = WEBS() |
|
responses = [] |
|
for i, r in enumerate(WEBS_instance.text(query, region='wt-wt', safesearch='off', timelimit='y')): |
|
if i == limit: |
|
break |
|
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() |
|
responses = [] |
|
for i, r in enumerate(WEBS_instance.text(query, region='wt-wt', safesearch='off', timelimit='y')): |
|
if i == 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() |
|
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() |
|
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() |
|
responses = [] |
|
for r in WEBS_instance.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('q') |
|
if not query: |
|
return jsonify({'error': 'Query parameter missing'}) |
|
|
|
WEBS_instance = WEBS() |
|
responses = [] |
|
for i, r in enumerate(WEBS_instance.text(query, region='wt-wt', safesearch='off', timelimit='y')): |
|
if i == 10: |
|
break |
|
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() |
|
translation = WEBS_instance.translate(keywords, to=target_language) |
|
return jsonify(translation) |
|
|
|
|
|
|
|
@app.route('/chat', methods=['POST']) |
|
def chat_gpt(): |
|
user_input = request.json.get('message') |
|
if user_input is None: |
|
return jsonify({'error': 'Message parameter missing'}) |
|
|
|
messages = [ |
|
{ |
|
"role": "system", |
|
"content": "Hello! I'm your virtual assistant. How can I help you?" |
|
}, |
|
{ |
|
"role": "user", |
|
"content": user_input |
|
} |
|
] |
|
|
|
response = g4f.ChatCompletion.create( |
|
model="gpt-4-32k-0613", |
|
provider=g4f.Provider.GPTalk, |
|
messages=messages, |
|
stream=True, |
|
) |
|
|
|
ms = "".join([str(message) for message in response]) |
|
messages.append({"role": "assistant", "content": ms}) |
|
return jsonify({"response": ms}) |
|
|
|
if __name__ == '__main__': |
|
app.run(debug=True) |