Documentation

Synchronisation de médias : commandes CLI

Gardez un dossier de médias synchronisé avec SharePoint, OneDrive, Dropbox ou Google Drive : ajoutez des comptes, créez et lancez des synchronisations.

Chaque commande s’exécute comme décrit dans la référence CLI : drapeaux globaux, sortie JSON, codes de sortie, révisions et réessais.

Synchronisation de médias

Une synchronisation de médias garde un dossier de médias à jour avec un dossier SharePoint, OneDrive Entreprise, Dropbox ou Google Drive. Chaque exécution importe les images (png, jpeg, webp, gif), les vidéos (mp4, webm) et l’audio (mp3) situés directement dans le dossier source ; les sous-dossiers sont ignorés. Un fichier modifié remplace ses octets sous le même ID média, de sorte que chaque liste de lecture qui le joue se met à jour, et un fichier supprimé ou déplacé hors de la source cesse d’être lu : son média est supprimé ou, tant qu’un écran l’affiche encore, déplacé dans un sous-dossier Removed puis supprimé quand plus rien ne l’utilise. Les autres fichiers sont listés comme ignorés avec la raison : affichez un fichier Office ou un PDF avec un lien de document dans une liste de lecture, et exportez les MOV et semblables en MP4 H.264. Une liste de lecture joue le dossier avec un sélecteur by:folder.

Chaque synchronisation lit par un compte du projet. Un ID de compte commence par msa_ et un ID de synchronisation par msy_. media sync account add microsoft365 stocke votre propre application Microsoft Entra, ou désigne une connexion Microsoft du projet ; media sync account add dropbox affiche un lien à usage unique pour la personne titulaire du compte Dropbox ; media sync account add google-drive lit les dossiers partagés avec l’adresse d’un compte de service, celle de screenRIG ou la vôtre. Testez le compte, puis créez une synchronisation à partir de l’adresse d’un dossier : elle est à exécuter immédiatement.

Donnez un secret client avec --secret-file FILE et une clé Google Drive avec --key-file FILE, ou - pour l’entrée standard, jamais comme argument. Les secrets sont scellés sur le serveur et renvoyés uniquement sous la forme data.secret {set, hint}. La lecture exige l’accès Read, et tout changement exige l’accès Manage.

media sync account add microsoft365#

Ajoutez votre propre application Microsoft Entra, ou une connexion Microsoft du projet, pour qu’une synchronisation puisse lire un dossier SharePoint ou OneDrive Entreprise.

media sync account add microsoft365 --name NAME
    (--tenant-id TENANT --client-id ID --secret-file FILE | --connection-id ID)
ParamètreTypeRequisPar défautNotes
--name NAMEstringouiaucun1 à 80 caractères.
--tenant-id TENANTstringsans --connection-idaucunL’ID de répertoire (locataire) de votre organisation, ou son domaine principal, comme contoso.onmicrosoft.com ; jamais common, organizations ni consumers. En même temps que --client-id et --secret-file.
--client-id IDstringsans --connection-idaucunL’ID d’application (client) de l’inscription d’application, un GUID.
--secret-file FILEstringsans --connection-idaucunLit la Value du secret client depuis ce fichier, ou - pour l’entrée standard (jamais un argument) ; le fichier ne contient que la Value.
--connection-id IDstringsans --tenant-idaucunSe connecte par une connexion Microsoft (pcn_…) du projet, dans l’un ou l’autre mode, à la place de --tenant-id, --client-id et --secret-file. Pas avec eux.
screenrig media sync account add microsoft365 --name Contoso --tenant-id contoso.onmicrosoft.com --client-id 0b1d2f3a-4c5e-4f60-8a7b-9c0d1e2f3a4b --secret-file secret.txt
screenrig media sync account add microsoft365 --name Contoso --connection-id pcn_01EXAMPLECONNECTION0000

Dans le Microsoft Entra admin center, inscrivez une application à locataire unique sans URI de redirection, ajoutez un secret client (copiez sa Value, pas son Secret ID), ajoutez l’autorisation d’application Microsoft Graph Sites.Selected (puis accordez à l’application l’accès en lecture à chaque site) ou Files.Read.All, et accordez le consentement de l’administrateur. L’application appartient à ce projet. Exécutez ensuite media sync account test.

media sync account add dropbox#

Ajoutez un compte Dropbox et affichez le lien à usage unique que son titulaire ouvre, connecté à Dropbox, pour le connecter.

media sync account add dropbox --name NAME [--app-key KEY]
ParamètreTypeRequisPar défautNotes
--name NAMEstringouiaucun1 à 80 caractères.
--app-key KEYstringnonl’application Dropbox de screenRIGLa clé d’application de votre propre application Dropbox : de 1 à 64 lettres et chiffres, jamais son secret d’application.
screenrig media sync account add dropbox --name "Marketing Dropbox"
screenrig media sync account add dropbox --name "Marketing Dropbox" --app-key YOURAPPKEY

data.authorize_url est le lien et data.authorize_expires_at son expiration. Le CLI n’ouvre jamais de navigateur : envoyez le lien à la personne titulaire du compte Dropbox, qui autorise un accès en lecture seule (files.metadata.read, files.content.read, account_info.read, sharing.read). Exécutez media sync account show jusqu’à ce que data.state soit ready (il vaut d’abord pending_consent), puis media sync create dropbox. Votre propre application Dropbox doit avoir ces autorisations activées et l’URI de redirection qu’affiche la sortie.

media sync account add google-drive#

Ajoutez un compte Google Drive, prêt immédiatement, et affichez l’adresse du compte de service avec laquelle les dossiers sont partagés.

media sync account add google-drive --name NAME [--key-file FILE]
ParamètreTypeRequisPar défautNotes
--name NAMEstringouiaucun1 à 80 caractères.
--key-file FILEstringnonle compte de service de screenRIGLit la clé JSON de votre propre compte de service Google Cloud depuis ce fichier, ou - pour l’entrée standard (jamais un argument).
screenrig media sync account add google-drive --name "Marketing Drive"
screenrig media sync account add google-drive --name "Marketing Drive" --key-file key.json

data.config.service_account_email est l’adresse avec laquelle partager chaque dossier ; le rôle Lecteur suffit. Avec le compte de service de screenRIG, un dossier ne se synchronise que si un membre de ce projet dont le courriel est vérifié l’a partagé ou en est propriétaire (sinon media_sync_sharer_not_member). Avec votre propre clé, tout dossier partagé avec le compte de service se synchronise.

media sync account list#

Liste les comptes de synchronisation de médias de ce projet avec leur type, leur état et leur dernier test ; aucun secret n’est renvoyé.

media sync account list

Aucun paramètre.

screenrig media sync account list

media sync account show#

Consultez un compte : son locataire et son ID client, son état, son secret masqué et son dernier test.

media sync account show <id>
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunLe compte (msa_…).
screenrig media sync account show msa_01EXAMPLEACCOUNT0000000

Un compte Dropbox affiche aussi qui l’a connecté et son app_key ; un compte Google Drive affiche son service_account_email.

media sync account update#

Renommez un compte, modifiez le locataire, l’ID d’application ou le secret client d’une application Microsoft, ou remplacez la clé propre d’un compte Google Drive.

media sync account update <id> [--name NAME] [--tenant-id TENANT] [--client-id ID]
    [--secret-file FILE | --key-file FILE] [--expect-rev REVISION]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunLe compte (msa_…).
--name NAMEstringnoninchangéRenomme le compte.
--tenant-id TENANTstringnoninchangéL’ID de répertoire du locataire, ou son domaine principal.
--client-id IDstringnoninchangéL’ID d’application (client) de l’inscription d’application.
--secret-file FILEstringnoninchangéLit la Value du nouveau secret client depuis ce fichier, ou - pour l’entrée standard ; elle remplace le secret stocké. Un secret omis est conservé.
--key-file FILEstringnoninchangéLit la clé JSON propre d’un compte Google Drive depuis ce fichier, ou - pour l’entrée standard ; elle doit appartenir au même compte de service. Pas avec --secret-file.
--expect-rev REVISIONintegernonaucunRefuse le changement sauf si le compte est à cette révision (revision_conflict, sortie 6).
screenrig media sync account update msa_01EXAMPLEACCOUNT0000000 --secret-file new-secret.txt
screenrig media sync account update msa_01EXAMPLEACCOUNT0000000 --name "Contoso tenant" --expect-rev 2

Au moins un changement est requis. Un changement d’identifiants efface last_test : testez de nouveau le compte. Les secrets client Entra expirent : remplacez donc le secret ici avant son expiration.

media sync account connect#

Créez un nouveau lien à usage unique pour connecter, ou reconnecter, un compte Dropbox.

media sync account connect <id>
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunLe compte (msa_…).
screenrig media sync account connect msa_01EXAMPLEACCOUNT0000000

data.authorize_url et data.authorize_expires_at portent le lien, qui remplace le précédent. Envoyez-le à la personne titulaire du compte Dropbox. Utilisez-le quand la personne n’a pas terminé ou que le compte est reconnect_required (Dropbox n’honore plus la connexion). Un compte connecté reste connecté jusqu’à ce que le nouveau consentement soit terminé, et un autre compte Dropbox qui se connecte reprend la connexion.

media sync account test#

Vérifiez un compte : l’ouverture de session et les autorisations Graph d’une application Microsoft, ou la connexion ou la clé d’un compte Dropbox ou Google Drive.

media sync account test <id>
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunLe compte (msa_…).
screenrig media sync account test msa_01EXAMPLEACCOUNT0000000

La réponse est stockée sous last_test. Pour une application Microsoft, le test rapporte credentials (Microsoft a émis un jeton ; un refus porte son code AADSTS, comme AADSTS7000215 pour un secret qui est l’ID plutôt que la Value) et permissions (les autorisations d’application Graph que le jeton porte). Sites.Selected seule est un avertissement : chaque site a encore besoin de son autorisation, et un lien de partage exige Files.Read.All. Le test ne juge ni l’autorisation d’un site ni un dossier : media sync create lit le dossier que vous nommez. Une vérification échouée donne data.ok à false avec la sortie 0.

media sync account delete#

Supprimez un compte qu’aucune synchronisation n’utilise.

media sync account delete <id> [--expect-rev REVISION]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunLe compte (msa_…).
--expect-rev REVISIONintegernonaucunRefuse la suppression sauf si le compte est à cette révision (revision_conflict, sortie 6).
screenrig media sync account delete msa_01EXAMPLEACCOUNT0000000

Tant que des synchronisations utilisent le compte, la réponse est resource_conflict (sortie 5), en les nommant : supprimez-les d’abord.

media sync create sharepoint#

Synchronisez un dossier SharePoint ou OneDrive Entreprise dans un dossier de médias.

media sync create sharepoint --account-id ID --url URL [--folder-id ID] [--every DURATION] [--name NAME]
ParamètreTypeRequisPar défautNotes
--account-id IDstringouiaucunLe compte par lequel lire (msa_…).
--url URLstringouiaucunL’adresse SharePoint du dossier, comme https://contoso.sharepoint.com/sites/Marketing/Shared%20Documents/Lobby%20Signs, qui fonctionne avec Sites.Selected une fois le site autorisé, ou son lien de partage (Share, Copy link), qui exige Files.Read.All. Le OneDrive personnel (onedrive.live.com, 1drv.ms) ne peut pas être lu avec une application d’organisation.
--folder-id IDstringnonun nouveau dossier de médias nommé d’après le dossier sourceLe dossier de médias (mfd_…) où les fichiers sont placés.
--every DURATIONstringnon15mFréquence de recherche des changements, de 5 minutes à 24 heures : 15m, 1h, 6h, ou de simples secondes (de 300 à 86400).
--name NAMEstringnonle nom du dossier source1 à 80 caractères.
screenrig media sync create sharepoint --account-id msa_01EXAMPLEACCOUNT0000000 --url https://contoso.sharepoint.com/sites/Marketing/Shared%20Documents/Lobby%20Signs
screenrig media sync create sharepoint --account-id msa_01EXAMPLEACCOUNT0000000 --url "https://contoso.sharepoint.com/:f:/s/Marketing/EabcDEF" --folder-id mfd_01EXAMPLEFOLDER000000000 --every 1h --name "Lobby signs"

Un dossier que Microsoft refuse donne media_sync_source_refused (sortie 5), avec l’autorisation à accorder ; rien n’est stocké.

media sync create dropbox#

Synchronisez un dossier Dropbox dans un dossier de médias.

media sync create dropbox --account-id ID --url URL|PATH [--folder-id ID] [--every DURATION] [--name NAME]
ParamètreTypeRequisPar défautNotes
--account-id IDstringouiaucunLe compte Dropbox connecté par lequel lire (msa_…).
--url URLstringouiaucunL’adresse Dropbox du dossier (https://www.dropbox.com/home/...), un lien de dossier partagé que le compte a ajouté à son Dropbox, ou un chemin qui commence par /. Un dossier d’espace d’équipe est lu à partir de la racine de l’équipe.
--folder-id IDstringnonun nouveau dossier de médias nommé d’après le dossier sourceLe dossier de médias (mfd_…) où les fichiers sont placés.
--every DURATIONstringnon15mFréquence de recherche des changements, de 5 minutes à 24 heures : 15m, 1h, 6h, ou de simples secondes (de 300 à 86400).
--name NAMEstringnonle nom du dossier source1 à 80 caractères.
screenrig media sync create dropbox --account-id msa_01EXAMPLEACCOUNT0000000 --url https://www.dropbox.com/home/Marketing/Lobby%20Signs
screenrig media sync create dropbox --account-id msa_01EXAMPLEACCOUNT0000000 --url /Marketing/Lobby --folder-id mfd_01EXAMPLEFOLDER000000000 --every 1h --name "Lobby signs"

Chaque exécution reprend à partir de la position enregistrée par Dropbox dans le dossier et ne lit que ce qui a changé. Un dossier que le compte ne peut pas ouvrir donne media_sync_source_refused, et une connexion que Dropbox n’honore plus donne dropbox_reconnect_required (media sync account connect) : les deux donnent la sortie 5, rien n’est stocké.

media sync create google-drive#

Synchronisez un dossier Google Drive, partagé avec le compte de service d’un compte, dans un dossier de médias.

media sync create google-drive --account-id ID --url URL|ID [--folder-id ID] [--every DURATION] [--name NAME]
ParamètreTypeRequisPar défautNotes
--account-id IDstringouiaucunLe compte Google Drive par lequel lire (msa_…).
--url URLstringouiaucunL’adresse du dossier (https://drive.google.com/drive/folders/ID), ou son ID. Partagez d’abord le dossier avec le service_account_email du compte ; le rôle Lecteur suffit.
--folder-id IDstringnonun nouveau dossier de médias nommé d’après le dossier sourceLe dossier de médias (mfd_…) où les fichiers sont placés.
--every DURATIONstringnon15mFréquence de recherche des changements, de 5 minutes à 24 heures : 15m, 1h, 6h, ou de simples secondes (de 300 à 86400).
--name NAMEstringnonle nom du dossier source1 à 80 caractères.
screenrig media sync create google-drive --account-id msa_01EXAMPLEACCOUNT0000000 --url https://drive.google.com/drive/folders/1AbCdEfGhIjKlMnOpQrStUvWxYz --folder-id mfd_01EXAMPLEFOLDER000000000 --every 1h
screenrig media sync create google-drive --account-id msa_01EXAMPLEACCOUNT0000000 --url 1AbCdEfGhIjKlMnOpQrStUvWxYz

Avec le compte de service de screenRIG, le dossier ne se synchronise que si un membre de ce projet dont le courriel est vérifié l’a partagé ou en est propriétaire (media_sync_sharer_not_member, sortie 3, rien n’est stocké). Chaque exécution le vérifie de nouveau, et un dossier qui perd une telle personne arrête la synchronisation à l’état error, ses médias étant conservés : partagez-le de nouveau depuis le compte Google d’un membre, puis exécutez media sync update ID --resume. Les fichiers Google Docs, Sheets et Slides sont ignorés comme unsupported_type. Un dossier que l’adresse ne peut pas ouvrir donne media_sync_source_refused (sortie 5) : partagez-le avec le compte de service.

media sync list#

Liste les synchronisations de médias de ce projet avec leur dossier de médias, leur cadence, leur état et le statut de leur dernière exécution.

media sync list

Aucun paramètre.

screenrig media sync list

media sync show#

Consultez une synchronisation et le résumé de sa dernière exécution.

media sync show <id>
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunLa synchronisation (msy_…).
screenrig media sync show msy_01EXAMPLESYNC000000000

data.last_run porte status (ok, partial ou error), added, updated, removed, pending_delete (fichiers supprimés qu’un écran garde encore, en attente dans le dossier Removed), skipped_total et skipped, les 20 premiers fichiers ignorés avec la raison de chaque fichier (unsupported_type, too_large, storage, subfolder, download_failed, unreadable, in_use) ; une exécution échouée porte error avec un code et un detail qui indiquent la correction. data.source ajoute path pour Dropbox et shared_by pour Google Drive.

Une synchronisation à l’état error a besoin d’une réparation. Son dossier de médias a été supprimé : pointez-la vers un autre avec media sync update --folder-id. Son dossier source a été supprimé ou déplacé : supprimez la synchronisation et créez-en une. Pour Google Drive par le compte de service de screenRIG, le dossier a perdu la personne vérifiée qui le partageait (sharer_not_member) : partagez-le de nouveau depuis le compte Google d’un membre du projet, puis media sync update ID --resume. Une exécution Dropbox échoue avec reconnect_required quand Dropbox cesse d’honorer la connexion (media sync account connect).

media sync update#

Modifiez le nom, la cadence ou le dossier de médias d’une synchronisation, ou mettez-la en pause et reprenez-la.

media sync update <id> [--name NAME] [--every DURATION] [--folder-id ID]
    [--pause | --resume] [--expect-rev REVISION]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunLa synchronisation (msy_…).
--name NAMEstringnoninchangéRenomme la synchronisation.
--every DURATIONstringnoninchangéFréquence de recherche des changements, de 5 minutes à 24 heures.
--folder-id IDstringnoninchangéRemplit ce dossier de médias (mfd_…) à la place. La prochaine exécution relit toute la source et y place chaque fichier synchronisé.
--pausebooleannondésactivéArrête l’exécution jusqu’à la reprise. Pas avec --resume.
--resumebooleannondésactivéReprend l’exécution ; relance aussi une synchronisation qu’une erreur a arrêtée. Pas avec --pause.
--expect-rev REVISIONintegernonaucunRefuse le changement sauf si la synchronisation est à cette révision (revision_conflict, sortie 6).
screenrig media sync update msy_01EXAMPLESYNC000000000 --every 1h
screenrig media sync update msy_01EXAMPLESYNC000000000 --pause
screenrig media sync update msy_01EXAMPLESYNC000000000 --folder-id mfd_01EXAMPLEFOLDER000000000 --expect-rev 3

Au moins un changement est requis.

media sync run#

Exécutez une synchronisation maintenant plutôt qu’à sa prochaine heure.

media sync run <id>
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunLa synchronisation (msy_…).
screenrig media sync run msy_01EXAMPLESYNC000000000

La synchronisation s’exécute en 30 secondes environ, et media sync show affiche alors sa dernière exécution. Une synchronisation en pause doit d’abord être reprise.

media sync delete#

Arrêtez une synchronisation ; ses médias et son dossier restent.

media sync delete <id> [--expect-rev REVISION]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunLa synchronisation (msy_…).
--expect-rev REVISIONintegernonaucunRefuse la suppression sauf si la synchronisation est à cette révision (revision_conflict, sortie 6).
screenrig media sync delete msy_01EXAMPLESYNC000000000

La synchronisation oublie quel fichier source est devenu quel média. Les médias importés et le dossier de médias restent, et rien n’est supprimé.

Autres groupes de commandes