Dokumentation

Mediensynchronisierung: CLI-Befehle

Einen Medienordner mit SharePoint, OneDrive, Dropbox oder Google Drive abgleichen: Konten hinzufügen, Synchronisierungen anlegen und ausführen.

Jeder Befehl läuft wie in der CLI-Referenz beschrieben: globale Flags, JSON-Ausgabe, Beendigungscodes, Revisionen und Wiederholungen.

Mediensynchronisierung

Eine Mediensynchronisierung gleicht einen Medienordner mit einem SharePoint-, OneDrive-for-Work-, Dropbox- oder Google-Drive-Ordner ab. Jeder Lauf importiert die Bilder (png, jpeg, webp, gif), Videos (mp4, webm) und Audiodateien (mp3), die direkt im Quellordner liegen; Unterordner werden ignoriert. Eine geänderte Datei ersetzt ihre Bytes unter derselben Medien-ID, sodass jede Playlist, die sie abspielt, aktualisiert wird, und eine an der Quelle entfernte oder herausverschobene Datei verlässt die Wiedergabe: Ihr Medium wird gelöscht oder, solange ein Bildschirm es noch zeigt, in einen Unterordner Removed verschoben und gelöscht, sobald nichts mehr darauf zugreift. Andere Dateien werden mit dem Grund als übersprungen aufgelistet: Zeigen Sie eine Office-Datei oder ein PDF mit einem Dokumentlink in einer Playlist, und exportieren Sie MOV und Ähnliches als MP4 H.264. Eine Playlist spielt den Ordner mit einem by:folder-Selektor ab.

Jede Synchronisierung liest über ein Konto des Projekts. Eine Konto-ID beginnt mit msa_ und eine Synchronisierungs-ID mit msy_. media sync account add microsoft365 speichert Ihre eigene Microsoft-Entra-App oder nennt eine Microsoft-Verbindung des Projekts; media sync account add dropbox gibt einen einmaligen Link für die Person aus, der das Dropbox-Konto gehört; media sync account add google-drive liest die Ordner, die für die Adresse eines Dienstkontos freigegeben sind, von screenRIG oder Ihrem eigenen. Testen Sie das Konto und legen Sie dann aus der Adresse eines Ordners eine Synchronisierung an: Sie ist sofort fällig.

Geben Sie ein Client-Secret mit --secret-file FILE und einen Google-Drive-Schlüssel mit --key-file FILE an, oder - für stdin, nie als Argument. Secrets werden auf dem Server versiegelt und nur als data.secret {set, hint} zurückgegeben. Das Lesen braucht Lesezugriff, und jede Änderung braucht Manage-Zugriff.

media sync account add microsoft365#

Fügt Ihre eigene Microsoft-Entra-App oder eine Microsoft-Verbindung des Projekts hinzu, damit eine Synchronisierung einen SharePoint- oder OneDrive-for-Work-Ordner lesen kann.

media sync account add microsoft365 --name NAME
    (--tenant-id TENANT --client-id ID --secret-file FILE | --connection-id ID)
ParameterTypErforderlichStandardNotizen
--name NAMEstringjakeine1 bis 80 Zeichen.
--tenant-id TENANTstringohne --connection-idkeineDie Verzeichnis-ID (Mandanten-ID) Ihrer Organisation oder deren primäre Domain, etwa contoso.onmicrosoft.com; nie common, organizations oder consumers. Zusammen mit --client-id und --secret-file.
--client-id IDstringohne --connection-idkeineDie Anwendungs-ID (Client-ID) der App-Registrierung, eine GUID.
--secret-file FILEstringohne --connection-idkeineLiest den Wert des Client-Secrets aus dieser Datei oder - für stdin (nie als Argument); die Datei enthält nur den Wert.
--connection-id IDstringohne --tenant-idkeineMeldet sich über eine Microsoft-Verbindung (pcn_…) des Projekts in einem der beiden Modi an, anstelle von --tenant-id, --client-id und --secret-file. Nicht mit ihnen.
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

Registrieren Sie im Microsoft-Entra-Admin-Center eine App mit nur einem Mandanten ohne Weiterleitungs-URI, fügen Sie ein Client-Secret hinzu (kopieren Sie seinen Wert, nicht die Secret-ID), fügen Sie die Microsoft-Graph-Anwendungsberechtigung Sites.Selected hinzu (erteilen Sie der App dann Lesezugriff auf jede Site) oder Files.Read.All und erteilen Sie die Administratorzustimmung. Die App gehört zu diesem Projekt. Führen Sie als Nächstes media sync account test aus.

media sync account add dropbox#

Fügt ein Dropbox-Konto hinzu und gibt den einmaligen Link aus, den die Person, der das Konto gehört, bei Dropbox angemeldet öffnet, um es zu verbinden.

media sync account add dropbox --name NAME [--app-key KEY]
ParameterTypErforderlichStandardNotizen
--name NAMEstringjakeine1 bis 80 Zeichen.
--app-key KEYstringneindie Dropbox-App von screenRIGDer App-Schlüssel Ihrer eigenen Dropbox-App: 1 bis 64 Buchstaben und Ziffern, nie ihr App-Secret.
screenrig media sync account add dropbox --name "Marketing Dropbox"
screenrig media sync account add dropbox --name "Marketing Dropbox" --app-key YOURAPPKEY

data.authorize_url ist der Link und data.authorize_expires_at sein Ablauf. Die CLI öffnet nie einen Browser: Senden Sie den Link an die Person, der das Dropbox-Konto gehört und die den Lesezugriff erlaubt (files.metadata.read, files.content.read, account_info.read, sharing.read). Führen Sie media sync account show aus, bis data.state den Wert ready hat (zu Beginn ist es pending_consent), und dann media sync create dropbox. Ihre eigene Dropbox-App braucht diese aktivierten Berechtigungen und die Redirect-URI, die die Ausgabe nennt.

media sync account add google-drive#

Fügt ein Google-Drive-Konto hinzu, sofort bereit, und gibt die Dienstkonto-Adresse aus, für die Ordner freigegeben werden.

media sync account add google-drive --name NAME [--key-file FILE]
ParameterTypErforderlichStandardNotizen
--name NAMEstringjakeine1 bis 80 Zeichen.
--key-file FILEstringneindas Dienstkonto von screenRIGLiest den JSON-Schlüssel Ihres eigenen Google-Cloud-Dienstkontos aus dieser Datei oder - für stdin (nie als 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 ist die Adresse, für die jeder Ordner freigegeben wird; Viewer genügt. Über das Dienstkonto von screenRIG wird ein Ordner nur synchronisiert, wenn ein Mitglied dieses Projekts mit verifizierter E-Mail ihn freigegeben hat oder besitzt (sonst media_sync_sharer_not_member). Mit Ihrem eigenen Schlüssel wird jeder für das Dienstkonto freigegebene Ordner synchronisiert.

media sync account list#

Listet die Konten der Mediensynchronisierung dieses Projekts mit Art, Zustand und letztem Test auf; es wird kein Secret zurückgegeben.

media sync account list

Keine Parameter.

screenrig media sync account list

media sync account show#

Zeigt ein Konto: seinen Mandanten und die Client-ID, den Zustand, das maskierte Secret und den letzten Test.

media sync account show <id>
ParameterTypErforderlichStandardNotizen
<id>stringjakeineDas Konto (msa_…).
screenrig media sync account show msa_01EXAMPLEACCOUNT0000000

Ein Dropbox-Konto zeigt zusätzlich, wer es verbunden hat, sowie app_key; ein Google-Drive-Konto zeigt zusätzlich service_account_email.

media sync account update#

Benennt ein Konto um, ändert Mandant, Anwendungs-ID oder Client-Secret einer Microsoft-App oder ersetzt den eigenen Schlüssel eines Google-Drive-Kontos.

media sync account update <id> [--name NAME] [--tenant-id TENANT] [--client-id ID]
    [--secret-file FILE | --key-file FILE] [--expect-rev REVISION]
ParameterTypErforderlichStandardNotizen
<id>stringjakeineDas Konto (msa_…).
--name NAMEstringneinUnverändertBenennt das Konto um.
--tenant-id TENANTstringneinUnverändertDie Verzeichnis-ID oder primäre Domain des Mandanten.
--client-id IDstringneinUnverändertDie Anwendungs-ID (Client-ID) der App-Registrierung.
--secret-file FILEstringneinUnverändertLiest den Wert des neuen Client-Secrets aus dieser Datei oder - für stdin; er ersetzt das gespeicherte Secret. Ein ausgelassenes Secret bleibt erhalten.
--key-file FILEstringneinUnverändertLiest den eigenen JSON-Schlüssel eines Google-Drive-Kontos aus dieser Datei oder - für stdin; er muss zum selben Dienstkonto gehören. Nicht mit --secret-file.
--expect-rev REVISIONintegerneinkeineLehnt die Änderung ab, wenn das Konto nicht in dieser Revision ist (revision_conflict, Exit 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

Mindestens eine Änderung ist erforderlich. Eine Änderung der Zugangsdaten löscht last_test: Testen Sie das Konto erneut. Client-Secrets von Entra laufen ab, ersetzen Sie das Secret hier also, bevor es so weit ist.

media sync account connect#

Erzeugt einen neuen einmaligen Link, um ein Dropbox-Konto zu verbinden oder erneut zu verbinden.

media sync account connect <id>
ParameterTypErforderlichStandardNotizen
<id>stringjakeineDas Konto (msa_…).
screenrig media sync account connect msa_01EXAMPLEACCOUNT0000000

data.authorize_url und data.authorize_expires_at tragen den Link, der den früheren ersetzt. Senden Sie ihn an die Person, der das Dropbox-Konto gehört. Verwenden Sie ihn, wenn die Person den Vorgang nicht abgeschlossen hat oder das Konto reconnect_required ist (Dropbox erkennt die Verbindung nicht mehr an). Ein verbundenes Konto bleibt verbunden, bis die neue Zustimmung abgeschlossen ist, und ein anderes Dropbox-Konto, das sich anmeldet, übernimmt die Verbindung.

media sync account test#

Prüft ein Konto: die Anmeldung und die Graph-Berechtigungen einer Microsoft-App oder die Verbindung oder den Schlüssel eines Dropbox- oder Google-Drive-Kontos.

media sync account test <id>
ParameterTypErforderlichStandardNotizen
<id>stringjakeineDas Konto (msa_…).
screenrig media sync account test msa_01EXAMPLEACCOUNT0000000

Die Antwort wird als last_test gespeichert. Bei einer Microsoft-App meldet der Test credentials (Microsoft hat ein Token ausgestellt; eine Ablehnung trägt den AADSTS-Code, etwa AADSTS7000215 für ein Secret, das die ID statt des Werts ist) und permissions (die Graph-Anwendungsberechtigungen, die das Token trägt). Sites.Selected allein ist eine Warnung: Jede Site braucht weiterhin ihre Freigabe, und ein Freigabelink braucht Files.Read.All. Der Test beurteilt weder die Freigabe einer Site noch einen Ordner: media sync create liest den Ordner, den Sie nennen. Eine fehlgeschlagene Prüfung ist data.ok false mit Exit 0.

media sync account delete#

Löscht ein Konto, das keine Synchronisierung nutzt.

media sync account delete <id> [--expect-rev REVISION]
ParameterTypErforderlichStandardNotizen
<id>stringjakeineDas Konto (msa_…).
--expect-rev REVISIONintegerneinkeineLehnt das Löschen ab, wenn das Konto nicht in dieser Revision ist (revision_conflict, Exit 6).
screenrig media sync account delete msa_01EXAMPLEACCOUNT0000000

Solange Synchronisierungen das Konto nutzen, lautet die Antwort resource_conflict (Exit 5) und nennt sie: Löschen Sie diese zuerst.

media sync create sharepoint#

Synchronisiert einen SharePoint- oder OneDrive-for-Work-Ordner in einen Medienordner.

media sync create sharepoint --account-id ID --url URL [--folder-id ID] [--every DURATION] [--name NAME]
ParameterTypErforderlichStandardNotizen
--account-id IDstringjakeineDas Konto, über das gelesen wird (msa_…).
--url URLstringjakeineDie SharePoint-Adresse des Ordners, etwa https://contoso.sharepoint.com/sites/Marketing/Shared%20Documents/Lobby%20Signs, die mit Sites.Selected funktioniert, sobald die Site freigegeben wurde, oder sein Freigabelink (Teilen, Link kopieren), der Files.Read.All braucht. Persönliches OneDrive (onedrive.live.com, 1drv.ms) kann mit einer Organisations-App nicht gelesen werden.
--folder-id IDstringneinein neuer, nach dem Quellordner benannter MedienordnerDer Medienordner (mfd_…), in dem die Dateien landen.
--every DURATIONstringnein15mWie oft nach Änderungen gesucht wird, 5 Minuten bis 24 Stunden: 15m, 1h, 6h oder reine Sekunden (300 bis 86400).
--name NAMEstringneinder Name des Quellordners1 bis 80 Zeichen.
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"

Ein Ordner, den Microsoft ablehnt, ist media_sync_source_refused (Exit 5), mit der zu erteilenden Berechtigung; es wird nichts gespeichert.

media sync create dropbox#

Synchronisiert einen Dropbox-Ordner in einen Medienordner.

media sync create dropbox --account-id ID --url URL|PATH [--folder-id ID] [--every DURATION] [--name NAME]
ParameterTypErforderlichStandardNotizen
--account-id IDstringjakeineDas verbundene Dropbox-Konto, über das gelesen wird (msa_…).
--url URLstringjakeineDie Dropbox-Adresse des Ordners (https://www.dropbox.com/home/...), ein Link zu einem freigegebenen Ordner, den das Konto zu seinem Dropbox hinzugefügt hat, oder ein Pfad, der mit / beginnt. Ein Ordner in einem Team-Space wird vom Stammverzeichnis des Teams aus gelesen.
--folder-id IDstringneinein neuer, nach dem Quellordner benannter MedienordnerDer Medienordner (mfd_…), in dem die Dateien landen.
--every DURATIONstringnein15mWie oft nach Änderungen gesucht wird, 5 Minuten bis 24 Stunden: 15m, 1h, 6h oder reine Sekunden (300 bis 86400).
--name NAMEstringneinder Name des Quellordners1 bis 80 Zeichen.
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"

Jeder Lauf setzt an der von Dropbox gespeicherten Position im Ordner fort und liest nur, was sich geändert hat. Ein Ordner, den das Konto nicht öffnen kann, ist media_sync_source_refused, und eine Verbindung, die Dropbox nicht mehr anerkennt, ist dropbox_reconnect_required (media sync account connect): beide mit Exit 5, nichts wird gespeichert.

media sync create google-drive#

Synchronisiert einen Google-Drive-Ordner, der für das Dienstkonto eines Kontos freigegeben ist, in einen Medienordner.

media sync create google-drive --account-id ID --url URL|ID [--folder-id ID] [--every DURATION] [--name NAME]
ParameterTypErforderlichStandardNotizen
--account-id IDstringjakeineDas Google-Drive-Konto, über das gelesen wird (msa_…).
--url URLstringjakeineDie Adresse des Ordners (https://drive.google.com/drive/folders/ID) oder seine ID. Geben Sie den Ordner zuerst für die service_account_email des Kontos frei; Viewer genügt.
--folder-id IDstringneinein neuer, nach dem Quellordner benannter MedienordnerDer Medienordner (mfd_…), in dem die Dateien landen.
--every DURATIONstringnein15mWie oft nach Änderungen gesucht wird, 5 Minuten bis 24 Stunden: 15m, 1h, 6h oder reine Sekunden (300 bis 86400).
--name NAMEstringneinder Name des Quellordners1 bis 80 Zeichen.
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

Über das Dienstkonto von screenRIG wird der Ordner nur synchronisiert, wenn ein Mitglied dieses Projekts mit verifizierter E-Mail ihn freigegeben hat oder besitzt (media_sync_sharer_not_member, Exit 3, nichts wird gespeichert). Jeder Lauf prüft das erneut, und ein Ordner, der einen solchen Freigeber verliert, stoppt die Synchronisierung im Zustand error, wobei ihre Medien erhalten bleiben: Geben Sie ihn erneut über das Google-Konto eines Mitglieds frei und führen Sie dann media sync update ID --resume aus. Dateien aus Google Docs, Sheets und Slides werden als unsupported_type übersprungen. Ein Ordner, den die Adresse nicht öffnen kann, ist media_sync_source_refused (Exit 5): Geben Sie ihn für das Dienstkonto frei.

media sync list#

Listet die Mediensynchronisierungen dieses Projekts mit Medienordner, Rhythmus, Zustand und Status des letzten Laufs auf.

media sync list

Keine Parameter.

screenrig media sync list

media sync show#

Zeigt eine Synchronisierung und die Zusammenfassung ihres letzten Laufs.

media sync show <id>
ParameterTypErforderlichStandardNotizen
<id>stringjakeineDie Synchronisierung (msy_…).
screenrig media sync show msy_01EXAMPLESYNC000000000

data.last_run enthält status (ok, partial oder error), added, updated, removed, pending_delete (entfernte Dateien, die ein Bildschirm noch hält und die im Ordner Removed warten), skipped_total und skipped, die ersten 20 übersprungenen Dateien mit dem Grund jeder Datei (unsupported_type, too_large, storage, subfolder, download_failed, unreadable, in_use); ein fehlgeschlagener Lauf enthält error mit einem code und einem detail, die die Behebung nennen. data.source fügt path für Dropbox und shared_by für Google Drive hinzu.

Eine Synchronisierung im Zustand error muss repariert werden. Ihr Medienordner wurde gelöscht: Richten Sie sie mit media sync update --folder-id auf einen anderen aus. Ihr Quellordner wurde gelöscht oder verschoben: Löschen Sie die Synchronisierung und legen Sie eine neue an. Bei Google Drive über das Dienstkonto von screenRIG hat der Ordner seinen verifizierten Freigeber verloren (sharer_not_member): Geben Sie ihn erneut über das Google-Konto eines Projektmitglieds frei und führen Sie dann media sync update ID --resume aus. Ein Dropbox-Lauf schlägt mit reconnect_required fehl, wenn Dropbox die Verbindung nicht mehr anerkennt (media sync account connect).

media sync update#

Ändert Name, Rhythmus oder Medienordner einer Synchronisierung oder pausiert und setzt sie fort.

media sync update <id> [--name NAME] [--every DURATION] [--folder-id ID]
    [--pause | --resume] [--expect-rev REVISION]
ParameterTypErforderlichStandardNotizen
<id>stringjakeineDie Synchronisierung (msy_…).
--name NAMEstringneinUnverändertBenennt die Synchronisierung um.
--every DURATIONstringneinUnverändertWie oft nach Änderungen gesucht wird, 5 Minuten bis 24 Stunden.
--folder-id IDstringneinUnverändertFüllt stattdessen diesen Medienordner (mfd_…). Der nächste Lauf liest die gesamte Quelle erneut und legt jede synchronisierte Datei darin ab.
--pausebooleanneinausHält die Ausführung an, bis sie fortgesetzt wird. Nicht mit --resume.
--resumebooleanneinausLäuft wieder; startet auch eine durch einen Fehler gestoppte Synchronisierung neu. Nicht mit --pause.
--expect-rev REVISIONintegerneinkeineLehnt die Änderung ab, wenn die Synchronisierung nicht in dieser Revision ist (revision_conflict, Exit 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

Mindestens eine Änderung ist erforderlich.

media sync run#

Führt eine Synchronisierung jetzt statt zu ihrem nächsten Zeitpunkt aus.

media sync run <id>
ParameterTypErforderlichStandardNotizen
<id>stringjakeineDie Synchronisierung (msy_…).
screenrig media sync run msy_01EXAMPLESYNC000000000

Die Synchronisierung läuft innerhalb von etwa 30 Sekunden, und media sync show zeigt dann ihren letzten Lauf. Eine pausierte Synchronisierung muss zuerst fortgesetzt werden.

media sync delete#

Stoppt eine Synchronisierung; ihre Medien und ihr Ordner bleiben erhalten.

media sync delete <id> [--expect-rev REVISION]
ParameterTypErforderlichStandardNotizen
<id>stringjakeineDie Synchronisierung (msy_…).
--expect-rev REVISIONintegerneinkeineLehnt das Löschen ab, wenn die Synchronisierung nicht in dieser Revision ist (revision_conflict, Exit 6).
screenrig media sync delete msy_01EXAMPLESYNC000000000

Die Synchronisierung vergisst, welche Quelldatei zu welchem Medium wurde. Die importierten Medien und der Medienordner bleiben erhalten, und nichts wird entfernt.

Weitere Befehlsgruppen