Coverage for src\scrape\scrape_service.py: 100%
59 statements
« prev ^ index » next coverage.py v7.10.1, created at 2025-10-19 21:13 +0800
« prev ^ index » next coverage.py v7.10.1, created at 2025-10-19 21:13 +0800
1from fastapi import HTTPException, Request
2from src.scrape.info.info_anime_scraper import InfoAnimeScraper
3from src.scrape.info.info_drama_scraper import InfoDramaScraper
4from src.scrape.info.info_movie_scraper import InfoMovieScraper
5from src.scrape.search.search_anime_scraper import SearchAnimeScraper
6from src.scrape.search.search_drama_scraper import SearchDramaScraper
7from src.scrape.search.search_movie_scraper import SearchMovieScraper
8from src.utility.endpoints import Endpoint
9from src.utility.lib import CustomException, Logger
10from src.utility.utils import ViewType
11from typing import Any, Dict
14def search_scrape(endpoint: Endpoint, req: Request, message: str) -> Dict[str, Any]:
15 try:
16 match endpoint.value.view:
17 case ViewType.ANIME:
18 scraper = SearchAnimeScraper.scrape(endpoint, req)
20 case ViewType.DRAMA:
21 scraper = SearchDramaScraper.scrape(endpoint, req)
23 case ViewType.MOVIE:
24 scraper = SearchMovieScraper.scrape(endpoint, req)
26 case _: # pragma: no cover
27 raise ValueError(f"Unexpected ViewType: {endpoint.value.view}")
29 scraper.set_search_results()
30 return scraper.get_response()
32 except HTTPException:
33 raise
35 except Exception:
36 Logger.exception(message)
37 raise CustomException.server_error()
40def info_scrape(endpoint: Endpoint, req: Request, message: str) -> Dict[str, Any]:
41 try:
42 match endpoint.value.view:
43 case ViewType.ANIME:
44 scraper = InfoAnimeScraper.scrape(endpoint, req)
46 case ViewType.DRAMA:
47 scraper = InfoDramaScraper.scrape(endpoint, req)
49 case ViewType.MOVIE:
50 scraper = InfoMovieScraper.scrape(endpoint, req)
52 case _: # pragma: no cover
53 raise ValueError(f"Unexpected ViewType: {endpoint.value.view}")
55 scraper.set_info_data()
56 return scraper.get_response()
58 except HTTPException:
59 raise
61 except Exception:
62 Logger.exception(message)
63 raise CustomException.server_error()
66def review_scrape(endpoint: Endpoint, req: Request, message: str) -> Dict[str, Any]:
67 try:
68 match endpoint.value.view:
69 case ViewType.ANIME:
70 scraper = InfoAnimeScraper.scrape(endpoint, req)
72 case ViewType.DRAMA:
73 scraper = InfoDramaScraper.scrape(endpoint, req)
75 case ViewType.MOVIE:
76 scraper = InfoMovieScraper.scrape(endpoint, req)
78 case _: # pragma: no cover
79 raise ValueError(f"Unexpected ViewType: {endpoint.value.view}")
81 scraper.set_review_data()
82 return scraper.get_response()
84 except HTTPException:
85 raise
87 except Exception:
88 Logger.exception(message)
89 raise CustomException.server_error()