Skip to content

Commit 5b4b8cd

Browse files
committed
Fix PS3 media file names
1 parent 22ed6c1 commit 5b4b8cd

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

scenes/popups/scraper/ScraperPopup.gd

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ func t_on_media_scrape_finished(game_data: RetroHubGameData, type: int, data: Pa
306306
var path := RetroHubConfig.get_gamemedia_dir() \
307307
.path_join(game_data.system.name) \
308308
.path_join(RetroHubMedia.convert_type_to_media_path(type)) \
309-
.path_join(game_data.path.get_file().get_basename() + "." + extension)
309+
.path_join(_get_game_path(game_data) + "." + extension)
310310
FileUtils.ensure_path(path)
311311
var file := FileAccess.open(path, FileAccess.WRITE)
312312
if file:
@@ -328,6 +328,17 @@ func t_on_media_scrape_finished(game_data: RetroHubGameData, type: int, data: Pa
328328
if game_entry.curr >= game_entry.total:
329329
_finish_scrape(game_entry)
330330

331+
func _get_game_path(game_data: RetroHubGameData) -> String:
332+
if game_data.system.name == "ps3":
333+
# PS3 games use PARAM.SFO as the game identifier. We need to use the folder name instead.
334+
var path := game_data.path.get_base_dir()
335+
while not path.is_empty():
336+
if not path.ends_with("PS3_GAME"):
337+
return path.get_file()
338+
path = path.get_base_dir()
339+
340+
return game_data.path.get_file().get_basename()
341+
331342
func t_on_media_scrape_not_found(game_data: RetroHubGameData, _type: int):
332343
if pending_medias.has(game_data):
333344
var game_entry : RetroHubScraperGameEntry = pending_medias[game_data]

scenes/root/FileSystemPopup.gd

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ func _ready():
8484
func _unhandled_input(event):
8585
if RetroHub.is_input_echo() or not visible:
8686
return
87+
if event.is_action_pressed("ui_cancel") and event is InputEventKey \
88+
and get_viewport().gui_get_focus_owner() is LineEdit:
89+
get_viewport().set_input_as_handled()
8790
if event is InputEventJoypadButton:
8891
if event.is_action_released("rh_major_option"):
8992
get_viewport().set_input_as_handled()

source/Media.gd

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func _find_video_path(path: String) -> String:
141141

142142
func _load_media(media: RetroHubGameMediaData, game_data: RetroHubGameData, types: Type):
143143
var media_path := RetroHubConfig.get_gamemedia_dir().path_join(game_data.system_path)
144-
var game_path := game_data.path.get_file().get_basename()
144+
var game_path := _get_game_path(game_data)
145145

146146
var path : String
147147
# Logo
@@ -252,14 +252,25 @@ func retrieve_media_data(game_data: RetroHubGameData, types: Type = Type.ALL) ->
252252
# In the future there needs to be a way to recompute it, in case the user manually
253253
# changes files.
254254
var media_path := RetroHubConfig.get_gamemedia_dir().path_join(game_data.system_path)
255-
var game_path := game_data.path.get_file().get_basename()
255+
var game_path := _get_game_path(game_data)
256256
var blurhash_path := media_path.path_join("blurhash").path_join(game_path + ".json")
257257
if not FileAccess.file_exists(blurhash_path):
258258
compute_blurhash(game_data)
259259

260260
_load_media(game_media_data, game_data, types)
261261
return game_media_data
262262

263+
func _get_game_path(game_data: RetroHubGameData) -> String:
264+
if game_data.system.name == "ps3":
265+
# PS3 games use PARAM.SFO as the game identifier. We need to use the folder name instead.
266+
var path := game_data.path.get_base_dir()
267+
while not path.is_empty():
268+
if not path.ends_with("PS3_GAME"):
269+
return path.get_file()
270+
path = path.get_base_dir()
271+
272+
return game_data.path.get_file().get_basename()
273+
263274
func retrieve_media_data_async(game_data: RetroHubGameData, types: int = Type.ALL, priority: bool = false):
264275
if not game_data.has_media:
265276
push_error("Error: game %s has no media" % game_data.name)
@@ -287,7 +298,7 @@ func retrieve_media_blurhash(game_data: RetroHubGameData, types: Type = Type.ALL
287298
var game_media_data := RetroHubGameMediaData.new()
288299

289300
var media_path := RetroHubConfig.get_gamemedia_dir().path_join(game_data.system_path)
290-
var game_path := game_data.path.get_file().get_basename()
301+
var game_path := _get_game_path(game_data)
291302

292303
var blurhashes := _get_blurhashes(media_path.path_join("blurhash").path_join(game_path + ".json"))
293304

@@ -367,7 +378,7 @@ func compute_blurhash(game_data: RetroHubGameData) -> void:
367378
print("\t", key, ": ", blurhash)
368379

369380
var media_path := RetroHubConfig.get_gamemedia_dir().path_join(game_data.system_path)
370-
var game_path := game_data.path.get_file().get_basename()
381+
var game_path := _get_game_path(game_data)
371382
var file_path := media_path.path_join("blurhash").path_join(game_path + ".json")
372383
FileUtils.ensure_path(file_path)
373384
JSONUtils.save_json_file(json_data, file_path)

0 commit comments

Comments
 (0)