Spaces:
Sleeping
Sleeping
from fastapi import FastAPI, HTTPException,Response | |
from io import BytesIO | |
from pydantic import BaseModel | |
from EatEasy_EveryThing_From_url import EatEasy_EveryThing_From_url | |
from EatEasy_excel_only import EatEasy_excel_extract | |
from EatEasy_Json_only import EatEasy_Json_extract | |
from location_fetch_function import location_all | |
from Mongo_Data_add import EatEasy_Mongo_Data_add | |
from Talabat_files.Talabat_Everything_From_url import Talabat_EveryThing_From_url | |
from Talabat_files.Talabat_excel_final import Talabat_excel_extract | |
from Talabat_files.Talabat_json_final import Talabat_Json_extract | |
from Talabat_files.location_link_fetch import Talabat_location_links | |
from Talabat_files.Talabat_Mongo_Data_add import Talabat_mongo_data_add | |
from Talabat_files.Multi_urls import multi_url | |
from Talabat_files.Talabat_multy_location import Talabat_multy_LOCATION | |
from Eateasy_Multi_Urls import multi_urls | |
from starlette.responses import RedirectResponse | |
app = FastAPI() | |
class EatEasyUrlInput0(BaseModel): | |
url: list | |
class EatEasyUrlInput(BaseModel): | |
url: str | |
class EatEasyUrlInput1(BaseModel): | |
url: str | |
class EatEasyUrlInput2(BaseModel): | |
url: str | |
class Location_input(BaseModel): | |
location: str | |
inside_location: str | |
class EatEasyUrlInput3(BaseModel): | |
url: str | |
class UrlInputTalabat1(BaseModel): | |
url: str | |
class UrlInputTalabat2(BaseModel): | |
url: str | |
class UrlInputTalabat3(BaseModel): | |
url: str | |
class UrlInputTalabat4(BaseModel): | |
location: list | |
class UrlInputTalabat5(BaseModel): | |
url: str | |
class UrlInputTalabat6(BaseModel): | |
url: list | |
def Docsmain(): | |
return RedirectResponse(url="/docs") | |
# @app.post("/EatEasy_Excel_Json_MongoData_From_URL",tags=["EatEasy"]) | |
# def extract_eat_easy_data(url_input: EatEasyUrlInput): | |
# try: | |
# data = EatEasy_EveryThing_From_url(url_input.url) | |
# return {"message": "Extraction process completed successfully", "data": data} | |
# except HTTPException as e: | |
# raise e | |
# except Exception as e: | |
# raise HTTPException(status_code=500, detail=str(e)) | |
def EatEasy_Mongo_from_Multi_Urls(url_input: EatEasyUrlInput0): | |
try: | |
data = multi_urls(url_input.url) | |
return {"message": "Extraction process completed successfully", "data": data} | |
except HTTPException as e: | |
raise e | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |
def extract_EatEasy_Excel_only(url_input: EatEasyUrlInput1): | |
try: | |
output, filename = EatEasy_excel_extract(url_input.url) | |
headers = { | |
'Content-Disposition': f'attachment; filename="{filename}"' | |
} | |
return Response(content=output.getvalue(), media_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', headers=headers) | |
except HTTPException as e: | |
raise e | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |
# @app.post("/EatEasy_Extract_Json_only",tags=["EatEasy"]) | |
# def extract_EatEasy_Json_only(url_input: EatEasyUrlInput2): | |
# try: | |
# json_data, restaurant_code = EatEasy_Json_extract(url_input.url) | |
# # Create an in-memory binary stream | |
# json_file = BytesIO() | |
# json_file.write(json_data.encode('utf-8')) | |
# json_file.seek(0) | |
# file_name = f"{restaurant_code}.json" | |
# headers = { | |
# 'Content-Disposition': f'attachment; filename="{file_name}"' | |
# } | |
# return Response(content=json_file.getvalue(), media_type='application/json', headers=headers) | |
# except HTTPException as e: | |
# raise e | |
# except Exception as e: | |
# raise HTTPException(status_code=500, detail=str(e)) | |
def extract_data(url_input: Location_input): | |
try: | |
data = location_all(url_input.location , url_input.inside_location) | |
return {"message": "Extraction process completed successfully", "data": data} | |
except HTTPException as e: | |
raise e | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |
# @app.post("/EatEasy_Mongo_Data_Add_from_url",tags=["EatEasy"]) | |
# def EatEasy_Mongo_Data_add_fun(url_input: EatEasyUrlInput3): | |
# try: | |
# data = EatEasy_Mongo_Data_add(url_input.url) | |
# return {"message": "Extraction process completed successfully", "data": data} | |
# except HTTPException as e: | |
# raise e | |
# except Exception as e: | |
# raise HTTPException(status_code=500, detail=str(e)) | |
# @app.post("/Talabat_MongoData_From_URL", tags=["Talabat"]) | |
# def extract_Talabat_data_all(url_input: UrlInputTalabat1): | |
# try: | |
# data = Talabat_EveryThing_From_url(url_input.url) | |
# return {"message": "Extraction process completed successfully", "data": data} | |
# except HTTPException as e: | |
# raise e | |
# except Exception as e: | |
# raise HTTPException(status_code=500, detail=str(e)) | |
def extract_Talabat_Excel_only(url_input: UrlInputTalabat2): | |
try: | |
excel_file, filename = Talabat_excel_extract(url_input.url) | |
response = Response(content=excel_file.getvalue()) | |
response.headers["Content-Disposition"] = f"attachment; filename={filename}" | |
response.headers["Content-Type"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | |
return response | |
except HTTPException as e: | |
raise e | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |
# @app.post("/Talabat_Extract_Json_only",tags=["Talabat"]) | |
# def extract_Talabat_Json_only(url_input: UrlInputTalabat3): | |
# try: | |
# restaurant_name, output = Talabat_Json_extract(url_input.url) | |
# # Prepare response to return the JSON file as downloadable content | |
# response = Response(content=output.getvalue()) | |
# response.headers["Content-Disposition"] = f"attachment; filename={restaurant_name}.json" | |
# response.headers["Content-Type"] = "application/json" | |
# return response | |
# except HTTPException as e: | |
# raise e | |
# except Exception as e: | |
# raise HTTPException(status_code=500, detail=str(e)) | |
def extract_data_Talabat(url_input: UrlInputTalabat4): | |
try: | |
data = Talabat_multy_LOCATION(url_input.location) | |
return {"message": "Extraction process completed successfully", "data": data} | |
except HTTPException as e: | |
raise e | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |
# @app.post("/Talabat_Mongo_Data_Add_from_url",tags=["Talabat"]) | |
# def Talabat_Mongo_Data_add_fun(url_input: UrlInputTalabat5): | |
# try: | |
# data = Talabat_mongo_data_add(url_input.url) | |
# return {"message": "Extraction process completed successfully", "data": data} | |
# except HTTPException as e: | |
# raise e | |
# except Exception as e: | |
# raise HTTPException(status_code=500, detail=str(e)) | |
def Talabat_MongoData_From_URLs(url_input: UrlInputTalabat6): | |
try: | |
data = multi_url(url_input.url) | |
return {"message": "Extraction process completed successfully", "data": data} | |
except HTTPException as e: | |
raise e | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |
if __name__ == "__main__": | |
import uvicorn | |
uvicorn.run(app, host="0.0.0.0", port=8000) | |