Tool Others F95Checker [WillyJL]

5.00 star(s) 27 Votes

KaosKally

Member
Dec 21, 2019
336
364
the second part of this is now live, from now on last updated dates are based on when the cache api sees the version number change, nothing more nothing less. for games never cached before it will use what the thread says or latest updates say, depending on which is more recent, and from then on it will only and always change the last updated date when the version number changes to the day that the change is detected
So it will have multiple sources from where it can take the most recent date, at least until it gets cached and if i understand it right, even if is cached, if it detects a newer date, it will get that, ignoring cache?
 

WillyJL

Veni, vidi, vici
Donor
Respected User
Mar 7, 2019
1,524
1,348
So it will have multiple sources from where it can take the most recent date, at least until it gets cached and if i understand it right, even if is cached, if it detects a newer date, it will get that, ignoring cache?
it has multiple sources for games that were never cached. when i say cache expires, i dont mean it gets deleted. cache expiring means that next time someone wants to check that game, it will fetch new information from f95zone. but the information from before invalidating the cache remains, so it can compare. so this "multiple sources" is only for the first time that a game has ever been added to any user's library. as soon as one person refreshes this game, it will check these 2 sources from f95zone and use the most recent one as the last updated date. this is a one time occurrance for that game until the heat death of the universe. after that one occurrance, it will not look ever again at f95zone for the last updated date of that particular game. it will only change the last update date for that game when the version number for it changes.

- game added, use either thread last updated date or latest updates last promotion date
- cache expires, information is fetched again, version is the same, last updated date remains the same no matter what the forum says the last updated date is
- repeat this for every time the cache expires without the version changing, even if the last updated date on f95zone changes because someone makes a typo or whatever else, it does not change on f95checker
- finally, a new version is released, cache expires, the cache api fetches the new data and notices that the version number change, ding! the last updated date is set to today, the forum is never consulted for the last updated date
- repeat...

only the version changing is used to set the last updated date, the forum is demonstrably unreliable with this kind of date and everyone here has complained too much about it. but obviously, if the game was never cached before, the cache api cannot know when it had changed the last time, so just for the first ever refresh it uses the date from f95zone. after that, never again for that game. its not a difficult concept.
 
Last edited:
  • Like
Reactions: KaosKally

KaosKally

Member
Dec 21, 2019
336
364
it has multiple sources for games that were never cached. when i say cache expires, i dont mean it gets deleted. cache expiring means that next time someone wants to check that game, it will fetch new information from f95zone. but the information from before invalidating the cache remains, so it can compare. so this "multiple sources" is only for the first time that a game has ever been added to any user's library. as soon as one person refreshes this game, it will check these 2 sources from f95zone and use the most recent one as the last updated date. this is a one time occurrance for that game until the heat death of the universe. after that one occurrance, it will not look ever again at f95zone for the last updated date of that particular game. it will only change the last update date for that game when the version number for it changes.
Ah got it, makes sense and is actually quite easy to understand and in theory a lot more reliable then it was. Practice should be as well but until it can be tested, have no idea. Thanks for the explanation as well.
 
  • Like
Reactions: WillyJL

WillyJL

Veni, vidi, vici
Donor
Respected User
Mar 7, 2019
1,524
1,348
also gonna share the news here: im rewriting F95Checker in C.

python just isnt cutting it anymore, its a great language for getting things going quickly but it doesnt scale, uses too much cpu and ram for what this tool does, and also has a lot of ongoing problems due to lower level libraries like imgui and glfw and opengl that while they work they arent updated often and dont give me much control over what i want the code to do.
rewriting in C will make everything much more efficient, lightweight, and bring new features to libraries like imgui that i use to make the tool work which could mean more and better features in the tool; it should probably also end up being more stable, as some of the stability issues thus far were due to how the lower level libraries with python arent really isolated and conflict in weird ways, while now ill have full control over what the code does.

the rewrite will go slowly, it is a massive task but i feel it is a needed one, i expect this to take several months to complete and i wont be rushing it. until feature parity with the latest beta builds / release is reached, this rewrite will be a separate feat/c-rewrite branch and i will continue maintaining the current python build until it is time to switch over; there are also some open PRs such as the new filtering system, i plan to reimplement those in C myself rather than reviewing the code and merging as is into the python build, this also means the old clunky filtering system will not be in the new C rewrite, only the new text based filtering from the open PR (behaves similar to github, where you type the filters you want eg "tag:2dcg" and can join them with logical operators and group them, i will probably add some way to select the filters graphically with a system like the current one but it will just insert that filter as text into main filter textbox).

for now i am still getting the infrastucture setup, there isnt much to see yet. also i will focus on getting everything working on linux first as thats where i develop, later will sort any issues compiling on windows and macos so for now dont even try on those OSs. for those interested, im using cmake and gcc (will likely use clang for windows), and the library stack is imgui+sdl3+glad+opengl3 for gui, curl for web requests, same sqlite3 for database, m*lib for dynamic data types, cwalk for path manipulation, still not sure what ill use for integrated browser. so far, it can be built almost fully statically (except for linux ld and vdso and libc, those cant really be done statically), this means that once ready it should be possible to just have a single F95Checker executable with no .dll or .so files around, though the integrated browser might be the one exception to that.
 
Last edited:

WillyJL

Veni, vidi, vici
Donor
Respected User
Mar 7, 2019
1,524
1,348
I hope you will include the ability to sort the labels.
i didnt really mention it well, my intention is to rewrite it in C while keeping most of it how it is now, it works well how it is now so its not gonna be a new ui/system or anything like that, in most cases you wont even be able to tell that it was rewritten and youll be able to keep using it just how it is now. and once it is rewritten, ill get back to the features i wanted to add, which sorting labels was on the todo list for a while; i wouldve done it on the python version eventually, instead ill do it on the C version eventually when its ready
 

pheno

Member
Aug 4, 2017
175
265
I've been on this site for years now and I'm just NOW seeing this lmao looks like a game changer but I see you're releasing a new version in C so I can wait patiently for that to be release. Thank you for all your work!
 
Mar 23, 2021
203
209
I've been on this site for years now and I'm just NOW seeing this lmao looks like a game changer but I see you're releasing a new version in C so I can wait patiently for that to be release. Thank you for all your work!
That is like a year away and you will be able to port your DB from the Python version to the C version.
 
  • Like
Reactions: WillyJL and pheno

WillyJL

Veni, vidi, vici
Donor
Respected User
Mar 7, 2019
1,524
1,348
That is like a year away and you will be able to port your DB from the Python version to the C version.
pheno as he said, and you probably won't even need to port anything if all goes how I want it to go, it probably will manage to autoupdate as-is to the new version too. The db structure and everything works well, it's just rewriting it to another language, so it will be fully compatible with no effort to switch from the end user
 

WillyJL

Veni, vidi, vici
Donor
Respected User
Mar 7, 2019
1,524
1,348
do you plan on keeping the new version compatible with existing data?
Yes, it will be as if it's just a new version of the same tool, no effort from end user to upgrade. But it is quite far away from that point, you won't be using the new C version until it's fully ready to swap over without repercussions to end users
 

WillyJL

Veni, vidi, vici
Donor
Respected User
Mar 7, 2019
1,524
1,348
Unless it does that automatically if it detects the DB tho is just a wild idea. We have no idea what is and what is not planned.
Shouldn't need any porting at the end, I'm basing it on the same db structure and everything, most of the technology I used in the Python version is not Python specific, it's still sqlite3 with the same db schema and same logic for migrating db, should all be done automatically when time comes. As of right now, it is already loading settings as-is from the current database from current Python version
 

KaosKally

Member
Dec 21, 2019
336
364
Shouldn't need any porting at the end, I'm basing it on the same db structure and everything, most of the technology I used in the Python version is not Python specific, it's still sqlite3 with the same db schema and same logic for migrating db, should all be done automatically when time comes. As of right now, it is already loading settings as-is from the current database from current Python version
Got it and if you need testers, count me in when the time comes.
 
  • Like
Reactions: WillyJL

ascsd

Member
Jul 26, 2021
106
85
why the choice of C vs C++? is it due to the graphics libraries?
asking bc I've only learnt python and have been trying to convince myself to learn c++ for when I need faster loops and dealing with large data (or maybe learn go instead..). just curious as to what the advantage or disadvantage would be in this case
 

WillyJL

Veni, vidi, vici
Donor
Respected User
Mar 7, 2019
1,524
1,348
why the choice of C vs C++? is it due to the graphics libraries?
asking bc I've only learnt python and have been trying to convince myself to learn c++ for when I need faster loops and dealing with large data (or maybe learn go instead..). just curious as to what the advantage or disadvantage would be in this case
C++ is an awfully messy and overengineered language, if im going low level i want it to be dead simple too and i want my code to do what it says, C++ doesnt do those.

only things im missing out with using C instead of C++ are standard library extras, of which i would only use std::path, std::string and a few containers like std::vector and std::queue, but nothing that cant be done in C, C++ just comes with them built in; im already using cwalk and some extra handling of my own for paths, for strings vectors and queues there is M*LIB.

and, it didnt influence the decision but, yeah most of the libraries i use are in C: libcurl, glad, sdl3, sqlite3; the only one in C++ is imgui, and for that im using the official dcimgui auto-generated bindings by the imgui team so thats basically C too.

im sure it would make some more efficient and get the job done quicker, but i couldnt stand developing in C++ to save my life.

also, ive been using C for the past 2 and a half years now with flipper zero firmware development, but that didnt cause my hatred for C++, only the interest in C.

the only other option i wouldve maybe considered is rust, but ive never used rust and also i generally dont like "magic" in programming, everything about rust sounds like magic and "trust me bro".
 
Last edited:

WillyJL

Veni, vidi, vici
Donor
Respected User
Mar 7, 2019
1,524
1,348

malaac2025

Well-Known Member
Mar 17, 2024
1,008
809
any context? what is that screenshot? where does the text you added appear? what are your proxy settings, it is authenticated? what rae you doing to make this happen?
The screenshot above is what I get when I try to do anything with Socks5 enabled. I get that page above showing index of file. It was unable to do a recheck to refresh, it was unable to download, it was unable to open the thread. It just showed that file of index in the browser. I tried internal browser and it said it could not connect. I tried external browser and got that file of index error. Disabled Socks5 and it worked fine to do all these processes. But I took a screenshot showing what the internal browser reports.

1747543232337.png

Disable Proxy and it works fine.

Now internal browser does not work with Mega is another thing I found I have to use external browser.

1747543349902.png
 
Last edited:

WillyJL

Veni, vidi, vici
Donor
Respected User
Mar 7, 2019
1,524
1,348
The screenshot above is what I get when I try to do anything with Socks5 enabled. I get that page above showing index of file. It was unable to do a recheck to refresh, it was unable to download, it was unable to open the thread. It just showed that file of index in the browser. I tried internal browser and it said it could not connect. I tried external browser and got that file of index error. Disabled Socks5 and it worked fine to do all these processes. But I took a screenshot showing what the internal browser reports.

View attachment 4850207

Disable Proxy and it works fine.

Now internal browser does not work with Mega is another thing I found I have to use external browser.

View attachment 4850218
Did you consider that maybe your socks proxy isn't working? Or isn't configured correctly? Also, it is authenticated or not?

and yes, mega is not supported by integrated browser, the integrated browser is a smaller browser will less features, it doesn't support many types of videos for example and mega does some weird stuff it seems. What you should do is setup a download manager like jdownloader2 that adds links when they are copied to clipboard, then you can middle click the download in f95checker and it will unmask the link then copy it, thus adding it to jdownloader2
 
5.00 star(s) 27 Votes