Module hdrezka.post.site.filters
Catalog page filter / sort controls parsing.
Functions
def parse_page_filters(html: str | bs4.BeautifulSoup | bs4.element.Tag) ‑> PageFilters-
Expand source code
def parse_page_filters(html: str | BeautifulSoup | Tag) -> PageFilters: """ Parse ``ul.b-content__main_filters`` into ``PageFilters``. Returns empty tuples when the block is absent. """ soup = as_soup(html) root = soup.select_one('ul.b-content__main_filters') if root is None: return PageFilters() sorts = tuple( _link(a, param='filter') for a in root.select('li.b-content__main_filters_item > a.b-content__main_filters_link') ) types = tuple( _link(a, param='genre') for a in root.select('li.b-content__filters_types a.filter-link') ) return PageFilters(sorts=sorts, types=types)Parse
ul.b-content__main_filtersintoPageFilters.Returns empty tuples when the block is absent.
Classes
class FilterLink (name: str, url: str, param: str, value: str, active: bool = False)-
Expand source code
class FilterLink(NamedTuple): """One filter or content-type control on a catalog page.""" name: str url: str param: str value: str active: bool = FalseOne filter or content-type control on a catalog page.
Ancestors
- builtins.tuple
Instance variables
var active : bool-
Expand source code
class FilterLink(NamedTuple): """One filter or content-type control on a catalog page.""" name: str url: str param: str value: str active: bool = FalseAlias for field number 4
var name : str-
Expand source code
class FilterLink(NamedTuple): """One filter or content-type control on a catalog page.""" name: str url: str param: str value: str active: bool = FalseAlias for field number 0
var param : str-
Expand source code
class FilterLink(NamedTuple): """One filter or content-type control on a catalog page.""" name: str url: str param: str value: str active: bool = FalseAlias for field number 2
var url : str-
Expand source code
class FilterLink(NamedTuple): """One filter or content-type control on a catalog page.""" name: str url: str param: str value: str active: bool = FalseAlias for field number 1
var value : str-
Expand source code
class FilterLink(NamedTuple): """One filter or content-type control on a catalog page.""" name: str url: str param: str value: str active: bool = FalseAlias for field number 3
class PageFilters (sorts: tuple[FilterLink, ...] = (),
types: tuple[FilterLink, ...] = ())-
Expand source code
class PageFilters(NamedTuple): """ Filters available on a catalog page. ``sorts`` — ``filter=`` controls (popular, watching, …). ``types`` — ``genre=`` content-type controls (films, anime, …). """ sorts: tuple[FilterLink, ...] = () types: tuple[FilterLink, ...] = ()Filters available on a catalog page.
sorts—filter=controls (popular, watching, …).types—genre=content-type controls (films, anime, …).Ancestors
- builtins.tuple
Instance variables
var sorts : tuple[FilterLink, ...]-
Expand source code
class PageFilters(NamedTuple): """ Filters available on a catalog page. ``sorts`` — ``filter=`` controls (popular, watching, …). ``types`` — ``genre=`` content-type controls (films, anime, …). """ sorts: tuple[FilterLink, ...] = () types: tuple[FilterLink, ...] = ()Alias for field number 0
var types : tuple[FilterLink, ...]-
Expand source code
class PageFilters(NamedTuple): """ Filters available on a catalog page. ``sorts`` — ``filter=`` controls (popular, watching, …). ``types`` — ``genre=`` content-type controls (films, anime, …). """ sorts: tuple[FilterLink, ...] = () types: tuple[FilterLink, ...] = ()Alias for field number 1