Exemplo n.º 1
0
    def __init__(self, movie_source: str = '') -> None:
        """
        """
        clz = AbstractMovieData
        self.logger: LazyLogger = module_logger.getChild(f'{clz.__name__}:{movie_source}')
        self._trailers_discovered_event = threading.Event()
        self._movie_source_data = {}  # type: Dict[str, MovieSourceData]
        self._removed_trailers = 0
        self._number_of_added_movies = 0
        self._load_fetch_total_duration = 0
        self._discovery_complete = False
        self._discovery_complete_reported = False
        self._last_shuffle_time = datetime.datetime.fromordinal(1)
        self._last_shuffled_index = -1
        self._discovered_trailers_lock = threading.RLock()

        #  Access via self._discovered_trailers_lock

        self._discovered_trailers: MovieList = MovieList(movie_source)
        self._discovered_trailers_queue = UniqQueue(
            maxsize=0, movie_source=movie_source)
        self._trailers_to_fetch_queue = KodiQueue(maxsize=3)
        self._starvation_queue = KodiQueue()
        self._trailers_to_fetch_queueLock = threading.RLock()
        self.restart_discovery_event = threading.Event()
        self._movie_source = movie_source

        from discovery.trailer_fetcher import TrailerFetcher
        fetcher_thread_name = 'Fetcher_' + movie_source
        self._trailer_fetcher = TrailerFetcher(self, fetcher_thread_name)
        self._minimum_shuffle_seconds = 10
Exemplo n.º 2
0
    def prepare_for_restart_discovery(self, stop_thread: bool) -> None:
        """
        :param stop_thread
        :return:
        """
        clz = AbstractMovieData

        if self.logger.isEnabledFor(LazyLogger.DEBUG):
            self.logger.enter()

        with self._discovered_trailers_lock:
            # self.logger.debug('Have Lock')
            self._trailer_fetcher.prepare_for_restart_discovery(stop_thread)
            self._trailers_discovered_event.clear()
            self._removed_trailers = 0
            self._number_of_added_movies = 0
            self._load_fetch_total_duration = 0
            self._discovery_complete = False
            self._last_shuffle_time = datetime.datetime.fromordinal(1)
            self._last_shuffled_index = -1
            self._discovered_trailers.clear()
            self._discovered_trailers_queue.clear()

            if stop_thread:
                # Forget what was in queue

                self._starvation_queue = KodiQueue()
                self._discovery_complete = True
                del self._trailer_fetcher
                self._trailer_fetcher = None
Exemplo n.º 3
0
    def __init__(self, maxsize: int = 0, movie_source:str = '') ->None :
        """
        :param maxsize:
        :param movie_source:
        :return:
        """
        clz = UniqQueue
        if self.logger is None:
            self.logger = module_logger.getChild(clz.__name__)

        self._queue = KodiQueue(maxsize)
        self._duplicate_check = set()
        self._lock = threading.RLock()
        self.movie_source = movie_source