Install
openclaw skills install mupibox-media-dbManage MuPiBox media database (data.json) through the MuPiBox backend API: list, add, remove, move, edit fields, and restore entries.
openclaw skills install mupibox-media-dbManage the MuPiBox media database (data.json) via the backend API.
http://mupibox/, API for this script defaults to http://mupibox:8200; override with --base-url)./scripts/mupibox_media_manager.pyGET /api/dataPOST /api/add, POST /api/edit, POST /api/deleteScript path:
./scripts/mupibox_media_manager.py. Default API endpoint ishttp://mupibox:8200(override with--base-url).
# Show list
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> list --limit 30
# Filter (for example spotify + music)
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> list --type spotify --category music --limit 100
# Manual backup
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> backup
# 1) Raw JSON
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> add \
--json '{"type":"spotify","category":"audiobook","artist":"Example Artist","id":"SPOTIFY_ID"}'
# 2) Spotify URL with automatic ID extraction
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> add \
--type spotify --category audiobook --artist "Example Artist" \
--spotify-url "https://open.spotify.com/album/SPOTIFY_ID"
# By index
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> remove --index 42
# By Spotify ID
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> remove --spotify-id SPOTIFY_ID
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> move --from 20 --to 3
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> set --index 10 \
--field artist="New Artist" \
--field category="audiobook" \
--field shuffle=true
--field accepts JSON values (true, false, numbers, strings).
python3 ./scripts/mupibox_media_manager.py --base-url <BASE_URL> restore \
--file ~/.mupibox-db-backups/data-YYYYMMDD-HHMMSS-before-add.json
add: resolve missing IDs/metadata first, then add.remove: identify entry via list first, then remove.move: confirm target positions, then move.list.