Thread MP3 ID3 Tag (46 answers)
Opened by timehandler at 2012-06-04 15:49

Gast timehandler
 2012-06-12 12:26
#158913 #158913
hier der code

wenn ich in die letzte zeile den absoluten pfad angebe dann gehts, aber somit kann ich ja nur immer die gleiche mp3 auslesen und verschieben, was natürlich blöd ist.

im code ab zeile 70 habe ich auch schon mal angefangen das ändern der tags zu implementieren,aber weiß da auch noch nicht so richtig weiter.

more (3.8kb):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!perl

use warnings;
use strict;

use MP3::Tag;
use File::Find;
use File::Copy;
use Cwd;

my $cwd = getcwd; # Arbeitsverzeichnis
my $mp3dir = $cwd; # Default

print "Pfad angeben wo die MP3's sind!!! [keine Eingabe - Aktuelles Verzeichnis]\n";

while (my $input = <STDIN>) {
last if $input !~ /\S/; # leere Eingabe
chomp($input);
if (-d $input) { # Verzeichnis existiert?
$mp3dir = $input;
last;
}
print "Verzeichnis '$input' existiert nicht. Nochmal versuchen.\n";
}

find(\&wanted, $mp3dir); # Achtung: Rekursive Suche

sub wanted {
return unless /\.mp3$/i; # alles was keine *.mp3 Endung hat wird
# nicht beachtet
my $filename = $_;
my $fullpath = $File::Find::name;
return if (-d $fullpath); # Verzeichnisse mit '.mp3' weglassen

if (my $mp3 = MP3::Tag->new($fullpath)) {
print "$_ (Tags: ", join(", ",$mp3->get_tags),")\n";

my ($title, $track, $artist, $album, $comment, $year, $genre)
= $mp3->autoinfo();

print "* Song: $title\n"
. "* Track: $track\n"
. "* Artist: $artist\n"
. "* Album: $album\n"
. "* Comment: $comment\n";
<STDIN>;
my $targetdir = make_dirname_from_tags($artist, $album);
if (! $targetdir) {
print "Fehler beim Erzeugen des Ordnernamens!\n";
return;
}



if (! -d $targetdir) { # existiert noch nicht?
if (! mkdir("$cwd/$targetdir")) {
warn "Kann Ordner '$cwd/$targetdir' nicht anlegen: $!";
return;
}
}

my $newTag = change_tag($artist, $title, $album);

#or die "Could not move '$filename' zu '$cwd/$targetdir/':$!";

}

}

sub change_tag {

my @write = @_;

# create a new tag
my $id3v1 = my $mp3->new_tag("ID3v1");
$id3v1->all($artist, $titel, $album);
$id3v1->write_tag();

}



sub make_dirname_from_tags {
# Hier diejenigen Zeichen in den Tags ersetzen, die für Ordner-/Dateinamen
# verboten sind.

my @tags = @_;
return if ! @tags;
for my $tag (@tags) {
$tag =~ s/[:,]/_/g; # Zeichenklasse noch anpassen
}
return(join ' - ' , @tags);

}

move("/TagReader/01 Casper - XOXO.mp3","/TagReader/Casper - xoxo/01 Casper - XOXO.mp3");

Last edited: 2012-06-12 12:33:54 +0200 (CEST)

View full thread MP3 ID3 Tag