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

Overview

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

Comments
  • [Enhancement] PS3 support

    [Enhancement] PS3 support

    NPS publishes a set of PS3 tsv files as well. Do you plan to add support for those? I say this as a layman with Python, but it looks like it wouldn't be a difficult addition. I may try to add it myself this week, unless you're already in the middle of something similar.

    Thought: does pkg2zip support PS3 pkgs? EDIT: it appears not to.

    enhancement 
    opened by kerobaros 22
  • Added avatar download support.

    Added avatar download support.

    I'm just a beginner at this and never studied python, but. This seems to work fine for me, I tested it on my Linux system and were able to download all Avatars.

    Please double-check my code in case I made a mistake or missed anything. 😃

    opened by smvueno 8
  • Index Error with Themes

    Index Error with Themes

    I noticed that there is an error with the following function when downloading psv themes. I was able to fix this by creating a temp file in my theme folder. Please note I tried to fix the code myself so there may be a +/- difference in the lines in the errors.

    Traceback (most recent call last):
      File "/usr/bin/pynps", line 8, in <module>
        sys.exit(cli_main())
      File "/usr/lib/python3.8/site-packages/pynps/cli/cli.py", line 582, in cli_main
        theme_folder_name = get_theme_folder_name(f"{DLFOLDER}/Extracted/bgdl/t/")
      File "/usr/lib/python3.8/site-packages/pynps/functions/functions.py", line 731, in get_theme_folder_name
        comp = list(range(1, a[-1] + 1))
    IndexError: list index out of range
    

    From what I can tell it caused by the following line because the list 'a' is empty: comp = list(range(1, a[-1] + 1))

    opened by singha95 4
  • [Enchancement] Ability to choose a download location

    [Enchancement] Ability to choose a download location

    Hi.

    Apparently, pyNPS defaults to ~/Downloads/pyNPS as the download location. I read the documentation and found nothing about being able to change the default directory, so is it possible to implement this feature? pyNPS is great, keep up the good work!

    Thanks.

    opened by ghost 2
  • [Support] pkg2zip compiled binary link is down

    [Support] pkg2zip compiled binary link is down

    Hello.

    I've compiled pkg2zip v2.3 myself by running sudo make on the directory with the source files downloaded from the aforementioned release. 25 files were generated, out of which I believe only pkg2zip is needed. Is that correct? I moved pkg2zip by itself and tested it on a small .pkg I had on my computer, and it worked fine. I transferred pkg2zip by itself to /home/$USER/.config/pyNPS/lib/ and everything seems to be working fine, but could anyone tell me if the other 24 files are in fact required?

    Finally, as stated in the title, the pre-compiled binary is not downloadable anymore, as the file seems to be removed from the hosting service. I don't think it's a problem, it's just as a kind of heads up. I'm still sort of a beginner on Linux, so it's still useful to me to compare your binary pkg2zip with mine to know if

    1. I did it correctly
    2. The other files are needed.

    Thanks.

    opened by ghost 2
  • Unable to use the pkg2zip executable on Ubuntu 20.10 (64 bits)

    Unable to use the pkg2zip executable on Ubuntu 20.10 (64 bits)

    Hello,

    I had an error while using pynps recently on Ubuntu 20.10. Could you please what I'm doing wrong with pynps? I have a desktop with GNU/Linux Debian and everything is fine... I can't find the reason why it failes on Ubunut...

    Regards!

    thank you for your help!

    Preliminary information:

    installed version : 1.6.2 // through "pip3 install pynps" (updates frequently made)

    pkg2zip installation : /home/$USER/.config/pyNPS/lib/ and make it executable by runing:

    • ~/.local.bin/pkg2zip (64 bits - chmod'ed to be executable) OR
    • ~.config/pyNPS/lib/pkg2zip (64 bits - chmod'ed to be executable)

    Desktop: Linux HP 5.8.0-29-generic #31-Ubuntu SMP Fri Nov 6 12:37:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux Command used : pynps -c psv -GDC -r eur Command Steps:

    • Finding the expected game : OK
    • Downloading or Resuming downlaod : OK
    • Extracting through pkg2zip : KO

    Command output : PKG2ZIP] Attempting to extract [PCSBxxxxxx] xxxxxxxxx Traceback (most recent call last): File "/home//.local/bin/pynps", line 8, in sys.exit(cli_main()) File "/home//.local/lib/python3.8/site-packages/pynps/cli/cli.py", line 662, in cli_main delete = run_pkg2zip(dl_dile_loc, dl_location, PKG2ZIP, pkg2zip_args, extraction_folder, i, zrif) File "/home//.local/lib/python3.8/site-packages/pynps/functions/functions.py", line 699, in run_pkg2zip process = runner(run_lst, cwd=output_location) File "/home//.local/lib/python3.8/site-packages/pynps/functions/functions.py", line 636, in runner p = subprocess.Popen(list, cwd=cwd, File "/usr/lib/python3.8/subprocess.py", line 854, in init self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) OSError: [Errno 8] Exec format error: '/home//.local/bin/pkg2zip'

    opened by Zileus 2
  • Cannot download RAP file

    Cannot download RAP file

    I am donwloading a PS3 game directly into a external USB drive and I am having this error. Any ideas?

    --------------------------------------------------------------------------------------------------------------------------
    [DOWNLOAD] Batman Arkham Origins (EU) [NPEB01414] for PS3
    OmyVmsLhSkcJEZlLcSDGIwwawjOIbV 100%[==================================================>]  14,08G  11,2MB/s    in 27m 39s 
    --------------------------------------------------------------------------------------------------------------------------
    [CHECKSUM] No checksum provided by NPS, skipping check
    --------------------------------------------------------------------------------------------------------------------------
    [EXTRACTION] skipping extraction since pkg2zip doesn't work with pkg2zip
    --------------------------------------------------------------------------------------------------------------------------
    [MOVE] PS3 pkg file moved to: /media/victor/PS3external/pyNPS/PS3/GAMES/packages/Batman Arkham Origins (EU) - EP1018-NPEB01414_00-BATMANORIGINS001.pkg
    [MOVE] attempting to delete .pkg file from old location
    [MOVE] success, the compressed .pkg was deleted
    --------------------------------------------------------------------------------------------------------------------------
    [RAP] downloaing RAP file
    E94D3BCCFF0A5A60A8E4E4F1D6B049 100%[==================================================>]      16  --.-KB/s    in 0s      
    Traceback (most recent call last):
      File "/home/victor/.local/bin/pynps", line 11, in <module>
        sys.exit(cli_main())
      File "/home/victor/.local/lib/python3.7/site-packages/pynps/cli/cli.py", line 715, in cli_main
        get_rap(i, WGET, rap_folder, rap_url)
      File "/home/victor/.local/lib/python3.7/site-packages/pynps/functions/functions.py", line 262, in get_rap
        os.rename(f"{dl_tmp_folder}{i['RAP']}", rap_folder)
    OSError: [Errno 18] Invalid cross-device link: '/tmp/tmpjqo89k69/E94D3BCCFF0A5A60A8E4E4F1D6B0499D' -> '/media/victor/PS3external/pyNPS/PS3/GAMES/exdata/EP1018-NPEB01414_00-BATMANORIGINS001.rap'
    
    opened by vrodriguezf 2
  • Added avatars support for PS3

    Added avatars support for PS3

    Hi again! I redownloaded your latest version and re-did my avatars support addition. This time I tried to go through the safety a bit more and not just to make it work.

    I used the parts you already got to show warning and error messages to the user regarding Avatars download.

    I'm happy for inputs :)

    opened by smvueno 2
  • Not checking final destination if downloaded/extracted

    Not checking final destination if downloaded/extracted

    The downloader is not checking if the game already exists in the final PS3 pkg folder or Extracted folder. Which means it downloads the game again and extracts it again.

    If I'm not mistaken, when the file already exists in the extracted folder it means the download was successful right? Probably need to input a check if the folder/file exists in the final destination. Then have the downloader skip the unnecessary download and extra extraction.

    enhancement 
    opened by smvueno 2
  • 1.4.1 Binary - failed to execute script

    1.4.1 Binary - failed to execute script

    Traceback (most recent call last): File "site-packages/PyInstaller/loader/rthooks/pyi_rth__tkinter.py", line 30, in FileNotFoundError: Tcl data directory "/tmp/_MEIw55QPa/tcl" not found. [27062] Failed to execute script pyi_rth__tkinter

    opened by KhanSW 2
  • SyntaxError: invalid syntax

    SyntaxError: invalid syntax

    Hi, I am having the followig error when executing any pynps command:

    Traceback (most recent call last):
      File "/usr/local/bin/pynps", line 7, in <module>
        from pynps import main
      File "/usr/local/lib/python3.5/dist-packages/pynps.py", line 145
        print(f"Processing {type}: {progress_bar( int(index_file/(len(file) - 1) * 100) )}", 
                                                                                          ^
    SyntaxError: invalid syntax
    

    I installed it via pip3 in the Linux installation that is part of ChromeOS. I am in an arm architecture if that may help.

    Thanks!

    opened by vrodriguezf 2
  • [Errno 36] File name too long

    [Errno 36] File name too long

    I get the following error for 3) PS3 | NPUB30314 | USA | Game | Dead Space Extraction . The rap file never appears where it's supposed to.

    output
    [email protected]:~/Downloads/pyNPS/PS3# pynps -G -c ps3 "Dead Space Extraction"
    
    [PKG2ZIP] you don't have a valid pkg2zip installation or binary in your system, extraction will be skipped. PS3 games don't need pkg2zip
    -------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    [SEARCH] here are the matches:
    1) PS3 | NPEB00318 | EUR | Game | Dead Space Extraction (Trial to Full)                                                                           [3.447 GiB]
    
    2) PS3 | NPUB30314 | USA | Game | Dead Space Extraction                                                                                           [3.464 GiB]
    
    3) PS3 | NPUB30314 | USA | Game | Dead Space Extraction                                                                                           [3.464 GiB]
    
    Enter the number for what you want to download, you can enter multiple numbers using commas: 3
    -------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    [SEARCH] you're going to download the following files:
    3) PS3 | NPUB30314 | USA | Game | Dead Space Extraction                                                                                           [3.464 GiB]
    
    Download files? [y/n]: y
    -------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    [DOWNLOAD] Dead Space Extraction (US) [NPUB30314] for PS3
    zZyBxuyRDPGzGCrzuxCqEUFvplMyLZsMphAGCpl 100%[============================================================================>]   3.46G  95.1MB/s    in 39s
    -------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    [CHECKSUM] No checksum provided by NPS, skipping check
    -------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    [EXTRACTION] skipping extraction since pkg2zip doesn't work with pkg2zip
    -------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    [MOVE] PS3 pkg file moved to: /home/username12345/Downloads/pyNPS/PS3/GAMES/packages/Dead Space Extraction (US) - UP0006-NPUB30314_00-DSEXTRACTIONKEY1.pkg
    [MOVE] attempting to delete .pkg file from old location
    [MOVE] success, the compressed .pkg was deleted
    -------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    [RAP] downloaing RAP file
    4e5044000000000300000003000000005550303 100%[============================================================================>]     352  --.-KB/s    in 0s
    Traceback (most recent call last):
      File "/usr/local/bin/pynps", line 33, in <module>
        sys.exit(load_entry_point('pynps==1.6.2', 'console_scripts', 'pynps')())
      File "/usr/local/lib/python3.6/dist-packages/pynps-1.6.2-py3.6.egg/pynps/cli/cli.py", line 727, in cli_main
        get_rap(i, WGET, rap_folder, rap_url)
      File "/usr/local/lib/python3.6/dist-packages/pynps-1.6.2-py3.6.egg/pynps/functions/functions.py", line 277, in get_rap
        copyfile(f"{dl_tmp_folder}{i['RAP']}", rap_folder)
      File "/usr/lib/python3.6/shutil.py", line 120, in copyfile
        with open(src, 'rb') as fsrc:
    OSError: [Errno 36] File name too long: '/tmp/tmp5r3rymwv/4e5044000000000300000003000000005550303030362d4e50554233303331345f30302d445345585452414354494f4e4b455931000000000000000000000000476c6f72794f664272756e6573747564dadac5ce3234df54702a451a970faa39af0bf3c53b1ac16e5286d3457872eb1e000000000000000000000000000000000000000c0000400000000000000000408598216d2c40548905889dd0e44ae5125fe6242c087ce197ada23c2d85ad2e710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4beebd71f9c53a30699e98e969e45e7dd32a9679cffc126e47db2ecbc3e454f1698d0d0cd7ba63504fe17a7ced68fd0558fbe366a116de61355a79a0fb786825eb10a135fbeef61731fb212bc9ff4b1454441544120332e332e302e57000000'
    
    specs
    Ubuntu 18.04.6 LTS
    Linux 5.4.0-1058-gcp
    pynps version 1.6.1
    
    opened by jeffrey-lebowski 1
  • "'utf-8' codec can't decode byte 0x99 in position 29: invalid start byte" when trademark symbol is in the name of the game

    pynps -G -zip -c psp -r eur "Extreme Pinball"

    [DOWNLOAD] Extreme Pinball (EU) [NPEF00068] for PSP 3sE4F8Tg3kOFfsobRrF1VMUf7hAfYDeDX62mguUM5WEb83auLcpwXcEQQNWP4Jrjfu52tydMworI7oW 100% [CHECKSUM] No checksum provided by NPS, skipping check [PKG2ZIP] Attempting to extract [NPEF00068]Extreme Pinball [*] loading... [*] unpacking PSX Traceback (most recent call last): File "d:\python3\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "d:\python3\lib\runpy.py", line 87, in run_code exec(code, run_globals) File "D:\Python3\Scripts\pynps.exe_main.py", line 9, in File "d:\python3\lib\site-packages\pynps\cli\cli.py", line 667, in cli_main delete = run_pkg2zip(dl_dile_loc, dl_location, PKG2ZIP, pkg2zip_args, extraction_folder, i) File "d:\python3\lib\site-packages\pynps\functions\functions.py", line 694, in run_pkg2zip process = runner(run_lst, cwd=output_location) File "d:\python3\lib\site-packages\pynps\functions\functions.py", line 643, in runner out = line.rstrip().decode() UnicodeDecodeError: 'utf-8' codec can't decode byte 0x99 in position 29: invalid start byte

    Replacing out = line.rstrip().decode() with out = line.rstrip().decode('cp1252') in functions.py appears to correct this (though it breaks Japanese title downloading).

    bug 
    opened by Pretzelek 0
  • If the pkg url contains a question mark, extraction will fail

    If the pkg url contains a question mark, extraction will fail

    Duplication steps: pynps -G -c psp -r usa "talkman travel tokyo"

    [SEARCH] you're going to download the following files:

    1. PSP | NPUG80155 | USA | Game | TALKMAN TRAVEL TOKYO [17.72 MiB] Download files? [y/n]: y

    [DOWNLOAD] TALKMAN TRAVEL TOKYO (US) [NPUG80155] for PSP w2kCvtC25dQdGqSeGgl1oJel2ywCHKxvecsJJTIje4Pc6AMGmMJdIeyxX2pgY7d97pnjrYwVKUkGBj1 100%[====================================================================================================================================================================================================>] 17.72M 43.8MB/s in 0.4s

    Traceback (most recent call last): File "d:\python3\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "d:\python3\lib\runpy.py", line 87, in run_code exec(code, run_globals) File "D:\Python3\Scripts\pynps.exe_main.py", line 9, in File "d:\python3\lib\site-packages\pynps\cli\cli.py", line 561, in cli_main sha256_dl = checksum_file(downloaded_file_loc) File "d:\python3\lib\site-packages\pynps\functions\functions.py", line 532, in checksum_file with open(file, 'rb') as f: OSError: [Errno 22] Invalid argument: 'G:/Games/pynps/PKG/PSP/GAMES/w2kCvtC25dQdGqSeGgl1oJel2ywCHKxvecsJJTIje4Pc6AMGmMJdIeyxX2pgY7d97pnjrYwVKUkGBj1Aca5vWHX9PeD7Sc099Dx7e.pkg?product=0084&country=us'

    '?' in the URL gets turned into '@', but pynps is still looking for the file with '?'.

    This can be fixed by adding dl_dile_loc = dl_dile_loc.replace("?", "@") in cli.py, after dl_dile_loc = f"{DLFOLDER}/PKG/{i['System']}/{i['Type']}/{i['PKG direct link'].split('/')[-1]}" as well as replacing

    open(file, 'rb') as f: with open(file.replace("?", "@"), 'rb') as f:

    in cli.py.

    bug 
    opened by Pretzelek 0
  • App crashes when the checksum doesn't match

    App crashes when the checksum doesn't match

    Duplication steps: run C:\Program Files (x86)>pynps -D -zip -c psv -r jap _all

    Enter the number for what you want to download, you can enter multiple numbers using commas: 2205-2206

    App will try to download the 2205th entry:

    [SEARCH] you're going to download the following files: 2205) PSV | PCSG01116 | JAP | DLC | 探索者たちの口伝集 [ 100 KiB] 2206) PSV | PCSG01116 | JAP | DLC | 追加クエスト『経験値どっさりクエスト』 [ 100 KiB] Download files? [y/n]: y

    [DOWNLOAD] 探索者たちの口伝集 (JP) [PCSG01116] for PSV JP0106-PCSG01116_00-ADVSYSTEM0000001_bg_1_f5f2e3ae4bdc667bf29f992d933ad6c24e3ce 100%

    [CHECKSUM] checksum not matching, pkg file is probably corrupted, delete it at your download folder and redownload the pkg [CHECKSUM] corrupted file location: G:/Games/pynps/PKG/PSV/DLCS/JP0106-PCSG01116_00-ADVSYSTEM0000001_bg_1_f5f2e3ae4bdc667bf29f992d933ad6c24e3cedd4.pkg

    Done! <- app stops, doesn't try to download 2206

    This is caused by break in the cli.py file: if sha256_dl != sha256_exp: loc = f"{DLFOLDER}/PKG/{i['System']}/{i['Type']}/{i['PKG direct link'].split('/')[-1]}" printft(HTML("[CHECKSUM] checksum not matching, pkg file is probably corrupted, delete it at your download folder and redownload the pkg")) printft(HTML("[CHECKSUM] corrupted file location: %s") %loc) break # skip file

    Without that break, app fails gracefully and continues processing.

    bug 
    opened by Pretzelek 0
  • [enchancement] Skip the download if .zip file exists and passes checksum check

    [enchancement] Skip the download if .zip file exists and passes checksum check

    Hello I think it would be great if the app would skip download if the .zip file (created with the -zip option) exists and is valid. This would make keeping the content up to date with new entries.

    enhancement 
    opened by Pretzelek 0
Releases(1.6.2)
  • 1.6.2(Jul 3, 2020)

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Good news for windows users this release. As always, for any bug refer to issues

    PSA: Keep in mind windows has a hard time with japanese characters, that's a problem with cmd and I'm not sure if I can do something to mitigate it. But I'm looking into it. Anyone with more information about this can also refer to issues

    Changelog

    Windows binaries are available again

    You read it right, "are", pynps is now shipped in two flavors for windows:

    Windows installer: This is the best way for noobs to get everything runing, pynps is installed at C:\Program Files (x86)\pyNPS, this installer ships with wget.exe and pkg2zip.exe bundled within, the installer will also add pynps into the PATHS (only if installed as administrator, aka "For all users in this computer", tho). For people that don't care about these technicalities, basically this means you only need to install pynps and it'll work out of the box: just open cmd and type "pynps".

    For the installer, pynps uses this directory C:\Users\USERNAME\Documents\pyNPSbin to store everything: -there's no lib folder, since it's bundled with the installer -settings file is at pyNPSbin\settings.ini -database is located at pyNPSbin\database\pynps.db

    The download folder is C:\Users\USERNAME\Downloads\pyNPS

    Windows portable exe file: This is a one file executable shipped inside a zip, compared to the Windows installer, the portable release should have a startup time that's a little slower; You'll still need to look for a pkg2zip.exe and a wget.exe file and put it in the lib folder inside place_where_you_extracted_zip\pynps\pynps_config\lib. You'll also need to add the pynps.exe into your PATH if you want to run it easily from cmd, double clicking the file don't work.

    For the portable release, everything is done inside place_where_you_extracted_zip\pynps

    • wget.exe and pkg2zip.exe, as already explaned, have to be inside pynps_config\lib\ -settings file is at pynps_config\settings.ini -database is located at pynps_database\pynps.db

    The download folder is pynps_downloads, also inside place_where_you_extracted_zip\pynps

    Support for pip on windows #14

    Windows users that are familiar with python can now install pynps using pip! On WIndows, pynps uses this directory C:\Users\USERNAME\Documents\pyNPS to store everything:

    • wget.exe andpkg2zip.exe have to be inside pyNPS\lib\ -settings file is at pyNPS\settings.ini -database is located at pyNPS\database\pynps.db

    The download folder is C:\Users\USERNAME\Downloads\pyNPS

    Windows user not using the installer can get pkg2zip from lusi1 and a wget build from here

    BUG fixes

    • fixes #22 845ee5e914962d72b7a757482bf21900cb0b4410

    binaries are packed with pyinstaller and python 3.7.8. The installer is compiled with Inno Setup

    Source code(tar.gz)
    Source code(zip)
    pynps-1.6.2-1.x86_64.windows-installer.exe(8.91 MB)
    pynps-1.6.2-1.x86_64.windows-portable.zip(7.02 MB)
  • 1.6.1(Jun 16, 2020)

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Binaries won't be available until pyinstaller starts working on python 3.8, anyone interested can track it here

    Changelog

    Support for downloading PS3 avatars #18, implemented by @smvueno at #21

    Users can now download avatars for PS3, as any other PS3 pkg these will also not be extracted, but .rap will be downloaded when available. Users should use the flags -A, --avatars or -da to download pkgs from this category:

    # this will search for Ratchet and Clank avatars
    pynps -Ac ps3 'Ratchet and Clank'
    

    As always, everything related to this console is saved inside a PS3 directory located in your download's folder.

    d7d21e80ce9e99ec938d95cab151b5e99782188c

    BUG fixes

    • fixes flags not being checked for PSM 845ee5e914962d72b7a757482bf21900cb0b4410
    • fixes force exit when using an unsupported flag alongside a supported one 3ac6ed5732bafc04ab0991113243c2157e6a1624
    • fixes user being able to use -zip alongside -cso or -eb 41f0bf07f98b5b020c461bb10c3f7e6bf5424db2
    • fixes flags' description, adds PS3 to all supported flags and fixes description for download resume 5d9ac9ea6a8601c27276842a35b6d81f03a604d0
    • allow users to call --version with -v 7e0792f9372c9132515755dc974840a01fe778c7
    Source code(tar.gz)
    Source code(zip)
  • 1.6.0(Jun 12, 2020)

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Binaries won't be available until pyinstaller starts working on python 3.8, anyone interested can track it here

    ATTENTION (Updating users ONLY)!

    Users coming from any past version will need to update the configuration file to add links related to the PS3 system, the easiest way of doing this is by removing the old settings.ini (located at ~/.config/pyNPS/settings.ini) and running pyNPS again to recreate the file.

    Some users may want to do it manually for some reason, all you'll need to do is go to your settings.ini (located at ~/.config/pyNPS/settings.ini) and add the following section anywhere (respecting other sections of course):

    [PS3_Links]
    games = https://nopaystation.com/tsv/PS3_GAMES.tsv
    dlcs = https://nopaystation.com/tsv/PS3_DLCS.tsv
    themes = https://nopaystation.com/tsv/PS3_THEMES.tsv
    demos = https://nopaystation.com/tsv/PS3_DEMOS.tsv
    avatars = https://nopaystation.com/tsv/PS3_AVATARS.tsv
    

    Users fixing their settings manually should also consider moving their old links from http to https.

    Changelog

    PS3 Support #10

    Users can now download PS3 pkgs:

    # this will search for GTA V for the PS3
    pynps -Gc ps3 'Grand Theft Auto V'
    

    There's no pkg2zip extraction going on for PS3 (therefore -eb, -cso and -zip flags will be ignored). Packages are saved as .pkg (inside the packages subfolder) and .rap (inside the exdata subfolder) when available. Everything related to this console is saved inside a PS3 directory located in your download's folder. For now downloading avatar files isn't supported by pynps, but it'll be implemented eventually.

    EBOOT.pbp identification #11

    In version 1.4.3 I started efforts to find a way make identification easier for eboot games. At that release I started scanning the eboot file for the game's name and making a .txt file in the same folder as the eboot with the found name, it also only worked for PSX games... well, I was dumb, I have all the information needed for any game available at hand since this data is inside the database already, so scanning the file for a name is just not necessary and specially not performance friendly. So it changed it in this release:

    In this version every bit of information is retrieved from the database, the .txt file inside the folder will be named using a pattern like this: Name (Region) [Tittle ID].txt. The file isn't empty anymore, instead I dump all the info for the pkg inside as json. This feature is also available for both PSP and PSX eboots.

    Here's an example: Crossroad Crisis (US) [NPUJ01342].txt Here's how it looks indide the folder: image

    Why not rename the folder instead of making a text file? Well, PSP/Adreanline don't handle well name modification in the eboot's folder, instead of creating more problems just putting a text file there so the user can check it in the console/PC is more reasonable. I'm open to ideas on better ways to solve this, tho.

    2b66757c3192d7d494458571b8af61609a127524

    BUG fixes

    • fixes a bug where PSP ISOs weren't being saved 46cfca1fd921c66b1c77d32698d05483926d86a3
    • migrate all links to https de364ce3ea9e6488e3e9770c767201d80114073c
    Source code(tar.gz)
    Source code(zip)
  • 1.5.0(Jun 1, 2020)

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Binaries won't be available until pyinstaller starts working on python 3.8, anyone interested can track it here

    Changelog

    Multisearch

    You can now do multisearch by joining multiple keywords together with +. An example

    # searching for Spyro, Crash Bandcoot and Harvest Moon games on psx
    pynps -cG psx "spyro+crash bandcoot+harvest moon"
    

    d5aab019afd529c8ab6dcc388ae9f5505e2b2d8b

    Sorting search results

    You're now able to sort the search output with a string by using the flag -s or --sort. Available options for sorting are: console or c, title_id or id, region or r, type or t, game_name or n, size or s. You can use multiple options with a comma, when doing so there's hierarchy and the more to the left the option is, the more priority it has in sorting items. When this flag is not used, pynps will default to "c,t,r,n" for sorting. Example:

    # the example below will sort the search by "type" and "size", "type" will take priority over "size"
    pynps --sort "t,s" -zip -r usa -c psx -c psv "crash"
    

    d5aab019afd529c8ab6dcc388ae9f5505e2b2d8b

    Extract PKG to a ZIP file #12

    Option to extract the pkg into a zip file, instead of a folder, this is good for people looking to download a bunch of games for preservation sake. When downloading multiple games, each game will be their own zip file. To use this option just call the flag -zip or --compress_zip like so:

    pynps -zip -c psx "Umi no Nushi Tsuri"
    

    PSA: zip files are stored inside a "ZIP" folder in your downloads, instead of "Extracted".

    9d7ce5e3aa4fd23d720664ef10996923fccfbcc6

    Source code(tar.gz)
    Source code(zip)
  • 1.4.3(May 31, 2020)

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Binaries won't be available until pyinstaller starts working on python 3.8, anyone interested can track it here

    Changelog

    • when downloading a PSX game, pynps will now create a .txt file inside the eboot folder with the game's name, making them easy to identify. This is done by reading the name from the .pbp file and is a straight copy of BertrandHustle's implementation in psx_scraper 8cdb9718ca36ef1e81307b93d62ad77fae4d4420
    Source code(tar.gz)
    Source code(zip)
  • 1.4.2(Apr 5, 2020)

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Changelog

    • fixes #7 0098e2f4705aebd37969d165273de24783652581

    binaries will be available once I get pyinstaller working again.

    Be safe and wash your hands! Let's fight COVID19 together.

    Source code(tar.gz)
    Source code(zip)
  • 1.4.1(Jan 10, 2020)

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Changelog

    • add --print/-p argument, with this argument pynps will print (encoded in unicode, to avoid issues with cmd and terminal with strange characters) any search you make and exit, it's ideal for people looking to redirect a search into a text file ba15ea7e494c27148d6c81433b7af35934530130
    #the following will search for all games in psvita and redirect the output to output.txt
    pynps -Gpc psv _all > output.txt
    
    # the following will search for all spyro games and dlcs in psp and redirect the output to spyro.txt
    pynps -GDpc psp spyro > spyro.txt
    
    # or you can just print the above without saving the output
    pynps -GDpc psp spyro
    

    A video on the new feature: asciicast binaries packed with pyinstaller

    Source code(tar.gz)
    Source code(zip)
    pynps-1.4.1-1.x86_64.linux(10.29 MB)
    pynps-1.4.1-1.x86_64.windows.zip(6.25 MB)
  • 1.4.0(Dec 16, 2019)

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Windows binary available

    There's now a 64bits Windows binary available for download, you'll neet to get a 64bits wget.exe from here or any other place you wish, you'll also need to grab the latest pkg2zip_64bit.zip from lusid1's releases. Here's what you'll need to do:

    Extract the windows .zip release to any folder you wish, open the extracted folder and drop wget.exe and pkg2zip.exe inside the pynps_config/lib/ subfolder! All you need now is run pynps.exe from CMD, you might also want add pynps.exe to your PATH so you can run it with "pynps" command, here's a good tutorial

    Easily stop and resume downloads!

    It's now possible to save a download session to be resumed latter using the -R/--resume argument, more info in this video (I'll also upload some videos for the README.md tutorials): asciicast The database file that keeps up with your downloads is inside /home/$USER/.config/pyNPS/database/downloads.db, in case something goes wrong you can delete it and always open an issue here on github!

    A change of flow...

    Before ths update pynps work would flow like this: Assuming you're downloading 1)sonic, 2)crash and 3)spyro: * Downloads 1 -> Checksum 1 -> Download 2 -> Checksum 2 -> Download 3 -> Checksum 3 -> Extract 1 -> Extract 2 -> Extract 3

    From this and future updates, due to changes realted to resuming downloads (and keeping up with what was downloaded or not), it now flows like this: * Downloads 1 -> Checksum 1 -> Extract 1 -> Downloads 2 -> Checksum 2 -> Extract 2 -> Downloads 3 -> Checksum 3 -> Extract 3

    Changelog

    • fixes phantom folders being created inside /home/$USER/.config/pyNPS/database/ ac01106e30e945c3ed9ad5ba01c5481851390de8
    • ignores cart-only games, since they can't be downloaded 99a4775ff0951794d4b710946bf7c064da683630
    • some typing errors d27fabdde816eb6f828b11d034a0e7543ad88b67
    • resume download implementation 5f2625697d275d40252211c414a5270970afbebb
    • windows support 48a4c4e9d7c7dac88b6034cd171ade3ba415ec25 74f170b0b14d4e2552566f35a8ebb9892f077560
    • closes #4

    binaries packed with pyinstaller

    Source code(tar.gz)
    Source code(zip)
    pynps-1.4.0-1.x86_64.linux(7.77 MB)
    pynps-1.4.0-1.x86_64.windows.zip(6.25 MB)
  • 1.3.1(Dec 5, 2019)

  • 1.3.0(Dec 5, 2019)

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Changelog

    • add support for download speed limit, the new argument is -l or --limit_rate 67549cce52aab6e61d1153365bc59a4c4e3a4775
      # uses the same syntax as wget
      # the following command will limit the download speed at 50kbps
      # you can use m for mbps, g ofr gbps and t for tbps
      >pynps -c psv -G -l 50k sonic
      
    • pynps will now delete a successfully extracted .pkg, users can use the new argument -k or --keepkg if he/she is interested in keeping the .pkg file acddd29c053da7a98cd482202ec06bf82770d84a
    • makes pkg2zip not obligatory to run the program, extraction and .pkg deletion will be skipped in this case 09313a88801aecf889cb873da0258c5ad9d941b5

    binary packed with pyinstaller

    Source code(tar.gz)
    Source code(zip)
    pynps-1.3.0-1.x86_64.linux(8.99 MB)
  • 1.2.1(Dec 5, 2019)

    Bugfix release

    Pypi release is updated. Upgrade with pip using:

    pip install pynps --upgrade

    Changelog

    • fixes bug were the lib folder would be created at /home/$USER/.config/pyNPSlib instead of /home/$USER/.config/pyNPS/lib b5607a093802585c4bb2a6dcdc65a9b7f1f1ab7e
      • Make sure to remove /home/$USER/.config/pyNPSlib in case you were affected.
    • adds a workaround for a current bug in prompt toolkit were some symbols like "&" would break the HTML implementation for colors 6f6b9197d03cc42ce02e4939f6863ba4bd0dd0a9
    • prevent app from runing without a database file c6681bec51b33c5b909eef8d66425b90556bc6e8
    • gracefully exit with control+c when wget is downloading, explain to the user about paused download

    binary packed with pyinstaller

    Source code(tar.gz)
    Source code(zip)
    pynps-1.2.1-1.x86_64.linux(7.73 MB)
  • 1.2.0(Dec 3, 2019)

    Atention

    Distro specific releases deprecated

    I won't be doing distro specific releases anymore (aka no .rpm and .pacman packages anymore), but pynps will still be distributed as binary here and it's now available at pypi, therefore it can also be installed with pip:

    pip install pynps

    New database system

    Starting with this release pynps will use SqliteDict for all its database operations.

    Strides were made in improving database performance in this release, with some drawbacks:

    TL;DR: search is now way faster, updating database is now slower.

    • Cons
      • updating database 6x slower: updating the entire database will take ~172 seconds versus ~30 seconds in last release.
    • Pros
      • reading from the database is 17x faster: reading the entire database will take ~0.3 seconds versus ~4.9 seconds in last release;
      • reading and printing the database is 8x faster: reading the entire database will take ~8 seconds versus ~60 seconds in last release;

    The entire database now resides in a single file inside /home/$USER/.config/pyNPS/database/pynps.db

    Optional manual intervention needed

    The user should delete every folder inside /home/$USER/.config/pyNPS/database/, since the .tsv files there are deprecated.

    Changelog

    Note: the README.md got updated to document the new features.

    • new arguments
    --games   could be called with  -dg, now you can also use -G
    --dlcs    could be called with  -dd, now you can also use -D
    --themes  could be called with  -dt, now you can also use -T
    --updates could be called with  -du, now you can also use -U
    --demos   could be called with -dde, now you can also use -E
    
    # Now the user can more easily do searches like this (more info on README.md):
    # this searches for sonic games and demos in the psvita database
    >pynps -GEc psv sonic
    
    • add support for multiple region inputs e41058b7573f83dde10593d73925225052393769
    # the following command was how the app worked before this update, this still applies for this new version
    # this will search for sonic in the psvita american database
    >pynps -c psv -r usa sonic 
    
    # this is new, the --region/-r argument can be called multiple times
    # this will search for sonic in the psvita american and japanese database
    >pynps -c psv -r usa -r jap sonic  
    
    • add support for selective database updating 558dd14104629ab035d0060c3fb8ec15892fd359 2919e10b8c85d550a13c38a66930f7fe14748bb8
    # the following command was how the app worked before this update, this still applies for this new version
    # this will update the entire database, for every system
    >pynps -u
    
    # this is kinda new, before you could update a single system at a time
    # this will update the entire database, for psp and psv
    >pynps -u -c psp -c psv
    
    # this is new
    # this will update only the game and dlc database for psvita
    >pynps -u -c psv -G -T
    Or:
    >pynps -GTuc psv
    
    • implements SqliteDict c80e39002d9aca973dc291511146462d5432dbe3 to 558dd14104629ab035d0060c3fb8ec15892fd359
    • remove support for search after updating database for security reasons 47acbabd03388a1162e8456f0872ebd024005328

    binary packed with pyinstaller

    Source code(tar.gz)
    Source code(zip)
    pynps-1.2.0-1.x86_64.linux(7.85 MB)
  • 1.1.0(Nov 29, 2019)

    Nopaystation beta ended, this update fixes the migration, but their https certification is currently broken, therefore pyNPS is using http until the Nopaystation team fixes the issue.

    For users coming from version 1.0.0

    If you're getting the following error when trying to updated your database:

    FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpo5vjiom_/PSV_GAMES.tsv'
    

    Make sure to fix your links at /home/$USER/.config/pyNPS/settings.ini, they'll neet to look like this:

    [PSV_Links]
    games = http://nopaystation.com/tsv/PSV_GAMES.tsv
    dlcs = http://nopaystation.com/tsv/PSV_DLCS.tsv
    themes = http://nopaystation.com/tsv/PSV_THEMES.tsv
    updates = http://nopaystation.com/tsv/PSV_UPDATES.tsv
    demos = http://nopaystation.com/tsv/PSV_DEMOS.tsv
    
    [PSP_Links]
    games = http://nopaystation.com/tsv/PSP_GAMES.tsv
    dlcs = http://nopaystation.com/tsv/PSP_DLCS.tsv
    themes = http://nopaystation.com/tsv/PSP_THEMES.tsv
    updates = http://nopaystation.com/tsv/PSP_UPDATES.tsv
    
    [PSX_Links]
    games = http://nopaystation.com/tsv/PSX_GAMES.tsv
    
    [PSM_Links]
    games = http://nopaystation.com/tsv/PSM_GAMES.tsv
    
    

    Changelog

    • adds dynamic print, this means output line will adapt and fill your terminal line nicely :) 2c9bd7a4856ab7e0f031a5272bb64322b8c98310
    • adds support for international (int) region, this region is used for sony's apps 1cfc257e2cc13d1fb767d3856a5ed4e09177e0bd
    • adds setup.py 590acef72033e6cba818e2795065a6918395a897
    • reworket how wget and pkg2zip is detected in the system 5340cc7576aa03bd08110e859cd4c146778380a8
    • migration from beta.nopaystation.com to nopaystation.com 2f7d1d7ce42910fbdd09dcb44b53cad3973bc5d1
    • cleaned a bunch of code c2515076fb086abf5a7aa72f6d5f624076c19384

    binary packed with pyinstaller

    Source code(tar.gz)
    Source code(zip)
    pynps-1.1.0-1.noarch.rpm(41.71 KB)
    pynps-1.1.0-1.x86_64.linux(7.17 MB)
    pynps-bin-1.1.0-1-x86_64.pkg.tar.xz(7.09 MB)
  • 1.0.0(Nov 23, 2019)

    This is the first stable release, there's basically no changes from the last one, so there's no changelog. The main purpose of this release is to fix my tag/release numbers to a better format and changing the repository name to remove capitalization. This is being done in order to make the multiple builds I'm planing to release less messy to make :)

    From now on the release pattern will be: A.B.C-D, where:

    • A number will go up with a major update lands or B runs out;
    • B number will go up with normal features updates, or when C runs out;
    • C number will go up with bugfixes;
    • D is the version of package, has no relation with the app version itself.
    Source code(tar.gz)
    Source code(zip)
    pynps-1.0.0-1.noarch.rpm(41.52 KB)
    pynps-1.0.0-1.x86_64.linux(7.17 MB)
    pynps-bin-1.0.0-1-x86_64.pkg.tar.xz(7.09 MB)
  • v0.6(Nov 23, 2019)

    Changelog

    • show the exact extracting location when possible 53d4186dafd579cceb931d9f00c84f3c5624021f
    • fix zrif being printed for debug introduced on last release 7d15c24c5327988ad9d983ab0671a7b478998172
    • print --help when no search is provided 1477df6afbd9ac19237b36c2bf9db9b6fd50e579

    binary packed with pyinstaller binary checksum: 1e98f10801bd84c5908643b791d9d0f78e20199f8c841ba7c5e66b73ef9e210d

    Source code(tar.gz)
    Source code(zip)
    pynps-v0.6-linux-x86_64(6.99 MB)
  • v0.5(Nov 21, 2019)

    Changelog

    • rewrite how the app handles the --console/-c, some examples below 01e88dff5588f49b3420ffcbecdee2aab931517e
    # the following command was how the app worked before this update, this still applies for this new version
    # this will search for sonic in the psvita database
    >pynps -c psv sonic 
    
    # this is new, the --console/-c argument can be called multiple times
    # this will search for sonic in the psvita and psp database
    >pynps -c psv -c psp sonic 
    
    # this is also new, now the user can just omit the --console/-c argument
    # this will search for sonic in all console's databases
    >pynps sonic 
    
    # the example above can also be archieved by calling every console with the --console/-c argument
    # this will also search for sonic in all console's databases
    >pynps -c psv -c psp -c psx -c psm sonic 
    
    • add support for unpacking psp games as EBOOT.PBP 7ffa2cf293df6edaf1efdb63cf56ff9fd8308d8d f0851306b6f7ec5e7b32107c6de3509a4e91d98c
    • fixes error were psvita games without zrif would not extract f0851306b6f7ec5e7b32107c6de3509a4e91d98c
    • add more colors
    • add new argument --version to output the current version being run

    binary packed with pyinstaller binary checksum: d3d8ca7c93ed8298443e80a69c478bcee4924fa04a64eaf0a0738a3f407ad4d7

    Source code(tar.gz)
    Source code(zip)
    pynps-v0.5-linux-x86_64(6.98 MB)
  • v0.4(Nov 14, 2019)

  • v0.3(Nov 14, 2019)

    Attention

    New users can ignore this warning!

    The user coming from any past version will need to update the configuration file to add links related to the PSM system, the easiest way of doing this is by removing the old settings.ini (located at ~/.config/pyNPS/settings.ini) and runing pyNPS again to recreate settings.ini.

    Some users may want to do it manually for some reason, all you'll need to do is go to your settings.ini (located at ~/.config/pyNPS/settings.ini) and add the following section anywhere (respecting other sections of course):

    [PSM_Links]
    games = https://beta.nopaystation.com/tsv/PSM_GAMES.tsv
    

    Changelog

    • add support for PSM games efa1335253e61c31c543ddc9c128719fb53fa289
    • add support for packing PSP games as .cso files with multiple levels of compression available ( requested by #1 ) ec9f15ce2de2db074575283ca3151b826c5fb486
    • fixes script ignoring user selection to not download selected content 0ff8301cf3acecc706a05b274c4edfdb073b9007
    • use a less verbose method to call wget 80dbebd74693b0e2e2aee1abb29d1c4447f6288b
    • gracefully exit with control+c when this option is presented to users (on inputs) 0ff8301cf3acecc706a05b274c4edfdb073b9007
    • removes mandatory order for information in the settings.ini file 1f607b97f8b26f5e082f00813047e90c744e85cd
    • some bugfixes, full changelog can be found in the commits

    binary packed with pyinstaller binary checksum: 992a9a5b7ac2c175609eabc18c7b027411cf849f3117d2870eaa4c06d6a16b8c

    Source code(tar.gz)
    Source code(zip)
    pynps-v0.3-linux-x86_64(6.99 MB)
  • v0.2(Nov 13, 2019)

    Changelog

    • started using python prompt toolkit for print and input
    • added some color and cleaned some of the output
    • removed output parsing for wget, since it was only working for English speaking users
    • fixed bug were wget would leave a bunch of logfiles everywhere
    • fixed exit error
    • full changelog can be checked at commits

    binary packed with pyinstaller binary checksum: 59de15055f6a155eae4ac5fadeda4af552e25bb3196aa38894b1b9bfa8e6cfb0

    Source code(tar.gz)
    Source code(zip)
    pynps-v0.2-linux-x86_64(6.98 MB)
  • v0.1(Nov 7, 2019)

Owner
Everton Correia
Everton Correia
A terminal utility to sort image files based on their characteristics.

About A terminal utility to sort image files based on their characteristics. Motivation This program was developed after I've realized that I had too

José Ferreira 1 Dec 10, 2022
Bad Apple printed out on the console with Python!

Bad Apple printed out on the console with Python!

CalvinLoke 186 Dec 01, 2022
Apple Silicon 'top' CLI

asitop pip install asitop What A nvtop/htop style/inspired command line tool for Apple Silicon (aka M1) Macs. Note that it requires sudo to run due to

Timothy Liu 1.2k Dec 31, 2022
電通大のCLIツールです

uecli 電通大のCLIツールです。コマンドラインからシラバス検索、成績参照、図書館の貸出リストなどを見ることができます インストール pip install uecli 使い方 シラバスを検索 uecli syllabus search -s 'コンピュータサイエンス' シラバスを取得し、Mar

UEC World Dominators 2 Oct 31, 2021
topalias - Linux alias generator from bash/zsh command history with statistics, written on Python.

topalias topalias - Linux alias generator from bash/zsh command history with statistics, written on Python. Features Generate short alias for popular

Sergey Chudakov 38 May 26, 2022
commandpack - A package of modules for working with commands, command packages, files with command packages.

commandpack Help the project financially: Donate: https://smartlegion.github.io/donate/ Yandex Money: https://yoomoney.ru/to/4100115206129186 PayPal:

4 Sep 04, 2021
A **CLI** folder organizer written in Python.

Fsorter Introduction A CLI folder organizer written in Python. Dependencies Before installing, install the following dependencies: Ubuntu/Debain Based

1 Nov 17, 2021
Wordle-solver - A tool that helps people who struggle with vocabulary to enjoy the famous game of WORDLE

Wordle-Solver Wordle-Solver helps people who struggle with vocabulary to enjoy t

Jason Chao 104 Dec 31, 2022
Python CLI utility and library for manipulating SQLite databases

sqlite-utils Python CLI utility and library for manipulating SQLite databases. Some feature highlights Pipe JSON (or CSV or TSV) directly into a new S

Simon Willison 1.1k Jan 04, 2023
Chat with Rem in Terminal!

Chat with Rem in Terminal!

bariscodefx 1 Dec 19, 2021
A super simple wallet application for the NANO cryptocurrency that runs in the terminal

Nano Terminal Wallet A super simple wallet application for the NANO cryptocurrency that runs in the terminal Written in 2021 by NinjaSnail1080 (Discor

9 Jul 22, 2022
🌈 Generate color palettes based on Neovim colorschemes.

Iris Iris is a Neovim plugin that generates a normalized color palette based on your colorscheme. It is named for the goddess Iris of Greek mythology,

N. G. Scheurich 45 Jul 28, 2022
A lightweight terminal-based password manager coded with Python using SQLCipher for SQLite database encryption.

password-manager A lightweight terminal-based password manager coded with Python using SQLCipher for SQLite database encryption. Screenshot Pre-requis

Leonardo de Araujo 15 Oct 15, 2022
A Yahtzee-solving python package and command line tool.

yahtzee A Yahtzee-solving python package and command line tool. The algorithm is mathematically guaranteed to have the best strategy. That is, it maxi

David Merrell 0 Aug 19, 2022
A python script that enables a raspberry pi sd card through the CLI and automates the process of configuring network details and ssh.

This project is one script (wpa_helper.py) written in python that will allow for the user to automate the proccess of setting up a new boot disk and configuring ssh and network settings for the pi

Theo Kirby 6 Jun 24, 2021
argofloats: Simple CLI for ArgoVis and Argofloats

argofloats: Simple CLI for ArgoVis and Argofloats Argo is an international program that collects information from inside the ocean using a fleet of ro

Samapriya Roy 2 Feb 13, 2022
A selfbot made with DPY, doesn't have much commands but there's some useful commands to use.

Phantom Selfbot A selfbot made in DPY, made by Zenith. How to use Add your token in token = 'YOUR-MOMS-TOKEN-HERE' Change the prefix in prefix = If

[Ͼ⁴] Ƶephyr 2 Dec 02, 2021
A lightweight Python module and command-line tool for generating NATO APP-6(D) compliant military symbols from both ID codes and natural language names

Python military symbols This is a lightweight Python module, including a command-line script, to generate NATO APP-6(D) compliant military symbol icon

Nick Royer 5 Dec 27, 2022
🎮 An easy to use tool to change the mapping of your input device buttons.

Input Remapper Formerly Key Mapper An easy to use tool to change the mapping of your input device buttons. Supports mice, keyboards, gamepads, X11, Wa

Tobi 1.9k Jan 05, 2023
Low-Cost Open Source Ventilator or PAPR

Last updated 2020/04/19 Low-Cost Open-Source Ventilator-ish Device or PAPR NOTE: This is currently an independent project not affiliated with any comm

Johnny Lee 1.7k Dec 21, 2022