MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13)

Download and get help for different MediaMonkey for Windows 4 Addons.

Moderators: Peke, Gurus

hintergrundrauschen
Posts: 211
Joined: Sat Mar 29, 2008 6:20 pm

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by hintergrundrauschen »

Scottes wrote:Please give this version a try.
It seems to fix both errors. I have to try out more, now. :D
Claude
hintergrundrauschen
Posts: 211
Joined: Sat Mar 29, 2008 6:20 pm

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by hintergrundrauschen »

I cannot seem to Save Changes, since the button is inactive. I have about 240 match pairs for artists and wanted to save after changing only a few of them.
Claude
Scottes
Posts: 150
Joined: Sat Mar 21, 2009 6:51 am

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by Scottes »

hintergrundrauschen wrote:
Scottes wrote:Please give this version a try.
It seems to fix both errors. I have to try out more, now. :D
Excellent. That's good to hear.
hintergrundrauschen wrote:I cannot seem to Save Changes, since the button is inactive. I have about 240 match pairs for artists and wanted to save after changing only a few of them.
Each Match Pair is saved whenever you hit Save Changes, or if you click Next Match Group *and* you have Auto-Save Changes enabled. (Click on Options, and check the lower-left corner.) So Save Changes will be disabled until you make a change to any of the names currently displayed in the list.
hintergrundrauschen
Posts: 211
Joined: Sat Mar 29, 2008 6:20 pm

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by hintergrundrauschen »

Scottes wrote:So Save Changes will be disabled until you make a change to any of the names currently displayed in the list.
I set the "preferred" entry of the two variants, i.e. making the field become green.
Claude
Scottes
Posts: 150
Joined: Sat Mar 21, 2009 6:51 am

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by Scottes »

hintergrundrauschen wrote:I set the "preferred" entry of the two variants, i.e. making the field become green.
That doesn't make any changes. Once you set the Preferred choice, double-click on any names that you want to change to the Preferred name. The name you double-clicked will be changed, it will turn red, and the Save Changes button will be enabled.

Match Pair is displayed
Image

Click on a name and then the Preferred button, and the name turns green.
Image

Double-click on another name, it changes, turns red, and the Save Changes button becomes enabled
Image

Click the Save Changes button, and the entry in red is saved and removed from the list because it is now identical to the entry that was marked as Preferred.
Image
hintergrundrauschen
Posts: 211
Joined: Sat Mar 29, 2008 6:20 pm

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by hintergrundrauschen »

Scottes wrote:Once you set the Preferred choice, double-click on any names that you want to change to the Preferred name.
In other words, RTFM. :oops: Thanks for the detailed description, works well.

For large quantities of songs to change, it is quite time consuming due to the slow speed of file tagging. It seems to be able to tag only about one file every 1-2 seconds. MM itself is faster. Is this a planned limit to be able to use MM without freezing? Then how about an option to flag changes only (in MonkeyMatch memory) and then batch change everything after I hit a corresponding button. That way I would be able to go through my 200 match pairs quickly and then leave the program to make the changes in background.

Also, how about displaying the number of corresponding songs/tag fields for each of the match pair entries, i.e.

[Preferred] Bandname [12]
[Preferred] Badname [01]

Just and idea. It works fine as it is and is a great help.
Claude
Scottes
Posts: 150
Joined: Sat Mar 21, 2009 6:51 am

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by Scottes »

hintergrundrauschen wrote:In other words, RTFM. :oops:
No, not at all. I understand it's not the most intuitive program to use because I wanted to make changes with the least possible number of clicks or keystrokes. MonkeyMatch's UI is not standard at all, but it requires the absolute minimum number of clicks/keystrokes.
hintergrundrauschen wrote:For large quantities of songs to change, it is quite time consuming due to the slow speed of file tagging. It seems to be able to tag only about one file every 1-2 seconds. MM itself is faster.
Much of the time is spent doing queries against the database to find the songs to change. Then the database is changed, one song at a time effectively. If MM is configured to update tags automatically then it will do so as soon as each song's data is changed.

I can't do anything about the tagging itself - it depends on how MM is configured by each person. You could disable automatic tagging - but then you'd have to update the tags manually, which means you'd somehow have to find each song that was changed by MonkeyMatch. I don't think that's even possible today within MM. (But if anyone has any suggestions in this area, I'm happy to listen.)

I don't think I can do anything about the way MonkeyMatch changes data, though I will look into it. I'm thinking about it already, like using an SQL "update" command which can change a number of songs at once. There is a trade-off though, since I believe that will be slower when updating one or two songs. And the programming is much more complex - it would be using "raw" SQL commands rather than the safer MM interface made to do this. All this means it's more likely to have bugs and it's more likely to corrupt data.


So now to discuss what I am 90% sure is the reason it's slow in this regard... Running queries to find the songs that need to be changed. I made a couple of intentional decisions in this regard, since I wanted to make all queries and changes be done at any time, in real time. MonkeyMatch requires MM to be running - it's just the nature of the interface to MM. But because MonkeyMatch is an external program, this means that there are two programs which can change the same data at the same time. That's dangerous.

So MonkeyMatch does queries right before changes are to be made, and immediately makes the changes using very fresh data, in order to minimize the chances of both programs changing the same data. I could cache info when searching and eliminate the queries done before the changes are made. But I would have no idea if MM had changed any data between those two points in time, and that's dangerous.
hintergrundrauschen wrote:Then how about an option to flag changes only (in MonkeyMatch memory) and then batch change everything after I hit a corresponding button. That way I would be able to go through my 200 match pairs quickly and then leave the program to make the changes in background.
Yes, I could store changes to be made, then make them all at once. So after you're done making all the changes in MonkeyMatch, you'd click another button that would actually apply all the changes all at once. This really wouldn't save time overall, but would bunch it all at the end when you could switch to another program and go do something else while the changes were being made. The time you spent interacting with MonkeyMatch would be much shorter in the long run, since it would save you a few seconds many times, then apply all those seconds at the end.


You've made me realize that there is an area of concern here that I have not really noticed. I've basically been running MonkeyMatch for over a year, using two wildly different programs. As a result, my database is very clean and it's much smaller than your database. My first version of this process, using Python, took 52 minutes just to run the queries - something the current version does in less than 2 minutes. I don't really notice when MonkeyMatch is slow because it is so much faster than my earlier versions.

So you've given me some food for thought. I'll have to check out some options and see if I can do it in a way that keeps me feeling safe about your data.

hintergrundrauschen wrote:Is this a planned limit to be able to use MM without freezing?
I still have to find some time to make it multi-threaded. That will absolutely help with the freezing at times, but there are "freezes" where it's just waiting for MM to finish changing things. Multi-threading could allow it to wait in the background, keeping the UI fast and responsive.

Alas, I'm thinking that such drastic changes will have to wait until this winter. I have some things going on that have been taking up my time lately, but I generally have plenty of spare time in the winter.

hintergrundrauschen wrote:Also, how about displaying the number of corresponding songs/tag fields for each of the match pair entries, i.e.

[Preferred] Bandname [12]
[Preferred] Badname [01]
I like this idea, and think it would be nice info to display. But I'm almost positive that I'd have to run a query for every such number, and that takes time. Right now I run one query that gets every unique name (Artist, Album Name or Song Title) in the MM database. For each name, I'd have to run another query that gets the number of songs that match each name. These queries *might* be quick, but there *will* be times when they're not. A quick test on my machine took .13 seconds to count the number of songs I have by an artist. Any artist - each count takes the same amount of time, regardless of the number of songs or even if I give a bogus name. For a database with 140,000 songs, this took .37 seconds. With 200 match pairs, this would add over 2 minutes to the processing time. To me, this seems like a lot of time to spend on such info. Would you think it's worthwhile?

As I said, I like it, and actually think it could save time occasionally. For instance, when presented with two spellings of a person's name, I often have to go to Google to figure out which is correct. This feature would be very helpful since it would show (for example) that one of the names occurs 200 times and the other occurs only 2 times.

I'm definitely going to add it to the list of desired features, probably as an optional one.


Thanks for the thoughts and recommendations.
adamg
Posts: 40
Joined: Tue Aug 28, 2007 12:48 pm

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by adamg »

wow, you have spent a lot of time on this project! nice!
i cant seem to run it from google drive folder.
i have mediamonkey installed on my google drive so i can access the same DB from home and work:)
but MonkeyMatch gives me an error when i try to start the program from google drive. It says application cannot be started.

when i move the installation to C:\Program Files it installs but gives me an error msg posted below.
I would only assume it gives me this error message because the MM.DB is in the google drive location
  • See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    Code: Select all

    ************** Exception Text **************
    System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {148F7BB6-4943-4C53-8E30-0F9115D30283} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
       at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
       at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
       at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
       at System.Activator.CreateInstance(Type type, Boolean nonPublic)
       at MonkeyMatch.Form1.GetDataSet(Int32 DataSetType)
       at MonkeyMatch.Form1.btnFindMatches_Click(Object sender, EventArgs e)
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    
    
    ************** Loaded Assemblies **************
    mscorlib
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1008 (RTMGDR.030319-1000)
        CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
    ----------------------------------------
    MonkeyMatch
        Assembly Version: 0.5.4936.35718
        Win32 Version: 0.5.4936.35718
        CodeBase: file:///C:/Users/Adam%20%26%20Lisa/AppData/Local/Apps/2.0/NYJ950VH.ARD/KOCDLD8X.1YP/monk..tion_1f8636ce9401f4ba_0000.0005_338ca98607b50e92/MonkeyMatch.exe
    ----------------------------------------
    System.Windows.Forms
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1002 built by: RTMGDR
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System.Drawing
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1001 built by: RTMGDR
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1001 built by: RTMGDR
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Data
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.237 (RTMGDR.030319-2300)
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
    ----------------------------------------
    System.Core
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.233 built by: RTMGDR
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    ----------------------------------------
    System.Xml
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1015 built by: RTMGDR
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Configuration
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1015 (RTMGDR.030319-1000)
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Numerics
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 built by: RTMRel
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
    ----------------------------------------
    Microsoft.CSharp
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1
        CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.CSharp/v4.0_4.0.0.0__b03f5f7f11d50a3a/Microsoft.CSharp.dll
    ----------------------------------------
    
    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.
    
    For example:
    
    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.
Mediamonkey Lifetime since 2012
My favorite scripts:
RegExp Find and Replace by Zvezdan http://solair.eunet.rs/~zvezdand/RegExpReplace.htm
GenreFinder by Trixmoto http://www.mediamonkey.com/addons/brows ... re-finder/
Earliest Release Date by wxdude http://www.mediamonkey.com/forum/viewto ... =2&t=66766
MagicNodes by Zvezdan http://solair.eunet.rs/~zvezdand/MagicNodes.htm
Tagging Inconsistencies by Bex http://www.mediamonkey.com/addons/brows ... istencies/
Scottes
Posts: 150
Joined: Sat Mar 21, 2009 6:51 am

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by Scottes »

Hmm. I will have to load this onto a Google Drive and see what happens so I can figure out the error.
adamg
Posts: 40
Joined: Tue Aug 28, 2007 12:48 pm

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by adamg »

another thing to note, i copied the MM.DB file (only) to my desktop hoping that monkeymatch would find the database file on my desktop and act differently, but it still gave me an error message. I don't have a clue if monkeymatch even works that way though (if it searches ONLY for the DB file) :-?
Mediamonkey Lifetime since 2012
My favorite scripts:
RegExp Find and Replace by Zvezdan http://solair.eunet.rs/~zvezdand/RegExpReplace.htm
GenreFinder by Trixmoto http://www.mediamonkey.com/addons/brows ... re-finder/
Earliest Release Date by wxdude http://www.mediamonkey.com/forum/viewto ... =2&t=66766
MagicNodes by Zvezdan http://solair.eunet.rs/~zvezdand/MagicNodes.htm
Tagging Inconsistencies by Bex http://www.mediamonkey.com/addons/brows ... istencies/
Scottes
Posts: 150
Joined: Sat Mar 21, 2009 6:51 am

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by Scottes »

adamg wrote:I don't have a clue if monkeymatch even works that way though (if it searches ONLY for the DB file) :-?
MonkeyMatch uses COM to access the MediaMonkey database, so it should work as long as MediaMonkey is running (and it will start MM if it's not running). It should not matter where the database is. If MediaMonkey can access the database properly, then MonkeyMatch will.

And talking out loud like this makes me wonder if this has nothing to do with Google Drive...


Now that I re-read the error message with this in mind, I see that MonkeyMatch is having problems accessing the MediaMonkey COM object:
Retrieving the COM class factory ... failed due to the following error: ... Class not registered


What version of MediaMonkey are you running?
Is it a Portable install?
Stupid question, but: Does MediaMonkey work as expected?
adamg
Posts: 40
Joined: Tue Aug 28, 2007 12:48 pm

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by adamg »

i am using version 4.1.0.1672 (portable mode)
it typically works as expected. every once in a while, addons i install, that i know have worked before on this version, will not show up (even though the VB script is in the scripts/auto folder)

another thing i should mention, this is probably not even related to this issue, but i wouldn't know:
if i try to install an mmip file, the mmip files will not point to mediamonkey.exe (even if i right-click->properties->change what this type of file opens with and browse to the mediamonkey.exe manually.) The Mediamonkey.exe file does not even show up.

after looking around a bit, i wonder if this might be related:
Postby Peke » August 4th, 2013, 8:21 am

External Programs needs to have COM registered locally even Main installation is on NAS.

"MediaMonkey Portable do not support some plugins/Scripts that depend on MediaMonkey COM Server which is due the windows demand that each COM Server needs to be registered/saved in Windows Registry and Admin Access.

To enable MediaMonkey COM Server after installing MediaMonkey as Portable you would need to start MediaMonkey.exe only once using these command line parameters "/elevate /regcomserver".

To do that add command line to properties of Created Shortcut to MediaMonkey.exe (Right click on MediaMonkey.exe -> Create Shortcut -> Right click on created Shortcut -> Properties -> In target Field append "/elevate /regcomserver" (now target should look like MediaMonkey.exe "/elevate /regcomserver") -> Click Apply to confirm that you have created command line correctly -> OK -> Start Shortcut"
found at http://www.mediamonkey.com/forum/viewto ... =2&t=73213
Mediamonkey Lifetime since 2012
My favorite scripts:
RegExp Find and Replace by Zvezdan http://solair.eunet.rs/~zvezdand/RegExpReplace.htm
GenreFinder by Trixmoto http://www.mediamonkey.com/addons/brows ... re-finder/
Earliest Release Date by wxdude http://www.mediamonkey.com/forum/viewto ... =2&t=66766
MagicNodes by Zvezdan http://solair.eunet.rs/~zvezdand/MagicNodes.htm
Tagging Inconsistencies by Bex http://www.mediamonkey.com/addons/brows ... istencies/
Scottes
Posts: 150
Joined: Sat Mar 21, 2009 6:51 am

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by Scottes »

I have been researching this error and found enough to add a comment and I just saw what you added to your post. And I say "that's it!" because that basically matches the info I found. All my research implies that the MediaMonkey on your system did not properly register the COM interface, which is also what Peke's post say about the portable version.

Did you try doing what Peke say, about running MM with "/elevate /regcomserver" ?

And yes, I think this would also cause your issue concerning mmip files. I'm not positive, but all this kinda points to the same place.


Another thing my research hit upon was a 32-bit vs 64-bit mismatch between the app and the OS. Are you running a 64-bit OS? As far as I can tell, MM is 32-bit only. I'm not sure if there's a fix for this but if the above doesn't work then I'll look into this 32 vs 64 thing.


Last ditch effort... only if "/elevate /regcomserver" doesn't work:

I've tried MonkeyMatch with portable version of MediaMonkey when testing bugs that other folks had. I never had an issue. BUT then again I have always had the non-portable version of MediaMonkey installed. So it might make sense to Install a regular version of MediaMonkey (which will register the COM correctly), run it once and exit immediately. Don't even configure anything, just start it and exit. Now run the portable version of MM configured with your database, and start MonkeyMatch. If it now works then you can probably(?) uninstall the non-portable version of MediaMonkey.
adamg
Posts: 40
Joined: Tue Aug 28, 2007 12:48 pm

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by adamg »

good tip on running the normal (or non-portable) version. I installed the regular version of MM and it worked on a 32bit windows 7 system. the problem must be portable not elevating.
i did try peke's technique from the portable version on both 64bit and 32bit windows 7 and it did not work.
I, so badly, want the portable version to work flawlessly but there seems to be a few issues that make it not worth it for me. Oh well, back to 2 DB's again :-?
thanks for your good communication! :D
Mediamonkey Lifetime since 2012
My favorite scripts:
RegExp Find and Replace by Zvezdan http://solair.eunet.rs/~zvezdand/RegExpReplace.htm
GenreFinder by Trixmoto http://www.mediamonkey.com/addons/brows ... re-finder/
Earliest Release Date by wxdude http://www.mediamonkey.com/forum/viewto ... =2&t=66766
MagicNodes by Zvezdan http://solair.eunet.rs/~zvezdand/MagicNodes.htm
Tagging Inconsistencies by Bex http://www.mediamonkey.com/addons/brows ... istencies/
Scottes
Posts: 150
Joined: Sat Mar 21, 2009 6:51 am

Re: MonkeyMatch 0.5.56 - Find & Fix Similar Spelling (7/7/13

Post by Scottes »

Bummer.

You might be able to run the both the portable and non-portable MediaMonkey with both configured to use the same database, as long as the MediaMonkey versions are the same. Run the non-portable only when you need to use MonkeyMatch. Once you've cleaned up your database, the only time you'll need to run MonkeyMatch is when you add new music.

I don't think there is any reason why this shouldn't work - and thinking about this makes me wonder why you're running the portable version. Two copies of MediaMonkey should be able to access the same database as long as only one of them is running at a time. I think.

Of course, backup the MM.DB before trying this, just in case. I might be missing something about the possible impact of Google Drive.
Post Reply