indi-allsky: Den YouTube-Upload-Button nach einer Video-Löschung zurücksetzen

Bildschirmfoto 2026 10 20 um 22.34.40Kürzlich habe ich ein paar über das Backend von indi-allsky auf YouTube hochgeladene Videos gelöscht, doch im Video Viewer von indi-allsky stand weiterhin „YouTube Uploaded“ anstelle des Upload-Buttons.

Leider gibt es im Backend keinen Reset für solche Fälle – aber mit etwas Coding- und Datenbank-Skills lässt sich das Problem beheben.

Problemstellung

Nach einem erfolgreichen Upload speichert indi-allsky die YouTube-Video-ID im JSON-Feld data unter youtube_id. Der Viewer entscheidet anhand dieses Eintrags, ob er „YouTube Uploaded“ oder die Upload-Schaltfläche anzeigt. Ob das Video auf YouTube noch existiert, wird dabei nicht erneut abgefragt.

Bei Startrail-Zeitraffern liegt die Zuordnung in der Tabelle startrailvideo. Die Spalte uploaded steuert diese YouTube-Anzeige nicht und muss für diese Korrektur nicht geändert werden.

1. Die gespeicherte YouTube-Zuordnung prüfen

Nach der SSH-Anmeldung auf dem Allsky-Rechner haben wir die fünf Datensätze schreibgeschützt abgefragt. Der Standardpfad der SQLite-Datenbank lautet /var/lib/indi-allsky/indi-allsky.sqlite.

sqlite3 -readonly -header -column /var/lib/indi-allsky/indi-allsky.sqlite \
"SELECT id, camera_id, dayDate, night,
 json_extract(data, '$.youtube_id') AS youtube_id
 FROM startrailvideo
 WHERE id IN (516,517,518,519,520);"

Die Option -readonly öffnet die Datenbank schreibgeschützt. Die Abfrage zeigt Kamera, Aufnahmedatum, Tag/Nacht und die gespeicherte YouTube-ID für Startrail-Videos mit den IDs 516 – 520. Das sind genau die, die ich erst hochgeladen und dann wieder gelöscht hatte. night = 1 steht hier für eine Nachtaufnahme – logisch bei Startrails, oder?

2. Eine konsistente Datenbanksicherung erstellen

Vor der Änderung haben ich die SQLite-Sicherungsfunktion genutzt, um die Datenbank zu sichern. Eine einfache Kopie der laufenden Datenbankdatei ist dafür nicht gleichwertig.

sqlite3 -readonly /var/lib/indi-allsky/indi-allsky.sqlite \
".backup '$HOME/indi-allsky-vor-startrail-korrektur-$(date +%Y%m%d-%H%M%S).sqlite'"

Die Sicherung landet mit Zeitstempel im Home-Verzeichnis des angemeldeten Benutzers. Erst nach einem erfolgreichen Abschluss ohne Fehlermeldung habe ich die Korrektur an der Datenbank vorgenommen.

3. Ausschließlich die veralteten YouTube-Zuordnungen entfernen

Der folgende Befehl entfernt nur den Schlüssel youtube_id aus den passenden JSON-Daten. Er prüft zusätzlich Kamera, Nachtstatus sowie die Kombination aus Datensatz-ID, Datum und bisheriger YouTube-ID. Alle anderen JSON-Schlüssel bleiben erhalten.

sqlite3 -bail -header -column /var/lib/indi-allsky/indi-allsky.sqlite <<'SQL'
.timeout 5000
BEGIN IMMEDIATE;

UPDATE startrailvideo
SET data = json_remove(data, '$.youtube_id')
WHERE camera_id = 6 AND night = 1
AND (id, dayDate, json_extract(data, '$.youtube_id')) IN (
  VALUES
  (516, '2026-10-11', 'V6Oh30RNG50'),
  (517, '2026-10-12', 'XmF218zVhgY'),
  (518, '2026-10-13', 'nzoBd2NJDuI'),
  (519, '2026-10-14', 'BV38kmob4l4'),
  (520, '2026-10-15', 'dkL7r-2wg80')
);

SELECT changes() AS korrigierte_markierungen;
COMMIT;

SELECT id, dayDate, json_extract(data, '$.youtube_id') AS youtube_id
FROM startrailvideo
WHERE camera_id = 6 AND id IN (516,517,518,519,520)
ORDER BY id;
SQL

Die Änderung läuft innerhalb einer Transaktion. -bail beendet die Ausführung bei einem Fehler; die Wartezeit für eine belegte Datenbank ist auf fünf Sekunden gesetzt. In unserem Fall waren fünf korrigierte Markierungen zu erwarten. Die anschließende Abfrage hat fünf Zeilen mit leerer youtube_id geliefert.

4. Den Viewer neu laden: Der Upload-Button ist wieder verfügbar

Nach der Änderung habe ich die Daten des Video Viewers frisch abgerufen. Für alle fünf Startrail-Videos war startrail_timelapse_youtube_uploaded anschließend false. Die normalen Nacht-Zeitraffer derselben Daten blieben mit youtube_uploaded = true als hochgeladen markiert.

Der Viewer zeigt für diese Startrail-Videos nun wieder die YouTube-Upload-Schaltfläche anstelle der Markierung „YouTube Uploaded“. Die lokalen Dateien bleiben mit dem Prozedere natürlich erhalten. Fertig.

Hat dir dieser Beitrag gefallen?

Du kannst allsky-rodgau.de mit einem kleinen Kaffee auf BuyMeACoffee unterstützen.

Jetzt Kaffee spendieren!