# libretro_finder
[![PyPI](https://img.shields.io/pypi/v/libretro-finder)](https://pypi.org/project/libretro-finder/)
[![Downloads](https://static.pepy.tech/badge/libretro-finder)](https://pepy.tech/project/libretro-finder)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/libretro-finder)
![PyPI - License](https://img.shields.io/pypi/l/libretro-finder)
[![Build passing](https://github.com/jaspersiebring/libretro_finder/actions/workflows/main.yml/badge.svg)](https://github.com/jaspersiebring/libretro_finder/actions/workflows/main.yml)
Simple tool that finds and prepares your BIOS files for usage with Libretro (or its RetroArch frontend).
No more need to manually select, rename and move your BIOS files to some RetroArch installation somewhere, just dump them in LibretroFinder and let it sort it out for you. It does this by generating checksums for your local files (i.e. unique identifiers) and comparing them against their known counterparts as documented by Libretro [here](https://github.com/libretro/libretro-database/blob/4a98ea9726b3954a4e5a940d255bd14c307ddfba/dat/System.dat). It then refactors *copies* of all matching files to the format expected by Libretro (name *and* folder structure).
This repository does **NOT** include the BIOS files themselves.
## Features
- Simple graphical user interface (GUI)
- Scriptable command line interface (CLI)
- Works on Windows, Linux and MacOS
- Available through the Python Package Index (Python >=3.8)
- Available as portable executable (no installation required)
<p float="left">
<img src="https://github.com/jaspersiebring/libretro_finder/assets/25051531/36e3a236-ef4f-46e2-bcf3-19fe0ddb4e65" width="45%" height = 250/>
<img src="https://github.com/jaspersiebring/libretro_finder/assets/25051531/280f6d97-1232-48ee-8dc4-e6cd229263ad" width="45%" height = 250 />
</p>
# Installation
Installing from the Python Package Index (PyPI):
````
# Install from PYPI with Python's package installer (pip)
pip install libretro-finder
# [Optional] Install as isolated application through pipx (https://pypa.github.io/pipx/)
pipx install libretro-finder
````
You can also download the standalone executables for Windows, Ubuntu and MacOS. This already contains all of the program's dependencies, no installation required. See [releases](https://github.com/jaspersiebring/libretro_finder/releases).
## Example of usage
#### Command line interface
If installed with pip, LibretroFinder can be called directly from your preferred terminal by running `libretro_finder`. You can use the tool entirely from your terminal by providing values for the search directory (e.g. `~/Downloads/bios_files/`) and the output directory (`~/.config/retroarch/system/`):
````
some_user@some_machine:~ libretro_finder ~/Downloads/bios_files/ ~/.config/retroarch/system/
Hashing files: 100%|█████████████████████████████████████████████████████████████████████████████████| 983/983 [00:00<00:00, 3333.95it/s]
89 matching BIOS files were found for 3 unique systems:
Sega - Mega Drive - Genesis (1)
Sony - PlayStation (19)
Sony - PlayStation 2 (69)
````
Although the output directory defaults to retroarch's `system` folder (if `retroarch` was found), you can manually specify whatever output folder you want and `libretro_finder` will create it for you. If your path contains spaces, wrap it in double quotes like so:
````
some_user@some_machine:~ libretro_finder "D:\Games\My Roms" "C:\Program Files (x86)\Steam\steamapps\common\RetroArch\system"
Hashing files: 100%|█████████████████████████████████████████████████████████████████████████████████| 983/983 [00:00<00:00, 3333.95it/s]
89 matching BIOS files were found for 3 unique systems:
Sega - Mega Drive - Genesis (1)
Sony - PlayStation (19)
Sony - PlayStation 2 (69)
````
No matter what you select as search- or output directory, rest assured that no existing files on your file system will be modified. You can also call `libretro_finder` with `--help` to get some more information on the expected input:
````
some_user@some_machine:~ libretro_finder --help
Locate and prepare your BIOS files for libretro.
positional arguments:
Search directory Where to look for BIOS files
Output directory Where to output refactored BIOS files (defaults to ./retroarch/system)
optional arguments:
-h, --help show this help message and exit
````
#### Graphical user interface
If `libretro_finder` is called without any additional arguments, LibretroFinder will start with a graphical interface. This is functionally identical to the CLI version with the only real difference that it automatically tries to set the output directory to retroarch's `system` folder.
<p float="left">
<img src="https://github.com/jaspersiebring/libretro_finder/assets/25051531/36e3a236-ef4f-46e2-bcf3-19fe0ddb4e65" width="45%" />
<img src="https://github.com/jaspersiebring/libretro_finder/assets/25051531/2b74cc06-c031-466a-9eaa-24135be06194" width="45%" />
</p>
### Missing features? Have some feedback? Let me know!
- [Open a Github issue](https://github.com/jaspersiebring/libretro_finder/issues)
- [Message me on Reddit ](https://www.reddit.com/user/qtieb/)
Raw data
{
"_id": null,
"home_page": "https://github.com/jaspersiebring/libretro_finder",
"name": "libretro-finder",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8,<3.13",
"maintainer_email": "",
"keywords": "",
"author": "Jasper Siebring",
"author_email": "j.siebring92@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/d5/5f/8beca4651322caea16a5931e5c2078a19130b23177065b0a4fb0f89a4676/libretro_finder-0.2.5.tar.gz",
"platform": null,
"description": "# libretro_finder\n[![PyPI](https://img.shields.io/pypi/v/libretro-finder)](https://pypi.org/project/libretro-finder/)\n[![Downloads](https://static.pepy.tech/badge/libretro-finder)](https://pepy.tech/project/libretro-finder)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/libretro-finder)\n![PyPI - License](https://img.shields.io/pypi/l/libretro-finder)\n[![Build passing](https://github.com/jaspersiebring/libretro_finder/actions/workflows/main.yml/badge.svg)](https://github.com/jaspersiebring/libretro_finder/actions/workflows/main.yml)\n\n\nSimple tool that finds and prepares your BIOS files for usage with Libretro (or its RetroArch frontend). \n\nNo more need to manually select, rename and move your BIOS files to some RetroArch installation somewhere, just dump them in LibretroFinder and let it sort it out for you. It does this by generating checksums for your local files (i.e. unique identifiers) and comparing them against their known counterparts as documented by Libretro [here](https://github.com/libretro/libretro-database/blob/4a98ea9726b3954a4e5a940d255bd14c307ddfba/dat/System.dat). It then refactors *copies* of all matching files to the format expected by Libretro (name *and* folder structure). \n\nThis repository does **NOT** include the BIOS files themselves.\n\n## Features\n- Simple graphical user interface (GUI)\n- Scriptable command line interface (CLI)\n- Works on Windows, Linux and MacOS\n- Available through the Python Package Index (Python >=3.8) \n- Available as portable executable (no installation required)\n\n\n<p float=\"left\">\n <img src=\"https://github.com/jaspersiebring/libretro_finder/assets/25051531/36e3a236-ef4f-46e2-bcf3-19fe0ddb4e65\" width=\"45%\" height = 250/>\n <img src=\"https://github.com/jaspersiebring/libretro_finder/assets/25051531/280f6d97-1232-48ee-8dc4-e6cd229263ad\" width=\"45%\" height = 250 />\n</p>\n\n# Installation\n\nInstalling from the Python Package Index (PyPI):\n````\n# Install from PYPI with Python's package installer (pip)\npip install libretro-finder\n\n# [Optional] Install as isolated application through pipx (https://pypa.github.io/pipx/)\npipx install libretro-finder\n````\nYou can also download the standalone executables for Windows, Ubuntu and MacOS. This already contains all of the program's dependencies, no installation required. See [releases](https://github.com/jaspersiebring/libretro_finder/releases).\n\n## Example of usage\n\n#### Command line interface\n\nIf installed with pip, LibretroFinder can be called directly from your preferred terminal by running `libretro_finder`. You can use the tool entirely from your terminal by providing values for the search directory (e.g. `~/Downloads/bios_files/`) and the output directory (`~/.config/retroarch/system/`):\n\n````\nsome_user@some_machine:~ libretro_finder ~/Downloads/bios_files/ ~/.config/retroarch/system/\nHashing files: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 983/983 [00:00<00:00, 3333.95it/s]\n89 matching BIOS files were found for 3 unique systems:\n Sega - Mega Drive - Genesis (1)\n Sony - PlayStation (19)\n Sony - PlayStation 2 (69)\n````\n\nAlthough the output directory defaults to retroarch's `system` folder (if `retroarch` was found), you can manually specify whatever output folder you want and `libretro_finder` will create it for you. If your path contains spaces, wrap it in double quotes like so:\n\n````\nsome_user@some_machine:~ libretro_finder \"D:\\Games\\My Roms\" \"C:\\Program Files (x86)\\Steam\\steamapps\\common\\RetroArch\\system\"\nHashing files: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 983/983 [00:00<00:00, 3333.95it/s]\n89 matching BIOS files were found for 3 unique systems:\n Sega - Mega Drive - Genesis (1)\n Sony - PlayStation (19)\n Sony - PlayStation 2 (69)\n````\nNo matter what you select as search- or output directory, rest assured that no existing files on your file system will be modified. You can also call `libretro_finder` with `--help` to get some more information on the expected input: \n````\nsome_user@some_machine:~ libretro_finder --help\n\nLocate and prepare your BIOS files for libretro.\n\npositional arguments:\n Search directory Where to look for BIOS files\n Output directory Where to output refactored BIOS files (defaults to ./retroarch/system)\n\noptional arguments:\n -h, --help show this help message and exit\n````\n\n\n#### Graphical user interface\n\nIf `libretro_finder` is called without any additional arguments, LibretroFinder will start with a graphical interface. This is functionally identical to the CLI version with the only real difference that it automatically tries to set the output directory to retroarch's `system` folder. \n\n<p float=\"left\">\n <img src=\"https://github.com/jaspersiebring/libretro_finder/assets/25051531/36e3a236-ef4f-46e2-bcf3-19fe0ddb4e65\" width=\"45%\" />\n <img src=\"https://github.com/jaspersiebring/libretro_finder/assets/25051531/2b74cc06-c031-466a-9eaa-24135be06194\" width=\"45%\" />\n</p>\n\n\n### Missing features? Have some feedback? Let me know!\n- [Open a Github issue](https://github.com/jaspersiebring/libretro_finder/issues)\n- [Message me on Reddit ](https://www.reddit.com/user/qtieb/)",
"bugtrack_url": null,
"license": "GNU General Public License v3.0",
"summary": "Simple tool that finds and prepares your BIOS files for usage with Libretro (or its RetroArch frontend).",
"version": "0.2.5",
"project_urls": {
"Homepage": "https://github.com/jaspersiebring/libretro_finder"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "486bab9dfcff98d28bb12332dbeed0468b7d30a5fd6888e166925aa3a6d8fa6b",
"md5": "b404734df89a901df9adc5b143fea4df",
"sha256": "f1ef3d1fa839b254d91944e72da179d65729a68e1c133f6d4a6faa3a0b992818"
},
"downloads": -1,
"filename": "libretro_finder-0.2.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b404734df89a901df9adc5b143fea4df",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8,<3.13",
"size": 20738,
"upload_time": "2023-08-16T02:03:21",
"upload_time_iso_8601": "2023-08-16T02:03:21.535614Z",
"url": "https://files.pythonhosted.org/packages/48/6b/ab9dfcff98d28bb12332dbeed0468b7d30a5fd6888e166925aa3a6d8fa6b/libretro_finder-0.2.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d55f8beca4651322caea16a5931e5c2078a19130b23177065b0a4fb0f89a4676",
"md5": "e67613925e44d546adde0fbba6c6c730",
"sha256": "7b1adee527c137a7914de1890d1573918fdc35a077dba44c0aeb0b472652435a"
},
"downloads": -1,
"filename": "libretro_finder-0.2.5.tar.gz",
"has_sig": false,
"md5_digest": "e67613925e44d546adde0fbba6c6c730",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8,<3.13",
"size": 19072,
"upload_time": "2023-08-16T02:03:23",
"upload_time_iso_8601": "2023-08-16T02:03:23.044014Z",
"url": "https://files.pythonhosted.org/packages/d5/5f/8beca4651322caea16a5931e5c2078a19130b23177065b0a4fb0f89a4676/libretro_finder-0.2.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-16 02:03:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jaspersiebring",
"github_project": "libretro_finder",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "libretro-finder"
}