Tool Others F95Checker [WillyJL]

5.00 star(s) 21 Votes

Iron-Beagle

Newbie
Jul 13, 2017
63
112
Just came across this tool today. Great work!
However, my list doesn't seem to be sorting properly. I have it set to sort by "Last Updated" but the list definitely isn't being sorted by this. Not sure if I'm doing something wrong or it's a bug? Also, after I refresh, it seems to stick on "Downloading 1 image"
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
Found a bug where the checker doesn't give game update even though I know a game thread has been updated an hour ago and it's in the checker list

I don't know if it's because Windows sleep mode, checker background mode or checker BG refresh delay but a feature I'd like to have is Show last updated game appearing on a new window, similar to when I have an alert or a game has been updated, to counter that glitch
when in background mode it sends a standard system notification (usually a small flyout in bottom or top right of the screen). issue is that once it found the update it sends the notif, but next time it checks it has already found the update so no new notification or popup. probably the issue here is that it sent the notif while you were away. thanks for making me rrealize that, ill make sure that in the next update if there are some updates while in background mode, you will see them as a popup when you go back to gui mode.

if instead you are sure it did not send a notif, or maybe it doesnt see the update at all, well the tool only detects changes in the thread title (it assumes that, as per forum standards, the title contains a version number) so if the title was not changed it wont detect the update.
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
Just came across this tool today. Great work!
However, my list doesn't seem to be sorting properly. I have it set to sort by "Last Updated" but the list definitely isn't being sorted by this. Not sure if I'm doing something wrong or it's a bug? Also, after I refresh, it seems to stick on "Downloading 1 image"
Sorry I didn’t see your post yesterday for some reason...

the current versions is kinda stupid, it doesn’t know how to find the update time stamp. It instead uses the time stamp of when your tool became aware of the update. If you just installed the tool, they will all use the time you added the game as the update time stamp. They will start sorting properly with time as they update, or when I release 9.0 (might not be for a long while tho)

About the image it seems like it failed downloading it, or it’s taking a very long time... can you send me your “log.txt”?
 

Iron-Beagle

Newbie
Jul 13, 2017
63
112
can you send me your “log.txt”?
Attached. Single run, exited program after app sat at last image.
I figured the sort order might have been affected by exactly what you said. I suppose that my list will become more and more accurate as each item receives an update.
 
Last edited:

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
Attached. Single run, exited program after app sat at last image.
I figured the sort order might have been affected by exactly what you said. I suppose that my list will become more and more accurate as each item receives an update.
very peculiar... do you know what game it is failing on? (you should be able to tell because it will be the only one without an image, otherwise just send me your full config (%appdata%\f95checker\f95checker.json) in dm)
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
I'm gonna preface this by saying that THE REWRITE IS NOWHERE NEAR COMPLETE, as it stands right now it has a mostly complete interface, but it is not functional. Most buttons and options either don't work yet or are not present. And most importantly the tool does not check your games yet, it does not connect to F95Zone in any way. For now it is simply an interface that relies on the data from the previous version's config file. Since it is nowhere near a final state, the new database system is only implemented in RAM and does not save to disk yet, meaning that if you change stuff in the new interface it will be reset when you open it again.

With that out of the way, since the structure is mostly complete I am looking for feedback, mainly in the compatibility department. I have chosen that future releases will be split in 4 different packages: binaries for windows, linux and mac, and then a standalone python source. This means that mac and linux users will also be able to use F95Checker without installing all the python dependencies. Also I have switched freezing (kinda like compilation, but not really because python is not a compiled language) system from pyinstaller to cx_Freeze. I find that the latter is less bloated and tidier, but of course the switch means more testing is needed. I have tested what I can on my linux machines and the relative windows dual boots, but I need more feedback than that.

The first names that come to mind are of course @batblue for macos and @unroot for linux, but windows also needs some love and of course everyone else is welcome to try on whatever platform you prefer.

The binary artifacts are available (you might need to be logged into GitHub to view this page), but if I update stuff in the future you can just check in the Actions tab of the GitHub repo to see if there are newer successful builds. Also note that the artifacts here are zip files with another zip inside, because actions artifacts are a bit wonky so a nested zip is easier to manage.

The experience should be as straight forward as extracting and double clicking on the executable. If it is not please let me know all the issues you encounter and, if you found one, the solution. I want to make it right this time.

Also if you have feedback of any other kind, be it the interface or a feature or whatever else, do let me know!

Currently known issues:
- CPU usage can be quite high on Windows, this is not intended of course and I am looking into it


EDIT: fixed some library and image issues, latest builds are
EDIT: added the setting to fit images instead of fill, latest builds are
 
Last edited:
  • Like
Reactions: batblue

unroot

Member
Aug 14, 2019
106
65
Also if you have feedback of any other kind, be it the interface or a feature or whatever else, do let me know!
Just wanted to test it and as github doesn't show any packages on your link (i have no github account) i downloaded the dev branch as zip file.
As I tried to feed pip the requirements.txt it spat out i would need git for PyOpenGL (well, it asks nicely at least:
ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?). I have avoided installing this as i saw no use for it till now.
So I installed git and run pip again and it has done it's job.
as the setup.py called cx_Freeze (which you mentioned it's for the building of binaries) i tried to run python3 main.py and was slapped with the following:
You don't have permission to view the spoiler content. Log in or register now.
python3 --version
Python 3.9.2
EDIT: Error doesn't care if the F95CheckerV8.5 is running or not
 
Last edited:

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
Just wanted to test it and as github doesn't show any packages on your link (i have no github account) i downloaded the dev branch as zip file.
As I tried to feed pip the requirements.txt it spat out i would need git for PyOpenGL (well, it asks nicely at least:
ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?). I have avoided installing this as i saw no use for it till now.
So I installed git and run pip again and it has done it's job.
as the setup.py called cx_Freeze (which you mentioned it's for the building of binaries) i tried to run python3 main.py and was slapped with the following:
You don't have permission to view the spoiler content. Log in or register now.
python3 --version
Python 3.9.2
ah right, forgot to note another big change: python >= 3.10.0 is required if you want to run from source. this is also part of why i decided to setup the binaries...
 

unroot

Member
Aug 14, 2019
106
65
ah right, forgot to note another big change: python >= 3.10.0 is required if you want to run from source. this is also part of why i decided to setup the binaries...
ran my updates a few days ago, so python 3.10+ is most likely only in the next stable release (debian... stable but you can see mountains crumble between updates). in the next days i will try to set up a few VMs for testing such things (had not the best experience trying to install python from source so i will need to tried various things/distros)
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
ran my updates a few days ago, so python 3.10+ is most likely only in the next stable release (debian... stable but you can see mountains crumble between updates). in the next days i will try to set up a few VMs for testing such things (had not the best experience trying to install python from source so i will need to tried various things/distros)
thanks. also ill upload the binaries from github to another hosting so you can give those a shot maybe?

EDIT: just realized that if i make a prerelease it will build the same and it will be available without an account hmmm
 
Last edited:
Aug 5, 2017
141
152
Tested the linux artifact by unzipping and running F95Checker and get the following:
Code:
$ ./F95Checker 
Traceback (most recent call last):
  File "/home/runner/work/F95Checker/F95Checker/cx_Freeze/cx_Freeze/initscripts/__startup__.py", line 113, in run
  File "/home/runner/work/F95Checker/F95Checker/cx_Freeze/cx_Freeze/initscripts/Console.py", line 15, in run
  File "main.py", line 6, in <module>
  File "<string>", line 2
    import sys
    ^^^^^^
SyntaxError: invalid syntax
Traceback (most recent call last):
  File "/home/runner/work/F95Checker/F95Checker/cx_Freeze/cx_Freeze/initscripts/__startup__.py", line 113, in run
  File "/home/runner/work/F95Checker/F95Checker/cx_Freeze/cx_Freeze/initscripts/Console.py", line 15, in run
  File "main.py", line 6, in <module>
  File "<string>", line 2
    import sys
    ^^^^^^
SyntaxError: invalid syntax
Traceback (most recent call last):
  File "/home/runner/work/F95Checker/F95Checker/cx_Freeze/cx_Freeze/initscripts/__startup__.py", line 113, in run
  File "/home/runner/work/F95Checker/F95Checker/cx_Freeze/cx_Freeze/initscripts/Console.py", line 15, in run
  File "main.py", line 39, in <module>
  File "main.py", line 12, in main
  File "/home/runner/work/F95Checker/F95Checker/src/modules/globals.py", line 31, in <module>
  File "/home/runner/work/F95Checker/F95Checker/src/modules/gui.py", line 1, in <module>
  File "/opt/hostedtoolcache/Python/3.10.4/x64/lib/python3.10/site-packages/imgui/integrations/glfw.py", line 4, in <module>
  File "/opt/hostedtoolcache/Python/3.10.4/x64/lib/python3.10/site-packages/glfw/__init__.py", line 43, in <module>
ImportError: Failed to load GLFW3 shared library.
Checked with strace to make sure it's not picking up a local python3.10 install, and it's not.

Running from source (3dc5b302) does work.

Minor comments:
the refresh!/game image box is resized and it crops games with banner and portrait headers now, instead of just portrait. Default 3.0 ratio on grid view crops it a bit much as well, 4.0 is a lot closer to the previous version.
Within reason it's probably better to letterbox/mailbox the images instead of cropping.
Not sure how I feel about the instant image zoom on mouseover, but that's got a toggle so personal preference. The click-to-expand works well.
Setting corner radius to 0 (square corners) crashes when showing an image.

Code:
Traceback (most recent call last):
  File "/home/happy/src/f95dev/main.py", line 38, in <module>
    main()
  File "/home/happy/src/f95dev/main.py", line 32, in main
    globals.gui.main_loop()
  File "/home/happy/src/f95dev/modules/gui.py", line 219, in main_loop
    self.draw_sidebar()
  File "/home/happy/src/f95dev/modules/gui.py", line 1164, in draw_sidebar
    game.image.render(width, height, *game.image.crop_to_ratio(width / height), rounding=globals.settings.style_corner_radius)
  File "/home/happy/src/f95dev/modules/widgets.py", line 192, in render
    imgui.image(self.texture_id, width, height, *args, **kwargs)
  File "imgui/core.pyx", line 6366, in imgui.core.image
TypeError: image() got an unexpected keyword argument 'rounding'
Overall I really like the looks of it. I wasn't sure about the one-window-interface at first but I'm finding it's nicer to click outside the game information "window" to close it rather than alt-f4.
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
Setting corner radius to 0 (square corners) crashes when showing an image.
ah, yes. that makes sense. pushed a fix

Overall I really like the looks of it. I wasn't sure about the one-window-interface at first but I'm finding it's nicer to click outside the game information "window" to close it rather than alt-f4.
same here. it's very different but after getting used to it i feel like its better this way.

the refresh!/game image box is resized and it crops games with banner and portrait headers now, instead of just portrait. Default 3.0 ratio on grid view crops it a bit much as well, 4.0 is a lot closer to the previous version.
Within reason it's probably better to letterbox/mailbox the images instead of cropping.
im not sure i fully understand what you mean. the hover image does get cropped to the size of the refresh button, but thats the same as it was before: if the image is wider than the button then the sides will be cutoff, if the image it taller than the button then the top and bottom will be cutoff. same goes for the grid, except the ratio for the button is fixed while for grid you can change it. i chose 3.0 ratio for grid by default to get it relatively close to the latest updates section of the forum. not too sure what you mean by previous version, but 4.0 looks really thin to me... even 3.0 is imo, i personally use 2.4... not too sure what you mean by letterbox / mailbox...

Tested the linux artifact by unzipping and running F95Checker and get the following:
ok i get the problem. for some reason glfw spawns a second python to find the .so library file, but when compiled it cant do that cos python itself has -c while my script doesnt. i had fixed this by adding a -c argument to main.py, but i didnt know that eval() only accepts one statement, while exec() accepts multiple. fix was simply swapping the eval for exec. i uploaded the fix and a new artifact is building right now. ill update the original post with the new artifact link
 
Last edited:

Iron-Beagle

Newbie
Jul 13, 2017
63
112
very peculiar... do you know what game it is failing on? (you should be able to tell because it will be the only one without an image, otherwise just send me your full config (%appdata%\f95checker\f95checker.json) in dm)
DM with json has been sent. Thanks.
 
  • Like
Reactions: WillyJL
Aug 5, 2017
141
152
ah, yes. that makes sense. pushed a fix
Awesome! that was quick.
im not sure i fully understand what you mean. the hover image does get cropped to the size of the refresh button, but thats the same as it was before: if the image is wider than the button then the sides will be cutoff, if the image it taller than the button then the top and bottom will be cutoff. same goes for the grid, except the ratio for the button is fixed while for grid you can change it. i chose 3.0 ratio for grid by default to get it relatively close to the latest updates section of the forum. not too sure what you mean by previous version, but 4.0 looks really thin to me... even 3.0 is imo, i personally use 2.4... not too sure what you mean by letterbox / mailbox...
That's because I'm tired and it's letterbox/pillarbox and i said it wrong.

When TVs were still CRTs and you wanted to watch a movie there were two options: either it cropped the sides off, or it put black bars at the top & bottom of the screen. That's cropping vs. letterboxing the image. Pillarboxing is for old 4:3 content on widescreen TVs - the sides are black pillars.

By previous version I just meant the main branch, v8.5. The top button was a lot wider, so the games with banner-style top images fit in it nicely. Of course, the ones with square or portrait mode images still got cut of on the top and bottom.

I think fitting it in the provided space is the best option, even if that means there's some blank space. Here's an example:
on a 3.0 ratio mist has the top of the name cut off:
mist-cropped.png
Where other games are cut off on the sides:
once-cropped_000.png
No fixed ratio will work for every game, which is why I thought that scaling them to fit would work better. I'd much rather have a bit of extra empty space than cutoff images. Maybe you could make it a toggle and see how the two modes compare?

ok i get the problem. for some reason glfw spawns a second python to find the .so library file, but when compiled it cant do that cos python itself has -c while my script doesnt. i had fixed this by adding a -c argument to main.py, but i didnt know that eval() only accepts one statement, while exec() accepts multiple. fix was simply swapping the eval for exec. i uploaded the fix and a new artifact is building right now. ill update the original post with the new artifact link
Cool, I'll give it a shot next chance I get but it'll be the weekend I think.
 
  • Like
Reactions: WillyJL

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
Maybe you could make it a toggle
thats exactly what i was thinking, ill add a toggle for cropping / fitting images (applied everywhere in the tool). ill think of a better name of course and add a more detailed hover tooltip
 

batblue

Newbie
Sep 6, 2021
42
23
I have chosen that future releases will be split in 4 different packages: binaries for windows, linux and mac, and then a standalone python source. This means that mac and linux users will also be able to use F95Checker without installing all the python dependencies.
Great news! I'll give it a try on Mac.
 
  • Like
Reactions: WillyJL

batblue

Newbie
Sep 6, 2021
42
23
Unfortunately, it looks like there's an issue with the Mac package that might be hard to resolve. When I run it, I immediately get this error:

Code:
dyld[5773]: Library not loaded: /usr/local/opt/gettext/lib/libintl.8.dylib
  Referenced from: /Users/batblue/Desktop/F95Checker-d65a2c9-macOS/F95Checker
  Reason: tried: '/usr/local/opt/gettext/lib/libintl.8.dylib' (no such file), '/usr/local/lib/libintl.8.dylib' (no such file), '/usr/lib/libintl.8.dylib' (no such file)
zsh: abort      /Users/batblue/Desktop/F95Checker-d65a2c9-macOS/F95Checker
It's a problem in the setup-python action, they discuss it here: but there's not a great solution.

The problem is basically that if you don't have Homebrew (a sort of Mac package manager) installed, and Python and all its dependencies installed using Homebrew, then it won't be able to find the gettext libraries. That's going to be the case for most people, since Homebrew is really aimed at devs.

I'm not really familiar with Github actions, but if there's a way to copy the gettext libs into the package, and get the package directory in the DYLD_LIBRARY_PATH environment variable, that might fix it.

There's also a hassle that every .so library included in the package triggers a security warning and has to be approved manually, because the libraries aren't signed.

I wonder if a different packaging method that packages everything into a single .app would work better for Mac? That might fix both problems.

I'm working on running from source (hampered by the fact that I only have a casual knowledge of python), I'll report back.
 
5.00 star(s) 21 Votes