File: mpg123info

package info (click to toggle)
mpg123 1.33.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,428 kB
  • sloc: ansic: 55,507; asm: 17,309; sh: 4,795; makefile: 156; perl: 153; python: 45
file content (71 lines) | stat: -rwxr-xr-x 1,487 bytes parent folder | download | duplicates (8)
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
#!/bin/bash

if test $# -eq 0; then
  echo "Give me some MPEG 1.0/2.0/2.5 layer 1/2/3 audio file name(s) and I give you meta info about it in an easily-parseable format:

name=value

for simple value association and

name.=value

to add another line to existing value (multiline comments)."
fi

for i in "$@"
do
  echo lp "$i"
  echo tag
  echo scan
  echo format
  echo sample
done | 
mpg123 -t -R |
perl -e '
while(<STDIN>)
{
if(/\@T \{/)
{
  print "# meta info for: ".(shift @ARGV)."\n";
  $field = undef;
  %count = ();
  %linecount = ();
}
elsif(/\@T ID3:(.*)$/)
{
  $field = undef;
  print "ID3v1.title=".substr($1, 0, 30)."\n";
  print "ID3v1.artist=".substr($1, 30, 30)."\n";
  print "ID3v1.album=".substr($1, 60, 30)."\n";
  print "ID3v1.year=".substr($1, 90, 4)."\n";
  print "ID3v1.comment=".substr($1, 94, 30)."\n";
  print "ID3v1.genre=".substr($1, 124)."\n";
}
elsif(/\@T ID3\.([^:]+):(.*)$/)
{
  $field = undef;
  print "ID3.$1=$2\n";
}
elsif(/\@T (ID3v2\.\S{4})(|\s+lang\(([^\(\)]*)\)\s+desc\(([^\(\)]*)\)):/)
{
  $class = $1;
  $field = ++$count{$class} > 1 ? "$class$count{$class}" : $class;
  print "$field.lang=$3\n" if(defined $3);
  print "$field.desc=$4\n" if(defined $4);
}
elsif(/\@T =(.*)$/)
{
  next unless defined $field;
  print "$field".(++$linecount{$field} > 1 ? ".=" : "=").$1."\n";
}
elsif(/\@FORMAT\s+(\d+)\s+(\d+)/)
{
  print "format.rate=$1\n";
  print "format.channels=$2\n";
}
elsif(/\@SAMPLE\s+(\d+)\s+(\d+)/)
{
  print "samples=$2\n";
}
}
' "$@"