Tool XLibrary - Advanced Game Library Manager for F95Zone

5.00 star(s) 1 Vote

Detsu Kai

Newbie
Modder
Sep 30, 2018
80
91
116
Does the program not track game updates? If not, when will this be implemented?
New version is here!
1.7.0
- Added automatic and manual checking for game updates on f95zone with visual indicators
- Game versions are compared with f95zone versions and show "Update Available" badges in both grid and list views
- Automatic checking runs every 24 hours with intelligent logic to minimize API requests (14-30 days range)
- Manual checking supports configurable periods: 1 Month, 3 Months, 6 Months, 1 Year
- Built-in rate limiting with 1.5-second delays between requests to prevent f95zone blocking
- Real-time progress bar shows current page and statistics during update checks
- New "Updates Available" filter option to show only games with available updates
- Special handling for rate limit errors (429) with helpful user guidance and recommendations
- Added ability to stop running update checks at any time with progress preservation
- Comprehensive logging system for all update operations with 1000-entry limit
- Added "Update Available" indicator in game modal window that opens f95zone page when clicked
- Browser extension now automatically updates game data when visiting f95zone pages with available updates
- Added Ctrl+Click and Cmd+Click support to open games directly in browser from both grid and list views
- Added visual overlay with "Open in F95Zone" text when holding Ctrl/Cmd while hovering over games
- Game modal carousel is now hidden until fully initialized to prevent visual glitches
- Improved sorting logic: Name and Developer now default to ascending (A→Z), all other fields default to descending
- Sort direction only toggles when clicking the same field twice, switching fields applies appropriate default direction
 

Detsu Kai

Newbie
Modder
Sep 30, 2018
80
91
116
"installed only" filter straight up doesn't work, no games count as installed
1.7.2
- Fixed: "Installed Only" filter now works correctly with new multiple launch configurations structure
- Fixed: "Checked games" counter now correctly shows only games found in both API and local library
- Fixed: Manual update checks no longer skip games by date - all games in selected period are checked
 

Detsu Kai

Newbie
Modder
Sep 30, 2018
80
91
116
New release is already here!

1.7.3
- Fixed: Google Drive authorization now properly shows success/error pages after signing in
- Improved: Auto-start with Windows now launches XLibrary minimized to system tray (if auto-start was already enabled, disable and re-enable it for changes to take effect)
 
  • Heart
Reactions: Mr.Giggles

Detsu Kai

Newbie
Modder
Sep 30, 2018
80
91
116
I worked really hard on this update, thank you so much to the moderators for pinning my post <3
I strongly recommend everyone who used previous versions to update ;)

1.8.0
- Complete UI and UX redesign of the entire project
- Added: Dark and light theme switching capability
- Fixed: Filter settings now properly save and restore from localStorage
- Added: Tips & Tricks button next to theme toggle with helpful shortcuts
- Added: Quick search hotkeys - Ctrl+F and / to focus search field, Esc to unfocus
- Added: Full keyboard navigation for games list - use arrow keys to navigate, Enter to open, Esc to exit
- Added: Advanced grid navigation - Shift+Up/Down to jump between rows in same column
- Added: Screenshot carousel navigation with left/right arrows when game is selected
 

Detsu Kai

Newbie
Modder
Sep 30, 2018
80
91
116
A little but major fix :)

1.8.1
- Fixed: Sorting behavior for “Date Added to XLibrary” and other date fields (now works as expected)
 
  • Heart
Reactions: Mr.Giggles
Nov 2, 2017
278
182
241
Can you send a screenshot? If you were checking updates on a large scale or very frequently, F95zone might have blocked you, and you'll need to wait at least an hour.
woke up this morning and it was just working for no reason. only have 6 games on my list tho
 

CuddleBear

Member
Jun 9, 2017
418
150
283
Testing this out now and by first experience, it's a great start! Love how you easily handshake with the f95 website and how you handle local caching on the library side aswell.

The biggest gripe i have currently is bulk importing, install location management and multiple versions.
Currently using Game-List and that's pretty much falling apart, most alternatives is also meh, but this project is QUITE promising so far!

Scanning known folders could be done with regexes (F:\basepathto\Games\{creator}\{title}\{version}\game.exe) and looking up the f95 thread based on the scraped data.
Sidenote on scanning, Game-list users will have an `GL_Infos.ini`sidecar file next to the exe or whatever that contains the thread url, title and version (sadly not creator name)

Installing new versions and updates could be done in a really neat and intuitive way since you already got a browser plugin perhaps, by scanning the active downloads or completed downloads from f95 and linking the archive download to the title somehow. Multiple ways you could do this, but it would make it pretty seamless if it picked up files on its own from the download folder.

Obviously local installs will follow a naming scheme the user sets or you set i guess.
For readability outside of programs, doing "\Games\{creator}\{title}\{version}\game.exe" works great.
But for software optimization, doing "\Games\{ThreadID}\{version}\game.exe" might be better.... but that's not human friendly with file navigation, not that you want users to poke through the files.

Outside of the huge, large scale features i mentioned, having a portable mode where all settings, database and storage is under the install location would be really good! Easier to backup, easier to control and manage and all that.

Cached images should also be optimized into a more cost-effective image format instead of saving it directly as png and jpeg files, you could use webp or avif! In testing for the Atlas F95 Managing app the devs turned 80+ gigs of saved images (banners, previews and so on) down to under 5 gigs IIRC so there is huge gains even with just webp.


EDIT: given the browser plugin some more thinking, you do have access to the download system of the browser, you can monitor the urls the user click from a f95 thread, meaning you can map it from the thread url to say the mediafire url. this makes sense, this will allow you to map out without filename matching what file you download without parsing the filename at all. You would then just hand the path to the downloaded archive on completion and give XLibrary the thread url for normal scraping and installing after extraction. Fully possible now that you have a browser extension like this.
Not 100% sure you would need an DDL whitelist for sites like mediafire or whatever.... or let it map this out on the extension side at all times with all urls leading out of f95.

Possible to set the zip name as the "version" value or do fuzzy matching with the latest scraped version value to normalize it down to the scrape data aswell.

Enabling the Launch config to use run commands would also go pretty far!
This would enable Steam, GOG, Itch.io users that bought titles to support the creators to launch the game directly without a shortcut file workaround! (steam://rungameid/2413210 for example) This could also enable you to list these storefronts in the UI and also make it a filter option! For example being able to filter for titles that has a Steam store page or similar, but the user has not mapped/installed it.

Also spreading the word of this client through my discord servers that handle this type of content.

EDIT (i lost count):
On the UI side, tags should probably be clickable, left click to search for the tag specific, this could be any tag or the creator anme for example! Middle click should append it to the current search! Also instead of control clicking to open the thread on an title from the gallery view, middle clicking the title or the main banner image should also open the thread.


Also notice how the updates are checked for and processed which seems quite slow and quite weird? im not sure what you are using to scrape it, but wouldnt it just be easier to load the public json list at a large item size and have it scrape from the last scrape point? i mean you could do that once an hour or more without issues and you get everything for the day on one page pretty much. IIRC after testing scraping with other clients, 90 items on that list page is the sweet spot for whatever reason, and nothing stops you from loading other pages for even more (there is only 252 pages at 90 items per page). that would be this json: https://f95zone.to/sam/latest_alpha/latest_data.php?cmd=list&cat=games&page=1&sort=date&rows=90
 
Last edited:
  • Like
Reactions: AlicetheDeviant

Detsu Kai

Newbie
Modder
Sep 30, 2018
80
91
116
Testing this out now and by first experience, it's a great start! Love how you easily handshake with the f95 website and how you handle local caching on the library side aswell.

The biggest gripe i have currently is bulk importing, install location management and multiple versions.
Currently using Game-List and that's pretty much falling apart, most alternatives is also meh, but this project is QUITE promising so far!

Scanning known folders could be done with regexes (F:\basepathto\Games\{creator}\{title}\{version}\game.exe) and looking up the f95 thread based on the scraped data.
Sidenote on scanning, Game-list users will have an `GL_Infos.ini`sidecar file next to the exe or whatever that contains the thread url, title and version (sadly not creator name)

Installing new versions and updates could be done in a really neat and intuitive way since you already got a browser plugin perhaps, by scanning the active downloads or completed downloads from f95 and linking the archive download to the title somehow. Multiple ways you could do this, but it would make it pretty seamless if it picked up files on its own from the download folder.

Obviously local installs will follow a naming scheme the user sets or you set i guess.
For readability outside of programs, doing "\Games\{creator}\{title}\{version}\game.exe" works great.
But for software optimization, doing "\Games\{ThreadID}\{version}\game.exe" might be better.... but that's not human friendly with file navigation, not that you want users to poke through the files.

Outside of the huge, large scale features i mentioned, having a portable mode where all settings, database and storage is under the install location would be really good! Easier to backup, easier to control and manage and all that.

Cached images should also be optimized into a more cost-effective image format instead of saving it directly as png and jpeg files, you could use webp or avif! In testing for the Atlas F95 Managing app the devs turned 80+ gigs of saved images (banners, previews and so on) down to under 5 gigs IIRC so there is huge gains even with just webp.


EDIT: given the browser plugin some more thinking, you do have access to the download system of the browser, you can monitor the urls the user click from a f95 thread, meaning you can map it from the thread url to say the mediafire url. this makes sense, this will allow you to map out without filename matching what file you download without parsing the filename at all. You would then just hand the path to the downloaded archive on completion and give XLibrary the thread url for normal scraping and installing after extraction. Fully possible now that you have a browser extension like this.
Not 100% sure you would need an DDL whitelist for sites like mediafire or whatever.... or let it map this out on the extension side at all times with all urls leading out of f95.

Possible to set the zip name as the "version" value or do fuzzy matching with the latest scraped version value to normalize it down to the scrape data aswell.

Enabling the Launch config to use run commands would also go pretty far!
This would enable Steam, GOG, Itch.io users that bought titles to support the creators to launch the game directly without a shortcut file workaround! (steam://rungameid/2413210 for example) This could also enable you to list these storefronts in the UI and also make it a filter option! For example being able to filter for titles that has a Steam store page or similar, but the user has not mapped/installed it.

Also spreading the word of this client through my discord servers that handle this type of content.

EDIT (i lost count):
On the UI side, tags should probably be clickable, left click to search for the tag specific, this could be any tag or the creator anme for example! Middle click should append it to the current search! Also instead of control clicking to open the thread on an title from the gallery view, middle clicking the title or the main banner image should also open the thread.


Also notice how the updates are checked for and processed which seems quite slow and quite weird? im not sure what you are using to scrape it, but wouldnt it just be easier to load the public json list at a large item size and have it scrape from the last scrape point? i mean you could do that once an hour or more without issues and you get everything for the day on one page pretty much. IIRC after testing scraping with other clients, 90 items on that list page is the sweet spot for whatever reason, and nothing stops you from loading other pages for even more (there is only 252 pages at 90 items per page). that would be this json: https://f95zone.to/sam/latest_alpha/latest_data.php?cmd=list&cat=games&page=1&sort=date&rows=90



Hi! Thanks a lot for such a detailed and thoughtful feedback It really means a lot to me that someone else cares about this project as much as I do.

About the folder structure — I think I’ll stick with a more “human-friendly” format:
{user-selected-path}/{creator}/{title} [{thread/game ID}]/{version}
This way it stays readable for users but also keeps the ID handy for consistency.

For matching downloaded files, the first step will probably be something simple: scanning the download links listed in the F95 thread and trying to find a filename match. It won’t work in every case, but in most it should be fine and it’s a much quicker starting point.

As for imports — using regex rules and folder parsing sounds a bit too complex for the first iteration. Instead, I’d rather begin with importing directly from other apps. For example, Game-List (if I understood correctly, that’s also a game catalog app). I’ll take a closer look at its structure and make a dedicated importer that can pull games straight into XLibrary.

On a bigger scale, I’m also working on a personal backend service that uses AI to extract data from F95 posts much more accurately. That will make it possible to gather proper download links, updates, and other metadata that’s really hard to get right now due to messy HTML. Once that’s ready, it’ll be much easier to handle folder/file matching too, because I’ll already have a clean list of links to work with.

Also, there are a few features you mentioned that I already decided to add for sure:
Portable mode — keeping all settings, database, and cache inside the app folder itself, so it’s easy to back up or move.
Optimized image cache — switching from PNG/JPEG to WebP or AVIF, which will save a huge amount of disk space.
Support for external launchers — allowing launch configs to use run commands like steam://, gog://, itch://, plus store indicators and filters in the UI.
UI/UX improvements — making tags clickable (left click = search, middle click = add to search, but I will make a little researche and maybe this will work a little another, but better for UX and same fast to use), and letting middle click on a title/banner in gallery view open the F95 thread.
Update checks optimization — using the public JSON feed from F95 (latest_data.php) and fetching in larger chunks for faster and more reliable update scanning.

If I misunderstood any of your points or missed something, let me know — I’ll be glad to adjust!
 

CuddleBear

Member
Jun 9, 2017
418
150
283
no no no. that all sounds great! thanks for considering my feedback!
We really need a SOLID client and this is the first one in a while that has shown promise. We talk quite a bit about alternatives and our needs in the Atlas discord i run... which was the Game-List discord untill it died off. Atlas was the project to replace Game-List but sadly life have taken up the time of our main dev.

As for bulk importing from Game-list libraries, just scanning for the GL_infos.ini file should be enough, reading that ini file then mapping the exe next too the ini for the launching.
Obviously, we would want the client to move and "install" in whatever format XLib is set as.

Example of the GL_Infos.ini for WVM, Game-List saves these automatically on an version install.
You don't have permission to view the spoiler content. Log in or register now.

Obviously these ini files are saved next to each exe for each version of a singular title. Though GL has had some issues with scraping over the years so the data cant be 100% trusted, so relying on the url and version string is the only thing you need.

Scraping 3rd party store pages from the threads would also be huge, for example if they have a steam, gog or itch url in the OP then you would add a flag and url in the UI that points too it. Obviously making it searchable for the user. This is two sided, both informing the user about their options instead of downloading it for free, but also gently nudging them to buy it without any drama.

On a side note, i personally would like more than just the game category to be supported, having assets, "comics" and "animation" as listings would make sense. But i guess im more of a digtal hoarder than most.

Assets could be mapped to archives, not that you generally need that either. For assets its mostly catering and managing what you have and not and if there is an update!

For "comics" and "animations", managing that in XLib would only really mean update tracking and new threads. In a perfect world it would extract archives and send it to an Hydrus Client through the client api.

An scraping mode would also be interesting, not working as an import/whitelist but rather parse and add all entries no matter what with rather a blacklist to work with it.

And please dont think too much of my ramblings. I just see potential in it all and get rambly when excited for the prospect.
 

Detsu Kai

Newbie
Modder
Sep 30, 2018
80
91
116
no no no. that all sounds great! thanks for considering my feedback!
We really need a SOLID client and this is the first one in a while that has shown promise. We talk quite a bit about alternatives and our needs in the Atlas discord i run... which was the Game-List discord untill it died off. Atlas was the project to replace Game-List but sadly life have taken up the time of our main dev.

As for bulk importing from Game-list libraries, just scanning for the GL_infos.ini file should be enough, reading that ini file then mapping the exe next too the ini for the launching.
Obviously, we would want the client to move and "install" in whatever format XLib is set as.

Example of the GL_Infos.ini for WVM, Game-List saves these automatically on an version install.
You don't have permission to view the spoiler content. Log in or register now.

Obviously these ini files are saved next to each exe for each version of a singular title. Though GL has had some issues with scraping over the years so the data cant be 100% trusted, so relying on the url and version string is the only thing you need.

Scraping 3rd party store pages from the threads would also be huge, for example if they have a steam, gog or itch url in the OP then you would add a flag and url in the UI that points too it. Obviously making it searchable for the user. This is two sided, both informing the user about their options instead of downloading it for free, but also gently nudging them to buy it without any drama.

On a side note, i personally would like more than just the game category to be supported, having assets, "comics" and "animation" as listings would make sense. But i guess im more of a digtal hoarder than most.

Assets could be mapped to archives, not that you generally need that either. For assets its mostly catering and managing what you have and not and if there is an update!

For "comics" and "animations", managing that in XLib would only really mean update tracking and new threads. In a perfect world it would extract archives and send it to an Hydrus Client through the client api.

An scraping mode would also be interesting, not working as an import/whitelist but rather parse and add all entries no matter what with rather a blacklist to work with it.

And please dont think too much of my ramblings. I just see potential in it all and get rambly when excited for the prospect.
Ah, I finally understand GL_Infos.ini, thank you! I’ll do my best to make this library truly functional and user-friendly. Just a few days ago, I thought my app was complete and couldn’t figure out what else to add. But now I see endless possibilities and exciting ideas to explore. Thanks again!

I believe it will eventually support comics and animations, but for now, I’ll concentrate more on the gaming aspect. Interestingly, many features will overlap between both areas. You can already add collections and other media threads, and I think many functionalities - like automatic content extraction and placement - will continue to work seamlessly in the future.

I added to the roadmap: category filter and official stores integration
 

CuddleBear

Member
Jun 9, 2017
418
150
283
Yeah, for Assets, Comics and Animation categories you really dont need much. what i want though is a handy quick filter tab that just filters per category! this way it doesnt mix! this is the biggest issue! also getting update notifications even with our without an "launch config" would be helpful as they would see less use in those other categories!
This way the users can atleast easily add the threads and have update notifications be handed out to the user which is the main point next to filtering!

But clearly comics and the animation categories is no good way to manage those type of content in XLib.... which is why i mentioned Hydrus, have it extract then push to an Hydrus client with the api while tracking what archive the user pushed to it.
This way, if a new bundle or a new archive is uploaded to the comic category for example the user got an overview over what they have downloaded and already imported into Hydrus.

But like i said, these things are not critical. Expanding the functionality for the games is important. But a simple category filter would go a REALLY long way!


One feature that would really be good would be saved filters/sessions, saving the current filter, sort order and view mode into a preset the user can load. this way the user can make some pretty complex search queries for multiple uses.
For example having updates in a different view mode compared to the normal view mode the user enjoys.
I guess an "default" preset is needed so the client knows what settings to return too when not using the saved one.

And please, if you want to toss around ideas more casually then you can join the Atlas discord. most of the users there are looking closely at this project. Will do an at everyone for people there one of these days i guess.

Side note, notice there is no version value in the UI at all in anyway. Could be in the window title but also in the settings somewhere so the user knows what version you are running.
I am guessing there is no update feature? any real reason why its not on github? could do automatic build actions on there and have the client grab the latest tag.

Also one caveat you might want to consider with the install folder generation is truncating the title so if the title is extremely long, it will not push the max path limits on some file systems. and title is obviously less important than creator and version when you have the thread already.
 
Last edited:

Detsu Kai

Newbie
Modder
Sep 30, 2018
80
91
116
Yeah, for Assets, Comics and Animation categories you really dont need much. what i want though is a handy quick filter tab that just filters per category! this way it doesnt mix! this is the biggest issue! also getting update notifications even with our without an "launch config" would be helpful as they would see less use in those other categories!
This way the users can atleast easily add the threads and have update notifications be handed out to the user which is the main point next to filtering!

But clearly comics and the animation categories is no good way to manage those type of content in XLib.... which is why i mentioned Hydrus, have it extract then push to an Hydrus client with the api while tracking what archive the user pushed to it.
This way, if a new bundle or a new archive is uploaded to the comic category for example the user got an overview over what they have downloaded and already imported into Hydrus.

But like i said, these things are not critical. Expanding the functionality for the games is important. But a simple category filter would go a REALLY long way!


One feature that would really be good would be saved filters/sessions, saving the current filter, sort order and view mode into a preset the user can load. this way the user can make some pretty complex search queries for multiple uses.
For example having updates in a different view mode compared to the normal view mode the user enjoys.
I guess an "default" preset is needed so the client knows what settings to return too when not using the saved one.

And please, if you want to toss around ideas more casually then you can join the Atlas discord. most of the users there are looking closely at this project. Will do an at everyone for people there one of these days i guess.

Side note, notice there is no version value in the UI at all in anyway. Could be in the window title but also in the settings somewhere so the user knows what version you are running.
I am guessing there is no update feature? any real reason why its not on github? could do automatic build actions on there and have the client grab the latest tag.

Also one caveat you might want to consider with the install folder generation is truncating the title so if the title is extremely long, it will not push the max path limits on some file systems. and title is obviously less important than creator and version when you have the thread already.
I am currently working on a backend service that will store more information than it does now. At present, the xlibrary application does not save category data, but the new backend will include this functionality. I will also update the application to support this feature and integrate it into the filters.

Adding presets for filters is a great idea; I'll include this in the roadmap.

I will also add a version somewhere in the app settings, and in the future, automatic updates will definitely be implemented. I thought about uploading it to GitHub, but I might do that later. Honestly, for now, I only have enough time to read posts here, refine the code, and release updates. Taking on project maintenance and reviewing pull requests would probably be too overwhelming for me at the moment.

And for the same reason, I’m afraid to join Discord servers or communities, because due to the limited amount of time I can spend on Discord, I will inevitably miss many messages that usually require relatively prompt responses. I’m worried about unintentionally upsetting people if I take too long to reply (which could be a couple of days or even longer). I joined the Atlas Discord, but I kindly ask not to expect too much from me.


Also one caveat you might want to consider with the install folder generation is truncating the title so if the title is extremely long, it will not push the max path limits on some file systems. and title is obviously less important than creator and version when you have the thread already.
Yeah, I will take care about it, thanks!
 

CuddleBear

Member
Jun 9, 2017
418
150
283
its all good! no pressure. just voicing feedback. should think about a dedicated server for it. i should spinn up a couple of channels atleast for users to brainstorm stuff. even if you are not a part of it, having the users form the ideas over time with brainstorming helps quite a bit.
most of my ideas in the end are processed over the years of thinking about these clients. i was the power user on Game-list and i was the only one talking to the dev for years.
I feel im getting a pretty solid grasp of what i want and what many users wants from an client like this. though i might have more open needs than most cause of digital hoarding.
 
5.00 star(s) 1 Vote