File size: 4,358 Bytes
a143120 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
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()
|