How to find untagged audio files?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to find untagged audio files?
# 8  
Old 12-20-2010
Corrected, thanks!
Ubuntu comes with mawk by default and the code I provide is for gawk,
could you check if gawk is installed?


OK, try this one, if it doesn't work, tomorrow I'll continue to debug Smilie

Code:
find -iname '*.mp3' -exec bash -c "
  id3 -Rl \"\$@\" | 
    awk -F'\012' '
      \$2 ~ /Title: \*$/{
        print \$1
        }' IGNORECASE=1 RS=   
    " {} +

Notice that the above code checks only for empty Title tag (I'm not checking the other tags right now).
# 9  
Old 12-20-2010
I tested with adding tee after the id3 call and got the output from all mp3 files. So far so good. My guess: it's in the awk part.
# 10  
Old 12-20-2010
And, of course, it will be much easier to write a shell script for that: it will be less efficient, but we could rich the desired functionality sooner Smilie

---------- Post updated at 09:50 PM ---------- Previous update was at 09:47 PM ----------

Quote:
Originally Posted by MrZehl
I tested with adding tee after the id3 call and got the output from all mp3 files. So far so good. My guess: it's in the awk part.
Yes,
I suppose it's because of the awk version and because of the crazy "escaping" Smilie
# 11  
Old 12-20-2010
Well, this is a learning fase for me. I just want to see if it's possible. It's eyeopening to work with streams. It's powerful and I want to get it. Playing with this helps.

So I played. And discovered this:
Code:
$ find -iname '*.mp3' -exec bash -c "
  id3 -Rl \"\$@\" | 
    awk -F: '
      /Title:/{
        print \$2
        }' IGNORECASE=1 RS=" {} +
 ./alex roeka - 1999  - wildernis/09 - Alex Roeka - Dronken Ochtendkade.mp3
 ./alex roeka - 1999  - wildernis/04 - Alex Roeka - Help me, ik ben echt.mp3
 ./alex roeka - 1999  - wildernis/06 - Alex Roeka - Noem het geen liefde.mp3
 ./alex roeka - 1999  - wildernis/02 - Alex Roeka - Schotwond in m'n ziel.mp3
 ./alex roeka - 1999  - wildernis/03 - Alex Roeka - Blues bij de deur waar de man staat.mp3
 ./alex roeka - 1999  - wildernis/10 - Alex Roeka - De lange liefde lang.mp3
 ./alex roeka - 1999  - wildernis/11 - Alex Roeka - Steeds dichter bij de grond.mp3
 ./alex roeka - 1999  - wildernis/12 - Alex Roeka - Vader.mp3
 ./alex roeka - 1999  - wildernis/08 - Alex Roeka - De mannenwoestijn.mp3
 ./alex roeka - 1999  - wildernis/07 - Alex Roeka - Kermis in ravenstein.mp3
 ./alex roeka - 1999  - wildernis/01 - Alex Roeka - Het schip genaamd 'de Nacht'.mp3

No track 05! But it is there. Look.
Code:
$ find -iname '*.mp3' 
./alex roeka - 1999  - wildernis/05 - Alex Roeka - Laat je maar zinken.mp3
./alex roeka - 1999  - wildernis/09 - Alex Roeka - Dronken Ochtendkade.mp3
./alex roeka - 1999  - wildernis/04 - Alex Roeka - Help me, ik ben echt.mp3
./alex roeka - 1999  - wildernis/06 - Alex Roeka - Noem het geen liefde.mp3
./alex roeka - 1999  - wildernis/02 - Alex Roeka - Schotwond in m'n ziel.mp3
./alex roeka - 1999  - wildernis/03 - Alex Roeka - Blues bij de deur waar de man staat.mp3
./alex roeka - 1999  - wildernis/10 - Alex Roeka - De lange liefde lang.mp3
./alex roeka - 1999  - wildernis/11 - Alex Roeka - Steeds dichter bij de grond.mp3
./alex roeka - 1999  - wildernis/12 - Alex Roeka - Vader.mp3
./alex roeka - 1999  - wildernis/08 - Alex Roeka - De mannenwoestijn.mp3
./alex roeka - 1999  - wildernis/07 - Alex Roeka - Kermis in ravenstein.mp3
./alex roeka - 1999  - wildernis/01 - Alex Roeka - Het schip genaamd 'de Nacht'.mp3

Why is that? I did:
Code:
$ id3 -Rl alex\ roeka\ -\ 1999\ \ -\ wildernis/05\ -\ Alex\ Roeka\ -\ Laat\ je\ maar\ zinken.mp3 

Filename: alex roeka - 1999  - wildernis/05 - Alex Roeka - Laat je maar zinken.mp3
Title: Laat Je Maar Zinken           
Artist: Alex Roeka                    
Album: Wildernis                     
Year:     
Genre: Other (12)
Track: 5
Comment: Het~Nachtdier

So why is it missing in the first list? Strange.
# 12  
Old 12-20-2010
OK,
one problem at a time.
This should work with GNU awk (gawk) for mp3 files:

Code:
find -iname '*.mp3' -exec id3 -Rl {} + |
  awk -F: '/filename: / {
    if (f) print fn
    fn = $2; f = x
    }
   /^(title|a(rtist|lbum)): *(|unknown|track) *$/ {
      f++
      }
    END {  
      if (f) print fn
      }' IGNORECASE=1

With mawk (the default awk on Ubuntu), you'll need something like this:
Code:
find -iname '*.mp3' -exec id3 -Rl {} + |
  mawk -F: '/Filename: / {
    if (f) print fn
    fn = $2; f = x
    }
    /^(Title|A(rtist|lbum)): *(([Uu]nknown|[Tt]rack *)| *)$/ {
      f++
      }
    END {  
      if (f) print fn
      }'


Last edited by radoulov; 12-20-2010 at 05:56 PM.. Reason: gawk version modified
# 13  
Old 12-20-2010
Oh.. I've gawk installed. I even get the gawk manpage if I do 'man awk' Smilie

---------- Post updated at 10:32 PM ---------- Previous update was at 10:27 PM ----------

Quote:
Originally Posted by radoulov
OK,
one problem at a time.
This should work with GNU awk (gawk) for mp3 files:

Code:
find -iname '*.mp3' -exec id3 -Rl {} + |
  awk -F: '/Filename: / {
    if (f) print fn
    fn = $2; f = x
    }
    /^(Title|A(rtist|lbum)): *(|[Uu]known|[Tt]rack) *$/ {
      f++
      }
    END {  
      if (f) print fn
      }'

With mawk (the default awk on Ubuntu), you'll need something like this:
Code:
find -iname '*.mp3' -exec id3 -Rl {} + |
  mawk -F: '/Filename: / {
    if (f) print fn
    fn = $2; f = x
    }
    /^(Title|A(rtist|lbum)): *(([Uu]known|[Tt]rack *)| *)$/ {
      f++
      }
    END {  
      if (f) print fn
      }'

I find track 01 and 07. Both have empty titles.
The tracks that should be found are track 02 (which is titled 'track 01', yes I really messed this one up) and track 03 (which is titled 'unknown')

---------- Post updated at 10:50 PM ---------- Previous update was at 10:32 PM ----------

To be sure: gawk is my default awk.
Code:
$ awk -W version
GNU Awk 3.1.7
Copyright (C) 1989, 1991-2009 Free Software Foundation.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.


Last edited by MrZehl; 12-20-2010 at 05:34 PM.. Reason: typos
# 14  
Old 12-20-2010
Yes,
awk is GNU awk now.
Try this for track ...:

Code:
find -iname '*.mp3' -exec id3 -Rl {} + |
  awk -F: '/filename: / {
    if (f) print fn
    fn = $2; f = x
    }
    /^(title|a(rtist|lbum)): *(|unknown|track.*) *$/ {
      f++
      }
    END {  
      if (f) print fn
      }' IGNORECASE=1

---------- Post updated at 10:58 PM ---------- Previous update was at 10:55 PM ----------

Sorry for the multi-correction Smilie
The GNU awk version should include always IGNORECASE=1 in order to ignore the case.

Last edited by radoulov; 12-20-2010 at 05:57 PM.. Reason: uknown -> unknown :)
 
Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need a script for automation the convert a lot number audio files to another format

I have a lot number audio files in the MP3 proprietary format, I want to convert them to 'opus' the free and higher quality format, with keep metadata also. My selection command-line programs are SoX (Sound eXchange) for convert MP3 files to 'AIFF' format in order to keep quality and metadata*... (1 Reply)
Discussion started by: temp-usr
1 Replies

2. UNIX for Dummies Questions & Answers

Remove untagged and junk data from an XML

Hi All , I have seen a lot of code samples which suggest how to remove the junk data from and XML , I need a code in unix which removes the junk characters as well as the valid characters those are not in XML tags , for example my XML is as follows : <?xml version="1.0"... (6 Replies)
Discussion started by: IshuGupta
6 Replies

3. Slackware

Problems with audio recording in Audacity 2.0.5. Slackware64 14.1; Intel HD Audio.

I'm trying to record audio using Audacity 2.0.5 installed from SlackBuilds. My system is 64-bit Slackware 14.1 and a sound card is Intel HD Audio. I didn't change my sound system to OSS. (Default sound system in Slackware 14.1 is ALSA, isn't it?) First, I set Internal Microphone slider in KMix... (2 Replies)
Discussion started by: qzxcvbnm
2 Replies

4. Shell Programming and Scripting

Manipulating audio files server side

Hi All, I have next to zero knowledge on what I am about to ask so I will just ask it in plain English :) I am wondering how best to go about manipulating audio files server side. The manipulations required are join files one after the other, eg, audio1 + audio2 + audio3 + audio4 = audio5 ... (0 Replies)
Discussion started by: linuxgoat
0 Replies

5. Shell Programming and Scripting

Script to list files not present in audio.txt file

I am having following folder structure. /root/audios/pop /root/audios/jazz /root/audios/rock Inside those pop, jazz, rock folders there are following files, p1.ul, p2.ul, p3.ul, j1.ul, j2.ul, j3.ul, r1.ul, r2.ul, r3.ul And I have a file named as "audio.txt" in the path /root/audios,... (11 Replies)
Discussion started by: gopikrish81
11 Replies

6. UNIX for Dummies Questions & Answers

Find Audio Files With Specific Bandwidth?

Hi, I would like to write a shell script that will: -search the files of a specific user to find any audio files with a bandwidth iqual or greater than 192 kps - on the results i should see the file name along with all the whole file route and each file's size So I guess i should be using... (1 Reply)
Discussion started by: ubu-user
1 Replies

7. Programming

Playing Audio files in C

Hi All, Looking for an assistance on how to access the speakers of my machine and play audio files using C. Any tutorials will be of great help. Regards, Sayantan. (1 Reply)
Discussion started by: Sayantan
1 Replies
Login or Register to Ask a Question