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, disabled) 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'
|
disabled
|
bool
|
If True, provider is registered but not available for use. |
False
|
Returns:
| Type | Description |
|---|---|
|
Decorator function that registers the class. |
Example
@register_provider("myprovider", lang="en", region="US") ... class MyProvider(BaseProvider): ... pass
@register_provider("oldprovider", lang="en", region="US", disabled=True) ... class OldProvider(BaseProvider): ... pass # Registered but not usable
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. Returns None if provider is disabled or not found.
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 or disabled. |
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
Genel Bakış¶
Registry modülü, kayıt deseni kullanarak dinamik sağlayıcı keşfi ve yönetimi sağlar.
Fonksiyonlar¶
register_provider¶
Sağlayıcı sınıflarını kaydetmek için dekoratör.
get_provider¶
İsme göre sağlayıcı örneği al.
get_providers_for_lang¶
Bir dil için tüm sağlayıcıları al.
list_providers¶
Tüm kayıtlı sağlayıcıları listele.
get_default_provider¶
Bir dil için varsayılan sağlayıcıyı al.
Kullanım Örnekleri¶
Sağlayıcı Kaydetme¶
from weeb_cli.providers.registry import register_provider
@register_provider("myprovider", lang="en", region="US")
class MyProvider(BaseProvider):
pass
Sağlayıcı Alma¶
from weeb_cli.providers import get_provider
provider = get_provider("animecix")
results = provider.search("anime")
Sağlayıcıları Listeleme¶
from weeb_cli.providers import list_providers
providers = list_providers()
for p in providers:
print(f"{p['name']}: {p['lang']}")
API Referansı¶
register_provider
¶
Decorator for registering provider classes.
Registers a provider class with metadata in the global registry. Sets class attributes (name, lang, region, disabled) 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'
|
disabled
|
bool
|
If True, provider is registered but not available for use. |
False
|
Returns:
| Type | Description |
|---|---|
|
Decorator function that registers the class. |
Example
@register_provider("myprovider", lang="en", region="US") ... class MyProvider(BaseProvider): ... pass
@register_provider("oldprovider", lang="en", region="US", disabled=True) ... class OldProvider(BaseProvider): ... pass # Registered but not usable
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. Returns None if provider is disabled or not found.
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 or disabled. |
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'