|
|
from flask import Flask, request, jsonify |
|
|
from flask_cors import CORS |
|
|
import os |
|
|
import requests |
|
|
import gradio as gr |
|
|
|
|
|
|
|
|
API_KEY = os.getenv('API_KEY') |
|
|
|
|
|
def make_request(query): |
|
|
url = f'https://us-east-1.serp.ing/api/v1/google/serp?q={query}&hl=en&gl=us&num=10&snapshot=off&thumbnail=on' |
|
|
headers = { |
|
|
'X-API-KEY': API_KEY, |
|
|
'Content-Type': 'application/json' |
|
|
} |
|
|
|
|
|
response = requests.get(url, headers=headers) |
|
|
|
|
|
if response.status_code == 200: |
|
|
return response.json() |
|
|
else: |
|
|
return {"error": f"Failed to fetch data. Status code: {response.status_code}"} |
|
|
|
|
|
|
|
|
def query_interface(query): |
|
|
result = make_request(query) |
|
|
return result |
|
|
|
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=query_interface, |
|
|
inputs=gr.Textbox(label="Search Query"), |
|
|
outputs="json", |
|
|
title="API Query Interface", |
|
|
description="Enter a search query to fetch data from the API." |
|
|
) |
|
|
|
|
|
app = Flask(__name__) |
|
|
CORS(app) |
|
|
|
|
|
@app.route('/api/search', methods=['GET']) |
|
|
def api_search(): |
|
|
query = request.args.get('query') |
|
|
if not query: |
|
|
return jsonify({"error": "No query provided"}), 400 |
|
|
return jsonify(query_interface(query)) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
iface.launch(server_name="0.0.0.0", server_port=7860, debug=True, inline=False) |
|
|
app.run(host="0.0.0.0", port=7861) |
|
|
|