mirror of
https://github.com/sotam0316/docker-py-revanced.git
synced 2026-04-25 11:58:37 +09:00
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
"""Downloader Factory."""
|
|
|
|
from src.config import RevancedConfig
|
|
from src.downloader.apkmirror import ApkMirror
|
|
from src.downloader.apkmonk import ApkMonk
|
|
from src.downloader.apkpure import ApkPure
|
|
from src.downloader.apksos import ApkSos
|
|
from src.downloader.download import Downloader
|
|
from src.downloader.github import Github
|
|
from src.downloader.google_drive import GoogleDrive
|
|
from src.downloader.sources import (
|
|
APK_MIRROR_BASE_URL,
|
|
APK_MONK_BASE_URL,
|
|
APK_PURE_BASE_URL,
|
|
APKS_SOS_BASE_URL,
|
|
DRIVE_DOWNLOAD_BASE_URL,
|
|
GITHUB_BASE_URL,
|
|
UPTODOWN_SUFFIX,
|
|
)
|
|
from src.downloader.uptodown import UptoDown
|
|
from src.exceptions import DownloadError
|
|
|
|
|
|
class DownloaderFactory(object):
|
|
"""Downloader Factory."""
|
|
|
|
@staticmethod
|
|
def create_downloader(config: RevancedConfig, apk_source: str) -> Downloader:
|
|
"""Returns appropriate downloader.
|
|
|
|
Args:
|
|
----
|
|
config : Config
|
|
apk_source : Source URL for APK
|
|
"""
|
|
if apk_source.startswith(GITHUB_BASE_URL):
|
|
return Github(config)
|
|
if apk_source.startswith(APK_PURE_BASE_URL):
|
|
return ApkPure(config)
|
|
if apk_source.startswith(APKS_SOS_BASE_URL):
|
|
return ApkSos(config)
|
|
if apk_source.endswith(UPTODOWN_SUFFIX):
|
|
return UptoDown(config)
|
|
if apk_source.startswith(APK_MIRROR_BASE_URL):
|
|
return ApkMirror(config)
|
|
if apk_source.startswith(APK_MONK_BASE_URL):
|
|
return ApkMonk(config)
|
|
if apk_source.startswith(DRIVE_DOWNLOAD_BASE_URL):
|
|
return GoogleDrive(config)
|
|
msg = "No download factory found."
|
|
raise DownloadError(msg, url=apk_source)
|