File size: 3,819 Bytes
89dd025
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import logging
from typing import Optional

from flask import Flask, jsonify, request
from webscout import WEBS

app = Flask(__name__)

TIMEOUT = 10
PROXY = None

@app.route('/api/search', methods=['GET'])
def search_text():
    query = request.args.get('q', '')
    max_results = request.args.get('max_results', 10, type=int)
    timelimit = request.args.get('timelimit', None)
    safesearch = request.args.get('safesearch', 'moderate')
    region = request.args.get('region', 'wt-wt')

    results = []
    with WEBS() as webs:
        for result in webs.text(query, max_results=max_results, timelimit=timelimit, safesearch=safesearch, region=region):
            results.append(result)

    return jsonify({'results': results})


@app.route('/api/images', methods=['GET'])
def search_images():
    query = request.args.get('q', '')
    max_results = request.args.get('max_results', 10, type=int)
    safesearch = request.args.get('safesearch', 'moderate')
    region = request.args.get('region', 'wt-wt')
    results = []
    with WEBS() as webs:
        for result in webs.images(query, max_results=max_results, safesearch=safesearch, region=region):
            results.append(result)

    return jsonify({'results': results})

@app.route('/api/videos', methods=['GET'])
def search_videos():
    query = request.args.get('q', '')
    max_results = request.args.get('max_results', 10, type=int)
    safesearch = request.args.get('safesearch', 'moderate')
    region = request.args.get('region', 'wt-wt')
    timelimit = request.args.get('timelimit', None)
    resolution = request.args.get('resolution', None)
    duration = request.args.get('duration', None)

    results = []
    with WEBS() as webs:
        for result in webs.videos(query, max_results=max_results, safesearch=safesearch, region=region, timelimit=timelimit, resolution=resolution, duration=duration):
            results.append(result)

    return jsonify({'results': results})

@app.route('/api/news', methods=['GET'])
def search_news():
    query = request.args.get('q', '')
    max_results = request.args.get('max_results', 10, type=int)
    safesearch = request.args.get('safesearch', 'moderate')
    region = request.args.get('region', 'wt-wt')
    timelimit = request.args.get('timelimit', None)

    results = []
    with WEBS() as webs:
        for result in webs.news(query, max_results=max_results, safesearch=safesearch, region=region, timelimit=timelimit):
            results.append(result)

    return jsonify({'results': results})

@app.route('/api/maps', methods=['GET'])
def search_maps():
    query = request.args.get('q', '')
    place = request.args.get('place', None)
    max_results = request.args.get('max_results', 10, type=int)

    results = []
    with WEBS() as webs:
        for result in webs.maps(query, place=place, max_results=max_results):
            results.append(result)

    return jsonify({'results': results})

@app.route('/api/translate', methods=['GET'])
def translate_text():
    query = request.args.get('q', '')
    to_lang = request.args.get('to', 'en')

    with WEBS() as webs:
        translation = webs.translate(query, to=to_lang)

    return jsonify({'translation': translation})

@app.route('/api/suggestions', methods=['GET'])
def search_suggestions():
    query = request.args.get('q', '')
    if not query:
        return jsonify({'error': 'Query parameter missing'})

    results = []
    try:
        with WEBS() as webs:
            for result in webs.suggestions(query):
                results.append(result)
    except Exception as e:
        return jsonify({'error': str(e)}), 500

    return jsonify({'results': results})

@app.route('/api/health', methods=['GET'])
def health_check():
    return jsonify({'status': 'working'})

if __name__ == '__main__':
    app.run(debug=True)