
joeyb1275
-
Posts
63 -
Joined
-
Last visited
Reputation Activity
-
joeyb1275 got a reaction from TheSaint in ID3 UDF ID3v1 & ID3v2 MP3 Tags
ID3.au3 UDF Description:
Reads ID3v1.0, ID3v1.1, ID3v1.1+, ID3v2.2, ID3v2.3, ID3v2.4, APEv2 and MPEG frame header Writes ID3v1.1, ID3v2.3, ID3v2.4 Latest Version v3.4 20120610 AutoIt Version Required: 23rd December, 2011 - v3.3.8.0 of AutoIt ID3 functions only works with .mp3 files Notes:
More info on the ID3 format can be found at http://www.id3.org/Developer_Information and http://en.wikipedia.org/wiki/ID3 More info on the APE tag format can be found at http://wiki.hydrogenaudio.org/index.php?title=APEv2_specification If you only care about getting the basic info ie. Album, Artist, Track and Song Title then look into using Udf: Get Extended FIle Properties More ID3 implementations http://www.id3.org/Implementations Changes in latest version (see files for all changes):
ID3_v3.4.au3 (06/10/2012)
Added resetting of all global ID3 variables in _ID3ReadTag() to make sure they are set back to the default values changed _ID3WriteTag() to determine what tags have been read and to only write back those version if $iTagVersion=-1 edited _ID3WriteTag() comments added $iReturnTypeFlag to _ID3GetTagField() inputs for ID3v2 functions fixed _ID3GetTagField() so that @extended is set to the Number of frames that exist with same $sFrameIDRequest fixed _h_ID3v2_EncodeStringToBinary() variable typo ($FrameData should be $bFrameData), thanks BrewManNH! ID3_Example_GUI_v3.4.au3 (06/10/2012)
changed all _ID3v1Field_GetString and _ID3v2Field_GetString to _ID3GetTagField ID3_SimpleExamples_v3.4.au3 (06/10/2012)
I have realized that the GUI example has become overly complex, so I have added this file to help show how I intended ID3.au3 to be used. Simple Read Tag Example:
$Filename = FileOpenDialog ( "Select Mp3 File", "", "Muisc (*.mp3)") $sTagInfo = _ID3ReadTag($Filename) MsgBox(0,"TagInfo",$sTagInfo) MsgBox(0,"ID3v1 Title",_ID3GetTagField("Title")) ;Title from ID3v1 MsgBox(0,"ID3v2 Title",_ID3GetTagField("TIT2")) ;Title from ID3v2
Simple Write Tag Example:
$Filename = FileOpenDialog( "Select Mp3 File", "", "Muisc (*.mp3)") $sTagInfo = _ID3ReadTag($Filename) _ID3SetTagField("COMM","TEST COMMENT - ID3v2 Comment Tag") _ID3WriteTag($Filename)
Latest Version v3.4 20120610
ID3v2.3TagSpec.pdf
ID3v2.4TagSpec.pdf
ID3_Example_GUI_v3.4.au3
ID3_SimpleExamples_v3.4.au3
ID3_v3.4.au3
-
joeyb1275 got a reaction from TheSaint in ID3 UDF ID3v1 & ID3v2 MP3 Tags
Hi All -
Thanks for all the posts with code fixes and updates. I am looking to use this code again and I want to incorporate some of your suggestions, they look pretty good!
I am going to try to use git and github to work on this code that way we can work on things together or when I am slacking off (which can happen for awhile) some one else can fork it and run with it.
Below is the link. I just upload and compiled it to make sure it all works. I also post older version in case anybody wants those, but I have not tried compiling those yet, maybe I'll get to it this weekend.
https://github.com/joeyb1275/ID3_UDF
-
joeyb1275 got a reaction from nend in ID3 UDF ID3v1 & ID3v2 MP3 Tags
Hi All -
Thanks for all the posts with code fixes and updates. I am looking to use this code again and I want to incorporate some of your suggestions, they look pretty good!
I am going to try to use git and github to work on this code that way we can work on things together or when I am slacking off (which can happen for awhile) some one else can fork it and run with it.
Below is the link. I just upload and compiled it to make sure it all works. I also post older version in case anybody wants those, but I have not tried compiling those yet, maybe I'll get to it this weekend.
https://github.com/joeyb1275/ID3_UDF
-
joeyb1275 got a reaction from argumentum in ID3 UDF ID3v1 & ID3v2 MP3 Tags
ID3.au3 UDF Description:
Reads ID3v1.0, ID3v1.1, ID3v1.1+, ID3v2.2, ID3v2.3, ID3v2.4, APEv2 and MPEG frame header Writes ID3v1.1, ID3v2.3, ID3v2.4 Latest Version v3.4 20120610 AutoIt Version Required: 23rd December, 2011 - v3.3.8.0 of AutoIt ID3 functions only works with .mp3 files Notes:
More info on the ID3 format can be found at http://www.id3.org/Developer_Information and http://en.wikipedia.org/wiki/ID3 More info on the APE tag format can be found at http://wiki.hydrogenaudio.org/index.php?title=APEv2_specification If you only care about getting the basic info ie. Album, Artist, Track and Song Title then look into using Udf: Get Extended FIle Properties More ID3 implementations http://www.id3.org/Implementations Changes in latest version (see files for all changes):
ID3_v3.4.au3 (06/10/2012)
Added resetting of all global ID3 variables in _ID3ReadTag() to make sure they are set back to the default values changed _ID3WriteTag() to determine what tags have been read and to only write back those version if $iTagVersion=-1 edited _ID3WriteTag() comments added $iReturnTypeFlag to _ID3GetTagField() inputs for ID3v2 functions fixed _ID3GetTagField() so that @extended is set to the Number of frames that exist with same $sFrameIDRequest fixed _h_ID3v2_EncodeStringToBinary() variable typo ($FrameData should be $bFrameData), thanks BrewManNH! ID3_Example_GUI_v3.4.au3 (06/10/2012)
changed all _ID3v1Field_GetString and _ID3v2Field_GetString to _ID3GetTagField ID3_SimpleExamples_v3.4.au3 (06/10/2012)
I have realized that the GUI example has become overly complex, so I have added this file to help show how I intended ID3.au3 to be used. Simple Read Tag Example:
$Filename = FileOpenDialog ( "Select Mp3 File", "", "Muisc (*.mp3)") $sTagInfo = _ID3ReadTag($Filename) MsgBox(0,"TagInfo",$sTagInfo) MsgBox(0,"ID3v1 Title",_ID3GetTagField("Title")) ;Title from ID3v1 MsgBox(0,"ID3v2 Title",_ID3GetTagField("TIT2")) ;Title from ID3v2
Simple Write Tag Example:
$Filename = FileOpenDialog( "Select Mp3 File", "", "Muisc (*.mp3)") $sTagInfo = _ID3ReadTag($Filename) _ID3SetTagField("COMM","TEST COMMENT - ID3v2 Comment Tag") _ID3WriteTag($Filename)
Latest Version v3.4 20120610
ID3v2.3TagSpec.pdf
ID3v2.4TagSpec.pdf
ID3_Example_GUI_v3.4.au3
ID3_SimpleExamples_v3.4.au3
ID3_v3.4.au3
-
joeyb1275 got a reaction from TheSaint in ID3 UDF ID3v1 & ID3v2 MP3 Tags
That is too bad, I have not built in a way to fix poorly formatted tags nor do I check for that. Do you have any suggestions on how the ID3 code can change to check for the v2.2 and v2.3 mixed tag?
I like your idea of scanning for the first MPEG header! There is a function in the ID3 udf called _MPEG_GetFrameHeader() that you can use as a starting point if you haven't already done so. If you can get it working quickly I would like to add it to the ID3 udf.
-
joeyb1275 reacted to TheSaint in ID3 UDF ID3v1 & ID3v2 MP3 Tags
You've worked it out, but I guess the easiest way to think about it, is to see ID3 tags as just one long (header type) string, that only really become fields during the read/write process. So in a sense, you are replacing a string of fields with a string of fields, not just a field with a field.
I guess joeyb1275 could have made read an imperative before each write, which would be fine for single tag elements, but a lot of unnecessary repetition etc for multiple tags. Far better to read the whole string in once from file, modify the field/s within (in memory) then write/update the whole modified string once to file.