Skip to content

A cli Linux and Windows Nopaystation client made with python and wget. Works with PSvita, PSP, PSMobile and PS3 packages

License

Notifications You must be signed in to change notification settings

evertonstz/pynps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyPI - Python Version PyPI - License

GitHub release (latest SemVer) PyPI

Downloads

Currently, all the work is being done inside the refactoring branch.

pyNPS - A cli Linux and Windows Nopaystation client made with python 3 and wget

PyNPS is a Nopaystation client writen in python 3 that, with the help of wget and pkg2zip, can search, download and decrypt/extract PSVita, PSP, PSX, PSM and PS3 games from Nopaystation database. It's basically a command line version of NPSBrowser writen by a moron (aka me).

This project wouldn't be possible without the help of these folks

  • Nopaystation: for making our beloved database this software hooks on
  • mmozeiko: for making the original pkg2zip
  • lusid1: for forking pkg2zip and making theme extraction great again
  • BertrandHustle: for coding a python solution to detect names on PSX's EBOOT that's used in this software
  • Contributors: for helping with pull requests.

Table of Contents


Installation

There are tree methods you can install pyNPS:

Using PIP

This is for both 32 and 64bits systems. All you need is python 3.7 or newer alongside PIP:

pip install pynps

Make sure to also install pkg2zip and wget (this should already be installed in most Linux distros tho).


pkg2zip

This script uses lusid1's pkg2zip, as recomended by NoPayStation, to handle the .pkg extractions, you have 3 options:

  1. Use pre-compied binary, compiled by myelf (version 2.2) here, just drop it inside /home/$USER/.config/pyNPS/lib/ and make it executable by runing:

    chmod -R +x /home/$USER/.config/pyNPS/lib/pkg2zip

  2. If you're an Arch user, you can compile it from AUR after you install it pyNPS will autodetect and use it automatically, no need to add the path to your config file, the yay command is:

    $ yay -S pkg2zip-fork

  3. Or you can just grab the sources from lusid1's repo and compile it yourself here and move the binary into this folder /home/$USER/.config/pyNPS/lib/.

For methods 1 and 3 pyNPS will autodetect and use it automatically, so there's no need to add the path to your config file

In case you decide to store your binary outside /home/$USER/.config/pyNPS/lib/ you'll need to specify this folder in your config file unde the "pkg2zip_location" option.


wget

This software uses wget to make the downloads therefore it won't work if you don't have it installed in your system, most distros already come with wget installed, if you don't have it chances are you're on some crazy non-userfriendly distro and you probably know your way around for installing it. If you don't just google.

You can drop a wget binary at /home/$USER/.config/pyNPS/lib/ after that pyNPS will autodetect and use it automatically, no need to add the path to your config file.

In case you decide to store your binary outside /home/$USER/.config/pyNPS/lib/ you'll need to specify this folder in your config file unde the "wget_location" option.


Windows

TL;DR: install with the windows installer (available at releases page) as administrator (aka select "install for every user in this PC" when you run the installer), open CMD and start using by typing pynps. More info about download directories and config files can be found in these notes

The Windows installer comes bundled with wget and pkg2zip and when installed as administrator it'll also include itself on PATH (if not the user will need to add it manually). There's also a portable binary and Windows can also install it with pip. More infor is found in these notes.

People on Windows that don't actually care about command line stuff can also try NPSBrowser.


Updating database

Before downloading any of your legally obtained (wink wink wink) pkg file you have to update your NPS database, you don't have to do it every time you want to download something, but only in your first run to construct your initial database and after that just once in a while to get info about new pkgs NPS adds to their database:

Updating all databases

$ pynps -u

Updating database per console

updates only vita's db

$ pynps -c psv -u

Or:

$ pynps -uc psv

You can do the same for psp, psx and psm.

Updating database, even more fragmented

Updates only games and themes database for psp and psx (note: since there's no themes database for psx, only the games db will be updated for this system):

$ pynps -c psp -u -GT

Or:

$ pynps -GTuc psp

Updates only games database for every system:

$ pynps -u -G

Or:

$ pynps -Gu

Database file

Database is located by default at /home/$USER/.config/pyNPS/database/pynps.db


Configuration file

Configuration file is created at /home/$USER/.config/pyNPS/settings.ini

If you delete it, it'll be recreated with default parameters in the next run. The options are pretty much self explanatory.


Examples

Searching


Search for an european release of Crash for PSX and PSP

$ pynps --console psp --console psx --region eur --games crash

Or:

$ pynps -c psp -c psx -r eur -G crash

1  ) PSP | NPEG00020 | EU   | GAMES   | Gravity Crash Portable | 46.09 MiB
2  ) PSP | NPEZ00305 | EU   | GAMES   | 3,2,1…SuperCrash! (Minis) | 22.4 MiB
3  ) PSX | NPEE00001 | EU   | GAMES   | Crash Bandicoot  | 461.2 MiB
4  ) PSX | NPEE00001 | EU   | GAMES   | Crash Bandicoot (German store)  | 461.2 MiB
5  ) PSX | NPEE00008 | EU   | GAMES   | Crash Bandicoot 2: Cortex Strikes Back  | 133.6 MiB
6  ) PSX | NPEE00008 | EU   | GAMES   | Crash Bandicoot 2: Cortex Strikes Back (German store)  | 133.6 MiB
7  ) PSX | NPEE00014 | EU   | GAMES   | Crash Bandicoot 3: Warped  | 133.7 MiB
8  ) PSX | NPEE00014 | EU   | GAMES   | Crash Bandicoot 3: Warped (German store)  | 133.7 MiB
9  ) PSX | NPEE00014 | EU   | GAMES   | Crash Bandicoot 3: Warped (Italian Store)  | 133.7 MiB
10 ) PSX | NPEE00014 | EU   | GAMES   | Crash Bandicoot 3: Warped (Spanish)  | 133.7 MiB
11 ) PSX | NPEE00026 | EU   | GAMES   | Crash Team Racing  | 323.2 MiB
12 ) PSX | NPEE00026 | EU   | GAMES   | Crash Team Racing (German Store)  | 323.3 MiB
13 ) PSX | NPEE00026 | EU   | GAMES   | Crash Team Racing (Italian Store)  | 323.3 MiB
Enter the number for what you want to download, you can enter multiple numbers using commas: 

Search for for themes and demos related to the word "touhou in any region:

$ pynps --console psv --themes --demos touhou

Or:

$ pynps -c psv -T -E touhou

Or:

$ pynps -c psv -TE touhou

Orrrr (note that c must always be last in such cases because it has to accept the "psv"):

$ pynps -TEc psv touhou

1  ) PSV | PCSE00947 | US   | THEMES | Touhou Genso Rondo Theme | 6.723 MiB
2  ) PSV | PCSE00990 | US   | THEMES | Touhou Genso Wanderer PlayStation Vita Theme | 4.514 MiB
3  ) PSV | PCSE01104 | US   | THEMES | Touhou Kobuto V: Burst Battle 4 Theme | 4.038 MiB
4  ) PSV | PCSB01039 | EU   | THEMES | Touhou Genso Wanderer PlayStation Vita Theme | 4.514 MiB
5  ) PSV | PCSB01129 | EU   | THEMES | Touhou Kobuto V: Burst Battle Theme 4 | 4.038 MiB
6  ) PSV | PCSG00999 | JP   | THEMES | Touhou Kobuto V | 2.533 MiB
7  ) PSV | PCSE01104 | US   | THEMES | Touhou Kobuto V: Burst Battle Theme 3 | 5.581 MiB
8  ) PSV | PCSE01104 | US   | THEMES | Touhou Kobuto V: Burst Battle Theme 2 | 5.174 MiB
9  ) PSV | PCSE01104 | US   | THEMES | Touhou Kobuto V: Burst Battle Theme 1 | 2.533 MiB
10 ) PSV | PCSG90252 | JP   | DEMOS  | Touhou Soujinengi V (DEMO) | 335.6 MiB
Enter the number for what you want to download, you can enter multiple separated by commas:

Search for for everything (themes, games, demos, dlcs and updates) related to the word "knight" in any region region on the psvita database:

$ pynps -c psv knight

Or if you like high suffering :

$ pynps --console psv --games --dlcs --themes --updates --demos knight

Or if you like medium suffering:

$ pynps -c psv -G -D -T -U -E knight

Low suffering:

$ pynps -c psv -GDTUE knight

Alternative low suffering:

$ pynps -GDTUEc psv knight

1  ) PSV | PCSE00244 | US   | GAMES   | Valhalla Knights 3 | 897.8 MiB
13 ) PSV | PCSA00017 | US   | DLCS    | LittleBigPlanet Knights of Old Pre-Order Costume Pack | 100 KiB
49 ) PSV | PCSB00861 | EU   | THEMES  | Digimon Story Cyber Sleuth Custom Theme: Royal Knights Set | 4.999 MiB
53 ) PSV | PCSB00743 | EU   | UPDATES | Shovel Knight | 120.8 MiB
Enter the number for what you want to download, you can enter multiple separated by commas:

I cropped the output because it returned 53 results


If you just wanna everything related to God of War in all systems (psp, psv, psx and psm)? Sure, you can omit "-c/--console" and it will assume you want every gaming system:

$ pynps "god of war"

Or

$ pynps -c psv -c psp -c psx -c psm "god of war"

1  ) PSV | PCSA00017 | US   | DLCS    | LittleBigPlanet PS Vita God of War Kratos Costume | 100 KiB
2  ) PSV | PCSA00069 | US   | DLCS    | PS All-Stars PS Vita God of War's Zeus | 100 KiB
3  ) PSV | PCSA00069 | US   | DLCS    | PS All-Stars PS Vita God of War's Warrior of Apollo Costume | 100 KiB
4  ) PSV | PCSA00069 | US   | DLCS    | PS All-Stars PS Vita God of War's Hades Minion | 100 KiB
5  ) PSV | PCSF00021 | EU   | DLCS    | God of War - Level Kit (PS Vita) | 100 KiB
6  ) PSV | PCSA00017 | US   | DLCS    | LittleBigPlanet™ PS Vita God of War™ minipack | 100 KiB
7  ) PSV | PCSA00126 | US   | GAMES   | God of War Collection | 3.108 GiB
8  ) PSV | PCSC00059 | JP   | GAMES   | God of War Collection | 2.435 GiB
9  ) PSV | PCSF00438 | EU   | GAMES   | God of War Collection | 3.301 GiB
10 ) PSP | NPJH50170 | JP   | GAMES   | God of War: Rakujitsu no Hisoukyoku | 1.278 GiB
11 ) PSP | NPEG00023 | EU   | GAMES   | God of War: Chains of Olympus | 1.095 GiB
12 ) PSP | NPEG00044 | EU   | GAMES   | God of War: Ghost of Sparta | 1.117 GiB
13 ) PSP | NPHG00027 | ASIA | GAMES   | God of War: Chains of Olympus | 1.289 GiB
14 ) PSP | NPHG00092 | ASIA | GAMES   | God of War: Ghost of Sparta | 1.078 GiB
15 ) PSP | NPEG00045 | EU   | GAMES   | God of War®: Ghost of Sparta | 1024 MiB
16 ) PSP | NPUG80325 | US   | GAMES   | God of War: Chains of Olympus | 1.287 GiB
17 ) PSP | NPUG80508 | US   | GAMES   | God of War Ghost of Sparta | 1.087 GiB
18 ) PSP | NPHG00091 | ASIA | GAMES   | God of War™ Ghost of Sparta 體驗版 | 96.54 MiB
19 ) PSP | NPEW00072 | EU   | THEMES  | God of War: Ghost of Sparta Theme (pre-order bundle) | 370.5 KiB
20 ) PSP | NPEW00072 | EU   | THEMES  | God of War Ghost of Sparta PSP Theme | 370.5 KiB
Enter the number for what you want to download, you can enter multiple numbers using commas:                                                                       

Wanna return every single american DLC for the psvita? Sure, it's slow but (not slow anymore on versions 1.2.0 or newer) it's a free country:

$ pynps -c psv -r usa -D _all

that's too big to output here, mate :<

You can even return the entire database if you're crazy enough:

$ pynps _all

that's too big to output here, mate :<

Syntax for selecting files to download

After you make your search you'll probably want to download something, if it's a single file that's pretty easy, just type the number when asked and it'll start the download for you. If you wanna multiple downloads, you can always separate the numbers by commas. But there's an even more advance (and cool) way for downloading things, and that's using "slices", here's how to do it with some examples:

$ pynps -c psv -TE touhou

1  ) PSV | PCSE00947 | US   | THEMES  | Touhou Genso Rondo Theme | 6.723 MiB
2  ) PSV | PCSE00990 | US   | THEMES  | Touhou Genso Wanderer PlayStation Vita Theme | 4.514 MiB
3  ) PSV | PCSE01104 | US   | THEMES  | Touhou Kobuto V: Burst Battle 4 Theme | 4.038 MiB
4  ) PSV | PCSB01039 | EU   | THEMES  | Touhou Genso Wanderer PlayStation Vita Theme | 4.514 MiB
5  ) PSV | PCSB01129 | EU   | THEMES  | Touhou Kobuto V: Burst Battle Theme 4 | 4.038 MiB
6  ) PSV | PCSG00999 | JP   | THEMES  | Touhou Kobuto V | 2.533 MiB
7  ) PSV | PCSE01104 | US   | THEMES  | Touhou Kobuto V: Burst Battle Theme 3 | 5.581 MiB
8  ) PSV | PCSE01104 | US   | THEMES  | Touhou Kobuto V: Burst Battle Theme 2 | 5.174 MiB
9  ) PSV | PCSE01104 | US   | THEMES  | Touhou Kobuto V: Burst Battle Theme 1 | 2.533 MiB
10 ) PSV | PCSG90252 | JP   | DEMOS   | Touhou Soujinengi V (DEMO) | 335.6 MiB
Enter the number for what you want to download, you can enter multiple numbers using commas:
  • To download files 1 to 9, the masochist method, you type: 1,2,3,4,5,6,7,8,9
  • To download files 1 to 9, the cool-kid method, you type: 1-9
  • To download files 1 to 5 and files 8 to 10: 1-5,8-10
  • To download files 1, 4 and files 6 to 10: 1,4,6-10
  • To download files 1, 4 and files 6 to 10, the crazy way, as the software doesn't care about order or duplicates: 10-6,1,4,6

Resuming downloads

Resuming downloads in supported since version 1.4.0, more info can be found in the release notes here


More information

Just run:

$ pynps -h

usage: pynps       [-h] [-c {psv,psp,psx,psm,ps3}] [-r {usa,eur,jap,asia,int}] [-s SORT] [-G] [-D] [-T] [-U] [-E] [-A]
                   [-k] [-eb] [-cso {1,2,3,4,5,6,7,8,9}] [-zip] [-l LIMIT_RATE] [-u] [-p] [-R] [-v]
                   [search]

pyNPS is a Nopaystation client writen in python 3that, with the help of wget and pkg2zip, can search, download and
decrypt/extract PSVita, PSP, PSX and PSM games from Nopaystation database.

positional arguments:
  search                search something to download, you can search by name or ID or use '_all' to return
                        everythning.

optional arguments:
  -h, --help            show this help message and exit
  -c {psv,psp,psx,psm,ps3}, --console {psv,psp,psx,psm,ps3}
                        the console you wanna get content with NPS.
  -r {usa,eur,jap,asia,int}, --region {usa,eur,jap,asia,int}
                        the region for the pkj you want.
  -s SORT, --sort SORT  sort search output by column name, can string multiple names by using a comma. Available
                        options are: console or c, title_id or id, region or r, type or t, game_name or n, size or s.
                        Default value: c,t,r,n
  -G, -dg, --games      to download PSV/PSP/PSX/PSM/PS3 games.
  -D, -dd, --dlcs       to download PSV/PSP/PS3 dlcs.
  -T, -dt, --themes     to download PSV/PSP/PS3 themes.
  -U, -du, --updates    to download PSV/PSP game updates.
  -E, -dde, --demos     to download PSV/PS3 demos.
  -A, -da, --avatars    to download PS3 avatars.
  -k, --keepkg          using this flag will keep the pkg after the extraction
  -eb, --eboot          use this argument to unpack PSP pkgs as EBOOT.pbp.
  -cso {1,2,3,4,5,6,7,8,9}, --compress_cso {1,2,3,4,5,6,7,8,9}
                        use this argument to unpack PSP games as a compressed .cso file. You can use any number
                        beetween 1 and 9 for compression factors, were 1 is less compressed and 9 is more compressed.
  -zip, --compress_zip  extract pkgs into zip files instead of folders, this flag won't work with PS3 pkgs.
  -l LIMIT_RATE, --limit_rate LIMIT_RATE
                        limit download speed, input is the same as wget's.
  -u, --update          update database.
  -p, --print           just print the result and exit, you can use this option to redirect the output to a file!
  -R, --resume_session  resume a download session that was saved previously.
  -v, --version         show program's version number and exit

Make a donation

kaching kaching

Paypal

paypal

Crypto

BTC: bc1qh53mg0gm6hfjsaphw3x4ct3753rr949lfpere7

LTC: ltc1qp6230jydx7hyht7tu5cuxkk3t7j3t8s0f5wgy8

XLM: evertonstz*keybase.io

ETN: etnjyromPydDjvE6m64mvTTrtzd2k7wm3hFCAAsYBc9kdX3N5PHRA3nTescTqq7xGVBrsk8uJXwN5RnwvdbQH2KR6DbHPzE9Ey