Giter Site home page Giter Site logo

id3's People

Contributors

nplanel avatar squell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

id3's Issues

Select files based on metadata

Like to recursively search my mp3's. Find one where the ALBUMARTIST is "Various Artists" and change it to "Various". Could I get some help here?

Mac?

How can I still this on a Mac?

Thanks
d

Escaping square brackets

I've just about tried every imaginable quoting and escaping scheme to get id3 to update a tag on a file whose name contains a pair of square brackets. The offending file name is Snowfall (Extended Mix) [feat. Laura Brehm]-102047348.mp3. I would have figured that backslashes would do the job, but they don't.

  % id3 'Snowfall (Extended Mix) \[feat. Laura Brehm\]-102047348.mp3'
id3: no files matching Snowfall (Extended Mix) \[feat. Laura Brehm\]-102047348.mp3

Is this a bug, or is there an undocumented different way to escape such a filename?

On a related note, it might be worthwhile to add a "literal" flag to disable interpretation of all special characters in filespecs, so that individual files can be more easily targeted. (My use case is to invoke id3 from a script, and I'm only targeting individual files.)

tab-completion

I can't tab complete 'id3 "song"'. After hitting tab terminal shows only possible options.

Recursion and dir naming... haven't quite figured it out yet

If this is what you meant by getting in touch? Not trying to file an issue against great software, I simply can't quite find what I need.

Did some testing locally first. That went fine. Now I want to unleash it on my entire Music folder, just to remove id3v1, which I've seen it do.

Because this is Linux, and because - well, just because - my dir names contain spaces, some of them diacriticals etc. Can I use regex to structure the search?

Currently I cannot get it to parse even into subdirs below the main one it's running in. Yes, I use -R but still.

Beyond simply -R, what do I need to include so that it will parse into up to five levels, ignoring spaces etc. in folder names?

Suggestion - Extract images

There's currently a way to remove them.

Would it be possible to add an extraction to the current folder for the embedded images also?

Q: How do I specifiy part of a the filename in the filespec?

Hi

id3 --delete --track "0%x" --title "%1_0%x" "*_*.mp3"

The above works as expected to ad part of the filename into the title tag.

How can I filter out some of the files in the folder, in this case those not starting with JOHN.

id3 --delete --track "0%x" --title "%1_0%x" "*_JOHN*.mp3"

I can find no clear example & I tried various combinations of escaping & brackets.

Make dot (.) replacement by underscore (_) optional

I am renaming files with the command id3 -2 -f "%n. %a - %t.mp3" test.mp3 and expected the result to be something like 01. artist - title.mp3. However the result is 01_ artist - title.mp3, with the dot (.) substituted for an underscore (_).
I have tried to escape the dot with a backslash (%n\. %a - %t.mp3) to no avail. I always get an underscore on the filename.
Which is the proper way to get a dot (.) on the filename?

Potential confusion with that other program

Recently, Peter Pentchev adopted the ancient Robert Woodcock id3 program and started maintaining it again, bumping the version number from 0.15 to 1.0: https://devel.ringlet.net/audio/id3/.

This presents a dilemma, since there's now "id3 1.0" and "id3 0.80".

Possible solutions:

  1. Inflate the version numbering; e.g. go from "v0.80" to "v5.00", or something.

  2. Change the /branding/ subtly (e.g. change the name of this repo, tarballs, website titles)

Potential Security Issue

Hello,

We recently received a potential vulnerability disclosure in your repository. I tried finding a contactable e-mail or a security process to follow, but couldn't find this.

If you would like me to send the details over to a preferred e-mail address, let me know - I will be happy to facilitate this for you.

Otherwise, you can view the vulnerability disclosure here - reported by @geeknik.

It is private and only visible to the maintainers and discloser.

Let me know if you have any questions!

-- Jamie from huntr.dev

-wTXXX:desc will not update tag

  1. -wTXXX:desc will not update tag; it appends a new one.
  2. -wTXXX:desc seem to be written incorrectly
  3. Should -q %{TXXX} return all the TXXX values

For 2, here is a part of the hex:
//TXXX � �ÿþm d 5 ÿþ1 1 1 1 1 TXXX � md5 WWWWW //
The first TXXX:md5="11111" written by mp3tag. Notice the encoding (byte order mark FF FE) , delimiters, and nul between each character in values.
The second TXXX:md5="WWWWW" written by ID3MT

From the ID3v2.3 spec:
4.2.6. User defined text information frame
This frame is intended for one-string text information concerning the
audio file in a similar way to the other "T"-frames. The frame body
consists of a description of the string, represented as a terminated
string, followed by the actual string. There may be more than one
"TXXX" frame in each tag, but only one with the same description.

 <Header for 'User defined text information frame', ID: "TXXX">
 Text encoding     $xx
 Description       <text string according to encoding> $00 (00)
 Value             <text string according to encoding>

-wCOMM fail to produce fully

Thanks very much for your efforts and program.

I am having a little issue with -wCOMM,

id3 -2 -wTXXX:descr value filepsec >> works as expected
id3 -2 -wCOMM value filepsec >> works as expected, but no language
id3 -2 -wCOMM:descr value filepsec >> fails, as not delimited properly in the metadata header

id3 0.80 does not correctly handle non-English characters.

WXPSP3

The Russian text is written in ID3V1 are encoded in CP1251 but ID3 shows nonsense (i expect output in 866 - its russian OEM codepage):

>id3 -q "%t\n%a\n%l\n%c" russian1.mp3
AAAAAA?CEEEEIIII
?NOOOOO?OUUUUY??
aaaaaa?ceeeeiiii
?nooooo?ouuuuy?y??

I suspect problem in charconv.cpp in "template<> conv<>::data conv::decode(const char* s, size_t len)".


Strings from ID3V2 (russian text in unicode) printed in wrong codepage:

E:\>id3 -q "%t\n%a\n%l\n%c" russian2.mp3
└┴┬├─┼╞╟╚╔╩╦╠═╬╧
╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀
рстуфхцчшщъыьэюя
ЁёЄєЇїЎў°∙·√№¤■ и╕

Its 1251 shown as 866.

If i change console codepage to 1251 and recode output from 1251 to 866, then text is correct:

>chcp 1251
>id3 -q "%t\n%a\n%l\n%c" russian2.mp3 | iconv -f CP1251 -t CP866

http://i.imgur.com/6Fe7LO2.png

АБВГДЕЖЗИЙКЛМНОП
РСТУФХЦЧШЩЪЫЬЭЮЯ
абвгдежзийклмноп
рстуфхцчшщъыьэюяЁё

samples.zip

russian2_1251.txt, russian2_correct_866.txt - redirected output

Cannot write id3v2 tag

The existing file already has a id3v2.4 tag. I know id3 can only read those, not write to those. Is there a way I can simply remove the id3v2.4 tag and write a id3v2.3 tag instead?

I've Google'd myself senseless, but cannot find any command line tool that will let me completely remove the id3 tags, allowing me to re-tag them using id3.

can't handle file names with brackets

I noticed id3 doesn't handle filenames with brackets, for example:

$ id3 -n '' 'Complete Jazz at Massey Hall - Charlie Parker/05 - Drum Conversation [Live].mp3'
id3: no files matching Complete Jazz at Massey Hall - Charlie Parker/05 - Drum Conversation [Live].mp3

Verbose option

Hello again. Hope that all is well.

This appears to be an issue. When I type and run "id3 test.mp3" I get what appears to be expected output: the 7 primary key/value pairs added to the file name and format. However, when I run the same with the -v option, I get an extended output with many of the values missing, even those viewable without the -v option. See below for the outputs. Thanks.


ID3 test.mp3

Gives:

m:\_TEMP\_TEST\
>id3 test.mp3
File: test.mp3
Metadata: ID3v2.3
Title: 08—THIS TOWN
Artist: 06—FRANK SINATRA
Album: 02—ALBUM
Track: 19
Year: 2003
Genre: 09—GENRE1
Comment: 13—COMMENT_LINE1  13—COMMENT_LINE2  13—COMMENT_LINE3

ID3 -v test.mp3

Gives:

m:\_TEMP\_TEST\
>id3 -v test.mp3
#file   test.mp3
#tag    ID3v2
{TALB}

{TPE1}
        06—FRANK SINATRA
{TPE2}

{TBPM}

{COMM::eng}
        13—COMMENT_LINE1
        13—COMMENT_LINE2
        13—COMMENT_LINE3

{TCOM}

{TPE3}

{TIT1}

{TCOP}

{TPOS}

{TENC}

{TSSE}
        20—ENCODEDSETTINGS
{TCON}

{TKEY}

{IPLS}

{TCMP}

{TSRC}

{TEXT}

{TPE4}

{TOAL}

{TOPE}

{TOLY}

{TORY}

{POPM}

{POPM}

{TPUB}

{TIT3}

{TIT2}

{TRCK}

{TYER}

{TSOA}

{TSOP}

{TSOT}
        58—TITLESORT--V2.3--U16--GENRE1+GENRE2
{TSO2}
        51—ALBUMARTISTSORT
{TXXX:ASIN}

{TXXX:BAND}

{TXXX:CATALOGNUMBER}

{TXXX:itunesadvisory}

{TXXX:TEST3}

Support for cover pictures embedded

Tried to copy the id3 tags from the following mp3 below to an m4a (aac) but it missed the cover image

braulio @ bhavapower ➜  media-downloader-bot git:(main) ✗  exiftool in.mp3
ExifTool Version Number         : 12.60
File Name                       : in.mp3
Directory                       : .
File Size                       : 4.8 MB
File Modification Date/Time     : 2012:07:13 10:59:09-03:00
File Access Date/Time           : 2023:03:04 16:07:03-03:00
File Inode Change Date/Time     : 2023:04:23 10:10:30-03:00
File Permissions                : -rw-------
File Type                       : MP3
File Type Extension             : mp3
MIME Type                       : audio/mpeg
MPEG Audio Version              : 1
Audio Layer                     : 3
Audio Bitrate                   : 128 kbps
Sample Rate                     : 44100
Channel Mode                    : Joint Stereo
MS Stereo                       : On
Intensity Stereo                : Off
Copyright Flag                  : False
Original Media                  : True
Emphasis                        : None
ID3 Size                        : 12416
Picture MIME Type               : image/jpeg
Picture Type                    : Front Cover
Picture Description             : 
Picture                         : (Binary data 8023 bytes, use -b option to extract)
WM Media Class Primary ID       : D1607DBC-E323-4BE2-86A1-48A42A28441E
WM Media Class Secondary ID     : 00000000-0000-0000-0000-000000000000
Genre                           : Kiirtan
Album                           : Sweet Joy
Track                           : 1
Artist                          : Ainjali
Title                           : 
Year                            : 
Comment                         : 
Duration                        : 0:04:56 (approx)

How to replace the str in the Tags with Python?

I wonder if I can use some defined function in Python to replace the strings?

How could I firstly read out the Tags strings as variable to be used in Python?

like rep(string):
command = ["D:\****\id3-080w\id3.exe","-2","-c","www.****.com","-a",rep(%a),"-l",rep(%l),"-g",rep(%g),i]
subprocess.call(command)

But this reports syntax error in Python.

Thanks

Tagging produces "trailing garbage"

After many years as a very happy user of id3 I've run into a small issue. Tagging produces trailing garbage, probably since upgrading to FreeBSD 11.1

FreeBSD 11.1-p1 amd64
audio/id3mtag 0.80 from ports

Tried to create something that can be reproduced, but failed sofar.

publisher tag

can we add publisher tag , and composer etc like when we click on mp3 file in windows it have a lot of tags

Refinements and Enhancements

These are not issues, per se, rather requests. Thanks in advance.

  1. Add a modifier, such as a semicolon, to append to keys which allow multiple lines or values (GENRE, COMMENT, POPM, …), as opposed to replacing any value previously set with the the new. See the example in the next item.

  2. Add support writing POPM. I suggest:
    "POPM":"[email protected]:192:62"

E.g., to replace current POPM values:
id3 -2 -wPOPM "[email protected]:2:62" …

E.g., to append to current POPM, i.e., add a second:
id3 -2 -wPOPM ";[email protected]:2:4" …

  1. Replace line feed with Unicode (U+000D/U+000A) or PCRE (\R) representatives. This will allow writing multi-line COMM values. The \R matches the user's environment, \r\n or \n.

  2. These all pertain to the verbose output (dump) and write options. I suggest modifying the format a little, allowing the output to a file in a standard way and reading in the same file.

a) I suggest "a key and value on one line" format for the metadata dump file (a little JSON-ish). Note that for key which allow multiple lines or values (GENRE, COMMENT, POPM, …), a prefixed semicolon appends attached value as opposed to swapping the attached new with any previously set.


{
    "id3mt": "0.81",
    "file_name": "test.mp3",
    "metadata": "ID3v2.3",
    "TIT2": "08—THIS TOWN",
    "TPE1": "06—FRANK SINATRA",
    "TALB": "02—ALBUM",
    "TRCK": "19",
    "TORY": "2003",
    "TCON": "GENRE1;GENRE2",
    "TCON": ";GENRE3",
    "TEXT": "18—LYRICIST",
    "TPE4": "16—MIXER",
    "TOAL": "21—ALBUMORIG",
    "TOPE": "23—ARTISTORIG",
    "TOLY": "28—LYRICISTORIG",
    "TSO2": "51—ALBUMARTISTSORT",
    "TXXX:ASIN": "24000078",
    "TXXX:BAND": "14—BAND",
    "TXXX:CATALOGNUMBER": "26—CATALOGNO",
    "TXXX:itunesadvisory": "4",
    "TXXX:TEST3": "60—TEST",
    "COMM::eng": "13—COMMENT_LINE1U+000DU+000A13—COMMENT_LINE2U+000DU+000A13—COMMENT_LINE3U+000DU+000A",
    "POPM":"[email protected]:192:62",
    "POPM":";[email protected]:1:2"
}

b) Provide a means to output a dump file from an audio file. For example,
id3 -2 -vf test.mp3 >>> test.tags … with contents as (a) above.
I realize that a users can currently do: id3 -v test.mp3 > test.tags

c) Provide a means to input a dump file to an audio file. For example,
id3 -2 -wf test.mp3 >>> uses contents of test.tags, or explicitly specify dump file,
id3 -2 -wf "test.tags" test.mp3

id3 0.80 changes console codepage from OEM to ANSI

Windows XP SP3

>chcp
Текущая кодовая страница: 866

>id3.exe -V
id3 0.80 (2015356), Copyright (C) 2003, 04, 05, 06, 15 Marc R. Schoolderman
This program comes with ABSOLUTELY NO WARRANTY.

This is free software, and you are welcome to redistribute it
under certain conditions; see the file named COPYING in the
source distribution for details.

>chcp
╥хъє∙р  ъюфютр  ёЄЁрэшЎр: 1251

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.