TE-Scrapper / app.py
viraj
Initial Commit
e79fbb1
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
@app.get("/")
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))
@app.post("/EatEasy_Mongo_from_Multi_urls",tags=["EatEasy"])
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))
@app.post("/EatEasy_Extract_Excel_only",tags=["EatEasy"])
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))
@app.post("/EatEasy_Excel_Json_MongoData_From_Location",tags=["EatEasy"])
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))
@app.post("/Talabat_Extract_excel_only", tags=["Talabat"])
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))
@app.post("/Talabat_MongoData_From_Location",tags=["Talabat"])
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))
@app.post("/Talabat_MongoData_From_Multy_URLs", tags=["Talabat"])
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)