[importers] WebDAV for retroarch should stash in procesesd now
This commit is contained in:
13
PROJECT.org
13
PROJECT.org
@ -93,7 +93,7 @@ fetching and simple saving.
|
||||
:LOGBOOK:
|
||||
CLOCK: [2025-07-09 Wed 09:55]--[2025-07-09 Wed 10:15] => 0:20
|
||||
:END:
|
||||
* Backlog [35/52] :vrobbler:project:personal:
|
||||
* Backlog [37/53] :vrobbler:project:personal:
|
||||
** TODO [#C] Add sentiment parsing for Scrobbles with notes :vrobbler:project:scrobbles:sentiment:
|
||||
:PROPERTIES:
|
||||
:ID: 37781d6a-f3b0-48b2-bf98-33c2c791cf85
|
||||
@ -489,7 +489,16 @@ to GMT to save it in the database.
|
||||
|
||||
It would be nice to not duplicate comments that exist on a task when it's first scrobbled.
|
||||
|
||||
** STRT [#A] Add listenbrainz support for similar tracks :feature:music:metadata:
|
||||
** DONE [#A] Move imported retroarch lrtl files to processed/ directory on WebDAV :webdav:retroarch:importers:
|
||||
:PROPERTIES:
|
||||
:ID: 881b5af6-e96f-4e71-9e66-2d30824e5504
|
||||
:END:
|
||||
|
||||
- File: ~vrobbler/apps/scrobbles/importers/webdav.py~ (line 439)
|
||||
- Same pattern as the GPX importer: after importing a =.csv= file from
|
||||
WebDAV, move it to =var/retroarch/processed/= with a timestamp appended.
|
||||
|
||||
** DONE [#A] Add listenbrainz support for similar tracks :feature:music:metadata:
|
||||
:PROPERTIES:
|
||||
:ID: a3abba14-7603-db51-58e1-1941a47fa35e
|
||||
:END:
|
||||
|
||||
@ -330,13 +330,19 @@ def scan_webdav_for_retroarch(webdav_client, user_id, update_hash_only=False):
|
||||
from scrobbles.models import RetroarchImport
|
||||
from scrobbles.tasks import process_retroarch_import
|
||||
|
||||
retroarch_path = DEFAULT_RETROARCH_PATH + "playlogs/"
|
||||
retroarch_path = DEFAULT_RETROARCH_PATH
|
||||
processed_dir = f"{retroarch_path}processed/"
|
||||
try:
|
||||
webdav_client.info(retroarch_path)
|
||||
except:
|
||||
logger.info("No var/retroarch/ directory on webdav", extra={"user_id": user_id})
|
||||
return 0
|
||||
|
||||
try:
|
||||
webdav_client.mkdir(processed_dir, recursive=True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
files = webdav_client.list(retroarch_path, get_info=True)
|
||||
except Exception as e:
|
||||
@ -346,6 +352,11 @@ def scan_webdav_for_retroarch(webdav_client, user_id, update_hash_only=False):
|
||||
)
|
||||
return 0
|
||||
|
||||
# Extract basename from path since the webdav adapter returns name=None
|
||||
for f in files:
|
||||
if f.get("path") and not f.get("name"):
|
||||
f["name"] = os.path.basename(f["path"])
|
||||
|
||||
lrtl_files = sorted(
|
||||
[f for f in files if (f.get("name") or "").lower().endswith(".lrtl")],
|
||||
key=lambda x: (x.get("name") or ""),
|
||||
@ -400,15 +411,25 @@ def scan_webdav_for_retroarch(webdav_client, user_id, update_hash_only=False):
|
||||
download_dir = tempfile.mkdtemp()
|
||||
try:
|
||||
downloaded = []
|
||||
imported_filenames = []
|
||||
for f in lrtl_files:
|
||||
basename = f.get("name")
|
||||
remote_path = f"{retroarch_path}{basename}"
|
||||
dst = os.path.join(download_dir, basename)
|
||||
try:
|
||||
webdav_client.download_sync(
|
||||
remote_path=f.get("path"),
|
||||
remote_path=remote_path,
|
||||
local_path=dst,
|
||||
)
|
||||
downloaded.append(basename)
|
||||
|
||||
ts = datetime.now().strftime("%Y%m%d%H%M%S")
|
||||
processed_name = f"{ts}-{basename}"
|
||||
imported_filenames.append(processed_name)
|
||||
webdav_client.move(
|
||||
remote_path,
|
||||
f"{processed_dir}{processed_name}",
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error("Failed to download retroarch %s: %s", basename, e)
|
||||
|
||||
@ -425,7 +446,7 @@ def scan_webdav_for_retroarch(webdav_client, user_id, update_hash_only=False):
|
||||
|
||||
imp = RetroarchImport.objects.create(
|
||||
user_id=user_id,
|
||||
original_filename=f"batch-{len(downloaded)}-files",
|
||||
original_filename=", ".join(imported_filenames),
|
||||
files_hash=content_hash,
|
||||
)
|
||||
with open(zip_path, "rb") as f:
|
||||
|
||||
Reference in New Issue
Block a user