feat: MP3 asset reclassifier v1.0 - patches type:type document -> audio
This commit is contained in:
parent
c7a6a338df
commit
efd34eb178
1 changed files with 57 additions and 0 deletions
57
mp3-reclassify-v1.0.py
Normal file
57
mp3-reclassify-v1.0.py
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
# ================================================================
|
||||||
|
# AMPP Framelight X — MP3 Asset Reclassifier
|
||||||
|
# Production v1.0
|
||||||
|
#
|
||||||
|
# The S3 File Trigger registers .mp3 files as type "document"
|
||||||
|
# instead of "audio". This script detects MP3 assets and patches
|
||||||
|
# their type:type from "document" to "audio".
|
||||||
|
#
|
||||||
|
# Place this script node AFTER S3 Transfer in the workflow,
|
||||||
|
# BEFORE Generate Proxy. Wire:
|
||||||
|
# S3 Transfer (ok) → MP3 Reclassifier → Generate Proxy / Rename
|
||||||
|
# S3 Transfer (failed) → End (ITS OVER, WE LOST!)
|
||||||
|
#
|
||||||
|
# If the asset is not an MP3, the script exits cleanly via ok
|
||||||
|
# with no changes made.
|
||||||
|
# ================================================================
|
||||||
|
import json
|
||||||
|
|
||||||
|
asset_id = str(asset.Id)
|
||||||
|
asset_name = str(job.AssetName)
|
||||||
|
|
||||||
|
# Check if this is an MP3 file (case-insensitive)
|
||||||
|
if not asset_name.lower().endswith(".mp3"):
|
||||||
|
# Not an MP3 — nothing to do, pass through
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
# Fetch the current asset record to get asset:rev (required for PATCH)
|
||||||
|
try:
|
||||||
|
current = httpClient.sendAsync(
|
||||||
|
"GET",
|
||||||
|
"api/v1/store/asset/Assets/" + asset_id
|
||||||
|
)
|
||||||
|
asset_rev = str(current.get("asset:rev", "0"))
|
||||||
|
except Exception as ex:
|
||||||
|
raise Exception("MP3 Reclassifier: failed to fetch asset record: " + str(ex))
|
||||||
|
|
||||||
|
# PATCH type:type from "document" → "audio"
|
||||||
|
# Uses JSON Patch format as required by the AMPP Assets API
|
||||||
|
patch_body = json.dumps([
|
||||||
|
{
|
||||||
|
"op": "replace",
|
||||||
|
"path": "/type:type",
|
||||||
|
"value": "audio"
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
|
try:
|
||||||
|
httpClient.sendAsync(
|
||||||
|
"PATCH",
|
||||||
|
"api/v1/store/asset/Assets/" + asset_id,
|
||||||
|
patch_body
|
||||||
|
)
|
||||||
|
except Exception as ex:
|
||||||
|
raise Exception(
|
||||||
|
"MP3 Reclassifier: PATCH failed for asset '"
|
||||||
|
+ asset_name + "' (" + asset_id + "): " + str(ex)
|
||||||
|
)
|
||||||
Loading…
Reference in a new issue