Spaces:
Sleeping
Sleeping
File size: 2,732 Bytes
e9d67ff |
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 |
from fastapi import APIRouter
from fastapi import status
from typing import Optional
from helper.is_site_available import check_if_site_available
from helper.error_messages import error_handler
router = APIRouter(tags=["Recent Torrents Route"])
@router.get("/")
@router.get("")
async def get_recent(
site: str,
limit: Optional[int] = 0,
category: Optional[str] = None,
page: Optional[int] = 1,
):
all_sites = check_if_site_available(site)
site = site.lower()
category = category.lower() if category is not None else None
if all_sites:
limit = (
all_sites[site]["limit"]
if limit == 0 or limit > all_sites[site]["limit"]
else limit
)
if all_sites[site]["recent_available"]:
if (
category is not None
and not all_sites[site]["recent_category_available"]
):
return error_handler(
status_code=status.HTTP_404_NOT_FOUND,
json_message={
"error": "Search by Recent category not available for {}.".format(
site
)
},
)
if category is not None and category not in all_sites[site]["categories"]:
return error_handler(
status_code=status.HTTP_404_NOT_FOUND,
json_message={
"error": "Selected category not available.",
"available_categories": all_sites[site]["categories"],
},
)
resp = await all_sites[site]["website"]().recent(category, page, limit)
if resp is None:
return error_handler(
status_code=status.HTTP_403_FORBIDDEN,
json_message={
"error": "Website Blocked Change IP or Website Domain."
},
)
elif len(resp["data"]) > 0:
return resp
else:
return error_handler(
status_code=status.HTTP_404_NOT_FOUND,
json_message={"error": "Result not found."},
)
else:
return error_handler(
status_code=status.HTTP_404_NOT_FOUND,
json_message={
"error": "Recent search not availabe for {}.".format(site)
},
)
return error_handler(
status_code=status.HTTP_404_NOT_FOUND,
json_message={"error": "Selected Site Not Available"},
)
|