znas photos
Utilisez cette compétence lorsque l'utilisateur pose des questions sur NAS Photos : rechercher des photos ou des vidéos, parcourir les données de la chronologie ou de la carte, gérer les albums, télécharger des albums, trouver des photos similaires ou inspecter les albums de personnes/animaux reconnus par IA.
À quoi sert cette compétence
- Lire et mettre à jour les chemins de configuration Photos.
- Rechercher des photos/vidéos indexées et lire les buckets chronologiques.
- Créer, lister, mettre à jour, supprimer et télécharger des albums utilisateur.
- Démarrer/lister/supprimer des tâches de numérisation de photos similaires et inspecter les groupes.
- Lire les clusters de la carte photo, les emplacements et l'état du commutateur de carte.
- Lire et gérer les albums de fonctionnalités reconnues par IA, tels que les personnes ou les animaux.
Règles de découverte
- Privilégiez la découverte progressive en ligne de commande plutôt que de deviner :
znas photos --helpznas photos <feature> --helpznas photos <feature> <command> --help
- Utilisez
znas schema photoslorsque vous avez besoin de l'inventaire des routes, du type de charge utile, des exemples et des indicateurs binaires/écriture en JSON. - Conservez les noms des champs backend exactement comme indiqués dans l'aide/schéma : exemples :
fileIds,taskId,groupId,albumId,album_id,fIdseteaHash. - Ne traduisez pas aveuglément tous les ID en chaînes. Préservez les noms des champs et les formes des valeurs renvoyées par les lectures API précédentes.
Règles de sécurité
- Lisez l'état actuel avant chaque écriture ou suppression.
- Après la réussite d'une écriture/suppression, réexécutez la commande de lecture correspondante avant de signaler le succès final.
- N'utilisez pas d'outils natifs de l'hôte ou de
curlinterne direct pour le plan de contrôle Photos lorsqueznas photos ...dispose de la route. - Le backend Photos n'expose pas de mode dry-run universel. Pour les actions destructrices, inspectez d'abord la cible exacte et maintenez la mutation limitée.
- Pour les numérisations asynchrones de photos similaires, la création de tâche ne fait que mettre en file d'attente le travail. Utilisez
similar task-listet les lectures de groupes pour l'état. - Les routes d'album normales et les routes d'album de fonctionnalités IA sont des surfaces différentes ; ne mélangez pas
album_idavecalbumId.
Règles de sortie binaire
Les routes marquées comme binaires nécessitent -o <fichier> pour que la sortie standard reste analysable :
znas photos album download ... -o album.zipznas photos photo stream ... -o live.movznas photos feature avatar ... -o avatar.jpg
Si la commande échoue, la CLI valide les réponses d'erreur JSON avant d'écrire un fichier.
Flux de travail courants
Lecture de l'état Photos
znas photos setting config
znas photos photo search --json '{"index":0,"size":20}'
znas photos photo timeline --params '{"time_tpl":"YYYY-MM","sort_order":1}'
Flux de travail des albums
znas photos album list --params '{"index":0,"size":20}'
znas photos album create --json '{"name":"Voyage"}'
znas photos album add-photos --json '{"album_id":123,"fileIds":["456"]}'
znas photos album get --params '{"album_id":123}'
znas photos album download --json '{"album_id":123,"download_name_prefix":"Voyage"}' -o voyage.zip
Photos similaires
znas photos similar task-list --params '{"index":0,"size":20,"imgSize":20,"groupSize":4}'
znas photos similar task-create --json '{"dirPath":["/personal/Photos"]}'
znas photos similar group-list --params '{"taskId":123,"index":0,"size":20,"imgSize":20}'
znas photos similar group-detail --params '{"taskId":123,"groupId":456,"offset":0,"size":50}'
Albums de carte et de fonctionnalités IA
znas photos map last-location
znas photos map bounds --params '{"minLat":30,"maxLat":31,"minLon":120,"maxLon":121,"zoomLevel":10}'
znas photos feature progress --params '{"taskType":1}'
znas photos feature album-list --params '{"taskType":1,"index":0,"size":20,"isHide":false}'
znas photos feature album-photos --params '{"albumId":123,"index":0,"size":50}'
Fonctionnalités
album
POSTdownload->/downloadFiles(auth)- flags:
binary - canonical:
photos album download - payload:
--json - example:
znas photos album download --json '{"album_id":123,"download_name_prefix":"album"}' -o album.zip - pitfall: Le téléchargement peut utiliser
album_idoustr_paths; il renvoie des données zip binaires et nécessite-o <fichier>.
- flags:
POSTcreate->/album/createAlbum(auth)- flags:
write - payload:
--json; obligatoire :name - example:
znas photos album create --json '{"name":"Voyage","description":"Voyage 2026"}' - pitfall: Créez d'abord l'album, puis ajoutez des photos avec
album add-photos.
- flags:
PUTupdate->/album/updateAlbum(auth)- flags:
write - payload:
--json; obligatoire :id - example:
znas photos album update --json '{"id":123,"name":"Voyage modifié"}' - pitfall: Utilisez le champ backend
id, pasalbum_id, pour la mise à jour d'un album normal.
- flags:
DELETEdelete->/album/deleteAlbum(auth)- flags:
destructive - payload:
--json; obligatoire :id - example:
znas photos album delete --json '{"id":123}' - pitfall: Supprimez l'album uniquement après l'avoir lu ; cela ne signifie pas la suppression des fichiers d'origine, sauf si le comportement du backend change.
- flags:
GETlist->/album/listAlbum(auth)- payload:
--params; obligatoire :size - example:
znas photos album list --params '{"index":0,"size":20,"sort_type":2,"sort_order":1}' - pitfall: List est une requête GET ; utilisez
indexetsize, pas un corps JSON.
- payload:
POSTadd-photos->/album/addPhotoToAlbum(auth)- flags:
write - payload:
--json; obligatoire :album_id - example:
znas photos album add-photos --json '{"album_id":123,"fileIds":["456"]}' - pitfall: Le champ backend est
fileIdsavec un I majuscule ;pathsest également pris en charge lorsque vous avez des chemins NAS exacts.
- flags:
DELETEremove-photos->/album/removeAlubmPhotos(auth)- flags:
destructive - canonical:
photos album remove-photos - payload:
--json; obligatoire :album_id - example:
znas photos album remove-photos --json '{"album_id":123,"fileIds":["456"]}' - pitfall: La CLI masque la faute de frappe en amont
removeAlubmPhotos; utilisez la commande sémantiqueremove-photos.
- flags:
GETget->/album/getAlbum(auth)- payload:
--params; obligatoire :album_id - example:
znas photos album get --params '{"album_id":123}' - pitfall: Le détail de l'album est une requête GET ; passez
album_idvia--params.
- payload:
feature
GETprogress->/feature/process(auth)- payload:
--params - example:
znas photos feature progress --params '{"taskType":1}' - pitfall: Omettre
taskTypelit la progression par défaut du backend ; passez-le lorsque l'utilisateur demande spécifiquement des visages ou des animaux.
- payload:
DELETEclear->/feature/clear(auth)- flags:
destructive - payload:
--json; obligatoire :taskType - example:
znas photos feature clear --json '{"taskType":1}' - pitfall: Cela réinitialise les données d'album de fonctionnalité découvertes pour le type de tâche ; lisez d'abord la progression/la liste.
- flags:
GETswitch->/feature/switch(auth)- payload:
--params; obligatoire :type - example:
znas photos feature switch --params '{"type":1}' - pitfall: Les lectures du commutateur utilisent le champ
type; les filtres d'album de tâche utilisenttaskType.
- payload:
PUTset-switch->/feature/switch(auth)- flags:
write - payload:
--json; obligatoire :type,switch - example:
znas photos feature set-switch --json '{"type":1,"switch":1}' - pitfall: Après avoir basculé, relisez
feature switchavant de signaler l'état final.
- flags:
PUTset-config->/feature/switch/config(auth)- flags:
write - payload:
--json; obligatoire :type,hideNum - example:
znas photos feature set-config --json '{"type":1,"hideNum":5}' - pitfall: Utilisez
hideNumexactement ; snake_case n'est pas accepté par ce backend.
- flags:
GETalbum-list->/feature/album/list(auth)- payload:
--params; obligatoire :index,size - example:
znas photos feature album-list --params '{"taskType":1,"index":0,"size":20,"isHide":false}' - pitfall: Les albums de fonctionnalités reconnues utilisent des champs en camelCase tels que
taskTypeetisHide.
- payload:
GETalbum-count->/feature/album/count(auth)- payload:
--params - example:
znas photos feature album-count --params '{"taskType":1,"isHide":false}' - pitfall: Utilisez
album-listlorsque vous avez besoin des identités des albums, pas seulement des comptages.
- payload:
GETrelation->/feature/relation(auth)- payload:
--params - example:
znas photos feature relation --params '{"taskType":1}' - pitfall: Les relations sont des options pour les albums reconnus ; lisez-les avant de mettre à jour le texte de la relation.
- payload:
GETalbum-get->/feature/album(auth)- payload:
--params; obligatoire :albumId - example:
znas photos feature album-get --params '{"albumId":123}' - pitfall: Les ID d'album de fonctionnalité utilisent le champ
albumId, contrairement au détail d'album normal qui utilisealbum_id.
- payload:
PUTalbum-update->/feature/album(auth)- flags:
write - payload:
--json; obligatoire :albumId - example:
znas photos feature album-update --json '{"albumId":123,"name":"Alice"}' - pitfall: Utilisez
coverId,coverPathourelationuniquement lorsque vous avez des valeurs issues de lectures précédentes.
- flags:
POSTalbum-hide->/feature/album/hide(auth)- flags:
write - payload:
--json; obligatoire :albumIds,isHide - example:
znas photos feature album-hide --json '{"albumIds":[123],"isHide":true}' - pitfall: Vérifiez les listes masquées et visibles après avoir modifié
isHide.
- flags:
POSTalbum-merge->/feature/album/merge(auth)- flags:
destructive - payload:
--json; obligatoire :albumIds,targetId - example:
znas photos feature album-merge --json '{"albumIds":[123,124],"targetId":123}' - pitfall: Lisez d'abord tous les albums source ;
targetIddoit être l'album qui reste.
- flags:
GETalbum-photos->/feature/album/photos(auth)- payload:
--params; obligatoire :albumId,index,size - example:
znas photos feature album-photos --params '{"albumId":123,"index":0,"size":50}' - pitfall: Utilisez ceci pour les albums reconnus ; utilisez
album getpour les albums utilisateur normaux.
- payload:
PUTalbum-photo-update->/feature/album/photo(auth)- flags:
write - payload:
--json; obligatoire :albumId,fIds - example:
znas photos feature album-photo-update --json '{"albumId":123,"fIds":[456]}' - pitfall: Cela déplace les lignes de photo de fonctionnalité reconnue ;
fIdssont les ID de ligne de fonctionnalité provenant dealbum-photos.
- flags:
DELETEalbum-photo-delete->/feature/album/photo(auth)- flags:
destructive - payload:
--json; obligatoire :fIds - example:
znas photos feature album-photo-delete --json '{"fIds":[456]}' - pitfall: Lisez d'abord
album-photoset réutilisez les ID de ligne de fonctionnalité retournés.
- flags:
GETavatar->/feature/avatar(auth)- flags:
binary - payload:
--params; obligatoire :eaHash - example:
znas photos feature avatar --params '{"eaHash":"<hash>"}' -o avatar.jpg - pitfall: Cette route renvoie un fichier image ; passez toujours
-o <fichier>.
- flags:
map
GETforward->/map/forward(auth)- payload:
--params; obligatoire :coords,model - example:
znas photos map forward --params '{"coords":"116.3,39.9","model":1}' - pitfall: Plusieurs coordonnées sont séparées par des points-virgules à l'intérieur de
coords.
- payload:
GETswitch->/map/switch(auth)- payload:
--params; obligatoire :type - example:
znas photos map switch --params '{"type":2}' - pitfall: Le commutateur de carte utilise le champ de requête de fonctionnalité
type; le type de commutateur de carte actuel est généralement 2.
- payload:
PUTset-switch->/map/switch(auth)- flags:
write - payload:
--json; obligatoire :type,switch - example:
znas photos map set-switch --json '{"type":2,"switch":1}' - pitfall: Écrivez, puis relisez
map switchavant de signaler l'état final.
- flags:
GETlast-location->/map/lastLocation(auth)- payload:
none - example:
znas photos map last-location - pitfall: Un résultat vide peut signifier qu'aucune photo indexée ne contient de données GPS utilisables.
- payload:
GETbounds->/map/bounds(auth)- payload:
--params; obligatoire :minLat,maxLat,minLon,maxLon,zoomLevel - example:
znas photos map bounds --params '{"minLat":30,"maxLat":31,"minLon":120,"maxLon":121,"zoomLevel":10}' - pitfall: Les limites utilisent des champs de latitude/longitude en camelCase ; les valeurs min doivent être inférieures aux valeurs max.
- payload:
GETgeohash->/map/geohash(auth)- payload:
--params; obligatoire :geohash,index,size - example:
znas photos map geohash --params '{"geohash":"wtw3;wtw6","index":0,"size":20,"sortOrder":1}' - pitfall: Plusieurs geohashes sont séparés par des points-virgules dans une seule chaîne
geohash.
- payload:
GETcountries->/map/location/country(auth)- payload:
--params; obligatoire :index,size,viewType,citySize - example:
znas photos map countries --params '{"index":0,"size":20,"viewType":1,"citySize":5}' - pitfall: Utilisez cette route pour une vue d'ensemble groupée des emplacements ; utilisez
citiesaprès avoir choisi un pays.
- payload:
GETcities->/map/location/city(auth)- payload:
--params; obligatoire :country,offset,size - example:
znas photos map cities --params '{"country":"Chine","offset":0,"size":20}' - pitfall: La recherche de ville nécessite la chaîne
countryexacte renvoyée parcountries.
- payload:
GETcity-photos->/map/location/city/photo(auth)- payload:
--params; obligatoire :addressId,index,size - example:
znas photos map city-photos --params '{"addressId":123,"index":0,"size":50}' - pitfall: Utilisez
addressIdde la réponse de la ville, pas le nom de la ville affiché.
- payload:
photo
POSTsearch->/photos/search(auth)- payload:
--json; obligatoire :index,size - example:
znas photos photo search --json '{"index":0,"size":20,"keyword_search":"plage"}' - pitfall: La recherche de photos est un POST JSON ; conservez les noms de champs backend tels que
keyword_search,album_idsetcity_ids.
- payload:
GETtimeline->/photos/getTimeBuckets(auth)- payload:
--params - example:
znas photos photo timeline --params '{"time_tpl":"YYYY-MM","sort_order":1}' - pitfall: La chronologie est une route GET ; passez les filtres avec
--params, pas--json.
- payload:
GETstream->/photos/stream(auth)- flags:
binary - payload:
--params; obligatoire :id - example:
znas photos photo stream --params '{"id":123456}' -o live.mov - pitfall: Cette route renvoie des données binaires de live-photo ; passez toujours
-o <fichier>.
- flags:
setting
POSTinit->/setting/init(auth)- flags:
write - payload:
--json; obligatoire :init_path - example: `znas photos setting init --json '{"init_path":"/personal/Photos"}'
- flags:
…
[Le contenu a été tronqué pour la traduction]