OFDb

Alle Link´s (1400) zu Videodatein in Stapelverarbeitung ändern möglich ?

Begonnen von Benutzer0815, 16 Oktober 2024, 14:03:10

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Benutzer0815

Hi,

gibt es eine Möglichkeit, in MyMDB alle Links so zu ändern, dass ich nur den Laufwerksbuchstaben (vorher 2 verschiedene HDDs, jetzt nur noch eine) und die Ordnerstruktur anpasse?

Beispielsweise war ein Film vorher so verlinkt:

    "E:\FILME\Action\2 Guns (2013).mkv"
    "D:\FILME 2\Action 2\Air America (1990).mkv"

Nun sollen sie so aussehen:

    "Z:\FILME\Action\2 Guns (2013).mkv"
    "Z:\FILME\Action\Air America (1990).mkv"

Ich hoffe, das Problem ist verständlich: Vorher hatte ich zwei Festplatten mit der gleichen Ordnerstruktur, allerdings mit dem Zusatz "2" auf der zweiten Platte. Jetzt sollen alle Filme von Platte 1 (Action, Geschichte, Horror usw.) und von Platte 2 (Action 2, Geschichte 2 usw.) auf eine einzige Platte verschoben werden.

Gibt es eine Möglichkeit, das in MyMDB automatisiert zu ändern? Ich würde ungern 1400 Einträge manuell bearbeiten.

tbengel

Klar, mit der Stapelverarbeitung ... und einem angepassten UPDATE-Befehl.
Mehr findest Du im Handbuch und auch hier im Forum gibt es so einige
Hilfskripte.

Grüße

tbengel

Benutzer0815

Super danke ,dann war ich einfach nur zu blöd es zu finden ! werd ich mich gleich nochmals ans werk machen

Benutzer0815

Ich habe mir bis jetzt den Kopf darüber zerbrochen, wie ich das umsetzen kann. Den Beitrag, den du erwähnt hast, sowie den Eintrag im Handbuch habe ich gefunden, aber leider bin ich genauso schlau wie vorher. Vielleicht liegt es an meiner leichten Legasthenie, am Alter oder daran, dass ich einfach zu dumm/stur bin – beides möchte ich hier nicht ausschleißen. Datenbanken und deren Befehle sind für mich ohnehin Neuland und werden es dank der tollen Software auch hoffentlich bleiben.

Auch ChatGPT konnte mir hier leider nicht weiterhelfen.

Als vorletzte Möglichkiet bitte ich hier noch einmal um Hilfe von jemanden für denn dies womöglich nicht so einen Aufwand darstellt. Sollte das nicht funktionieren, bleibt mir wohl oder übel nichts anderes übrig, als alles manuell nachzutragen.

:lol:

tbengel

Hallo Benutzer0815,

man ist nie zu alt um was Neues zu lernen und um das volle Potential von MyMDbCE ausnutzen zu
können, sollte man auch Grundkenntnisse in SQL mitbringen (Link dazu findest Du auch im Handbuch),
denn erst dann, kannst Du auch wirklich die Power-Funktionen von MyMDb-CE effektiv nutzen.

Diese zwei Befehle hintereinander ausführen und damit bekommst Du Deine obigen Einträge aktualisiert.
Ersetze "<FILMDATENBANK>" durch Deinen Namen der Datenbank:

UPDATE <FILMDATENBANK>
  SET symlink = REPLACE(symlink, 'E:/FILME', 'Z:/FILME')
  WHERE symlink LIKE 'E:/FILME%'

UPDATE <FILMDATENBANK>
  SET symlink = REPLACE(symlink, 'E:/FILME 2', 'Z:/FILME')
  WHERE symlink LIKE 'E:/FILME 2%'


Zur Erklärung:

Du musst wissen, dass Du mit solchen Befehlen direkt Änderungen in der
Datenbank machst und dort heißen die Spalten zum Teil anders, als auf
der Oberfläche. Die Spaltennamen bekommst Du aber in der Stapelverarbeitung
angezeigt, wenn diese verwendet werden oder auch im Handbuch findest
Du eine Auflistung.

In unserem Fall heißt das Feld "Link" in der Datenbank "symlink".

Dann musst Du noch wissen, dass die Pfadabtrennungen statt "\" in der Datenbank
mit "/" abgespeichert werden. Dies kannst Du sehen, indem Du Dir mal die
Datenbank direkt anschaust, indem Du Dir die Datei "data\mymdbce.script"
mit einem Editor öffnest. Dort findest Du alle Einträge der Datenbank, aber dort selber
nie was verändern, da dies Deine komplette DB zerhauen könnte.

Der Rest sind dann ganz normale SQL-Befehle, welche Du überall nachschlagen kannst
und ChatGPT kann Dir dazu auch bestens helfen, indem Du Dir den Befehl einfach
mal erklären lässt.

Hoffe Dir ist damit geholfen und Du hast Lust noch tiefer in die SQL-Tiefen
abzutauchen. Lass Dir doch mittels ChatGPT ein Tutorial erstellen, um die
Einzel-SQL-Befehle besser kennenzulernen...

Grüße

tbengel

Benutzer0815

Ich küsse dir dein Herz! Der erste Code war sofort erfolgreich, beim zweiten musste ich noch die Unterordner mit der '2' davor beseitigen, also FILME 2 - Action 2 - (dann die Filmtitel). Aber nach ein bisschen Einlesen, Nachdenken und Hilfe von ChatGPT bin ich auch darauf gekommen.

Vielen Dank für deine Zeit!!!  :banana:

tbengel

Da hast Du recht und alles richtig gemacht ... das "Action 2" hatte ich überlesen, aber nun
solltest Du immer in der Lage sein, deine Pfade dynamisch anzupassen.  :respect:

Grüße

tbengel

Benutzer0815

Neues "Problem" gleiches Thema, da ich die Filme neu verlinkt habe weil sie nun kleiner sind und auf eine Platte passen, gibt es eine Möglichkeit die Größe der Datein neu "einlesen" zu lassen oder muss ich das Feld Dateigröße ab nun ausblenden mit den alten Werten ?

Benutzer0815

Habs gefunden über "Daten aktualisieren über Verzeichnis" ! Danke ^^

EDIT: Hier noch die codes falls es jemand anderen hilft :

Wandelt die Lnks von D:/ FILME 2/... in Z:/FILME... um
UPDATE STARTDB
  SET symlink = REPLACE(symlink, 'D:/FILME 2', 'Z:/FILME')
  WHERE symlink LIKE 'D:/FILME 2%';

Variante 1: Falls die Struktur ohne Leerzeichen hinter ,,FILME" gespeichert wurde:
UPDATE STARTDB
  SET symlink = REPLACE(symlink, 'D:/FILME2', 'Z:/FILME')
  WHERE symlink LIKE 'D:/FILME2%';

Variante 2: Falls möglicherweise das "/" durch "\" ersetzt wurde:

UPDATE STARTDB
  SET symlink = REPLACE(symlink, 'D:\\FILME 2', 'Z:\\FILME')
  WHERE symlink LIKE 'D:\\FILME 2%';

Hier ist der SQL-Befehl, um die ,,2" aus den Unterkategorie-Namen (wie Komödie 2, Action 2) zu entfernen:

UPDATE STARTDB
  SET symlink = REPLACE(symlink, ' 2', '')
  WHERE symlink LIKE 'Z:/FILME/% 2/%';

3. Zusätzlicher Schritt: Entfernen der "2" aus den Unterordnern (falls nötig)

Falls es wie bei den Filmen auch in den Serienunterordnern eine "2" gibt (z.B. Action 2), kannst du die gleiche Logik anwenden, um die ,,2" in den Serienunterkategorien zu entfernen:


UPDATE STARTDB
  SET symlink = REPLACE(symlink, ' 2', '')
  WHERE symlink LIKE 'Z:/SERIEN/% 2/%';

Hier kann es nötig sein die Filme mit einer 2 im Namen zu suchen und zu kontrollieren/ergänzen (linkadressen zu den Datein)

Um die Dateigrößen nachträglich zu aktualisieren ,die aktualisierung durch "Daten aktualisieren über Verzeichnis" nutzen ,alles abhaken ausser die Links und die Dateigröße.

tbengel


Benutzer0815

Zitat von: tbengel am 18 Oktober 2024, 09:30:26Hey Benutzer0815, Du wirst ja hier noch ein wahrer SQL-Profi  :respect:

XD Das wird sicher nicht passieren XD XD XD wenn du mir nicht glaubst, frag ChatGPT ^^.

Benutzer0815

Hallo,

ich stehe vor einem Problem mit der Stapelverarbeitung in MyMDb-CE und hoffe, ihr könnt mir (wieder) weiterhelfen. Ich möchte die Pfade meiner Filme so ändern, dass jede Datei in einem eigenen Unterordner liegt, der denselben Namen wie die Datei trägt. Momentan liegen alle Filme direkt in einem Ordner. Es sind aber über 1.600 Filme, und das manuell zu ändern wäre ein Wahnsinn (wie schon einmal, siehe oben).

Hier ein Beispiel, was ich meine:
Aktuell sieht ein Pfad so aus:
Z:\FILME\ACTION\Ronin (1998).mkv

Ich möchte den Pfad automatisch so anpassen, dass er nachher so aussieht:
Z:\FILME\ACTION\Ronin (1998)\Ronin (1998).mkv

Ich habe versucht, das mit einem SQL-Befehl direkt in der MyMDb-CE-Stapelverarbeitungsmaske umzusetzen. Hier ist der Befehl, den ich verwendet habe:

UPDATE STARTDB
SET pfad = REPLACE(pfad,
                   SUBSTRING_INDEX(pfad, '\', -1),
                   CONCAT(SUBSTRING_INDEX(pfad, '\', -1), '\', SUBSTRING_INDEX(pfad, '\', -1)))
WHERE pfad LIKE '%.%';

Leider funktioniert dieser Befehl nicht, da keine Einträge gefunden werden. Ich habe versucht, in der WHERE-Bedingung mit unterschiedlichen Filtern zu arbeiten (z. B. nur für .mkv-Dateien), aber ich bekomme immer dieselbe Fehlermeldung, dass keine passenden Einträge vorhanden sind. Ich bin mir auch nicht sicher, ob der Spaltenname pfad richtig ist, oder ob die Pfadangaben in der Datenbank vielleicht anders formatiert sind (z. B. mit / statt \).

Hat jemand eine Idee, wie ich das lösen kann? Vielleicht mache ich bei der Syntax oder den Bedingungen etwas falsch.

tbengel

Hi,

ich habe Dein SET Befehl jetzt nicht überprüft, daher davor immer Backup machen.

Bei der Where-Bedingung kannst Du auch "WHERE 1 = 1" angeben, dann werden alle
Datensätze geupdatet, oder Du wählst per ID-Selektion die jeweils zu aktualisierenden
Filme einzeln aus.

Grüße

tbengel

TinyPortal 2.0.0 © 2005-2020