Tool Others F95Checker [WillyJL]

5.00 star(s) 21 Votes

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
You're OP shows a commandl ine using pip3 and requirements_linux.txt...
pip3 is only a formality, since on linux there are still some programs using python 2.x and so pip2 is for python 2 while pip3 is for python 3. on most recent distros just using pip will use pip3 but i specified it to be sure. on windows it should not make a difference anyway since python is not preinstalled.
i use requirements_linux.txt because you are looking in the linux install instructions. on windows you need requirements.txt. i did not write the windows python instructions because i felt that most windows users wont want to install python and if you want to do it then you probably can figure it out.
What I notice right of the bat is that the requirements.txt file has a pywin32 entry, but I installed Pyton 3.10 x64...
yes, pywin32 is the only difference between the files, and i feel like it is self explanatory why. the 32 is normal, windows has always been the same codebase, just expanded through the years so some old naming conventions remained. windows is often called win32 (no matter what bitness you are running), thats where it comes from. also for a bit of humor (though extremely true):
1635721352890.png
But even with the line commented out, I'm still getting a shitload of errors trying to install the requirements...

I've attached the output... maybe you know what I'm doing wrong?
youre not doing anything wrong, the install is simply failing. having a read in the log you can see that the issue is PyQt5. googling some of those errors i can see that often the fix is to update pip. you have the command to do that stated at the end of the log.
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
Hey WillyJL, any chance that you would add an ability to export the list as a CSV? I'd like to track the games that I port to Android and maybe take the export and post it into my discord.
export is coming, but in form of a link list. if you want some more advanced export you can always read from the config file and make a little script for yourself with very little coding knowledge needed
 

estrada777

Engaged Member
Modder
Donor
Mar 22, 2020
3,591
8,890
export is coming, but in form of a link list. if you want some more advanced export you can always read from the config file and make a little script for yourself with very little coding knowledge needed
What's a linked list going to look like as output?
 

unroot

Member
Aug 14, 2019
106
65
question: I decided to give installing python a go again, and I noticed something that I thought might explain why I got all those errors when trying to install the requirements, sadly not.. You're OP shows a commandline using pip3 and requirements_linux.txt...

Since I'm on Win10 I used requirements.txt the first time... also used PIP instead of PIP3... (not that this made a difference when I tried it with PIP3)
I didn't take a look inside before but I did this time.
What I notice right of the bat is that the requirements.txt file has a pywin32 entry, but I installed Pyton 3.10 x64...
OTOH, the requirements_linux.txt version has that line commented out...

But even with the line commented out, I'm still getting a shitload of errors trying to install the requirements...

I've attached the output... maybe you know what I'm doing wrong?

EDIT: Also tried this using the Python 32bit version using plain requirements.txt ... which even produced a shitload more errors... because apparently I then also need to have the "Microsoft C++ Build Tools" installed because " Microsoft Visual C++ 14.0 or greater" couldn't be found ... if that's the cause then I'm fucked.
as WillyJL already stated, pip3 is used to make sure Python3 is used if the user has a installed Python2 too.

requirements_linux.txt is, as the name indicates, for linux-based operating systems.

pywin32 is only the name of one of the used modules. usually pip is able to choose automatically which bit version is needed.
From Windows Vista onwards 64bit systems are more common, so only in rare cases a 32bit software is needed/used. 64bit systems can run 32bit software too as backward compatibility. It's advised to use the matching bit version to ensure best results.

your logfile shows three possible reasons:
1. it could be a overprotective anti virus that deletes the temporary file without notice. Back then I used to disable my AV during such installs to avoid that problem.
2. pip seems to try building the PyQt5-sip module on your machine with qmake as it seems there is no binary package for your machine available.
3. pip tells you in the last two lines it is not the newest version. before trying anything else you should update it to make sure if the easiest solution does fix it
 
Last edited:
  • Like
Reactions: WillyJL

FaceCrap

Active Member
Oct 1, 2020
885
619
also for a bit of humor (though extremely true):
Priceless :ROFLMAO:

youre not doing anything wrong, the install is simply failing. having a read in the log you can see that the issue is PyQt5. googling some of those errors i can see that often the fix is to update pip. you have the command to do that stated at the end of the log.

3. pip tells you in the last two lines it is not the newest version. before trying anything else you should update it to make sure if the easiest solution does fix it
Thanks both for the replies. I did try again after updating pip but alas... same errors occurred.

Reading the log there's two things that I see. The first error seems to be related to a module sipbuild.api
"AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel'"

The second error then occurs during handling of the above
"Could not find a version that satisfies the requirement PyQt5==5.15.2 (from versions: 5.14.0, 5.14.1, 5.14.2, 5.15.0, 5.15.1, 5.15.2, 5.15.3, 5.15.4, 5.15.5, 5.15.6)"

The last one I don't understand... the requested version number is listed in the parenthesized list so why can't it find it?

Googling the first error showed that installing PyQt5 seems to be a often occurring part of the issue.
And most posts mentioned python version numbers being one of the reasons...

And that indeed was the issue here, removed Python 3.10, installed Python 3.9.5 and BINGO! Requirements installed without a hitch...
The root cause was indeed the 'wheel' package, the output showed it was using legacy 'setup.py install' for clint and args instead because the 'wheel' package couldn't be found.

And DAYUM! Running F95Checker.py launches a gazillion times faster and without the elevation prompt (y):)
 
Last edited:
  • Like
Reactions: WillyJL

FaceCrap

Active Member
Oct 1, 2020
885
619
WillyJL

Running as a python script I'm getting this non-fatal error.
Code:
Task exception was never retrieved
future: <Task finished name='Task-625' coro=<download_game_image() done, defined at Y:\F95Checker\modules\api.py:594> exception=AttributeError("'NoneType' object has no attribute 'replace'")>
Traceback (most recent call last):
  File "Y:\F95Checker\modules\api.py", line 647, in download_game_image
    img_link = img_elem.get('data-src').replace("thumb/", "")
AttributeError: 'NoneType' object has no attribute 'replace'
Even though non-fatal I still wanted to get rid of it. Fairly simple fix though, inspired by the preceding test I inserted this before the replace line. Being a relative Python amateur I've no idea if this is the best solution but at least it got rid of the error...
Code:
    if not img_elem.get('data-src'):
        return
Not sure if it also needs the removal of the game_id line as in the preceding test though
 

unroot

Member
Aug 14, 2019
106
65
Code:
Task exception was never retrieved
future: <Task finished name='Task-625' coro=<download_game_image() done, defined at Y:\F95Checker\modules\api.py:594> exception=AttributeError("'NoneType' object has no attribute 'replace'")>
Traceback (most recent call last):
  File "Y:\F95Checker\modules\api.py", line 647, in download_game_image
    img_link = img_elem.get('data-src').replace("thumb/", "")
AttributeError: 'NoneType' object has no attribute 'replace'
Even though non-fatal I still wanted to get rid of it. Fairly simple fix though, inspired by the preceding test I inserted this before the replace line. Being a relative Python amateur I've no idea if this is the best solution but at least it got rid of the error...
Code:
    if not img_elem.get('data-src'):
        return
Not sure if it also needs the removal of the game_id line as in the preceding test though
I'm pretty sure it would make more sense to check if data-src is NoneType (or similar) as your idea would only work if data-src is empty/NULL (not a programmer here, just someone who fiddles with code a bit)
 

FaceCrap

Active Member
Oct 1, 2020
885
619
I'm pretty sure it would make more sense to check if data-src is NoneType (or similar) as your idea would only work if data-src is empty/NULL (not a programmer here, just someone who fiddles with code a bit)
Like I said :) I'm probably even more of a newb with Python than you. I figured the error occurred because there was no data-src attribute so that's why I tried it this way.
 

FaceCrap

Active Member
Oct 1, 2020
885
619
the bulk / mass import games that i have planned will work like that: it will open a big textbox where you can put one entry per line, and that could either be a simple game name or a thread link.
Been reading through the thread a bit, and saw this request for some form of mass import. Lord knows I wished that was an existing feature, since it took me a while to copy/paste all my bookmarks the first run. But I understand your reasoning not to want to mess with folders. Too many possible different structures/naming conventions....

But, I may have another suggestion... however it's based on the assumption that most of us will have bookmarked the games they play. And Bookmarks can be exported. Also, an exported bookmarks file seems to always have the same structure no matter which browser you're using.

Since it would be easy to filter on the url, it only might require some editing on the part of the user if it also contains bookmarks pointing to other than game threads on F95Zone. But that's the only downside I can think of at the moment.
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
Googling the first error showed that installing PyQt5 seems to be a often occurring part of the issue.
And most posts mentioned python version numbers being one of the reasons...

And that indeed was the issue here, removed Python 3.10, installed Python 3.9.5 and BINGO! Requirements installed without a hitch...
The root cause was indeed the 'wheel' package, the output showed it was using legacy 'setup.py install' for clint and args instead because the 'wheel' package couldn't be found.
right thats true i did see that too. also i use an older version of PyQt5 because some newer versions had issues with building into a smaller exe package, but for running from python source you should be ok using the latest version, so you could go back to python 3.10 and then just remove the ==5.12.2 from the requirements file (i cannot remove it from the github repo though because the build system uses that file directly).

but anyway you got it working and thats what matters, happy you managed to fix it
Running as a python script I'm getting this non-fatal error.
youre only seeing the error, but its not actually causing any problems. in the code i often use broad "except Exception:" that catch nearly all exceptions, and i handle them in the process. so that error is not causing problems, it is being handled by the try: except: block. the reason you are seeing it is because you are in debug mode. debug mode will print all errors evern when they get handled properly, and this mode is active when either you turn it on in the config, or you are running from source. basically in F95Checker.py there is a line with globals.version = "8.5 tester". if there is "tester" in that string then debug mode will be enabled, if it is simply "8.5" then it will be disabled. i made it this way so that if someone runs straight from the repo and gets some problems, they can send over the log and no errors will be omitted. and when i make a release, the build system automatically removes the "tester" string so that users on the release version dont get a clogged up log. hope this makes sense
Been reading through the thread a bit, and saw this request for some form of mass import. Lord knows I wished that was an existing feature, since it took me a while to copy/paste all my bookmarks the first run. But I understand your reasoning not to want to mess with folders. Too many possible different structures/naming conventions....

But, I may have another suggestion... however it's based on the assumption that most of us will have bookmarked the games they play. And Bookmarks can be exported. Also, an exported bookmarks file seems to always have the same structure no matter which browser you're using.

Since it would be easy to filter on the url, it only might require some editing on the part of the user if it also contains bookmarks pointing to other than game threads on F95Zone. But that's the only downside I can think of at the moment.
i have planned to add an import from f95zone bookmarks and watched threads, but yes the idea to import from browser bookmarks is also good.
 
  • Like
Reactions: FaceCrap

FaceCrap

Active Member
Oct 1, 2020
885
619
been playing with the code a bit... mostly sort related. Stumbled on an oddity I couldn't explain at first...
This only became apparent after applying my custom sort... the image shows it better than I can describe...
1635888789359.png

every odd row# has the icon after the "played" checkbox styled as 'enabled' ... I'm guessing it's related to the alternate row background color?
I'd noticed some of those icons showing as 'enabled' before but only after using my custom sort did I notice it was tied to the alternate row background color. Actually, it's not tied to the color itself, setting both to the same color, regardless of color, still lets it show as above.

On the subject of styling... I noticed there's a 'system theme' style? But even though my system is set to use the 'Dark' theme, setting the checkbox makes the UI appear as if the 'Light' theme is active?
 
Last edited:

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
844
On the subject of styling... I noticed there's a 'system theme' style? But even though my system is set to use the 'Dark' theme, setting the checkbox makes the UI appear as if the 'Light' theme is active?
that toggle simply disables most of the custom styling applied by the tool, leaving the theming up to the OS. you are using windows, it should not come as a surprise that theming is inconsistent when even native apps are a mix of 2020 windows 10 + 2015 metro ui + windows 7 + windows 98 styling. i am on linux and when i enable that toggle it does resemble my system theme
every odd row# has the icon after the "played" checkbox styled as 'enabled' ... sadly my python skills lack completely to pinpoint why...
The fact it's every 'odd' row# only became apparent after applying this sort, using the default sorts it still happens but the pattern isn't visible then.
not due to your code, its something with my styling. since even and odd rows have a different id, to be able to have a different background color, i had to copy paste the styling for the sub-elements contained in them. it appears that when i did the played checkbox i forgot to do it for one of those. it should be somewhere inside the big qt stylesheet blob (lines 595 to 984 of modules/gui.py), ill try to fix it in the next update
 
  • Like
Reactions: FaceCrap

FaceCrap

Active Member
Oct 1, 2020
885
619
it appears that when i did the played checkbox i forgot to do it for one of those. it should be somewhere inside the big qt stylesheet blob (lines 595 to 984 of modules/gui.py), ill try to fix it in the next update
This one? Line 741:
Code:
color: """+font_alt+"""
Removing that indeed fixed it...
 
5.00 star(s) 21 Votes