This commit is contained in:
2025-10-23 19:41:24 +02:00
parent c81a493fb1
commit ffb182e3ba
7 changed files with 180 additions and 643 deletions

View File

@@ -24,6 +24,7 @@ from .provider_config import (
DEFAULT_PROVIDERS,
INVALID_PATH_CHARS,
LULUVDO_USER_AGENT,
ProviderType,
)
# Configure persistent loggers but don't add duplicate handlers when module
@@ -54,7 +55,7 @@ if not noKeyFound_logger.handlers:
class AniworldLoader(Loader):
def __init__(self):
def __init__(self) -> None:
self.SUPPORTED_PROVIDERS = DEFAULT_PROVIDERS
# Copy default AniWorld headers so modifications remain local
self.AniworldHeaders = dict(ANIWORLD_HEADERS)
@@ -62,10 +63,10 @@ class AniworldLoader(Loader):
self.RANDOM_USER_AGENT = UserAgent().random
self.LULUVDO_USER_AGENT = LULUVDO_USER_AGENT
self.PROVIDER_HEADERS = {
"Vidmoly": ['Referer: "https://vidmoly.to"'],
"Doodstream": ['Referer: "https://dood.li/"'],
"VOE": [f"User-Agent: {self.RANDOM_USER_AGENT}"],
"Luluvdo": [
ProviderType.VIDMOLY.value: ['Referer: "https://vidmoly.to"'],
ProviderType.DOODSTREAM.value: ['Referer: "https://dood.li/"'],
ProviderType.VOE.value: [f"User-Agent: {self.RANDOM_USER_AGENT}"],
ProviderType.LULUVDO.value: [
f"User-Agent: {self.LULUVDO_USER_AGENT}",
"Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
'Origin: "https://luluvdo.com"',

View File

@@ -39,6 +39,7 @@ from .provider_config import (
DEFAULT_PROVIDERS,
INVALID_PATH_CHARS,
LULUVDO_USER_AGENT,
ProviderType,
)
@@ -48,7 +49,7 @@ class EnhancedAniWorldLoader(Loader):
Also exposes metrics hooks for download statistics.
"""
def __init__(self):
def __init__(self) -> None:
super().__init__()
self.logger = logging.getLogger(__name__)
self.SUPPORTED_PROVIDERS = DEFAULT_PROVIDERS
@@ -59,10 +60,10 @@ class EnhancedAniWorldLoader(Loader):
self.LULUVDO_USER_AGENT = LULUVDO_USER_AGENT
self.PROVIDER_HEADERS = {
"Vidmoly": ['Referer: "https://vidmoly.to"'],
"Doodstream": ['Referer: "https://dood.li/"'],
"VOE": [f'User-Agent: {self.RANDOM_USER_AGENT}'],
"Luluvdo": [
ProviderType.VIDMOLY.value: ['Referer: "https://vidmoly.to"'],
ProviderType.DOODSTREAM.value: ['Referer: "https://dood.li/"'],
ProviderType.VOE.value: [f'User-Agent: {self.RANDOM_USER_AGENT}'],
ProviderType.LULUVDO.value: [
f'User-Agent: {self.LULUVDO_USER_AGENT}',
"Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
'Origin: "https://luluvdo.com"',

View File

@@ -3,16 +3,29 @@
Centralizes user-agent strings, provider lists and common headers so
multiple provider implementations can import a single source of truth.
"""
from enum import Enum
from typing import Dict, List
class ProviderType(str, Enum):
"""Enumeration of supported video providers."""
VOE = "VOE"
DOODSTREAM = "Doodstream"
VIDMOLY = "Vidmoly"
VIDOZA = "Vidoza"
SPEEDFILES = "SpeedFiles"
STREAMTAPE = "Streamtape"
LULUVDO = "Luluvdo"
DEFAULT_PROVIDERS: List[str] = [
"VOE",
"Doodstream",
"Vidmoly",
"Vidoza",
"SpeedFiles",
"Streamtape",
"Luluvdo",
ProviderType.VOE.value,
ProviderType.DOODSTREAM.value,
ProviderType.VIDMOLY.value,
ProviderType.VIDOZA.value,
ProviderType.SPEEDFILES.value,
ProviderType.STREAMTAPE.value,
ProviderType.LULUVDO.value,
]
ANIWORLD_HEADERS: Dict[str, str] = {