[erledigt] MP3 umbenennen wie bei MP3Tag?

Aktuelle Version: 12.21 (22.06.2020)
Alles zum Thema Directory Opus
Benutzeravatar
tbone
Berater
Beiträge: 705
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von tbone »

Es geht um dieses Feld..
Dateianhänge
Clipboard Image.png
josinoro
Beiträge: 184
Registriert: 4. Aug 2013 19:58

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von josinoro »

Ok, auf Standardfunktion war das anfangs ja auch eingestellt. Da habe dann wegen der Fehlermeldung andere Optionen ausprobiert.

Bei dem ersten Schalter Interpret - Nr. - Titel: bekomme ich als Standardfunktion die Fehlermeldung:

Code: Alles auswählen

Commande: "/home\dopusrt.exe" /cmd SetAttr "E:\_Test\2451 Ordner\001 Meat Loaf - Bat Out of Hell.mp3" META "artist:001 Meat Loaf - Bat Out of Hell.mp3" "track:001 Meat Loaf - Bat Out of Hell.mp3" "title:001 Meat Loaf - Bat Out of Hell.mp3"
 19.01.2021 12:49  Fehler in Zeile 17, Position 5
 19.01.2021 12:49  Fehler 0x80070002
das wäre dann hier:
strCommand = """" & DOpusRTPath & """ /cmd SetAttr """ & path & """ META ""artist:" & artist & """ ""track:" & track & """ ""title:" & title & """"

Auch wenn ich den Pfad absolut eingebe, ändert sich nichts. Das Slash in der Pfadeingabe scheint es also nicht zu sein
Benutzeravatar
tbone
Berater
Beiträge: 705
Registriert: 22. Nov 2014 21:16
Betriebssystem: 7*64

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von tbone »

Kopier mal so einen Button als XML hierein.. (copy from toolbar, paste here mit code-tags)..
Benutzeravatar
Kundal
Moderator
Beiträge: 1308
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
DOpus Version: 12.xx + Betas
Edition: Pro

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von Kundal »

Das Alibi /home funktioniert bei mir nicht und wirft den Fehler in Zeile 17 aus. Ausserdem entspricht deine Datei 001 Meat Loaf - Bat Out of Hell.mp3 nicht dem vorgegebenen Dateinamen-Muster des Buttons. Der Button funktioniert nur dann ordnungsgemäß, wenn der Dateiname dem Muster Interpret - Nr. - Titel entspricht, also z.B. Meat Loaf - 001 - Bat Out of Hell.mp3. Für deine Datei müsstest du den Button Nr. - Interpret - Titel benutzen und im Code den regulären Ausdruck (Zeile 12) so ändern, dass zwischen Nr. und Interpret kein Minuszeichen, sondern nur ein einzelnes Leerzeichen steht:

Code: Alles auswählen

@nodeselect
Rename FILEINFO TO="{mp3track}%{mp3artist}%{mp3title}"
@script vbscript
Option Explicit
Dim DOpusRTPath
DOpusRTPath = "C:\Program Files\Directory Opus\dopusrt.exe"
Dim Shell
Set Shell = CreateObject("WScript.Shell")
Function Rename_GetNewName ( strFileName, strFilePath, fIsFolder, strOldName, ByRef strNewName )
    Dim re, strCommand, artist, track, title, path
    Set re = new RegExp
    re.Pattern = "([0-9]*) (.*) - (.*)(\.mp3|\.flac)"
    track = re.Replace(strFileName, "$1")
    artist = re.Replace(strFileName, "$2")
    title = re.Replace(strFileName, "$3")
    path = strFilePath & "\" & strFileName
    strCommand = """" & DOpusRTPath & """ /cmd SetAttr """ & path & """ META ""track:" & track & """ ""artist:" & artist & """ ""title:" & title & """"
    Dopus.OutputString  "Commande: " & strCommand
    Shell.Run strCommand,0,false
    strNewName = ""
End Function
Sasa
Beiträge: 312
Registriert: 6. Nov 2006 13:20

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von Sasa »

Der Button hat schon ein paar Jahre auf dem Buckel - wie ihr schon festgestellt habt -, aber tut es problemlos.

"/Home\" ist ein eingebauter Alias für das DO-Startverzeichnis. Sollte gehen.

Hätte ich vlt. dazu sagen sollen: Die Dateinamen müssen exakt den Vorgaben (siehe oberhalb des jew. Buttoncodes) entsprechen, wie Kundal schon erläutert hat. Ich benenne immer alles erst um, lösche alle Tags (DO-Button mit Tag.exe), und tagge dann aus den Dateinamen. Danach dann manuell den Rest (Cover, Jahr,...).
Benutzeravatar
Kundal
Moderator
Beiträge: 1308
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
DOpus Version: 12.xx + Betas
Edition: Pro

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von Kundal »

/home funktioniert bei mir definitiv nicht.
Ich habe hier eine etwas neuere Vorlage für den Button gefunden (Skriptfunktion, Skripttyp: VBScript) und für Audiodateien mit Dateinamen-Muster Nr. Interpret - Titel modifiziert:

Code: Alles auswählen

Option Explicit
Function OnClick(ByRef clickData)
Dim cmd, selItem, re, artist, track, title, path, strCommand
	Set cmd = clickData.func.command
	cmd.deselect = false

    Set re = CreateObject("VBScript.RegExp")
	re.IgnoreCase = true
	re.Global = false
	re.Pattern = "([0-9]*) (.*) - (.*)(\.mp3|\.flac)"

	If clickData.func.sourcetab.selected.count > 0 Then
		For Each selItem In clickData.func.sourcetab.selected
			If selItem.metadata = "audio" Then
				If re.test(selItem.name) Then
					track = re.Replace(selItem.name, "$1")
				    artist = re.Replace(selItem.name, "$2")
					title = re.Replace(selItem.name, "$3")
				    path = selItem
					strCommand = "SetAttr """ & path & """ META ""track:" & track & """ ""artist:" & artist & """ ""title:" & title & """"
'					Dopus.Output "Command : " & strCommand
					cmd.RunCommand strCommand
				End If
			End If
		Next
	End If
End Function
josinoro
Beiträge: 184
Registriert: 4. Aug 2013 19:58

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von josinoro »

tbone hat geschrieben: 19. Jan 2021 15:03 Kopier mal so einen Button als XML hierein.. (copy from toolbar, paste here mit code-tags)..
Es handelt sich um den hier geposteten Code. Ich habe lediglich die Pfadangabe geändert.

Code: Alles auswählen

<?xml version="1.0"?>
<button backcol="none" display="both" separate="yes" textcol="none">
	<label>Nr.: Interpret - Titel: </label>
	<icon1>#newcommand</icon1>
	<function type="normal">
		<instruction>@nodeselect</instruction>
		<instruction>Rename FILEINFO TO=&quot;{mp3track}%{mp3artist}%{mp3title}&quot;</instruction>
		<instruction>@script vbscript</instruction>
		<instruction>Option Explicit</instruction>
		<instruction>Dim DOpusRTPath</instruction>
		<instruction>DOpusRTPath = &quot;/home\dopusrt.exe&quot;</instruction>
		<instruction>Dim Shell</instruction>
		<instruction>Set Shell = CreateObject(&quot;WScript.Shell&quot;)</instruction>
		<instruction>Function Rename_GetNewName ( strFileName, strFilePath, fIsFolder, strOldName, ByRef strNewName )</instruction>
		<instruction>    Dim re, strCommand, artist, track, title, path</instruction>
		<instruction>    Set re = new RegExp</instruction>
		<instruction>    re.Pattern = &quot;([0-9]*) - (.*) - (.*)(\.mp3|\.flac)&quot;</instruction>
		<instruction>    track = re.Replace(strFileName, &quot;$1&quot;)</instruction>
		<instruction>    artist = re.Replace(strFileName, &quot;$2&quot;)</instruction>
		<instruction>    title = re.Replace(strFileName, &quot;$3&quot;)</instruction>
		<instruction>    path = strFilePath &amp; &quot;\&quot; &amp; strFileName</instruction>
		<instruction>    strCommand = &quot;&quot;&quot;&quot; &amp; DOpusRTPath &amp; &quot;&quot;&quot; /cmd SetAttr &quot;&quot;&quot; &amp; path &amp; &quot;&quot;&quot; META &quot;&quot;track:&quot; &amp; track &amp; &quot;&quot;&quot; &quot;&quot;artist:&quot; &amp; artist &amp; &quot;&quot;&quot; &quot;&quot;title:&quot; &amp; title &amp; &quot;&quot;&quot;&quot;</instruction>
		<instruction>    Dopus.OutputString  &quot;Commande: &quot; &amp; strCommand</instruction>
		<instruction>    Shell.Run strCommand,0,false</instruction>
		<instruction>    strNewName = &quot;&quot;</instruction>
		<instruction>End Function</instruction>
	</function>
</button>
josinoro
Beiträge: 184
Registriert: 4. Aug 2013 19:58

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von josinoro »

Kundal hat geschrieben: 19. Jan 2021 23:46 /home funktioniert bei mir definitiv nicht.
Ich habe hier eine etwas neuere Vorlage für den Button gefunden (Skriptfunktion, Skripttyp: VBScript) und für Audiodateien mit Dateinamen-Muster Nr. Interpret - Titel modifiziert:

Code: Alles auswählen

Option Explicit
Function OnClick(ByRef clickData)
...
Danke für die Mühe und diese Version. Damit kann ich was anfangen.

Um die "kleinen Helferlein" auch auf einem USB-Stick benutzen zu können, kopiere ich alle Hilfsprogramme in das Verzeichnis DO\Hilfsprogramme\Name. Bei einer Kopie auf USB-Stick werden diese Hilfsprogramme ja nicht mitkopiert, also ergänze ich den Stick dann um dieses Verzeichnis. Damit die Pfadangaben dann auch in den Schaltern stimmen, habe ich dort den Alias /home verwendet, was auch funktioniert. Vielleicht funktioniert es als Variablenzuweisung, wie in dem Script, nicht!?

Herzlichen Dank

Jo
josinoro
Beiträge: 184
Registriert: 4. Aug 2013 19:58

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von josinoro »

Sasa hat geschrieben: 19. Jan 2021 22:13 Der Button hat schon ein paar Jahre auf dem Buckel - wie ihr schon festgestellt habt -, aber tut es problemlos.

"/Home\" ist ein eingebauter Alias für das DO-Startverzeichnis. Sollte gehen.

Hätte ich vlt. dazu sagen sollen: Die Dateinamen müssen exakt den Vorgaben (siehe oberhalb des jew. Buttoncodes) entsprechen, wie Kundal schon erläutert hat. Ich benenne immer alles erst um, lösche alle Tags (DO-Button mit Tag.exe), und tagge dann aus den Dateinamen. Danach dann manuell den Rest (Cover, Jahr,...).
An die exakte Vorgabe hatte ich nicht gedacht.

Vielen Dank für die Hilfe

Jo
Benutzeravatar
Kundal
Moderator
Beiträge: 1308
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
DOpus Version: 12.xx + Betas
Edition: Pro

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von Kundal »

Bei dem von mir zuletzt geposteten Skriptbutton brauchst du dir keinen Kopf um irgendwelche Pfade oder Aliasse machen, weil dopusrt.exe da nicht verwendet wird. Der sollte auch vom Stick einfach funktionieren und kann natürlich für alle erdenklichen Dateinamen-Varianten angepasst werden.
Benutzeravatar
Kundal
Moderator
Beiträge: 1308
Registriert: 20. Apr 2010 21:26
Betriebssystem: Win7 & Win 10 Pro 64 bit
DOpus Version: 12.xx + Betas
Edition: Pro

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von Kundal »

/home funktioniert in den alten Buttons vermutlich nicht, weil die Befehlszeile strCommand nicht an dopus.exe sondern an wscript.exe übergeben wird, die wiederum dopusrt.exe aufrufen soll, aber das Alibi nicht übersetzen kann und dopusrt.exe deshalb nicht findet.

Nur der Vollständigkeit halber hier noch mal die ursprünglichen von Sasa geposteten 3 Schalter in einem Menübutton (XML-Version):

MP3/Flac nach Dateinamen taggen

Code: Alles auswählen

<?xml version="1.0"?>
<button backcol="none" display="both" textcol="none" type="menu">
	<label>MP3/Flac nach Dateinamen taggen</label>
	<icon1>#newmenu</icon1>
	<button backcol="none" display="both" textcol="none">
		<label>Tracknummer - Interpret - Titel</label>
		<tip>MP3/Flac nach Dateinamen taggen</tip>
		<icon1>#newcommand</icon1>
		<function type="script">
			<instruction>@script VBScript</instruction>
			<instruction>Option Explicit</instruction>
			<instruction>Function OnClick(ByRef clickData)</instruction>
			<instruction>Dim cmd, selItem, re, artist, track, title, path, strCommand</instruction>
			<instruction>	Set cmd = clickData.func.command</instruction>
			<instruction>	cmd.deselect = false</instruction>
			<instruction />
			<instruction>    Set re = CreateObject(&quot;VBScript.RegExp&quot;)</instruction>
			<instruction>	re.IgnoreCase = true</instruction>
			<instruction>	re.Global = false</instruction>
			<instruction>	re.Pattern = &quot;([0-9]*) - (.*) - (.*)(\.mp3|\.flac)&quot;</instruction>
			<instruction />
			<instruction>	If clickData.func.sourcetab.selected.count &gt; 0 Then</instruction>
			<instruction>		For Each selItem In clickData.func.sourcetab.selected</instruction>
			<instruction>			If selItem.metadata = &quot;audio&quot; Then</instruction>
			<instruction>				If re.test(selItem.name) Then</instruction>
			<instruction>					track = re.Replace(selItem.name, &quot;$1&quot;)</instruction>
			<instruction>				    artist = re.Replace(selItem.name, &quot;$2&quot;)</instruction>
			<instruction>					title = re.Replace(selItem.name, &quot;$3&quot;)</instruction>
			<instruction>				    path = selItem</instruction>
			<instruction>					strCommand = &quot;SetAttr &quot;&quot;&quot; &amp; path &amp; &quot;&quot;&quot; META &quot;&quot;track:&quot; &amp; track &amp; &quot;&quot;&quot; &quot;&quot;artist:&quot; &amp; artist &amp; &quot;&quot;&quot; &quot;&quot;title:&quot; &amp; title &amp; &quot;&quot;&quot;&quot;</instruction>
			<instruction>&apos;					Dopus.Output &quot;Command : &quot; &amp; strCommand</instruction>
			<instruction>					cmd.RunCommand strCommand</instruction>
			<instruction>				End If</instruction>
			<instruction>			End If</instruction>
			<instruction>		Next</instruction>
			<instruction>	End If</instruction>
			<instruction>End Function</instruction>
		</function>
	</button>
	<button backcol="none" display="both" textcol="none">
		<label>Interpret - Tracknummer - Titel</label>
		<tip>MP3/Flac nach Dateinamen taggen</tip>
		<icon1>#newcommand</icon1>
		<function type="script">
			<instruction>@script VBScript</instruction>
			<instruction>Option Explicit</instruction>
			<instruction>Function OnClick(ByRef clickData)</instruction>
			<instruction>Dim cmd, selItem, re, artist, track, title, path, strCommand</instruction>
			<instruction>	Set cmd = clickData.func.command</instruction>
			<instruction>	cmd.deselect = false</instruction>
			<instruction />
			<instruction>    Set re = CreateObject(&quot;VBScript.RegExp&quot;)</instruction>
			<instruction>	re.IgnoreCase = true</instruction>
			<instruction>	re.Global = false</instruction>
			<instruction>	re.Pattern = &quot;(.*) - ([0-9]*) - (.*)(\.mp3|\.flac)&quot;</instruction>
			<instruction />
			<instruction>	If clickData.func.sourcetab.selected.count &gt; 0 Then</instruction>
			<instruction>		For Each selItem In clickData.func.sourcetab.selected</instruction>
			<instruction>			If selItem.metadata = &quot;audio&quot; Then</instruction>
			<instruction>				If re.test(selItem.name) Then</instruction>
			<instruction>					artist = re.Replace(selItem.name, &quot;$1&quot;)</instruction>
			<instruction>					track = re.Replace(selItem.name, &quot;$2&quot;)</instruction>
			<instruction>					title = re.Replace(selItem.name, &quot;$3&quot;)</instruction>
			<instruction>				    path = selItem</instruction>
			<instruction>					strCommand = &quot;SetAttr &quot;&quot;&quot; &amp; path &amp; &quot;&quot;&quot; META &quot;&quot;track:&quot; &amp; track &amp; &quot;&quot;&quot; &quot;&quot;artist:&quot; &amp; artist &amp; &quot;&quot;&quot; &quot;&quot;title:&quot; &amp; title &amp; &quot;&quot;&quot;&quot;</instruction>
			<instruction>&apos;					Dopus.Output &quot;Command : &quot; &amp; strCommand</instruction>
			<instruction>					cmd.RunCommand strCommand</instruction>
			<instruction>				End If</instruction>
			<instruction>			End If</instruction>
			<instruction>		Next</instruction>
			<instruction>	End If</instruction>
			<instruction>End Function</instruction>
		</function>
	</button>
	<button backcol="none" display="both" textcol="none">
		<label>Interpret - Titel</label>
		<tip>MP3/Flac nach Dateinamen taggen</tip>
		<icon1>#newcommand</icon1>
		<function type="script">
			<instruction>@script VBScript</instruction>
			<instruction>Option Explicit</instruction>
			<instruction>Function OnClick(ByRef clickData)</instruction>
			<instruction>Dim cmd, selItem, re, artist, title, path, strCommand</instruction>
			<instruction>	Set cmd = clickData.func.command</instruction>
			<instruction>	cmd.deselect = false</instruction>
			<instruction />
			<instruction>    Set re = CreateObject(&quot;VBScript.RegExp&quot;)</instruction>
			<instruction>	re.IgnoreCase = true</instruction>
			<instruction>	re.Global = false</instruction>
			<instruction>	re.Pattern = &quot;^(.*) - (.*)(\.mp3|\.flac)&quot;</instruction>
			<instruction />
			<instruction>	If clickData.func.sourcetab.selected.count &gt; 0 Then</instruction>
			<instruction>		For Each selItem In clickData.func.sourcetab.selected</instruction>
			<instruction>			If selItem.metadata = &quot;audio&quot; Then</instruction>
			<instruction>				If re.test(selItem.name) Then</instruction>
			<instruction>				    artist = re.Replace(selItem.name, &quot;$1&quot;)</instruction>
			<instruction>					title = re.Replace(selItem.name, &quot;$2&quot;)</instruction>
			<instruction>				    path = selItem</instruction>
			<instruction>					strCommand = &quot;SetAttr &quot;&quot;&quot; &amp; path &amp; &quot;&quot;&quot; META &quot;&quot;artist:&quot; &amp; artist &amp; &quot;&quot;&quot; &quot;&quot;title:&quot; &amp; title &amp; &quot;&quot;&quot;&quot;</instruction>
			<instruction>&apos;					Dopus.Output &quot;Command : &quot; &amp; strCommand</instruction>
			<instruction>					cmd.RunCommand strCommand</instruction>
			<instruction>				End If</instruction>
			<instruction>			End If</instruction>
			<instruction>		Next</instruction>
			<instruction>	End If</instruction>
			<instruction>End Function</instruction>
		</function>
	</button>
</button>
Maui
Beiträge: 126
Registriert: 7. Mär 2019 19:37
Betriebssystem: Windows 10 Pro

Re: MP3 umbenennen wie bei MP3Tag?

Beitrag von Maui »

Vielen Dank für die wirkliche vielen Vorschläge.
Antworten