56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
from flask import Flask, request, jsonify
|
|
import requests
|
|
from bs4 import BeautifulSoup
|
|
from DuckDuckGo import search_duckduckgo
|
|
from PdfExtract import process_pdf, process_uploaded_pdf
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
@app.route("/search")
|
|
def search():
|
|
query = request.args.get("q")
|
|
if not query:
|
|
return jsonify({"error": "Missing query parameter"}), 400
|
|
|
|
results = search_duckduckgo(query)
|
|
return jsonify(results)
|
|
|
|
# ================= API 1: Extract from URL =================
|
|
@app.route("/extract", methods=["POST"])
|
|
def extract():
|
|
try:
|
|
data = request.get_json()
|
|
if not data or "url" not in data:
|
|
return jsonify({"error": "Missing URL"}), 400
|
|
|
|
result = process_pdf(data["url"])
|
|
return jsonify(result)
|
|
|
|
except Exception as e:
|
|
return jsonify({"error": str(e)}), 400
|
|
|
|
|
|
# ================= API 2: Upload file =================
|
|
@app.route("/upload", methods=["POST"])
|
|
def upload():
|
|
try:
|
|
if "file" not in request.files:
|
|
return jsonify({"error": "No file field"}), 400
|
|
|
|
file = request.files["file"]
|
|
|
|
if file.filename == "":
|
|
return jsonify({"error": "No selected file"}), 400
|
|
|
|
file_bytes = file.read()
|
|
|
|
result = process_uploaded_pdf(file_bytes)
|
|
return jsonify(result)
|
|
|
|
except Exception as e:
|
|
return jsonify({"error": str(e)}), 400
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run(host="0.0.0.0", port=8000) |