Tool Others F95Checker [WillyJL]

5.00 star(s) 21 Votes

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
845
Since the newest update (9.6) I can't search for games to add to my list. I get "NoneType object has no attribute find_all" same as user Tino D'Rans who replied on page 98.

Traceback (most recent call last):
File "D:\a\F95Checker\F95Checker\modules\gui.py", line 2364, in _search_and_add
File "D:\a\F95Checker\F95Checker\modules\api.py", line 194, in quick_search
AttributeError: 'NoneType' object has no attribute 'find_all'
already fixed, update will come soon. yo ucan use the beta for now if you want (read FAQ on how to do that)
 

wast3d

New Member
Jul 27, 2021
2
0
looks like a pretty old version judging by that error... update it manually
Literally redownloaded from Github, didn't help until I just deleted the appdata. Launched the app, got a prompt for an update saying I have v9.4. Odd. Anyhow, thank you!
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
845
Literally redownloaded from Github, didn't help until I just deleted the appdata. Launched the app, got a prompt for an update saying I have v9.4. Odd. Anyhow, thank you!
yeah, 9.4 sounds about right for the error you got, its literally impossible to get that error on later versions because i changed the relevant code. and the version numbers are hardcoded in the files, so either an update went wrong and only some files were swapped, or you followed an old github link (old versions are still available for download on github!). anwyay good to know you got it to work in the end
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
845
hey, I'm using the latest version of brave and when I drag the crx into brave://extensions/ with developer mode, it lets me do it but it stays disabled and doesn't let me enable it, is there any way to load it unpacked?
The toggle to enable the extension on Chrome is grayed out after you download it. It's downloaded but there is no way to enable it.
So basically it looks like packed crx files are accepted only from chrome web store on windows and macOS. God know why on Linux it’s fine. And god knows why google is so outrageously stupid. Updated build process and install instructions to use a zip file instead, which basically does the same as “load unpacked” but is easier for the user since it’s a single file, but now it requires developer mode. Also changed the extension version number to match the tool versions, and made a beta build. Update soon(tm)
 
  • Like
Reactions: LoopyLoot

FaceCrap

Active Member
Oct 1, 2020
885
619
WillyJL

I'm using OperaGX as default browser, but also tried Chrome to be sure it isn't just browser specific.

Downloaded build 861, and as instructed in ReadMe.md, I dropped the Chrome.zip file on the Extension page in developer mode.
The extension works as intended, but both Chrome and Opera GX showed an "Errors" button after the installation mentioning
Permission '*://*.f95zone.to/*' is unknown or URL pattern is malformed.
Nevertheless, the extensions does what it needs so it's more of a warning than a fatal error...

Come to think of it... I've never seen forum links start with anything other than just https://f95zone.to so don't know if these wildcards at the start are actually needed.

EDIT: Did some , seems that this now needs to be added as a separate entry, but after trying it still showed the same "Errors" button ‍:unsure: so I just gave up and ignored it since it doesn't seem to affect functionality
 
Last edited:

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
845
WillyJL

I'm using OperaGX as default browser, but also tried Chrome to be sure it isn't just browser specific.

Downloaded build 861, and as instructed in ReadMe.md, I dropped the Chrome.zip file on the Extension page in developer mode.
The extension works as intended, but both Chrome and Opera GX showed an "Errors" button after the installation mentioning
Permission '*://*.f95zone.to/*' is unknown or URL pattern is malformed.
Nevertheless, the extensions does what it needs so it's more of a warning than a fatal error...
Ok so I’ll give some technical background on that. So each extension has a manifest with information about it. By default you have very little freedom, and with good reason. If you want to access protected data or be able to show something to the user, then you need to ask permission for it in the manifest so that the browser can tell you when you install the extension. One of those permissions is webNavigation, which provides information on the loading status of webpages. I need it so that when a page finishes loading I can inject a small script that scans for game links and add the icons for the ones in your library. Problem is that such a permission is understandably quite broad and could invade privacy, in fact it didn’t even work at all at first, so I searched and found a code snippet that had the “permissions” list with all the permission names, but put the url pattern for webNavigation as another permission, in the same list. Like “permissions”: [“action”, “contextMenus”, “webNavigation”, “*://*.*/*”]. So I did that too and it worked, so my best guess is that when it finds a “webNavigation” permission request, it interprets the next permission as the scope for the webNavigation permission. Very stupid way of doing it, but hey it works so I’m not complaining. Thing is I use Firefox and just do quick tests on chrome to make sure everything works, but to be fair chrome does use different manifest versions, that’s like the whole problem with chrome recently, they’re pushing manifest3 and blocking manifest2, but 3 is much more restricted than 2 and devs hate it, while Firefox only supports 2 and everyone is happy (that’s also why there are separate extensions for chrome and Firefox, would be a single one if not for fucking google). But yeah my best guess is that manifest3 changed how the scope of webNavigation is indicated, but somehow allows not indicating one (since it just interpreted the url pattern as another permission)? As you said it’s more of a warning, but better if I fix it so the extension doesn’t have access to other websites
 

GAB

Salty Montrealer
Donor
May 10, 2017
2,360
17,782
Ive written a few automation scripts using AutoHotKey and ran into this issue multiple times.

Sometimes you need to focus/activate a window first before sendmouseclick

Sometimes you need to split the sendmouseclick into 3 steps.
sendmouseclick click down, wait 50ms (i met a program where this only works if the wait is a randomized number!), then send click up.

Sometimes you need to sendmouseclick to a specific child control/widget instead of the main window

Sometimes you need to do all of those together :ROFLMAO:

And sometimes programs that dont use WinUI refuse to acknowledge sendmouseclick. so you would have to do a mousemove then mouseclick, which will move your actual mouse cursor. no virtual click trickery. its sucks but for these cases theres nothing you can do regarding sendmouseclick.

What you can "try" is to send a "space" or "enter" to that control/widget aswell



welcome to the world of windows automation :D
ffs I spent way too long and found no solution. But I will tell you this tho. So, unless WillyJL does a UI rework, If you can find a powershell solution to my problem, I will give you real money (probly paypal since I'm guessing you don't have an account at a )

Like I said, I tried :

Code:
Function Move-Mouse {

`    Param (
        [int]$X, [int]$y

    )

Process {

        Add-Type -AssemblyName System.Windows.Forms
        $screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
        $screen | Get-Member -MemberType Property
        $screen.Width = $X
        $screen.Height = $y
        [Windows.Forms.Cursor]::Position = "$($screen.Width),$($screen.Height)"


    }
}
Function Click-mouse {

Process {

        $SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
        $SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);

        }

}

$Mouse=@'
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$SendMouseClick = Add-Type -memberDefinition $Mouse -name "Win32MouseEventNew" -namespace Win32Functions -passThru

$dummyshell.AppActivate('F95Checker')
Move-Mouse -x 423 -y 80
sleep 1

Click-mouse

Code:
#mouse click environment
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$signature=@'
[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru

$dummyshell.AppActivate('F95Checker') ;sleep 1

#get the mouse position
    $X = [System.Windows.Forms.Cursor]::Position.X
    $Y = [System.Windows.Forms.Cursor]::Position.Y
    Write-Output "X: $X | Y: $Y"

#mouse position example
    $x = 86
    $y = 172

[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)
sleep -Seconds 01
#left click down
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
#left click up
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);

#double click
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);

Code:
$dummyshell = New-Object -ComObject wscript.shell
Add-Type -MemberDefinition '[DllImport("user32.dll")] public static extern void mouse_event(int flags, int dx, int dy, int cButtons, int info);' -Name U32 -Namespace W;

$dummyshell.AppActivate('F95Checker')
[Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point(1200,300)
Start-Sleep 0.7
[W.U32]::mouse_event(6,0,0,0,0)
sleep 1
You mentioned using but I doubt you can do the opposite?

ok i'm dumb and figured it out
The entire plan is to:
  1. open F95checker
  2. click on a game thread (not a collection thread)
  3. open the page
  4. copy the Download link (bonus if it's donor link)
  5. paste it in Jdownloader
 
Last edited:

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
845
ffs I spent way too long and found no solution. But I will tell you this tho. So, unless WillyJL does a UI rework, If you can find a powershell solution to my problem, I will give you real money (probly paypal since I'm guessing you don't have an account at a )

Like I said, I tried :

Code:
Function Move-Mouse {

`    Param (
        [int]$X, [int]$y

    )

Process {

        Add-Type -AssemblyName System.Windows.Forms
        $screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
        $screen | Get-Member -MemberType Property
        $screen.Width = $X
        $screen.Height = $y
        [Windows.Forms.Cursor]::Position = "$($screen.Width),$($screen.Height)"


    }
}
Function Click-mouse {

Process {

        $SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
        $SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);

        }

}

$Mouse=@'
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$SendMouseClick = Add-Type -memberDefinition $Mouse -name "Win32MouseEventNew" -namespace Win32Functions -passThru

$dummyshell.AppActivate('F95Checker')
Move-Mouse -x 423 -y 80
sleep 1

Click-mouse

Code:
#mouse click environment
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$signature=@'
[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru

$dummyshell.AppActivate('F95Checker') ;sleep 1

#get the mouse position
    $X = [System.Windows.Forms.Cursor]::Position.X
    $Y = [System.Windows.Forms.Cursor]::Position.Y
    Write-Output "X: $X | Y: $Y"

#mouse position example
    $x = 86
    $y = 172

[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)
sleep -Seconds 01
#left click down
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
#left click up
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);

#double click
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);

Code:
$dummyshell = New-Object -ComObject wscript.shell
Add-Type -MemberDefinition '[DllImport("user32.dll")] public static extern void mouse_event(int flags, int dx, int dy, int cButtons, int info);' -Name U32 -Namespace W;

$dummyshell.AppActivate('F95Checker')
[Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point(1200,300)
Start-Sleep 0.7
[W.U32]::mouse_event(6,0,0,0,0)
sleep 1

You mentioned using but I doubt you can do the opposite?
everything here does either an instant click, or mouse down and mouse up, but again instantly. youre never waiting between mouse down and mouse up. some apps might recognize an instant click, but others might not since it is physically impossible to click the mouse for no time at all. as i said before, try waiting between down and up. but as i said before, this is just a hunch, cant guarantee it will fix anything.and as ascsd said, a lot of apps can be very fiddly with inputs, because they are designed around a human using them, not a script, so youll have to play around with it more
 

GrammerCop

Well-Known Member
Donor
Mar 15, 2020
1,740
1,720
everything here does either an instant click, or mouse down and mouse up, but again instantly. youre never waiting between mouse down and mouse up. some apps might recognize an instant click, but others might not since it is physically impossible to click the mouse for no time at all. as i said before, try waiting between down and up. but as i said before, this is just a hunch, cant guarantee it will fix anything.and as ascsd said, a lot of apps can be very fiddly with inputs, because they are designed around a human using them, not a script, so youll have to play around with it more
I don't know if this is applicable, but one of the things I fixed in my VB app was to add a DoEvents() command. Maybe there is something similar that will work for you guys.
 

GAB

Salty Montrealer
Donor
May 10, 2017
2,360
17,782
Feature Request: Keyboard shortcut for the main buttons
1670661079067.png

Also having some trouble updating to 9.6.1 where the blue powershell screen doesn't disappear after a few mins (no screenshot, don't think it's needed)

Speaking of updating, how do I update if I accidentally pressed the close button when it's prompting me whether I update or not?

update:
hey WillyJL
remember that software breaking bug where deleting some of the date format would make the app fail?
it kinda happened again but this time I put the interface - grid to 1 and now I'm stuck with this message
1670667667839.png
 
Last edited:
  • Like
Reactions: forgetmaster

Dukez

Member
Dec 19, 2020
403
1,512
So new bug, might've existed in 9.6.0 before program updated to 9.6.1 and related to this update process but it removed a game from my list.

Game in question was 'The Roots of Lust'. Pretty much I opened the program, checked for updates > it found an update for this game > I go next > shows me I have notifications on site > I go next > program says there's an update > i do update > program reopens after > game that got an update isn't on list anymore.

I almost feel like this happened to one or two other games prior to this but I just never paid attention to it at the time but I could just be imagining that.
 

rozzic

New Member
Feb 19, 2018
7
2
So i made a grid change and now get this, tried a manual update but cant get around it, any fix?

Amazing work with this btw, honestly! :)
 

WillyJL

Well-Known Member
Respected User
Mar 7, 2019
1,062
845
So i made a grid change and now get this, tried a manual update but cant get around it, any fix?

Amazing work with this btw, honestly! :)
I can see why this error would come up, small logic problem on my end. I’m guessing you changed the grid columns to 1, and that caused some logic issues. Will fix asap. Also thanks for the dono <3
 
  • Red Heart
Reactions: rozzic
5.00 star(s) 21 Votes