Update a new file with ALL tag information from an old file?
Moderator: Gurus
-
- Posts: 251
- Joined: Tue Dec 06, 2005 8:01 pm
Update a new file with ALL tag information from an old file?
I ripped all my music (back in the old days) to 128kbps CBR and tagged it extensively.
But now I'd really like to get "better" versions of my files, ripping them with higher bitrate and a better encoder.
Question: how can I transfer all the tag information from my "old" files to the "new" files?
This would include lyrics and album art, so just renaming the file using all fields and importing them with the auto-tag feature won't work.
I don't want to enter the information again manually, and I don't want to copy/paste each field individually.
Is there a way for such a batch operation?
I have posted something to that effect in the scripts forum several weeks ago but didn't quite get the answer I expected,
so I wonder if maybe there already is such a functionality in MM and I just haven't found it yet?
I can't imagine I would be the only user with this problem!
Notes:
- I tried to find a standalone app that would do this for me, but no luck
- I was toying with the idea of using the "synchronize tag" feature for this (open MM, replace old file with new file and hit "synchronize") but I don't think it works.
Besides, that approach kinda scares me. I certainly don't want to risk losing my tag information!!
But now I'd really like to get "better" versions of my files, ripping them with higher bitrate and a better encoder.
Question: how can I transfer all the tag information from my "old" files to the "new" files?
This would include lyrics and album art, so just renaming the file using all fields and importing them with the auto-tag feature won't work.
I don't want to enter the information again manually, and I don't want to copy/paste each field individually.
Is there a way for such a batch operation?
I have posted something to that effect in the scripts forum several weeks ago but didn't quite get the answer I expected,
so I wonder if maybe there already is such a functionality in MM and I just haven't found it yet?
I can't imagine I would be the only user with this problem!
Notes:
- I tried to find a standalone app that would do this for me, but no luck
- I was toying with the idea of using the "synchronize tag" feature for this (open MM, replace old file with new file and hit "synchronize") but I don't think it works.
Besides, that approach kinda scares me. I certainly don't want to risk losing my tag information!!
-
- Posts: 14163
- Joined: Sat Oct 25, 2003 7:57 am
- Location: (Texas)
- Contact:
no
this is done manually only.
so this would need a script to be made for your auto retagging.
this is done manually only.
so this would need a script to be made for your auto retagging.
roving cowboy / keith hall. My skins http://www.mediamonkey.com/forum/viewto ... =9&t=16724 for some help check on Monkey's helpful messages at http://www.mediamonkey.com/forum/viewto ... 4008#44008 MY SYSTEMS.1.Jukebox WinXp pro sp 3 version 3.5 gigabyte mb. 281 GHz amd athlon x2 240 built by me.) 2.WinXP pro sp3, vers 2.5.5 and vers 3.5 backup storage, shuttle 32a mb,734 MHz amd athlon put together by me.) 3.Dell demension, winxp pro sp3, mm3.5 spare jukebox.) 4.WinXp pro sp3, vers 3.5, dad's computer bought from computer store. )5. Samsung Galaxy A51 5G Android ) 6. amd a8-5600 apu 3.60ghz mm version 4 windows 7 pro bought from computer store.
Although several people have already requested this, it seems that this was tagged as a functionality that is not needed, just have a look at this thread:
http://www.mediamonkey.com/forum/viewtopic.php?t=5354
If I sound bitter, it is because I am. Right now I am in the process of re-ripping 1000 CDs (12.000 tracks) from MP3 to FLAC. 2 weeks now and I almost got 20%. If I would spend more time at this job each day, I would get serious trouble with my wife.
bye
Wolfgang
http://www.mediamonkey.com/forum/viewtopic.php?t=5354
If I sound bitter, it is because I am. Right now I am in the process of re-ripping 1000 CDs (12.000 tracks) from MP3 to FLAC. 2 weeks now and I almost got 20%. If I would spend more time at this job each day, I would get serious trouble with my wife.
bye
Wolfgang
-
- Posts: 14163
- Joined: Sat Oct 25, 2003 7:57 am
- Location: (Texas)
- Contact:
sorry you are upset wolfzell.
but there is a new scripter in the group now and he is good.
and looking for ideas maybe he will pick this up.
of course his wife might get mad if he gets lost in code so
he might take his time at it too..
but there is a new scripter in the group now and he is good.
and looking for ideas maybe he will pick this up.
of course his wife might get mad if he gets lost in code so
he might take his time at it too..
roving cowboy / keith hall. My skins http://www.mediamonkey.com/forum/viewto ... =9&t=16724 for some help check on Monkey's helpful messages at http://www.mediamonkey.com/forum/viewto ... 4008#44008 MY SYSTEMS.1.Jukebox WinXp pro sp 3 version 3.5 gigabyte mb. 281 GHz amd athlon x2 240 built by me.) 2.WinXP pro sp3, vers 2.5.5 and vers 3.5 backup storage, shuttle 32a mb,734 MHz amd athlon put together by me.) 3.Dell demension, winxp pro sp3, mm3.5 spare jukebox.) 4.WinXp pro sp3, vers 3.5, dad's computer bought from computer store. )5. Samsung Galaxy A51 5G Android ) 6. amd a8-5600 apu 3.60ghz mm version 4 windows 7 pro bought from computer store.
I thought I read and answered a request like this in the past: http://www.mediamonkey.com/forum/viewto ... =copy+tags
Does what I proposed you there sound a good way to do? (it's certainly very easy, both for user and scripter)?
Does what I proposed you there sound a good way to do? (it's certainly very easy, both for user and scripter)?
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).
Script suggestion based on the concept:
This is just a basic "idea", so please other scripters, if you have time, please take a look at it (and improve it, or make it work (I didn't test))
Again, the script does what is mentioned here: http://www.mediamonkey.com/forum/viewto ... 2601#42601
Nothing else! So just use it for testing a bit... It's not safe!!
Another selection like "Old1, Old2, Old3, Old4, New1, New2, New3, New4" can also easily be made.
Just changeto
Cheers
Steegy
Code: Select all
Option Explicit
Sub CopyTagDataWithinPairs
Dim mySongList
Set mySongList = SDB.SelectedSongList
If MySongList.Count = 0 Then
Set MySongList = SDB.AllVisibleSongList
If MySongList.Count = 0 Then
SDB.MessageBox "Nothing selected!", mtError, Array(mbOK)
Exit Sub
End If
End If
Dim i, SongFrom, SongTo
For i = 0 To mySongList.Count - 1 Step 2
Set SongFrom = mySongList.Item(i) 'first song is the old one to get the tags from
Set SongTo = mySongList.Item(i + 1) 'second song is the new one to write the data to
''Set SongTo.Album = SongFrom.Album
''Set SongTo.AlbumArt = SongFrom.AlbumArt
SongTo.AlbumArtistName = SongFrom.AlbumArtistName
SongTo.AlbumName = SongFrom.AlbumName
''Set SongTo.Artist = SongFrom.Artist
SongTo.ArtistName = SongFrom.ArtistName
SongTo.Author = SongFrom.Author
SongTo.Band = SongFrom.Band
SongTo.BPM = SongFrom.BPM
SongTo.Comment = SongFrom.Comment
SongTo.Conductor = SongFrom.Conductor
SongTo.Copyright = SongFrom.Copyright
SongTo.Custom1 = SongFrom.Custom1
SongTo.Custom2 = SongFrom.Custom2
SongTo.Custom3 = SongFrom.Custom3
SongTo.Genre = SongFrom.Genre
SongTo.InvolvedPeople = SongFrom.InvolvedPeople
'...
'... more to add...
'...
' I obviously didn't add things like DateAdded and Encoder
' What about copying objects like AlbumArt?
' Could the method GetCopy be used?
SongTo.UpdateAlbum
SongTo.UpdateArtist
SongTo.UpdateDB
SongTo.WriteTags
Next
End Sub
Again, the script does what is mentioned here: http://www.mediamonkey.com/forum/viewto ... 2601#42601
Nothing else! So just use it for testing a bit... It's not safe!!
Another selection like "Old1, Old2, Old3, Old4, New1, New2, New3, New4" can also easily be made.
Just change
Code: Select all
For i = 0 To mySongList.Count - 1 Step 2
Set SongFrom = mySongList.Item(i) 'first song is the old one to get the tags from
Set SongTo = mySongList.Item(i + 1) 'second song is the new one to write the data to
Code: Select all
For i = 0 To mySongList.Count/2 - 1
Set SongFrom = mySongList.Item(i) 'first song is the old one to get the tags from
Set SongTo = mySongList.Item(i + mySongList.Count/2) 'second song is the new one to write the data to
Steegy
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).
Thanks for your help, steegy.
I started converting only after I found a method to re-rip while keeping the old info, only it needs a lot of manual steps and such methods are error-prone if you have to do them for 1000 albums, but I try to explain the way that I am doing it right now:
1. I have all my music sorted this way:
D:/MP3/<Album Artist>/<Album>/<Track #> - <Title> - <Artist>.mp3
2. I use MM's convert feature to convert all the tracks to *.flac with the same directory scheme, but naming them only <Track #>.flac. Now I have all entries two times in MM's database. One time with the mp3 extension and one time with the flac extension.
3. I delete all files in D:/MP3/ named ??.flac which kills the converted FLAC-files, but keeps the MP3 files just for safety right now.
4. I use EAC with the FLAC-encoder and rip the album, telling EAC to name the tracks just with the track#. (=??.flac). When EAC wants to save the files, I point it to the directory of that album. This way the tag info in the ripped file may be retrieved from freedb, but that does not matter.
5. After EAC has ripped the album, I go to the album in MM, delete the MP3 files, press Ctrl-A (select all), Ctrl-S (synchronize tags, this way writing MM's info into the new ripped files) and Ctrl-R (rename files, with the old naming scheme of the mp3-files).
This way I know exactly which files are already done. Still this is error prone if I ever point EAC to a wrong directory.
It would be much easier if everything could be done in MM. Just insert the CD, select re-rip, and let the computer do the rest.
Well, but at least I found a way to keep my old info (including cover art). All I am losing are the connections to the playlists, so I will have do build them up all over again after the format conversion. I could have exported and imported them (after correcting them) again, but I forgot that at the beginning. Right now many mp3-files are already missing and so are the entries in the playlists for them...
bye
Wolfgang
I started converting only after I found a method to re-rip while keeping the old info, only it needs a lot of manual steps and such methods are error-prone if you have to do them for 1000 albums, but I try to explain the way that I am doing it right now:
1. I have all my music sorted this way:
D:/MP3/<Album Artist>/<Album>/<Track #> - <Title> - <Artist>.mp3
2. I use MM's convert feature to convert all the tracks to *.flac with the same directory scheme, but naming them only <Track #>.flac. Now I have all entries two times in MM's database. One time with the mp3 extension and one time with the flac extension.
3. I delete all files in D:/MP3/ named ??.flac which kills the converted FLAC-files, but keeps the MP3 files just for safety right now.
4. I use EAC with the FLAC-encoder and rip the album, telling EAC to name the tracks just with the track#. (=??.flac). When EAC wants to save the files, I point it to the directory of that album. This way the tag info in the ripped file may be retrieved from freedb, but that does not matter.
5. After EAC has ripped the album, I go to the album in MM, delete the MP3 files, press Ctrl-A (select all), Ctrl-S (synchronize tags, this way writing MM's info into the new ripped files) and Ctrl-R (rename files, with the old naming scheme of the mp3-files).
This way I know exactly which files are already done. Still this is error prone if I ever point EAC to a wrong directory.
It would be much easier if everything could be done in MM. Just insert the CD, select re-rip, and let the computer do the rest.
Well, but at least I found a way to keep my old info (including cover art). All I am losing are the connections to the playlists, so I will have do build them up all over again after the format conversion. I could have exported and imported them (after correcting them) again, but I forgot that at the beginning. Right now many mp3-files are already missing and so are the entries in the playlists for them...
bye
Wolfgang
I wonder if an "IMPORT" type function could solve this issue and the issue of changing drive/volume id's (Ie moving files to a new computer/drive).
New script: Last.FM Node Now with DJ Mode!
Last.fm + MediaMonkey = Scrobbler DJ!
Tag with MusicBrainz ~ Get Album Art!
Tweak the Monkey! ~ My Scripts Page
Last.fm + MediaMonkey = Scrobbler DJ!
Tag with MusicBrainz ~ Get Album Art!
Tweak the Monkey! ~ My Scripts Page
-
- Posts: 251
- Joined: Tue Dec 06, 2005 8:01 pm
Thanks a lot for the replies, Steegy and the others.
I know it's lame to keep asking others to write scripts and I really apologize for that.
I did some more searching and found a tagger called "Abander TagControl".
It doesn't look too bad to tell the truth, but it's no match for the Monkey.
However, it does have a nifty feature: the option to copy/past ENTIRE TAGS from a file.
Of course it only copies the fields that it supports. Since it supports only about half
the fields that Media Monkey does, it's not that great of a solution.
But it does give an interesting idea! The way it works in TagControl is that using
CTRL+C on a file copies all tag information, CTRL+V then pastes it somewhere else.
It can also export the tag to a bunch of formats (.tag, .csv, .txt).
Adapting that for a script, how about if one could open 2 directories side by side
(similar to explorer windows) and then just copy/paste tags from one side to the other?
I know it's lame to keep asking others to write scripts and I really apologize for that.
I did some more searching and found a tagger called "Abander TagControl".
It doesn't look too bad to tell the truth, but it's no match for the Monkey.
However, it does have a nifty feature: the option to copy/past ENTIRE TAGS from a file.
Of course it only copies the fields that it supports. Since it supports only about half
the fields that Media Monkey does, it's not that great of a solution.
But it does give an interesting idea! The way it works in TagControl is that using
CTRL+C on a file copies all tag information, CTRL+V then pastes it somewhere else.
It can also export the tag to a bunch of formats (.tag, .csv, .txt).
Adapting that for a script, how about if one could open 2 directories side by side
(similar to explorer windows) and then just copy/paste tags from one side to the other?
This is possible, and if I wasn't in the middle of several other scripts at the moment (and 3 skins as well, although I haven't given them any time for weeks) I would give it a go. It should be possible to simply take all the database fields from one track and apply that information to another. I'm not sure about copying every tag though. This would be more of an application than a script, although it would be possible.
Download my scripts at my own MediaMonkey fansite.
All the code for my website and scripts is safely backed up immediately and for free using Dropbox.
All the code for my website and scripts is safely backed up immediately and for free using Dropbox.
It's also very easy to make a script that first asks to select the "from" tracks an then the "to" tracks.
BTW, I'm aware of the not-so-good coding technique (using global variables where it's not necessary) so I could have let the functions return the SDBSongLists instead of the booleans, but it's just the concept. I didn't actually test the script so I wanted to keep it very easy.
However, it probably isn't far away from a working script. Maybe someone can test it?
Cheers
Steegy
Code: Select all
Dim mySongListFrom, mySongListTo
Sub Main
If SelectTracksFrom Then
'GIVE THE USER A MESSAGE AND THE CHANCE TO SELECT OTHER TRACKS TO SAVE THE TAGS TO
If SDB.MessageBox("Select tracks to save tags to, please.", mtInformation, Array(mbOk, mbCancel)) = mrOk Then
If SelectTracksTo Then
CopyTagDataBetweenSonglists(mySongListFrom, mySongListTo)
End If
End If
End If
End Sub
Function SelectTracksFrom
SelectTracksFrom = False
Set mySongListFrom = SDB.SelectedSongList
If MySongListFrom.Count = 0 Then
Set MySongListFrom = SDB.AllVisibleSongList
If MySongListFrom.Count = 0 Then
SDB.MessageBox "Nothing selected!", mtError, Array(mbOK)
Exit Function
End If
End If
SelectTracksFrom = True
End Function
Function SelectTracksTo
SelectTracksTo = False
Set mySongListTo = SDB.SelectedSongList
If MySongListTo.Count = 0 Then
Set MySongListTo = SDB.AllVisibleSongList
If MySongListTo.Count = 0 Then
SDB.MessageBox "Nothing selected!", mtError, Array(mbOK)
Exit Sub
End If
End If
If MySongListTo.Count = MySongListFrom.Count Then SelectTracksTo = True
End Function
Sub CopyTagDataBetweenSonglists(SLFrom, SLTo)
Dim i, SongFrom, SongTo
For i = 0 To SLFrom.Count - 1
Set SongFrom = SLFrom.Item(i)
Set SongTo = SLTongList.Item(i)
'.... The same as always...
Next
End Sub
However, it probably isn't far away from a working script. Maybe someone can test it?
Cheers
Steegy
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).
Actually, a Ctrl-C, Ctrl-V alike solution is also very similar.
Concept:
Add context menu item "Copy Tag Information Ctrl-Shift-C" and "Paste Tag Information Ctrl-Shift-V" and link these 2 items to 2 different script methods like GetSelectedSonglistAndSaveToSDBObjectsArray and SaveSDBObjectsArraySonglistToSelectedSonglist.
It's all almost the same. It just depends on how you would like it to be implemented.
BTW: We are still talking about a "not so much happening problem" isn't it? So the script has to work, but the way how isn't really important probably (as you will probably only use the script once, and then forget about it).
Cheers
Steegy
Concept:
Add context menu item "Copy Tag Information Ctrl-Shift-C" and "Paste Tag Information Ctrl-Shift-V" and link these 2 items to 2 different script methods like GetSelectedSonglistAndSaveToSDBObjectsArray and SaveSDBObjectsArraySonglistToSelectedSonglist.
It's all almost the same. It just depends on how you would like it to be implemented.
BTW: We are still talking about a "not so much happening problem" isn't it? So the script has to work, but the way how isn't really important probably (as you will probably only use the script once, and then forget about it).
Cheers
Steegy
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).
-
- Posts: 251
- Joined: Tue Dec 06, 2005 8:01 pm
Steegy: I apologize if you were waiting all this time for feedback that never came!
What can I say, I was really busy these past few months and didn't get a chance to play with my Monkey at all!
I have looked at your script suggestion but not being a scripter myself I don't understand all of it. I think I get the gist though.
Some thoughts:
1. the most important fields would be LYRICS and COMMENTS, followed by the "description" fields such as Tempo, Situation, Mood, Rating...
After all, the other fields can be easily obtained when looking up tags, the problem are the fields with personal or customized information.
2. How about being able to select 2 directories and get the script to *suggest* a correlation based on the file name (or existing tags)?
That way one could re-tag entire albums in one go.
3. This is going to be outside the scope of a script.
An idea I have floated around on this forum some time ago would be a small application that can copy ALL ID3 frames
(based on the ID3v2 specifications, not their implementation in a particular tagger) from one track to another.
If the user could then remap these tags to "fit" a particular application, all "compatibility" issues would be taken care of!
You are right that the *way* how the script would work is not important.
Nevertheless, I would use this script many times as I got a ton of songs I would like to re-rip in a better quality than I did 5 years ago!
What can I say, I was really busy these past few months and didn't get a chance to play with my Monkey at all!
I have looked at your script suggestion but not being a scripter myself I don't understand all of it. I think I get the gist though.
Some thoughts:
1. the most important fields would be LYRICS and COMMENTS, followed by the "description" fields such as Tempo, Situation, Mood, Rating...
After all, the other fields can be easily obtained when looking up tags, the problem are the fields with personal or customized information.
2. How about being able to select 2 directories and get the script to *suggest* a correlation based on the file name (or existing tags)?
That way one could re-tag entire albums in one go.
3. This is going to be outside the scope of a script.
An idea I have floated around on this forum some time ago would be a small application that can copy ALL ID3 frames
(based on the ID3v2 specifications, not their implementation in a particular tagger) from one track to another.
If the user could then remap these tags to "fit" a particular application, all "compatibility" issues would be taken care of!
You are right that the *way* how the script would work is not important.
Nevertheless, I would use this script many times as I got a ton of songs I would like to re-rip in a better quality than I did 5 years ago!
I wanted to re-rip my CDs too, and I ended up following the steps outlined above by Wolfgang. His guide was really helpful (thanks Wolfgang!). It took a couple months to do about 800 discs. It helped having two CD drives running at the same time. One extra step I added was using foobar2000 to add replaygain (album) values to the FLAC files, with file monitor picking up the changes in MM.MCSmarties wrote:Nevertheless, I would use this script many times as I got a ton of songs I would like to re-rip in a better quality than I did 5 years ago!