import time
from typing import Any, Callable, List, Optional, Set, Tuple
import time
from typing import Any, Callable, List, Optional, Set, Tuple
"""Chooser that does it via weighted RNG."""
def __init__(self, filter_list: Optional[List[Callable[[str], bool]]]) -> None:
"""Chooser that does it via weighted RNG."""
def __init__(self, filter_list: Optional[List[Callable[[str], bool]]]) -> None:
self.valid_filename = re.compile("([^_]+)_(\d+)_([^\.]+)\.html")
self.pages: Optional[List[str]] = None
self.count = 0
self.valid_filename = re.compile("([^_]+)_(\d+)_([^\.]+)\.html")
self.pages: Optional[List[str]] = None
self.count = 0
self.filter_list.append(self.dont_choose_page_twice_in_a_row_filter)
def dont_choose_page_twice_in_a_row_filter(self, choice: str) -> bool:
self.filter_list.append(self.dont_choose_page_twice_in_a_row_filter)
def dont_choose_page_twice_in_a_row_filter(self, choice: str) -> bool:
return False
self.last_choice = choice
return True
def choose_next_page(self) -> Any:
if self.pages is None or self.count % 100 == 0:
return False
self.last_choice = choice
return True
def choose_next_page(self) -> Any:
if self.pages is None or self.count % 100 == 0:
trigger_list: Optional[List[trigger.trigger]],
filter_list: List[Callable[[str], bool]],
) -> None:
trigger_list: Optional[List[trigger.trigger]],
filter_list: List[Callable[[str], bool]],
) -> None:
self.trigger_list: List[trigger.trigger] = []
if trigger_list is not None:
self.trigger_list.extend(trigger_list)
self.trigger_list: List[trigger.trigger] = []
if trigger_list is not None:
self.trigger_list.extend(trigger_list)
triggered = True
return triggered
def choose_next_page(self) -> Tuple[str, bool]:
if self.pages is None or self.count % 100 == 0:
triggered = True
return triggered
def choose_next_page(self) -> Tuple[str, bool]:
if self.pages is None or self.count % 100 == 0:
self.pages = self.get_page_list()
triggered = self.check_for_triggers()
# First try to satisfy from the page queue.
if len(self.page_queue) > 0:
self.pages = self.get_page_list()
triggered = self.check_for_triggers()
# First try to satisfy from the page queue.
if len(self.page_queue) > 0: