Export Problem mit Unterordnern


#1

Hallo zusammen,

ich benutze mp3tag schon länger zum taggen und umbenennen.
Jetzt möchte ich gerne die Daten exportieren.
Möchte daraus am Ende Listen in Excel erstellen.
Um nicht ständig meine Test-Listen in Excel zu öffnen probiere ich das ganze
im Moment mit einer Text-Datei.

Ich habe z.B. folgende Ordnerstruktur:

Gruppe_Eins\Artist_A\Folge_01\Datei01.mp3
Gruppe_Eins\Artist_A\Folge_01\Datei02.mp3 usw...
Gruppe_Eins\Artist_A\Folge_02\Datei01.mp3
Gruppe_Eins\Artist_A\Folge_02\Datei02.mp3 usw...
Gruppe_Eins\Artist_B\Folge_01\Datei01.mp3
Gruppe_Eins\Artist_B\Folge_01\Datei02.mp3 usw...
Gruppe_Eins\Artist_B\Folge_02\Datei01.mp3
Gruppe_Eins\Artist_B\Folge_02\Datei02.mp3 usw...
usw.

Als Ergebnis will ich eine Liste die mir die Ordnernamen mit der Anzahl der Tracks,
Gesamtzeit, Gesamtdateigröße usw. ausgibt.
Unter dieser Zeile sollen dann die Dateien mit diversen Angaben aufgelistet werden.
Das ganze immer nach den Ordnerebenen etwas eingrückt (Vorbereitung für Excel)

Habe das folgende Exportscript gebastelt:
$filename(TEST_01_03.txt, utf-8)
$loop(%_parent_directory%)%_parent_directory% (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$loop(%_directory%) %_directory% (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$loop(%_path%) %_filename% (%_length%) (%_file_size_mb% MB) (%_bitrate% kbps %_vbr%)
$loopend()$loopend()$loopend()

Das ganze ist auch ok mit der oben genannten Ordnerstruktur.
Ich habe aber öfters unter den "Folgen-Ordnern" noch einmal
Unterordner mit CD01, CD02 usw.
Sobald das auftritt funktioniert das Skript nicht mehr.
Die eingrücktet Ordnerstruktur und auch die Reihenfolge sind falsch.

Weiß jemand eine Lösung.

Schöne Grüße
t_bone


#2

Hallo,

kann den keiner helfen?

t_bone


#3

%_parent_directory% und %_directory% musst du ersetzen durch etwas anderes

Wenn die Ordner Artist_A/B in der 3. Ebene anfangen, also z.B.
c:\musik\Gruppe_Eins<b>Artist_A\Folge_01\Datei01.mp3

$filename(TEST_01_03.txt,utf-8)
$loop($regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.+?\\\\.*$,$1))$regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.+?\\\\.*$,$1) (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$loop($regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.*$,$1))   $regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.*$,$1) (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$loop(%_path%)      %_filename% (%_length%) (%_file_size_mb% MB) (%_bitrate% kbps %_vbr%)
$loopend()$loopend()$loopend()

#4
QUOTE (dano @ Oct 18 2010, 17:32) <{POST_SNAPBACK}>
%_parent_directory% und %_directory% musst du ersetzen durch etwas anderes

Wenn die Ordner Artist_A/B in der 3. Ebene anfangen, also z.B.
c:\musik\Gruppe_Eins<b>Artist_A\Folge_01\Datei01.mp3

$filename(TEST_01_03.txt,utf-8)
$loop($regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.+?\\\\.*$,$1))$regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.+?\\\\.*$,$1) (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$loop($regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.*$,$1))   $regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.*$,$1) (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$loop(%_path%)      %_filename% (%_length%) (%_file_size_mb% MB) (%_bitrate% kbps %_vbr%)
$loopend()$loopend()$loopend()<!--QuoteEnd--></div><!--QuoteEEnd-->

Hallo,

endlich mal jemand der ein Export in Deutsch schreibt.

Ist es möglich diese Textdatei auf csv direkt umzumünzen?

Ich finde dieses Skript sehr gelungen! (gefällt mir)

Danke schon mal.

mf>G


#5

mach aus >> $filename(TEST_01_03.txt,utf-8)
mach das >> $filename(TEST_01_03.csv,utf-8)

nicht probiert

Gruß vom
DJ Mucke


#6

Hallo DJ Mucke,

danke der Antwort, dies war mein allererster Versuch bin aber nicht sehr glücklich darüber.
Ich hätte diese Daten gerne getrennt, so dass ich diese in Excel weiterverarbeiten kann. Spalten usw.

Vielleicht gibts noch eine Idee oder habe ich vielleicht das Excel falsch eingestellt?

mf>G

Ergebnis:



#7

Hallo
mom, probier grad

Part| y
nimm hier "Party" nur "Party" weg, brauchst einen Trenner

  • oder schreib im Editor mit der Tab-Taste die Trenner rein, diese trennt in Excel vorzüglich

Gruß vom
DJ Mucke


#8

Hallo,
Danke deine Mühe mit mir, aber mir sagt momentan dieser Satz nichts!

Part| y
nimm hier "Party" nur "Party" weg, brauchst einen Trenner

komme nicht weiter

mf>G


#9

Schau dir "Part| y" an was siehst du, nach dem du "Party" weg nimmst "| ".
Einmal den eigentlichen sichtbaren Trenner und die Freistelle von der Tab-Taste

:wink: :slight_smile:
P.S. TV-Time

Gruß vom
DJ Mucke


#10

Warum soll das jetzt csv werden? Ist doch wieder was ganz anderes.
Gibts in Mp3tag auch schon.
Hier habe ich allerdings einen besseren csv Export gemacht.


#11

Hi Dano,

genau so etwas als Beispiel suche ich schon lange. Funktioniert und ist auch durchschaubar.

Viele vielen Dank auch dafür

mf>G


#12
QUOTE (dano @ Oct 18 2010, 17:32) <{POST_SNAPBACK}>
%_parent_directory% und %_directory% musst du ersetzen durch etwas anderes

Wenn die Ordner Artist_A/B in der 3. Ebene anfangen, also z.B.
c:\musik\Gruppe_Eins<b>Artist_A\Folge_01\Datei01.mp3

$filename(TEST_01_03.txt,utf-8)
$loop($regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.+?\\\\.*$,$1))$regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.+?\\\\.*$,$1) (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$loop($regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.*$,$1))   $regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.*$,$1) (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$loop(%_path%)      %_filename% (%_length%) (%_file_size_mb% MB) (%_bitrate% kbps %_vbr%)
$loopend()$loopend()$loopend()<!--QuoteEnd--></div><!--QuoteEEnd-->

Hallo Dano,
vielen Dank für deinen Tipp.

Blicke mit der Funktion "regexp" null durch, habe aber mit den Ebenen etwas rumgespielt,
bis es auf meine Verzeichnisstiefe passte.
Funktioniert nun fast so wie ich es möchte.
Die Sortierreihenfolge ist in Ordnung.

Aber wenn mal ab und zu unter dem "Folgen"-Ornder noch Unterordner mit CD01, CD02 usw.
sind geht das nicht mehr. Es wird nur der Folgenordner mit allen Dateien der Unterordner
aufgelistet.

Gibt es noch irgendwie eine Möglichkeit das mit den unterschiedlichen Ordnertiefen (es gibt
bei mir nur die Option mit CD01...) zu lösen, damit ich es über das ganze Verzeichniss laufen
lassen kann?
(Geht es vielleicht mit einer eingebauten if - then Abfrage bzgl. auf z.B. Cd01 im Orndernamen?)

Grüsse

t_bone


#13

ja geht auch

$filename(TEST_01_03.txt,utf-8)
$loop($regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.+?\\\\.*$,$1))$regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.+?\\\\.*$,$1) (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$loop($regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.*$,$1))   $regexp(%_folderpath%,^.+?\\\\.+?\\\\.+?\\\\.+?\\\\(.+?)\\\\.*$,$1) (%_total_time% / %_total_size% / %_total_files% / %_bitrate% kbps %_vbr%)
$if($eql($regexp(%_directory%,^(cd\d+)$,<>,1),<>),$loop(%_directory%)      %_directory%
$loop(%_path%)         %_filename% (%_length%) (%_file_size_mb% MB) (%_bitrate% kbps %_vbr%)
$loopend()$loopend(),$loop(%_path%)      %_filename% (%_length%) (%_file_size_mb% MB) (%_bitrate% kbps %_vbr%)
$loopend())$loopend()$loopend()

#14

Nochmal 3 Exportdateien für die Level 2, 3 und 4

Level 2 = c:\Musik<b>Artist
Level 3 = c:\Musik\Ordner<b>Artist
Level 4 = c:\Musik\Ordner\Ordner<b>Artist

Die Erkennung der cd01 cd02... Ordner kann
cd1 cd01 cd 01 CD1 cD01 Cd 01

DirList.zip (1.07 KB)


#15

Hallo Dano,

ich ziehe symbolisch meinen Hut und bedanke mich für die tolle Hilfe.

Hier noch das für mich angepasste Exportscript
(Angepasst bzgl. Ordnertiefe, Angabe div. Daten pro Ordner, Abfrage nach cd und
eingefügten Trennzeichen zum Import für Excel):

$filename(Liste_Komplett.txt,utf-8)
Ebene1;Ebene2;Ebene3;Datei;Zeit;Groesse;Bitrate;vbr/cbr;Files
$loop($regexp(%_folderpath%,^.+?\\.+?\\.+?\\.+?\\.+?\\(.+?)\\.$,$1))$regexp(%_folderpath%,^.+?\\.+?\\.+?\\.+?\\.+?\\(.+?)\\.$,$1);;;;%_total_time%;%_total_size%;%_bitrate%;%_vbr%;%_total_files%;
$loop($regexp(%_folderpath%,^.+?\\.+?\\.+?\\.+?\\.+?\\.+?\\(.+?)\\.$,$1));$regexp(%_folderpath%,^.+?\\.+?\\.+?\\.+?\\.+?\\.+?\\(.+?)\\.$,$1);;;%_total_time%;%_total_size%;%_bitrate%;%_vbr%;%_total_files%
$if($eql($regexp(%_directory%,^(.*cd ?\d+)$,<>,1),<>),$loop(%_directory%);;%_directory%;;%_total_time%;%_total_size%;%_bitrate%;%_vbr%;%_total_files%
$loop(%_path%);;;%_filename%;%_length%;%_file_size_mb%;%_bitrate%;%_vbr%
$loopend()$loopend(),$loop(%_path%);;;%_filename%;%_length%;%_file_size_mb%;%_bitrate%;%_vbr%
$loopend())$loopend()$loopend()

Nochmals vielen Dank.

P.S. Gibt es irgendwo eine Sammlung oder ausführliche Erklärung zu $regexp


#16

In der offline Hilfe von Mp3Tag auf deutsch:
Grundlagen:
Hilfe (F1) > Aktionen > Ersetzen mit regulären Ausdrücken
file:///C:/Program%20Files/Mp3tag/help/options_format.html#regexp

Funktionen mit $:
Hilfe (F1) > Skriptbefehle
file:///C:/Program%20Files/Mp3tag/help/main_scripting.html


#17

Hallo Euch beiden,

habt Ihr prima gelöst, werde diese nach meinen Wünschen umbauen, hoffe es klappt auch so gut.

Danke nochmal!