Creates and adds ID3V2.3 tags into MP3 files. Public Domain. The script ignores ID3V1 tags. There is no provision for modifying an existing tag or for reading existing tags. Only one tag can be added at a time. Run the command multiple times to add multiple tags. ################################################# All three files contain the same code. Download the most convenient one. Downloading Notes: VBS FILE IE may try to run the VBS file instead of downloading it! You'll have to right-click and select "Save Link" or "Save Target" to save the file to your hard drive. TXT FILE Be sure to save the downloaded file with a VBS file extension. If your Windows has the default behavior of hiding file extensions, you will have to quote the file name. For example, don't save it as test.vbs, but as "test.vbs". Using quotes forces Windows to honor your file extension. ZIP FILE No problems. The zip file contains a copy of the readme data below: ################################################# ######### OVERVIEW ############### ################################################# This script was written to support creating and adding to ID3V2.3 tags for MP3 files. Specifically, it was created to add pictures to MP3 files through the command line. Turns out most command-line MP3 creation tools (like "lame" and "ffmpeg") can write text tags, but nobody writes pictures. At least not that I could find. So this script was born. ################################################# ######### QUICK START ############### ################################################# Put a JPG picture in the same folder with your MP3. Drop the MP3 on the script. Done. The JPG picture is now the MP3 file's cover art. Don't do it again or you'll end up with two cover art pictures! This script *adds* stuff; it doesn't *replace* stuff. ################################################# ######### DESCRIPTION ############### ################################################# As a side benefit, this script supports writing all kinds of tags nobody else seems to be able to read or write... which doesn't sound like much of a benefit when you put it that way. Did you know you can embed unlimited arbitrary binary files in an MP3? Did you know you can store your private configuration data in there too? And you can store twenty different pictures (or more if you break some rules) that nobody will ever see? And, since nobody is set up to read this obscure stuff, it beats me how you'd ever get the data out that you put in. But I gave you the ability to put it in anyway. This script *only* works with ID3V2.3 tags. It ignores ID3V1 tags. The difference? ID3V2.3 tags go on the front of an MP3 file and are very versatile. ID3V1 tags go on the end of an MP3 file and are very simple. Caveats? There is no provision for modifying an existing tag or for reading existing tags. There is no provision for removing a single tag (but you can remove all the tags). Only one tag can be added at a time (run the script multiple times to add multiple tags). To simplify use, some assumptions were made: All tags are created configured as US-English and ASCII. Multi-line text will be corrected by the script to use LF. Mime types for APIC and GEOB are looked up in the registry and fall back to application/octet-stream if nothing is found. To support the common case of just adding a cover photo, a "simple mode" is supported where no switches are needed. ################################################# ######### USAGE ############### ################################################# Usage (Simple mode): ID3.vbs "C:\SomePath\somefile.mp3" If an MP3 file is dropped on the script and a JPG file exists in the same directory as the MP3, then the JPG will be added to the MP3 as cover art. If there are several JPG files, the newest one will be used. No special JPG file name is needed. Usage (Normal mode): ID3.vbs [/MP3:"file.mp3" | "file.mp3"] [/Tag:(ID) | /Remove] [other arguments] Basically what this means is that you MUST specify an MP3 file name either with the /MP3: switch or by simply supplying the file as a simple argument. The file name only needs to be quoted if there are spaces in the name. After the name, you either have to have a "/Remove" switch (which will DESTROY, NUKE, and OBLITERATE all ID3V2 data in the MP3 file) or you have to supply a /Tag: switch followed by a four-character tag ID (so the script knows what to add). After that, you supply whatever other information is needed (per the list below). ################################################# ######### TAGS LIST ############### ################################################# Supported tags (the Tag ID followed by description) are listed below. You can (and I recommend you do) find more information here: http://id3.org/id3v2.3.0#Declared_ID3v2_frames These tags need a /Description: and a /Value: argument. TXXX User defined text information WXXX User defined URL These tags embed the /File: argument's data. They also need a /Value: and /Description: APIC Attached picture (Recommend only JPG or PNG. The /Value: argument is the picture type, typically 3 for cover art. The /Description: has to be there, but it can be left blank.) GEOB General encapsulated object (Any file. Wow. The /Value: argument is the original file name. The /Description: probably shouldn't be blank for this one.) These tags take more than just simple text, so they get their data from a /File: argument. IPLS Involved people list (supposed to be job:name pairs delimited by binary zeros, but that sounds like too much trouble) USER Terms of use (Ordinary multiline text, nothing special. The script will convert it into the proper newline format.) These tags take multi-line text (which the script will convert into the proper newline format), but also need a description, so take both a /File: and /Description: argument. COMM Comments USLT Unsychronized lyrics/text transcription SYLT Synchronized lyrics/text transcription These tags get binary data from a /File: argument, but identify the owner with an email address or URL in the /Value: argument. UFID Unique file identifier (up to 64 bytes of something you use to identify the file) PRIV Private frame (supposedly where you store settings for your audio processing programs) These tags just need a /Value: argument. WCOM Commercial information URL WCOP Copyright/Legal information URL WOAF Official audio file URL WOAR Official artist/performer URL WOAS Official audio source URL WORS Official internet radio station homepage URL WPAY Payment URL WPUB Publishers official web page URL TALB Album/Movie/Show title TBPM BPM (beats per minute) TCOM Composer – Separate with / TCON Content type – (number) description TCOP Copyright message – year, space, message TDAT Date – DDMM TDLY Play list delay – milliseconds between songs TENC Encoded by – text TEXT Lyricist / Text writer – Separate with / TFLT File type – MPG/1 ,MPG/2, MPG/2.5, MPG/3 TIME Time – HHMM TIT1 Content group description TIT2 Title / song / content description TIT3 Subtitle/Description refinement TKEY Initial key TLAN Language(s) – eng TLEN Length – total in milliseconds TMED Media type – source TV, CD, DIG TOAL Original album/movie/show title TOFN Original file name TOLY Original lyricist(s)/text writer(s) TOPE Original artist(s)/performer(s) TORY Original release year TOWN File owner/licensee TPE1 Lead performer(s)/Soloist(s) TPE2 Band/orchestra/accompaniment TPE3 Conductor/performer refinement TPE4 Interpreted, remixed, or otherwise modified by TPOS Part of a set – just number or as in 1/3 TPUB Publisher TRCK Track number/Position in set - just number or as in 5/12 TRDA Recording dates TRSN Internet radio station name TRSO Internet radio station owner TSIZ Size - of MP3 bytes not counting ID3 TSRC ISRC 12-character International Standard Recording Code TSSE Software/Hardware and settings used for encoding TYER Year – YYYY ################################################# ######### NO COPYRIGHT ############### ################################################# Just so we're clear: ID3.vbs is released to the Public Domain 2015 by the author Eric Phelps (http://ericphelps.com). Use it, change it, sell it, and you don't even have to give me credit. Obviously, there is no warranty. Just because it worked for me doesn't mean it will work for you.