from __future__ import annotations
from typing import Any
from library.models.book import Book
from library.interfaces.searchable import Searchable
BookList = list[Book]
class Playable:
def play(self) -> str:
return "Playing..."
def duration_minutes(self) -> int:
return 0
class AudioBook(Book, Playable):
narrator: str = ""
def search_text(self) -> str:
return f"{self.title} (narrated by {self.narrator})"
def search_books(*terms: str, **filters: Any) -> BookList:
return []
def rank_results(books: BookList) -> BookList:
def _score(book: Book) -> float:
return 1.0 if book.is_available else 0.5
return sorted(books, key=_score, reverse=True)