Hallo zusammen,
ich möchte eine größere Anzahl bereits vorhandener Datenbanktitel automatisiert zusätzlichen virtuellen Ordnern zuweisen.
Wichtig dabei:
-
Die Titel und Audiodateien sind bereits vollständig in der mAirListDB vorhanden.
-
Bestehende Ordnerzuordnungen dürfen nicht verändert oder entfernt werden.
-
Die Titel sollen lediglich zusätzlich in neu angelegte Ordner einsortiert werden – entsprechend dem Kopieren per Strg+Drag-and-drop.
-
Es sollen weder neue Datenbankeinträge noch Audiodatei-Duplikate entstehen.
Verwendete Software:
-
mAirList 7.4.8 Build 5855
-
mAirListDB Internet Client
-
Verbindung zu einem entfernten mAirListDB-Server
-
Client-Benutzer besitzt in der Oberfläche Berechtigungen zum Erstellen von Ordnern und zum Kopieren vorhandener Titel
-
Die genaue Serverversion ist mir momentan nicht bekannt.
Umfang der geplanten Zuordnung:
-
1960er: 450 Titel
-
1970er: 450 Titel
-
1980er: 500 Titel
-
1990er: 520 Titel
-
2000er: 283 Titel
-
2010er: 355 Titel
Das sind insgesamt 2.558 Titel in den Jahrzehntlisten.
Zusätzlich existieren Sonderauswahlen, die sich teilweise mit den Jahrzehntlisten überschneiden:
-
Album-Fundstücke: 1.125 Titel
-
Vinyl/Kuschelrock-Vinyl: 380 Titel
-
90er Eurodance: 374 Titel
Da Überschneidungen ausdrücklich erlaubt sind, sollen Titel mehreren virtuellen Ordnern zugewiesen werden können.
Manuell funktioniert das bereits: Ein Titel lässt sich mit Strg+Drag-and-drop in einen weiteren Ordner kopieren. Dabei wird weder der Datenbankeintrag noch die Audiodatei dupliziert, und die bisherigen Ordnerzuordnungen bleiben erhalten.
Für einen Test wurde der neue Ordner „Rocknacht Test“ angelegt. Seine angezeigte Ordner-ID lautet 171.
Die zu testenden vorhandenen Titel haben beispielsweise folgende exportierte Datenbank-IDs:
-
16152
-
15113
-
490
-
1193
ID 1193 wurde zum Vergleich bereits manuell erfolgreich in den Testordner kopiert.
Laut aktueller Scripting-Dokumentation sollte IDBAccess folgende Funktion bereitstellen:
procedure AddItemToFolder(const iItem: string; const iFolder: string);
Getestet wurde daher:
var
Access: IDBAccess;
begin
Access := IDBConnection(Database(0)).CreateOrReuseAccess(false);
Access.AddItemToFolder('16152', '171');
Access.AddItemToFolder('15113', '171');
Access.AddItemToFolder('490', '171');
end.
Der erste Aufruf von AddItemToFolder endet jedoch mit:
HTTP/1.1 500 Internal Server Error
Auch reine Leseversuche schlugen fehl:
Item := Access.LookupByID('16152');
und
Item := Access.LookupByInternalID('16152');
sowie
Item := Database(0).CreatePlaylistItem('16152');
Alle drei Varianten enden beim betreffenden Aufruf mit:
HTTP/1.1 404 Not Found
Die IDs stammen aus dem Datenbankexport beziehungsweise aus einer exportierten mAirList-Playlist. Dort steht beispielsweise:
<DatabaseID>16152</DatabaseID>
Die exportierte Playlist mit dbserver:-Dateinamen lässt sich im Client laden und die Titel werden korrekt vom Server abgespielt. Die Titel selbst und ihre Audiodateien sind somit vorhanden.
Meine Fragen:
-
Unterstützt der mAirListDB Internet Client in Version 7.4.8 das zusätzliche Zuweisen vorhandener Titel zu virtuellen Ordnern über mAirListScript?
-
Erwartet AddItemToFolder bei
iItemundiFolderandere Kennungen als die im Export sichtbaren numerischen Datenbank- und Ordner-IDs? -
Gibt es bei einem Internet-Client einen anderen empfohlenen Zugriff, etwa über ProcessRequest oder einen bestimmten REST-Endpunkt?
-
Könnte der HTTP-500 durch eine nicht passende oder ältere Serverversion entstehen?
-
Welche Benutzerberechtigung wird serverseitig für eine zusätzliche Ordnerzuordnung benötigt?
-
Gibt es alternativ ein offizielles Format oder Werkzeug für die massenhafte Zuordnung vorhandener IDs zu einem zusätzlichen Ordner, ohne Titel neu zu importieren?
Gesucht wird ausdrücklich eine reine zusätzliche Ordnerzuordnung, funktional identisch mit Strg+Drag-and-drop. MoveItemToFolder kommt nicht infrage, da keine vorhandene Zuordnung entfernt werden darf.
Vielen Dank für jeden Hinweis oder ein kurzes funktionierendes Scriptbeispiel für den Internet Client.