{"id":13625115,"url":"https://github.com/RandomNinjaAtk/docker-raromprocessor","last_synced_at":"2025-04-16T06:31:45.352Z","repository":{"id":37773508,"uuid":"478773745","full_name":"RandomNinjaAtk/docker-raromprocessor","owner":"RandomNinjaAtk","description":"RA ROM Processor is a Docker container that is used to aquire/orgainze/process/verify/dedupe/scrape a ROMs library automatically by matching ROMs to the RetroAchievement.org website Hash database.","archived":true,"fork":false,"pushed_at":"2023-07-09T18:12:54.000Z","size":473,"stargazers_count":33,"open_issues_count":4,"forks_count":5,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-08-01T22:03:59.320Z","etag":null,"topics":["bash","emulationstation","rahasher","retroachievements","retrogaming","roms","scraper","script"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RandomNinjaAtk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":["RandomNinjaAtk"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2022-04-07T00:42:55.000Z","updated_at":"2024-07-02T09:23:55.000Z","dependencies_parsed_at":"2024-01-14T08:13:27.162Z","dependency_job_id":"aaa55c8f-58ab-4b00-8eb7-61aafa0f9b4b","html_url":"https://github.com/RandomNinjaAtk/docker-raromprocessor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RandomNinjaAtk%2Fdocker-raromprocessor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RandomNinjaAtk%2Fdocker-raromprocessor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RandomNinjaAtk%2Fdocker-raromprocessor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RandomNinjaAtk%2Fdocker-raromprocessor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RandomNinjaAtk","download_url":"https://codeload.github.com/RandomNinjaAtk/docker-raromprocessor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223700244,"owners_count":17188279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","emulationstation","rahasher","retroachievements","retrogaming","roms","scraper","script"],"created_at":"2024-08-01T21:01:51.058Z","updated_at":"2024-11-08T14:30:28.489Z","avatar_url":"https://github.com/RandomNinjaAtk.png","language":"Shell","readme":"# Deprecated\n\nThis repository is now deprecated, will no longer be updated and is being archived. \n\n# RA ROM Processor\n\n[RA ROM Processor](https://github.com/RandomNinjaAtk/docker-raromprocessor) is a Docker container that is used to aquire/orgainze/process/verify/dedupe/scrape a ROMs library automatically by matching ROMs to the [RetroAchievement.org](https://retroachievements.org) website Hash database. This was inspired by other projects such as: [hascheevos](https://github.com/meleu/hascheevos) \n\n[![RandomNinjaAtk/raromprocessor](https://raw.githubusercontent.com/RandomNinjaAtk/unraid-templates/master/randomninjaatk/img/raromprocessor.png)](https://github.com/RandomNinjaAtk/docker-raromprocessor)\n\n## Instructions/Usage Guidelines\n\nThe script must run one time to generate the platform input folders:  ```/input/\u003cplatform_rom_folder\u003e```\n\nWith AutoStart enabled, all you have to do is copy/move your ROMs into the ```/input/\u003cplatform_rom_folder\u003e``` volume. \n\nThe script will then automatically process all of the files in the volume, by matching/validating them against the [RetroAchievements](https://retroachievements.org) DB (Hash List) using the official [RAHasher](https://github.com/RetroAchievements/RALibretro/releases) applicatoin via a automated script process.\n\nThen the files will be processed using [skyscraper](https://github.com/muldjord/skyscraper) to gather/download metadata from [screenscraper](https://screenscraper.fr/) and saved into the ```/output``` volume.\n\nLastly, ROMs that have no metadata will be removed from the final ```/output``` list/directories. This will ensure a completely clean library.\n\nFEAR NOT, all ROMs that are processed are backed up to the ```/backup``` volume. This will allow you to verify the end result before deciding to remove the original data used for import/processing.\n\n## Supported ROM Platforms\n- Amiga (Tested - RA Unsupported Platform)\n- Amstrad CPC (Tested)\n- Apple II\n- Arcade\n- Atari 2600 (Tested)\n- Atari 5200 (Tested - RA Unsupported Platform)\n- Atari 7800  (Tested)\n- Atari Jaguar (Tested)\n- Atari Lynx (Tested)\n- Atari ST (Tested - RA Unsupported Platform)\n- ColecoVision (Tested)\n- Commodore 64 (Tested - RA Unsupported Platform)\n- Fairchild Channel F (Tested - RA Unsupported Platform)\n- Intellivision (Tested)\n- NEC TurboGrafx-16 (Tested - Unsupported by Skyscraper)\n- Neo Geo CD (Tested - RA Unsupported Platform)\n- Nintendo: 64 (Tested)\n- Nintendo: DS\n- Nintendo: GameBoy (Tested)\n- Nintendo: GameBoy Advance (Tested)\n- Nintendo: GameBoy Color (Tested)\n- Nintendo: Nintendo Entertainment System (Tested)\n- Nintendo: Pokemon Mini (Tested)\n- Nintendo: Super Nintendo Entertainment System (Tested)\n- Nintendo: VirtualBoy (Tested)\n- Sega 32X (Tested)\n- Sega Dreamcast\n- Sega CD\n- Sega Game Gear (Tested)\n- Sega Mega Drive (Tested)\n- Sega Master System (Tested)\n- Sega Saturn\n- SG-1000 (Tested)\n- Sharp X68000 (Tested - RA Unsupported Platform)\n- SNK Neo Geo Pocket (Tested)\n- SNK Neo Geo Pocket Color (Tested)\n- Magnavox Odyssey 2 (Tested - Unsupported by Skyscraper)\n- MSX (Tested)\n- MSX2 (Tested)\n- PC Engine\n- PlayStation\n- PlayStation Portable\n- Vectrex (Tested)\n- WonderSwan (Tested)\n- WonderSwan [Color] (Tested)\n- ZX Spectrum (Tested - RA Unsupported Platform)\n\n## Supported Architectures\n\nThe architectures supported by this image are:\n\n| Architecture | Tag |\n| :----: | --- |\n| x86-64 | latest |\n\n## Version Tags\n\n| Tag | Description |\n| :----: | --- |\n| latest | Newest release code |\n\n## Parameters\n\nContainer images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `\u003cexternal\u003e:\u003cinternal\u003e` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.\n\n| Parameter | Function |\n| --- | --- |\n| `-e PUID=1000` | for UserID - see below for explanation |\n| `-e PGID=1000` | for GroupID - see below for explanation |\n| `-v /config` | Configuration files for hascheevos. |\n| `-v /cache` | cache location for skyscraper. |\n| `-v /input` | Place ROMs to be processed in this directory |\n| `-v /backup` | Processed ROMs are backed up to this directory |\n| `-v /output` | ROMs that have been processed will end up here |\n| `-e AutoStart=true` | true = Enabled :: Runs script automatically on startup |\n| `-e ScriptInterval=1h` | When AutoStart is enabled, script will loop indefinitely, this allows the script to pause between loops, via sleep command |\n| `-e DeDupe=false` | true = Enabled :: This setting further reduces the final ROMs list per platrom, by removing duplicates with the priority of: USA \u003e Europe \u003e World \u003e Japan, and then by shortest filename when multiples exist |\n| `-e AquireRomSets=false` | true = Enabled :: Enabling this will have the script attempt to pull valid ROM sets from archive.org for processing :: Not all systems supported... |\n| `-e ConcurrentDownloadThreads=5` | Number of concurrent threads to increase download speed... only aplicable if AquireRomSets is enabled (true) |\n| `-e EnableUnsupportedPlatforms=true` | true = Enabled :: Enabling this will allow the script to import and scrape ROMs for platforms without RA hashes, no deduping/validation is performed |\n| `-e ScrapeMetadata=false` | true = Enabled :: Enabling this will allow the script to process the ROMs with [skyscraper](https://github.com/muldjord/skyscraper) |\n| `-e keepBackupsOfImportedRoms=true` | false = Enabled :: This setting will only keep a single copy of each ROM, reduces the required amount of storage space... |\n| `-e skyscraperLanguagePreference=en` | Set to preferred language for Metadata, for more info visit: [skyscraper](https://github.com/muldjord/skyscraper/blob/master/docs/LANGUAGES.md#list-of-supported-languages) |\n| `-e ScreenscraperUsername=Username` | Username for https://screenscraper.fr/ |\n| `-e ScreenscraperPassword=Password` | Password for https://screenscraper.fr/ |\n\n### docker\n\n```\ndocker create \\\n  --name=raromprocessor \\\n  -v /path/to/config/files:/config \\\n  -v /path/to/skyscraper_cache:/cache \\\n  -v /path/to/rom_input_folder:/input \\\n  -v /path/to/rom_backup_folder:/backup \\\n  -v /path/to/rom_output_folder:/output \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e AutoStart=true \\\n  -e ScriptInterval=1h \\\n  -e DeDupe=false \\\n  -e AquireRomSets=false \\\n  -e ConcurrentDownloadThreads=5 \\\n  -e EnableUnsupportedPlatforms=true \\\n  -e ScrapeMetadata=false \\\n  -e keepBackupsOfImportedRoms=true \\\n  -e ScreenscraperUsername=Username \\\n  -e ScreenscraperPassword=Password \\\n  -e skyscraperLanguagePreference=en \\\n  --restart unless-stopped \\\n  randomninjaatk/raromprocessor \n```\n\n\n### docker-compose\n\nCompatible with docker-compose v2 schemas.\n\n```\nversion: \"2.1\"\nservices:\n  raromprocessor:\n    image: randomninjaatk/raromprocessor \n    container_name: raromprocessor\n    volumes:\n      - /path/to/config/files:/config:rw\n      - /path/to/skyscraper_cache:/cache:rw\n      - /path/to/rom_input_folder:/input:rw\n      - /path/to/rom_backup_folder:/backup:rw\n      - /path/to/rom_output_folder:/output:rw\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - AutoStart=true\n      - ScriptInterval=1h\n      - DeDupe=false\n      - AquireRomSets=false\n      - ConcurrentDownloadThreads=5\n      - EnableUnsupportedPlatforms=true\n      - ScrapeMetadata=false\n      - keepBackupsOfImportedRoms=true\n      - ScreenscraperUsername=Username\n      - ScreenscraperPassword=Password\n      - skyscraperLanguagePreference=en\n    restart: unless-stopped\n```\n \n# Credits\n- [RetroAchievements](https://retroachievements.org) (Used for validation)\n- [RAHasher](https://github.com/RetroAchievements/RALibretro/releases) (Used for Hashing)\n- [hascheevos](https://github.com/meleu/hascheevos) (Used for inspiration)\n- [skyscraper](https://github.com/muldjord/skyscraper) (Tool used for scraping ROM metadata)\n- [screenscraper](https://screenscraper.fr/) (DB used for ROM metadata)\n- [Rom icons created by phatplus - Flaticon](https://www.flaticon.com/free-icons/rom)\n- [Internet Archive](https://archive.org)\n","funding_links":["https://github.com/sponsors/RandomNinjaAtk"],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRandomNinjaAtk%2Fdocker-raromprocessor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRandomNinjaAtk%2Fdocker-raromprocessor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRandomNinjaAtk%2Fdocker-raromprocessor/lists"}