Coverage for src\scrape\search\search_movie_scraper.py: 100%
37 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 bs4 import BeautifulSoup
2from src.scrape.search.search_scraper import SearchScraper
3from src.utility.endpoints import Endpoint
4from src.utility.lib import Logger
5from src.utility.utils import OtherInfo, PersonInfo, Utils, ViewType
6from typing import Dict, List
9class SearchMovieScraper(SearchScraper):
10 OTHER_INFO_FIELDS: List[OtherInfo] = [
11 OtherInfo.SCREENING_DATE,
12 OtherInfo.SCREENING_TIME,
13 OtherInfo.COUNTRY_OF_ORIGIN,
14 OtherInfo.GENRE,
15 OtherInfo.DISTRIBUTOR,
16 ]
18 PERSON_INFO_FIELDS: List[PersonInfo] = [
19 PersonInfo.DIRECTOR,
20 PersonInfo.SCRIPTWRITER,
21 PersonInfo.CAST,
22 ]
24 def __init__(self, soup: BeautifulSoup, params: Dict, view: ViewType) -> None:
25 super().__init__(soup, params, view)
27 def set_search_results(self) -> None:
28 self.search_heading = self._get_heading()
30 movies = []
32 if not self._is_results_empty():
33 results = self._get_results_container()
35 for ctr, result in enumerate(results[:int(self.results_limit)]):
36 m = {}
38 m["title"] = self._get_title(result)
39 m["rating"] = self._get_rating(result)
41 data_mark = self._get_data_mark(result)
42 m["mark_count"] = data_mark.count
44 data_clip = self._get_data_clip(result)
45 m["clip_count"] = data_clip.count
46 m["movie_id"] = data_clip.movie_id
48 m["link"] = Utils.create_filmarks_link(Endpoint.INFO_MOVIES.value.path.format(
49 movie_id=data_clip.movie_id,
50 ))
52 if poster := self._get_poster(result):
53 m["poster"] = poster
55 for field in self.OTHER_INFO_FIELDS:
56 value = self._get_other_info(result, field)
57 if value: m[field.key] = value
59 for field in self.PERSON_INFO_FIELDS:
60 value = self._get_person_info(result, field)
61 if value: m[field.key] = value
63 Logger.info(self.get_logging(idx=ctr + 1, text=m))
64 movies.append(m)
66 self.search_results["movies"] = movies