ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

RomM 怎么导出 gamelist.xml 给 RetroBat 等前端使用?

2026/9/15 12:50:13 拓冰建站 浏览量
RomM 怎么导出 gamelist.xml 给 RetroBat 等前端使用? RomM 怎么导出 gamelist.xml 给 RetroBat 等前端使用【免费下载链接】rommA beautiful, powerful, self-hosted ROM manager and player.项目地址: https://gitcode.com/GitHub_Trending/rom/romm如果你用 RetroBat、Batocera 或 ES-DE 这类前端读取同一套 ROM 库前端需要每个平台目录下有一份gamelist.xml来展示游戏名称、封面和多媒体资源。RomM 内置了 ES-DEgamelist.xml导出功能扫描完成后可以把 ROM 列表和媒体资源写入各平台目录且会与你已有的gamelist.xml合并而不是覆盖。本文基于仓库内的配置示例与导出实现说明如何开启自动导出、如何手动调用导出接口以及导出后如何核对结果。前提条件RomM 已通过 Docker 方式部署并能正常扫描库库中的平台文件夹名是 Batocera / RetroBat / ES-DE 的命名这些文件夹名会被自动识别配置注释明确说明 Batocera, RetroBat and ES-DE folders are already recognised。导出行为文件写到哪里、如何合并导出逻辑在 GamelistExporter 中理解两点有助于核对结果写入位置每个平台的gamelist.xml写入该平台的库目录即库根目录/平台文件夹/gamelist.xml。媒体拷贝本地导出local_exporttrue时媒体文件会以硬链接同文件系统或拷贝的方式放到平台目录下的 ES-DE 媒体子目录例如covers、screenshots、3dboxes、miximages目录映射见 config_manager.py 中的 PLATFORM_MEDIA_DIRSgamelist.xml里使用./covers/rom.ext这类相对路径。合并规则导出会读取已有gamelist.xmlRomM 不生成的属性与标签例如 ES-DE 写在gameList旁边的alternativeEmulator原样保留数据库里没有对应 ROM 的旧条目也会照旧保留。已有文件若无法解析RomM 不会覆盖它只记录错误日志。导出范围只导出磁盘上文件实际存在的 ROM导出时带HAS_FILE_ON_DISK_FILTERS过滤名为gamelist.xml的文件本身被跳过。配置在 config.yml 中开启自动导出仓库提供了 RetroBat/Batocera 场景的完整示例配置 examples/config.batocera-retrobat.yml。按文件头注释操作把它重命名为config.yml放入config文件夹并按 examples/docker-compose.example.yml 挂载到容器。与 gamelist 导出直接相关的部分scan: gamelist: export: true media: thumbnail: box3d image: miximage各字段含义取自 examples/config.example.yml 的注释export: true扫描完成后为 ES-DE/Batocera/RetroBAT 导出gamelist.xml并合并进已有文件media.thumbnail导出文件中thumbnail标签使用的媒体类型示例值box3d不配置时默认为box2d见 config_manager.py 的默认值读取media.imageimage标签使用的媒体类型示例值miximage默认screenshot。示例配置还包含平台名覆盖仅在你自定义了库目录结构时才需要system: platforms: atari800: atari8bit model2: arcade model3: arcade pico: sega-picosystem.platforms的用途是把 RomM 本来会识别成其它平台的文件夹显式映射到指定平台。普通 Batocera/RetroBat 目录命名无需配置这一节。另外注意scan.media决定扫描时下载哪些媒体资源box3d、miximage、box2d_back 等只有下载过对应媒体导出时才有内容可写进gamelist.xml。Batocera 导出会用到的媒体在 examples/config.example.yml 中单独注释为 Media used for batocera gamelist.xml exportbox2d_back、box2d_side、logo。触发导出等待扫描完成开启scan.gamelist.export: true后导出由扫描完成自动触发无需额外命令。触发点在 scan 完成流程当GAMELIST_AUTO_EXPORT_ON_SCAN为真时对每个扫描过的平台执行本地导出。RomM 前端的扫描设置里也有对应开关 ES-DE / Batocera gamelist export其界面说明为 Write a gamelist.xml file for ES-DE, Batocera and RetroBAT when a scan completes.与config.yml中的scan.gamelist.export是同一功能。替代路径手动调用导出接口不想等扫描完成时可以直接调用导出接口。export.py 定义了该路由接口在 docs/BACKEND_ARCHITECTURE.md 的路由表中也登记为POST /api/export/gamelist-xmlExport ES-DE gamelist.xmlcurl -X POST http://ROMM_HOST:PORT/api/export/gamelist-xml?platform_idsPLATFORM_IDlocal_exporttrue \ -H Authorization: Bearer TOKEN参数与响应均来自 backend/endpoints/export.pyplatform_ids要导出的平台 ID 列表至少要传一个否则返回 400local_exporttrue使用本地相对路径并拷贝媒体文件对接 RetroBat/Batocera 用此模式不传或为false时媒体引用为 RomM 服务的绝对 URL接口要求带PLATFORMS_WRITEscope 的认证protected_routeScope.PLATFORMS_WRITETOKEN换成你自己的访问令牌PLATFORM_ID换成库中平台的 ID全部平台写入成功返回 200平台不存在或不可见返回 404没有任何文件写入成功返回 500。核对导出结果看后端日志。自动导出路径的日志模板源码中的固定文案依次为Auto-exporting gamelist.xml for all platforms... Auto-exported gamelist.xml for platform 平台名 after scan Gamelist.xml auto-export completed.单个平台失败时会有Failed to auto-export gamelist.xml for platform 平台名 after scan警告。看文件系统。到对应平台目录确认gamelist.xml已生成、媒体子目录covers/、miximages/等里有文件并抽查一个game节点path、thumbnail、image应为./covers/...这类相对路径且你原有的自定义标签还在合并规则保证不丢。看接口响应。手动调用时HTTP 200 表示至少一个平台写入成功500 的detail为 Failed to write any gamelist files此时按上面的日志提示排查是哪个平台失败。限制合并导出只保留 RomM 不拥有的内容如果你手动改过某条 RomM 会生成的字段重新导出时该字段以 RomM 数据为准。已有gamelist.xml不是合法 XML 时RomM 不动它并记录Not overwriting unreadable ...错误日志——需要先把旧文件修正才能重新导出。前端RetroBat 等如何解析这些标签是前端自身行为本文只保证 RomM 侧写出的文件内容RetroBat 部分标签cartridge、titleshot、mix与标准 ES-DE 标签的对应关系见 gamelist_exporter.py 的 ASSET_TAGS 注释。如果你的前端是 Pegasus 而不是 ES-DE/Batocera 系同一接口族还提供POST /api/export/pegasus输出metadata.pegasus.txt配置开关为scan.pegasus.export。【免费下载链接】rommA beautiful, powerful, self-hosted ROM manager and player.项目地址: https://gitcode.com/GitHub_Trending/rom/romm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考