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()