Building Crunchyroll Utilities

Crunchyroll Downloader — Building Utilities
Crunchyroll Downloader — Practical Scripting
Course 1 · Chapter 4 · Building Utilities

🔧 Building Crunchyroll Utilities

Create reusable utility functions for fetching episode data, parsing responses, and handling errors. Build a CrunchyrollClient class that encapsulates all API interactions.

📦 CrunchyrollClient Class

class CrunchyrollClient: """Reusable Crunchyroll API client.""" def __init__(self, config, token: str): self.config = config self.token = token self.base_url = config.api_base self.episodes_fetched = 0 def _get(self, endpoint: str) -> dict: """Make authenticated GET request.""" url = f"{self.base_url}{endpoint}" headers = { "Authorization": f"Bearer {self.token}" } response = requests.get(url, headers=headers, timeout=10) if response.status_code == 200: return response.json() return None def get_episodes(self) -> list: """Fetch all watched episodes.""" episodes = [] try: data = self._get("/api/v2/episodes") if data: episodes = data.get('items', []) self.episodes_fetched = len(episodes) except Exception as e: print(f"Error: {e}") return episodes

💻 Coding Challenges

Challenge 1: Build CrunchyrollClient

Create class with __init__, _get(), and get_episodes() methods.

Challenge 2: Episode Parsing

Parse episode data to extract show name, episode name, date watched.

Challenge 3: Error Handling

Handle API errors, token expiration, network issues gracefully.