Spaces:
Paused
Paused
| #!/usr/bin/env python3 | |
| # coding: utf-8 | |
| # ytdlbot - __init__.py.py | |
| from urllib.parse import urlparse | |
| from typing import Any, Callable | |
| from engine.generic import YoutubeDownload | |
| from engine.direct import DirectDownload | |
| from engine.pixeldrain import pixeldrain_download | |
| from engine.instagram import InstagramDownload | |
| from engine.krakenfiles import krakenfiles_download | |
| def youtube_entrance(client, bot_message, url): | |
| youtube = YoutubeDownload(client, bot_message, url) | |
| youtube.start() | |
| def direct_entrance(client, bot_message, url): | |
| dl = DirectDownload(client, bot_message, url) | |
| dl.start() | |
| # --- Handler for the Instagram class, to make the interface consistent --- | |
| def instagram_handler(client: Any, bot_message: Any, url: str) -> None: | |
| """A wrapper to handle the InstagramDownload class.""" | |
| downloader = InstagramDownload(client, bot_message, url) | |
| downloader.start() | |
| DOWNLOADER_MAP: dict[str, Callable[[Any, Any, str], Any]] = { | |
| "pixeldrain.com": pixeldrain_download, | |
| "krakenfiles.com": krakenfiles_download, | |
| "instagram.com": instagram_handler, | |
| } | |
| def special_download_entrance(client: Any, bot_message: Any, url: str) -> Any: | |
| try: | |
| hostname = urlparse(url).hostname | |
| if not hostname: | |
| raise ValueError(f"Could not parse a valid hostname from URL: {url}") | |
| except (ValueError, TypeError) as e: | |
| raise ValueError(f"Invalid URL format: {url}") from e | |
| # Handle the special case for YouTube URLs first. | |
| if hostname.endswith("youtube.com") or hostname == "youtu.be": | |
| raise ValueError("ERROR: For YouTube links, just send the link directly.") | |
| # Iterate through the map to find a matching handler. | |
| for domain_suffix, handler_function in DOWNLOADER_MAP.items(): | |
| if hostname.endswith(domain_suffix): | |
| return handler_function(client, bot_message, url) | |
| raise ValueError(f"Invalid URL: No specific downloader found for {hostname}") |