store: add NoPayStation source (PSP + PS1 Classics .pkg)
New 'NoPayStation' option in the Store tab lists PSP_GAMES.tsv and PSX_GAMES.tsv, downloads each item's encrypted .pkg and decrypts/extracts it with pkg2zip into a configurable output dir (<dir>/PSP/<TITLE_ID>/ and <dir>/PSX/<TITLE_ID>/). Downloaded PSP games and PS1 Classics appear in the Library (games/eboot and ps1/eboot respectively) and copy to the PSP as PSP/GAME folders. - app/nopaystation.py: TSV fetch/parse (cached) + pkg2zip discovery/extract. - app/transfers.py: NoPayStationSource (scan + download). - Settings: NPS output dir + pkg2zip path (QSettings nps_dir/pkg2zip_path). - StorePage: NPS source + content-type combo (PSP Games / PS1 Classics), per-item cover system, TSV release dates, nps-download job kind. - Library: _nps_library_items ingest, on-PSP detection, folder copy/delete, PPSSPP play disabled for encrypted PSP EBOOTs. - README: document the source, pkg2zip + npdrm_free requirements.
This commit is contained in:
@@ -46,6 +46,14 @@ ARCHIVE_ITEM = os.environ.get("PSP_ARCHIVE_ITEM", "psp-redump-roms321.com")
|
||||
ARCHIVE_LOGGED_IN_SIG = os.environ.get("PSP_ARCHIVE_LOGGED_IN_SIG", "")
|
||||
ARCHIVE_LOGGED_IN_USER = os.environ.get("PSP_ARCHIVE_LOGGED_IN_USER", "")
|
||||
|
||||
# NoPayStation: where extracted .pkg content lands, and the TSV source base.
|
||||
# PSP games go to <NPS_OUTPUT_DIR>/PSP/<TITLE_ID>/; PS1 Classics to .../PSX/.
|
||||
NPS_OUTPUT_DIR = Path(os.environ.get("PSP_NPS_DIR", str(STATE_DIR / "nps")))
|
||||
NPS_TSV_BASE = os.environ.get("PSP_NPS_TSV_BASE", "https://nopaystation.com/tsv/")
|
||||
|
||||
# pkg2zip binary used to decrypt/extract NPS .pkg files (blank = auto-detect).
|
||||
PKG2ZIP_PATH = os.environ.get("PSP_PKG2ZIP_PATH", "")
|
||||
|
||||
# Scan roots (used by the scanner phase). Comma-separated in env.
|
||||
GAMES_ROOTS = [Path(p) for p in os.environ.get("PSP_GAMES_ROOTS", "/data/umd_games").split(",") if p.strip()]
|
||||
VIDEO_ROOTS = [Path(p) for p in os.environ.get("PSP_VIDEO_ROOTS", "/data/umd_videos").split(",") if p.strip()]
|
||||
|
||||
Reference in New Issue
Block a user