Provider Registry¶
registry
¶
Provider registry system for dynamic provider discovery and management.
This module implements a registry pattern for anime providers, allowing automatic discovery and registration of providers from the filesystem.
The registry scans language directories (tr/, en/, de/, pl/) and imports all provider modules, registering them with metadata for easy lookup.
Functions:
| Name | Description |
|---|---|
register_provider |
Decorator for registering provider classes |
get_provider |
Get provider instance by name |
get_providers_for_lang |
Get all providers for a language |
list_providers |
List all registered providers |
get_default_provider |
Get default provider for a language |
Example
Registering a provider::
from weeb_cli.providers.registry import register_provider
from weeb_cli.providers.base import BaseProvider
@register_provider("myprovider", lang="en", region="US")
class MyProvider(BaseProvider):
# Implementation
pass
Using providers::
from weeb_cli.providers import get_provider, list_providers
# Get specific provider
provider = get_provider("animecix")
results = provider.search("One Piece")
# List all providers
all_providers = list_providers()
for p in all_providers:
print(f"{p['name']} ({p['lang']})")
register_provider
¶
Decorator for registering provider classes.
Registers a provider class with metadata in the global registry. Sets class attributes (name, lang, region) for easy access.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Unique provider identifier (e.g., 'animecix', 'hianime'). |
required |
lang
|
str
|
Language code (e.g., 'en', 'tr', 'de', 'pl'). |
'tr'
|
region
|
str
|
Region code (e.g., 'US', 'TR', 'DE', 'PL'). |
'TR'
|
Returns:
| Type | Description |
|---|---|
|
Decorator function that registers the class. |
Example
@register_provider("myprovider", lang="en", region="US") ... class MyProvider(BaseProvider): ... pass
Source code in weeb_cli/providers/registry.py
get_provider
¶
Get provider instance by name.
Triggers provider discovery if not already done, then returns a new instance of the requested provider.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Provider identifier (e.g., 'animecix', 'hianime'). |
required |
Returns:
| Type | Description |
|---|---|
Optional[BaseProvider]
|
Provider instance, or None if not found. |
Example
provider = get_provider("animecix") if provider: ... results = provider.search("anime")
Source code in weeb_cli/providers/registry.py
get_providers_for_lang
¶
Get all provider names for a specific language.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
lang
|
str
|
Language code (e.g., 'en', 'tr', 'de', 'pl'). |
required |
Returns:
| Type | Description |
|---|---|
List[str]
|
List of provider names for the language. |
Example
turkish_providers = get_providers_for_lang("tr") print(turkish_providers) ['animecix', 'turkanime', 'anizle', 'weeb']
Source code in weeb_cli/providers/registry.py
list_providers
¶
List all registered providers with metadata.
Returns:
| Type | Description |
|---|---|
List[dict]
|
List of provider metadata dictionaries containing: - name: Provider identifier - lang: Language code - region: Region code - class: Provider class name |
Example
providers = list_providers() for p in providers: ... print(f"{p['name']}: {p['lang']} ({p['region']})") animecix: tr (TR) hianime: en (US) aniworld: de (DE)
Source code in weeb_cli/providers/registry.py
get_default_provider
¶
Get default provider name for a language.
Returns the first registered provider for the given language. Useful for setting initial defaults.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
lang
|
str
|
Language code (e.g., 'en', 'tr', 'de', 'pl'). |
required |
Returns:
| Type | Description |
|---|---|
Optional[str]
|
Provider name, or None if no providers for language. |
Example
default = get_default_provider("tr") print(default) 'animecix'
Source code in weeb_cli/providers/registry.py
Overview¶
The registry module provides dynamic provider discovery and management using a registry pattern.
Functions¶
register_provider¶
Decorator for registering provider classes.
get_provider¶
Get provider instance by name.
get_providers_for_lang¶
Get all providers for a language.
list_providers¶
List all registered providers.
get_default_provider¶
Get default provider for a language.
Usage Examples¶
Registering Provider¶
from weeb_cli.providers.registry import register_provider
@register_provider("myprovider", lang="en", region="US")
class MyProvider(BaseProvider):
pass
Getting Provider¶
from weeb_cli.providers import get_provider
provider = get_provider("animecix")
results = provider.search("anime")
Listing Providers¶
from weeb_cli.providers import list_providers
providers = list_providers()
for p in providers:
print(f"{p['name']}: {p['lang']}")
API Reference¶
register_provider
¶
Decorator for registering provider classes.
Registers a provider class with metadata in the global registry. Sets class attributes (name, lang, region) for easy access.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Unique provider identifier (e.g., 'animecix', 'hianime'). |
required |
lang
|
str
|
Language code (e.g., 'en', 'tr', 'de', 'pl'). |
'tr'
|
region
|
str
|
Region code (e.g., 'US', 'TR', 'DE', 'PL'). |
'TR'
|
Returns:
| Type | Description |
|---|---|
|
Decorator function that registers the class. |
Example
@register_provider("myprovider", lang="en", region="US") ... class MyProvider(BaseProvider): ... pass
Source code in weeb_cli/providers/registry.py
get_provider
¶
Get provider instance by name.
Triggers provider discovery if not already done, then returns a new instance of the requested provider.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Provider identifier (e.g., 'animecix', 'hianime'). |
required |
Returns:
| Type | Description |
|---|---|
Optional[BaseProvider]
|
Provider instance, or None if not found. |
Example
provider = get_provider("animecix") if provider: ... results = provider.search("anime")
Source code in weeb_cli/providers/registry.py
get_providers_for_lang
¶
Get all provider names for a specific language.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
lang
|
str
|
Language code (e.g., 'en', 'tr', 'de', 'pl'). |
required |
Returns:
| Type | Description |
|---|---|
List[str]
|
List of provider names for the language. |
Example
turkish_providers = get_providers_for_lang("tr") print(turkish_providers) ['animecix', 'turkanime', 'anizle', 'weeb']
Source code in weeb_cli/providers/registry.py
list_providers
¶
List all registered providers with metadata.
Returns:
| Type | Description |
|---|---|
List[dict]
|
List of provider metadata dictionaries containing: - name: Provider identifier - lang: Language code - region: Region code - class: Provider class name |
Example
providers = list_providers() for p in providers: ... print(f"{p['name']}: {p['lang']} ({p['region']})") animecix: tr (TR) hianime: en (US) aniworld: de (DE)
Source code in weeb_cli/providers/registry.py
get_default_provider
¶
Get default provider name for a language.
Returns the first registered provider for the given language. Useful for setting initial defaults.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
lang
|
str
|
Language code (e.g., 'en', 'tr', 'de', 'pl'). |
required |
Returns:
| Type | Description |
|---|---|
Optional[str]
|
Provider name, or None if no providers for language. |
Example
default = get_default_provider("tr") print(default) 'animecix'