In einer Aktion die Größe eines Verzeichnis ermitteln?


#11

… das hatte ich probiert (habe ich vergessen zu erwähnen, sorry), klappt trotzdem nicht.
Ich glaube, eh ich noch weitere Stunden damit verbringe :wink: , ich werde meine alte Methode weiter nutzen; geht schneller.

Und trotzdem, nochmals vielen Dank für die tolle Unterstützung. Ausserdem habe ich vergessen mich bei allen zu bedanken die hier schon, auch für mich, wunderbare Lösungen anzubieten hatten. Ich bleibe am Ball.


#12

Wie äußert sich denn das "nicht klappen"?
Kriegst du die Dateien nicht zu sehen?
Oder kriegst du keine Informationen zu den Dateien?


#13

… doch ich sehe die Dateien, ich bekomme auch einen Wert angezeigt, jedoch sind alle FLAC's dabei, also nicht die gefühlten 30 MB für das artwork-Verzeichnis, sondern die ca. 950 MB für das komplette Verzeichnis (inkl. FLAC).


#14

Dann stimmt was mit den $loop() Anweisungen nicht. Entweder gibt es nicht genug oder die rotieren um das falsche Kriterium. Und die Rücksetzung der Summenvariablen ist nicht an der richtigen Stelle.
Es müsste möglich sein, für jedes Verzeichnis das Zählen neu zu starten.
Vielleicht ist statt $loop(%_path%) ein $loop(%_directory%) besser.


#15

ich bin mir nicht sicher ob ich das nicht schon probiert habe, werde ich heute Abend aber testen; muss Geldverdienen :wink: und bin an meinem Arbeitsplatz und habe keinen Zugriff auf mein System.
Ich werde es testen und melde mich dann.
Nochmals besten Dank im Vorraus.


#16

Schau Dir - wenn noch nicht geschehen - zur Inspiration mal dano's Skripte an.
Dort wird auch die Größe eines Ordners ermittelt.
dano export configs


#17

... hab ich mir gerade einmal angeschaut ... bin leider nicht fündig geworden, oder ich habe es übersehen, oder blöd :wink: ?


#18

... hab ich ausprobiert ... immer noch ohne Erfolg.
Ich gebe auf, bleibe bei meiner alten Methode.
Besten Dank noch einmal an alle. :slight_smile:


#19

Hallo Zusammen,

so ganz gebe ich noch nicht auf.
Da meine Programmierkenntnisse nicht unbedingt die besten sind habe ich mal eine, für euch wahrscheinlich einfach, Frage wie ich $put, $puts, $get richtig einsetze; aus der Hilfe werde ich nicht schlau (vielleicht zu blöd? :wink: ).
Mein Hintergedanke ist eine Variable zu erzeugen die den Wert "\artwork" aufnimmt und daraus eine zweite die sich aus der festen Variable "%_directory%" + "\artwork" zusammensetzt. Also z.B.:

"%_directory%" = c:\temp
neue Variabale "ART" = "\artwork"
neue %_directory% & %ART% = c:\temp\artwork

und anschließend mit $put, $puts und/oder $get das oben beschriebene Verzeichnis zu generieren um daraus widerrum die Verzeichnisgröße in einer Export *.mte" zu integrieren.
Also Grundsätzliches für mich erst einmal das Verstehen der Funktionen $put, $puts und/oder $get !

Besten Dank an alle


#20

Das was du schilderst hat nur wenig mit $put usw. zu tun. Denn Strings kannst du ja beliebig zusammensetzen.
$put(x,y) weist der Variablen x den Wert y zu und gibt dann x aus.
$puts() macht im Prinzip dasselbe, nur eben "silent" (=putS) - denn für das bloße Zusammenzählen willst vermutlich nicht alle Zwischenergebnisse ausgegeben haben.

Die Abtrennung zwischen den Verzeichnissen kriegst du über entsprechend geschachtelte Schleifen hin:
Eine über den gesamten Pfadnamen,
Eine über den Verzeichnisnamen
(könnte ich mir vorstellen)
so dass eine Rumbastelei mit ART nicht notwendig sein sollte.

Ach ja: ich verstehe immer noch nicht Sinn und Zweck der Übung. Denn wenn jetzt in dem Verzeichnis die Export-Datei landet (keine mte - das sind die Export-Anweisungen), dann ändert sich doch die Menge der in einem Verzeichnis gespeicherten Bytes schon wieder.


#21

Die Abtrennung funktioniert doch aber nicht :unsure: ; was mache ich falsch? Ich bekomme die kpl. Summe des Verzeichnisses indem meine FLAC's liegen inkl. des Verzeichnisses "artwork" (in dem diverse *.jpg's und *.txt - Dateien liegen; in der Regel ca. 40-50 MB groß).
Nochmal ein Beispiel:

z:\vinyl\reggae\Bob Marley & The Wailers\ Catch A Fire - [1973]\artwork

Das Verzeichnis: z:\vinyl\reggae\Bob Marley & The Wailers\ Catch A Fire - [1973] --> ist 965 MB groß;
das Verzeichnis: z:\vinyl\reggae\Bob Marley & The Wailers\ Catch A Fire - [1973]\artwork --> ist 7 MB groß

Hier der Header meiner Export-mte:

$filename(txt,utf-8)
%artist% - %album% (%year%)
Vinyl rip in 24-bit/96 khz | %NUMBER_LP% LP(s) %DISCOGS_FORMAT% %LP_WEIGHT%
Artwork ?? MB| DR-Analysis | %_total_size% | FF
%genre%, %STYLE% | Original %DISCOGS_COUNTRY% Pressing | %LABEL% - %DISCOGS_CATALOG% 

(Ich muss dazusagen, dass ich mittlerweile fast alles mit $if, $if2 verfeinert habe, da nicht alle Felder belegt sind)

An der Stelle der beiden roten Fragezeichen sollte der Code für die Berechnung des Unterverzeichnisses stehen!

Die Ausgabe des ganzen sieht wie folgt aus:

Bob Marley & The Wailers - Catch A Fire (1973/2010)
Vinyl rip in 24-bit/96 khz | 1 LP(s) Album 200 Gram
Artwork ?? MB| DR-Analysis | 965,59 MB | FF
Reggae, | Original Pressing | -  

An der Stelle der beiden blauen Fragezeichen sollte der Wert der Berechnung des Unterverzeichnisses > 7 MB < stehen!

Dieser Export wird nur einmalig ausgeführt! Deshalb spielt es für mich keine Rolle ob sich im laufe der Zeit die Größe des Verzeichnisses ändert, ist auch von Größe her Vernachlässigbar; solange ich nicht darin rumspiele ... eigentlich nie wieder. :wink:

Sorry, aber den Einsatz von $put etc. hab ich immer noch nicht kapiert :wink:

Nochmals besten Dank an alle!


#22

Betrifft nur Mp3tag Export.
Mit $put() und $puts() lassen sich benutzerdefinierte Variablen anlegen, die mit Werten belegt sind, die mit $get() wieder verwendet werden können.
Hierbei ist zu beachten, dass die "Sichtbarkeit" solcher Variablen recht eigenartig gestaltet ist, z. B. nur innerhalb einer $loop() ... $loopend() Konstruktion.

Siehe dort ...
Extract weekdays and month names from timestamp
... und lese weiter ...
Extract weekdays and month names from timestamp

Export, $Puts() is executed always
$if script-befehl mit $puts script-befehl
Check if field value is identical for all selected tracks

DD.20141217.1647.CET


Export: Use of $put/$get across nested loops?
#23

Für das folgende Skript Beispiel musst du vorher in "Mp3tag\Extras\Optionen\Tags" bei der Liste der Dateitypen hinzufügen den Dateityp: *.jpg;

Reihenfolge ...
... alle Dateien laden in Mp3tag (Musik und Bilder),
... alle Dateien auswählen,
... Exportskript ausführen,
... Ergebnis betrachten.

01: $filename($getEnv('USERPROFILE')'\Desktop\Test.CoverSize.txt',UTF-8)$puts(

02: )$loop(1,1)$puts(crlf,$char(13)$char(10))$puts(br,'{br}')$loopend()$replace(
03: 'T_e_s_t'$get(br)$get(br)
04:
05: $loop(%_path%)$replace(
06:
07: $puts(Sum_CountFiles,$if($neql($lower(%_extension%),'jpg'),$add(1,$get(Sum_CountFiles)),$get(Sum_CountFiles)))
08: $puts(Sum_CountCovers,$if($eql($lower(%_extension%),'jpg'),$add(1,$get(Sum_CountCovers)),$get(Sum_CountCovers)))
09: $puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_kb%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))
10:
11: $get(br)
12: 'Path = '%_path%$get(br)
13: $if($eql($lower(%_extension%),'jpg'),
14: 'CountCovers : '$get(Sum_CountCovers)$get(br)
15: 'SumCovers MB: '$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0))$get(br),
16: 'CountFiles : '$get(Sum_CountFiles)$get(br))
17:
18: ,$get(crlf),,$get(br),$get(crlf))$loopend()
19:
20: $get(br)
21: '---------------------------'$get(br)
22: 'SumCovers MB: '$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0))$get(br)
23: 'CountCovers : '$get(Sum_CountCovers)$get(br)
24: 'CountFiles : '$get(Sum_CountFiles)$get(br)
25: 'CountAll : '$add($get(Sum_CountCovers),$get(Sum_CountFiles))$get(br)
26:
27: ,$get(crlf),,$get(br),$get(crlf))

Das Export Skript verwendet Tricks, die in der offiziellen Mp3tag Hilfe nicht dokumentiert sind, ...
aber im Forum hier und da schon gezeigt worden sind.
Du kannst das Skript anpassen wie du willst ... vor der Ausführung die Zeilennummern entfernen.

Am Ende der Export-Liste kommt dann so etwas heraus ...

SumCovers MB: 86 CountCovers : 262 CountFiles : 139 CountAll : 401

DD.20141217.1940.CET


#24

Besten Dank für das Beispiel. Ich kann/konnte es erst heute Morgen testen (wir hatten gestern unser Weihnachtsessen im Kollegenkreis).
Ich werde es in jedem Fall im laufe des Tages testen, steige zwar noch nicht ganz durch den Code, aber ich wühle mich erst einmal durch, ansonsten melde ich mich :wink:


#25

So ... ich habe getestet, nach gefühlten Stunden konnte ich deinen Code soweit zusammen trimmen das jetzt tatsächlich die "gerundete" Verzeichnisgröße "artwork" ausgegeben wird!

Hier der von mir zusammen "gestauchte" Code: (alles in einer Zeile)

$puts()$loop(1,1)$loopend()$replace($loop(%_path%)$replace($puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_kb%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))$if($eql($lower(%_extension%),'jpg'),$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0)),$get(Sum_CountCovers))$get(Sum_CountFiles))$loopend()$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0))

Hier meine Export mte (ein Teil davon)

$filename($getEnv, txt,utf-8)

%artist% - %album% $if(%RERELEASE%,(%year%/%RERELEASE%),(%year%)) Vinyl rip in 24-bit/96 khz | %NUMBER_LP% LP(s) $if2(%DISCOGS_FORMAT%,) - %LP_WEIGHT% DR-Analysis | %_total_size% incl. Artwork $puts()$loop(1,1)$loopend()$replace($loop(%_path%)$replace($puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_kb%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))$if($eql($lower(%_extension%),'jpg'),$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0)),$get(Sum_CountCovers))$get(Sum_CountFiles))$loopend()$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0)) MB| | FF %genre%, %STYLE% | Original %DISCOGS_COUNTRY% Pressing | %LABEL% - %DISCOGS_CATALOG%

Ausgabe mit dem neuen Code:

- () Vinyl rip in 24-bit/96 khz | LP(s) - DR-Analysis | 6,13 MB incl. Artwork 7 MB| | FF

Jetzt fehlen die Tags aus den Flac's, bzw. der Wert aus %_total_size% wird auch nicht mehr ausgegeben; statt 965,59 MB die echten 6,13 MB der jpg's?

Aussehen sollte es so:

Bob Marley & The Wailers - Catch A Fire (1973/2010) Vinyl rip in 24-bit/96 khz | 1 LP(s) Album - 200 Gram DR-Analysis | 965,59 MB incl. Artwork ?? MB| | FF Reggae, | Original Pressing | -

 

die kursiv dargestellten Daten kommen aus Tags; der unterstrichene Part kommt aus der Funktion %_total_size%!

Was mache ich noch falsch?


#26

Bei mir kommt mit dem "gestauchten Code" nur Murks heraus, u. a. auch wegen syntaktischer Fehler, z. B. ist $replace nicht richtig angewendet und unsinnig, $puts() ist überflüssig in deinem Skript.

Wenn du das folgende Exportskript zum Laufen bringst, dann hast du einen Ansatz, mit dem du weiter experimentieren kannst.

1: $filename($getEnv('USERPROFILE')'\Desktop\Test.CoverSize.txt',UTF-8)

2: $loop(%_path%)$puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_kb%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))$loopend()
3: 'CoverSize : '$get(Sum_CoverSize)' KB'
4: 'CoverCount: '%_max_counter%

DD.20141218.2010.CET


#27

Entschuldige, aber ich habe lediglich deinen Code soweit gestaucht bis es für mich passte. Kapiert habe ich eh nur die Hälfte, hat ziemlich lange gedauert bis ich es soweit hinbekommen hatte.

Aber auch vielen Dank für deine neue Version.
Leider führt auch diese dazu dass alle anderen Tags nicht mehr ausgelesen und exportiert werden, warum auch immer?
Ich glaube jetzt gebe ich ganz auf!
Trotzdem nochmals meinen allerherzlichsten Dank an alle Beteiligten. Ich wünsche allen ein Besinnliches Weihnachtsfest und alles Gute für 2015. Auf weitere spannende MP3TAG Fragen, Antworten, Wünsche, Beiträge etc. …


#28

Vielleicht eine zweite $loop Schleife für die Musikdateien?

DD.20141219.1155.CET


#29

Ich danke dir, hatte ich auch versucht, aber meine Kenntnisse sind nicht so berauschend. Vielleicht versuche ich es noch einmal im Stillen Kämmerlein (über Weihnachten habe ich genügend Zeit) :wink:
Aber ich denke, ein "rechter Mausklick" auf den Ordner --> Eigenschaften --> Wert merken und in meine Export-Datei reinschreiben … geht fix von der Hand.
Nochmals besten Dank! :slight_smile: :slight_smile: :slight_smile:


#30

Hier ist noch etwas mehr zum Zähne ausbeißen ...

01: $filename($getEnv('USERPROFILE')'\Desktop\Test.CoverSize.txt',UTF-8)$puts(

02: )$loop(1,1)$puts(crlf,$char(13)$char(10))$puts(br,'{br}')$loopend()$replace(
03: 'T_e_s_t'$get(br)$get(br)
04:
05: $puts(Out_Artist,%ARTIST%)
06: $puts(Out_Album,%ALBUM%)
07: $puts(Out_YEAR,%YEAR%)
08:
09: $loop(%_path%)$replace(
10: $puts(Sum_CountFiles,$if($neql($lower(%_extension%),'jpg'),$add(1,$get(Sum_CountFiles)),$get(Sum_CountFiles)))
11: $puts(Sum_CountCovers,$if($eql($lower(%_extension%),'jpg'),$add(1,$get(Sum_CountCovers)),$get(Sum_CountCovers)))
12: $puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_bytes%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))
13: $puts(Sum_FileSize,$add(%_file_size_bytes%,$get(Sum_FileSize)))
14: ,$get(crlf),,$get(br),$get(crlf))$loopend()
15:
16: $puts(Sum_CoverSizeKB,$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0)))
17: $puts(Sum_CoverSizeMB,$add($div($get(Sum_CoverSize),$mul(1024,1024)),$ifgreater($mod($get(Sum_CoverSize),$mul(1024,1024)),0,1,0)))
18: $puts(Sum_FileSizeMB,$add($div($get(Sum_FileSize),$mul(1024,1024)),$ifgreater($mod($get(Sum_FileSize),$mul(1024,1024)),0,1,0)))
19:
20: 'CountCovers: '$get(Sum_CountCovers)$get(br)
21: 'CountFiles : '$get(Sum_CountFiles)$get(br)
22: 'CountAll : '$add($get(Sum_CountCovers),$get(Sum_CountFiles))$get(br)$get(br)
23:
24: $get(Out_Artist)' - '$get(Out_Album)' - ('$get(Out_YEAR)')'$get(br)
25: 'Artwork : '$get(Sum_CoverSizeKB)' KB'$get(br)
26: 'Artwork : '$get(Sum_CoverSizeMB)' MB'$get(br)
27: 'Total Size : '$get(Sum_FileSizeMB)' MB'$get(br)
28: 'Label/Cat. : '%LABEL%[' - '%DISCOGS_CATALOG%]$get(br)
29: 'Pressing : ''Original'[' '%DISCOGS_COUNTRY%]' Pressing'$get(br)
30: 'Genre/Style: '%GENRE%[', '%STYLE%]$get(br)
31:
32: ,$get(crlf),,$get(br),$get(crlf))

Die Ausgabe sieht so aus:

T_e_s_t

CountCovers: 2
CountFiles : 14
CountAll : 16

Wham! - The Best Of Wham! - (1997)
Artwork : 23 KB
Artwork : 1 MB
Total Size : 132 MB
Label/Cat. :
Pressing : Original Pressing
Genre/Style: Pop, Pop/Rock Adult Contemporary New Wave

DD.20141219.1722.CET