PixelLauncher 2.1.2 — секции настроек, панель быстрых настроек, сборки Modrinth/CurseForge
This commit is contained in:
1 parent
80dc1826a1
commit
39cf752b7b
13 files changed
+972
-49
No files matched your search
@@ -0,0 +1,61 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Утилиты для работы с модпаками Modrinth/CurseForge."""
|
||||
import os
|
||||
import re
|
||||
import tempfile
|
||||
|
||||
from . import forge, http, mods
|
||||
from .java_fetch import _safe_join
|
||||
from . import modrinth, curseforge
|
||||
|
||||
|
||||
def install_pack_mrpack_url(game_dir, url, log=None, progress=None, cancel=None):
|
||||
"""Скачивает и ставит .mrpack по URL."""
|
||||
from . import mrpack as mrpack_mod
|
||||
filename = url.rsplit("/", 1)[-1] or "pack.mrpack"
|
||||
return mrpack_mod.install_from_url(game_dir, url, log=log, progress=progress,
|
||||
cancel=cancel, filename_hint=filename)
|
||||
|
||||
|
||||
def install_pack_modrinth(project_id, game_dir, version=None, game_version="",
|
||||
loader="", log=None, progress=None, cancel=None):
|
||||
"""Устанавливает сборку Modrinth по project_id (slug или id).
|
||||
|
||||
Возвращает (id_версии, скачано_файлов).
|
||||
"""
|
||||
from . import mrpack as mrpack_mod
|
||||
vs = modrinth.get_modpack_versions(project_id, game_version=game_version,
|
||||
loader=loader)
|
||||
if not vs:
|
||||
raise RuntimeError("Нет версий сборки Modrinth")
|
||||
v = version if version else vs[0]
|
||||
if isinstance(v, str):
|
||||
v = next((x for x in vs if x["id"] == v or x["filename"] == v), vs[0])
|
||||
url = v.get("url") or ""
|
||||
if not url:
|
||||
raise RuntimeError("У версии сборки нет ссылки на файл")
|
||||
filename = v.get("filename") or "pack.mrpack"
|
||||
return mrpack_mod.install_from_url(game_dir, url, log=log, progress=progress,
|
||||
cancel=cancel, filename_hint=filename)
|
||||
|
||||
|
||||
def install_pack_curseforge(mod_id, file_id, game_dir, log=None, progress=None,
|
||||
cancel=None):
|
||||
"""Устанавливает сборку CurseForge (mod_id + file_id)."""
|
||||
from . import cfpack
|
||||
info = curseforge.get_file(mod_id, file_id)
|
||||
url = info.get("download_url") or ""
|
||||
if not url:
|
||||
raise RuntimeError("Не удалось получить ссылку на загрузку CurseForge")
|
||||
filename = info.get("file_name") or ("pack-%s.zip" % mod_id)
|
||||
return cfpack.install_from_url(game_dir, url, log=log, progress=progress,
|
||||
cancel=cancel, filename_hint=filename)
|
||||
|
||||
|
||||
def install_pack_curseforge_url(game_dir, url, log=None, progress=None,
|
||||
cancel=None):
|
||||
"""Устанавливает сборку CurseForge по прямой ссылке на zip."""
|
||||
from . import cfpack
|
||||
filename = os.path.basename(url.split("?")[0]) or "pack.zip"
|
||||
return cfpack.install_from_url(game_dir, url, log=log, progress=progress,
|
||||
cancel=cancel, filename_hint=filename)
|
||||
Reference in new issue
Block a user