diff --git a/README.md b/README.md index 6bd8fd1..f98b523 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,7 @@ By default, script build the version as recommended by Revanced team. 4. reddit 5. tiktok 6. warnwetter + 7. Spotify 2. If you want to build a specific version . Add `version` in `environment` in the format ```ini diff --git a/main.py b/main.py index e5c9f15..9ef085f 100644 --- a/main.py +++ b/main.py @@ -28,6 +28,7 @@ supported_apps = [ "reddit", "tiktok", "warnwetter", + "spotify", ] apps = env.list("PATCH_APPS", supported_apps) build_extended = env.bool("BUILD_EXTENDED", False) @@ -59,6 +60,7 @@ apk_mirror_version_urls = { "youtube": f"{apk_mirror_urls.get('youtube')}youtube", "youtube_music": f"{apk_mirror_urls.get('youtube_music')}youtube-music", } +upto_down = ["spotify"] class Downloader(object): @@ -121,6 +123,17 @@ class Downloader(object): download_url = apk_mirror + sub_url return download_url + @classmethod + def upto_down_downloader(cls, app: str) -> str: + page = "https://spotify.en.uptodown.com/android/download" + parser = LexborHTMLParser(session.get(page).text) + main_page = parser.css_first("#detail-download-button") + download_url = main_page.attributes["data-url"] + app_version = parser.css_first(".version").text() + cls._download(download_url, "spotify.apk") + logger.debug(f"Downloaded {app} apk from apkmirror_specific_version in rt") + return app_version + @classmethod def apkmirror_specific_version(cls, app: str, version: str) -> str: logger.debug(f"Trying to download {app},specific version {version}") @@ -195,6 +208,7 @@ class Patches(object): "com.ss.android.ugc.trill": ("tiktok", "_tiktok"), "com.twitter.android": ("twitter", "_twitter"), "de.dwd.warnapp": ("warnwetter", "_warnwetter"), + "com.spotify.music": ("spotify", "_spotify"), } for app_name in (revanced_app_ids[x][1] for x in revanced_app_ids): @@ -254,6 +268,7 @@ class Patches(object): "warnwetter": "_warnwetter", "youtube": "_yt", "youtube_music": "_ytm", + "spotify": "_spotify", } if not (app_name := app_names.get(app)): logger.debug("Invalid app name") @@ -370,6 +385,10 @@ def download_revanced(downloader: Type[Downloader]) -> None: logger.info("Downloaded revanced microG ,cli, integrations and patches.") +def upto_down_downloader(app: str, downloader: Type[Downloader]) -> str: + return downloader.upto_down_downloader(app) + + def download_from_apkmirror( version: str, app: str, downloader: Type[Downloader] ) -> str: @@ -379,6 +398,13 @@ def download_from_apkmirror( return downloader.apkmirror_latest_version(app) +def download_apk_to_patch(version: str, app: str, downloader: Type[Downloader]) -> str: + if app in upto_down: + return upto_down_downloader(app, downloader) + else: + return download_from_apkmirror(version, app, downloader) + + def main() -> None: patches = pre_requisite() downloader = Downloader @@ -417,7 +443,7 @@ def main() -> None: arg_parser = ArgParser() logger.debug("Trying to build %s" % app) app_patches, version, is_experimental = get_patches_version() - version = download_from_apkmirror(version, app, downloader) + version = download_apk_to_patch(version, app, downloader) get_patches() logger.debug(f"Downloaded {app}, version {version}") arg_parser.run(app=app, version=version, is_experimental=is_experimental)