Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Album Art Downloader XUI (Read 2066388 times) previous topic - next topic
0 Members and 2 Guests are viewing this topic.

Album Art Downloader XUI

Reply #1800
AAD crashed on startup. Here is the crash log:

Thanks for reporting this. From the log, I'm going to guess that AAD was in the process of compiling scripts (showing the splashscreen) when you launched a second instance? If so, I'll have that fixed for next version. Otherwise, more detective work might be needed.

Alex

Album Art Downloader XUI

Reply #1801
From the log, I'm going to guess that AAD was in the process of compiling scripts (showing the splashscreen) when you launched a second instance? If so, I'll have that fixed for next version. Otherwise, more detective work might be needed.

I think so, but AAD was launched via the command line interface from J River Media Center and I had selected all files in one album before I sent the command. The command may have been repeated but it would have been the same command, same artist and album.

Thanks.

Album Art Downloader XUI

Reply #1802
Version 0.40.1
Just a quick bug-fixing release:
  • Fixed bug where preset menu items would be disabled in the Preview window
  • Fixed crash where multiple copies of AAD were launched simultaneously and scripts needed recompiling
  • Includes fixed buy.com and arkivmusic scripts
Download:
AlbumArtDownloaderXUI.exe (Installer. Recommended)
AlbumArtDownloaderXUI.zip (zip archive for those who don't like installers)
.NET Framework 3.5 SP1 (required, except for Windows 7)

Album Art Downloader XUI

Reply #1803
Version 0.40.1
  • Fixed crash where multiple copies of AAD were launched simultaneously and scripts needed recompiling

Thanks!

Now when I send multiple command line requests to AAD it opens multiple windows, one for each request, more than three which was not the behaviour before. I do not mind, but I wanted to let you know in case this new behaviour is not intended.

Album Art Downloader XUI

Reply #1804
Now when I send multiple command line requests to AAD it opens multiple windows
I'm not sure I quite understand the issue here. Should it not be opening a window for each request? If you have "Open search results in new window" unchecked, and there is only one search window open, then subsequent command line searches should reuse that one - is that not happening for you? When I try it here, it is.

When AAD starts, it checks to see if it is already running. If it is, it sends the command line parameters to the running instance. If it isn't running yet, then it sets itself as the running instance, and starts listening for command line parameters that might be sent to it. This is the very first thing that it does, before it loads scripts, processes its own command line parameters, or shows any window. So, if you start two copies of AAD at the same time, one will 'win', and the other will send its parameters to that one.

The change I've made is that if the running instance of AAD has not finished starting yet (it might still be loading scripts, or processing its own command line), then it makes any other copies that are trying to send it their command line parameters wait until it's ready. Previously, it might crash (in the way you reported) as it would try and process the incoming command line parameters immediately, even if not ready for them.

Alex

Album Art Downloader XUI

Reply #1805

No issue really, just a change in behaviour I have noticed.

AAD closed.
Select say 10 tracks on the same album in J River Media Center and issue a command line request to AAD.
With the current version AAD opens at once 10 windows. With previous versions only max 3 windows were opened.

Album Art Downloader XUI

Reply #1806
Ah, OK, I understand now. This is likely to be because it is failing to communicate with a running instance, and is falling back on starting a separate instance. If you check the Window menu, you will probably notice that the other windows aren't listed on it, because they belong to different instances. Better than crashing, but still not ideal. I'll see if I can come up with something even more cunning for dealing with multiple simultaneous launches for the next version.

For the time being, any unpleasantness can be avoided by leaving one instance of AAD running, or running one first, then all the others. It's only when several are started at the same time and they are all competing to be the winning single instance that things get tricky.

Alex

Album Art Downloader XUI

Reply #1807
think a bit of heads up is due, I think that 7digital changed their search pattern or something cause it hardly ever gets the right release upon search

Album Art Downloader XUI

Reply #1808
think a bit of heads up is due, I think that 7digital changed their search pattern or something cause it hardly ever gets the right release upon search
Thanks for reporting this. Looking at their website, I think they just broke their search engine - going to their website everything I search for returns irrelevant rubbish, so it isn't an issue specifically with the AAD script. Hopefully they'll fix that soon!

Alex

Album Art Downloader XUI

Reply #1809
This is just to once again say thank you for this excellent program and your continuous development.

I have really made heavy use of your program when supplementing and upgrading cover art for some 8k albums (I skipped a thousand or so singles for the time being). Since you added the excellent eMusic script when I was about 1/3 through I even had to go back and do a couple of thousand albums twice. Your program has stood the test and made the task far easier than I had feared. With your very responsive and fast development the task got easier and easier (the auto number function) and the result better and better (the eMusic script and the ability to group by web page). I believe you will soon have a one click download of all cover art for an album (from Cover Paradise)...

Experience has taught me to do everything that has to do with maintaining my music collection proper just once. I consider the task of supplementing the cover art completed for now. This means I will only use your program occasionally for a while and be a lot less active on this thread, but I am sure I will have to revisit the cover art aspect of my music collection again in the future since the maintenance and upgrading of a music collection is never finished. I am, however, willing to try out (beta test) new versions or give you input on enhancements, if you think that will help your development of the program. Just let me know.

Again, Thanks! Have a nice summer!

PS. You should really find more prominent places to display the donate option than on the very first page in this long thread. I almost missed it. Why not repeat it every time you announce a new version?

Album Art Downloader XUI

Reply #1810
Congratulations on completing your task! That must have been a huge amount of work.

I didn't really want to push the donation link too heavily, I don't like it when software I use myself does so intrusively, so I choose to err on the side of caution. I might put a small link in as part of release announcements, but it would have to be done with care.

Alex

Album Art Downloader XUI

Reply #1811
think a bit of heads up is due, I think that 7digital changed their search pattern or something cause it hardly ever gets the right release upon search
Thanks for reporting this. Looking at their website, I think they just broke their search engine - going to their website everything I search for returns irrelevant rubbish, so it isn't an issue specifically with the AAD script. Hopefully they'll fix that soon!

I think the point of the HMV Canada source was to get Canada specific releases, if I remember right. If it's the same underlying source as 7digital, though, is there any need for it too?

Ok. Just add HMVdigital script then? I think that it would be good to have alternatives/failbacks (I mean HMVdigital to 7digital). For example, today 7digital was intermittently down..

Have you dropped the idea of HMVdigital as a script completely? It would act as an alternative, and perhaps an addition of the .ca script; just compare the covers for Foo Fighters from both sites: http://www.hmvdigital.com/artist/foo-fighters#albums and http://www.hmvdigital.ca/artist/foo-fighters#albums ... both have something that the other doesn't have (compare the singles too).

You stated that "I'd rather not over-rely on any single site; one of the benefits of having lots of sources is that when one goes down, others can still be used" about the google site search trick used for many scripts.

Ok, enough pestering you about this HMVdigital.


Here's one new source I recently found, don't know if it's usable because of the site search system: search page, album page example, open the small image and change the "width=157&height=157" parameters to max 600.

Album Art Downloader XUI

Reply #1812
Have you dropped the idea of HMVdigital as a script completely?
I thought we'd decided it was effectively the same as 7digital? Having a quick look there now, it appears to have the exact same search problems as 7digital is having at the moment, which further suggests both sites are using a common back-end source. If that's the case, is there any point to having both? It doesn't search better, or produce better results.

Since the results quality went so bad recently I had another look at using Google site search to make a hybrid. Unfortunately, unlike for the eMusic case, the search results for albums on the 7digital/hmv digital platform do not contain enough information to obtain the art. This means that to do a search, it would have to download the album page for every result before it could get the URL for art from it, which means twice as much downloading and even more fragility. It's not out of the question, and if they can't sort out their search system it may well have to be done, but it's not nice.

I've had a quick look at telecharger.musique.sfr.fr - I think that could be worth a shot. It appears all the images come from img.music.realnetworks.com, and I don't think we already have a source for those (or if we do, it's probably well hidden). The ajax search makes figuring out the script difficult, but apart from that it does actually have proper separate artist and album search fields, which is great! I'll see what I can put together for that this afternoon.

Alex

Album Art Downloader XUI

Reply #1813
I thought we'd decided it was effectively the same as 7digital?

I thought that they just used same source for pics, and different site/search systems. I stand corrected now.

Since the results quality went so bad recently I had another look at using Google site search to make a hybrid.
...
It's not out of the question, and if they can't sort out their search system it may well have to be done, but it's not nice.

Just do it.tm  BTW are you spoofing an user agent string? Some sites might gather data and notice AAD (and do something about it) if it sends an unique user agent string.

Album Art Downloader XUI

Reply #1814
BTW are you spoofing an user agent string? Some sites might gather data and notice AAD (and do something about it) if it sends an unique user agent string.

Not as a general principle, no, I don't pass any user agent. If a site requires a specific user agent to work, then I'll pass that, but most of them don't. As long as they don't use the information to try and prevent access, I'm happy for AAD accesses to show up in their stats as "other" or "non-browser". Who knows, it might even encourage them to provide API access. Unfortunately it seems the only sites which offer API access all require you to sign up and use a private developer key with each request, which is obviously completely incompatible with an open source client side application. So it's a lose-lose, I have to parse HTML and fix scripts every time they redesign, and they have to render and serve a bunch of wasted html data with each search.

Here's the script for SFR Music: sfr-music.boo, let me know how you get on with it.

Alex

Album Art Downloader XUI

Reply #1815
I'll test it after giving you a new source (the search is not ideal unfortunately): MioMusik, open images from the search results and change "small" text to "large" for 600px images. Notice that all images are not 600x600px, example.


EDIT: All SFR images are not 600x600px. Example the Slash album cover which I posted is only 593x600px. Another example. Type unknown then? Otherwise seems to work ok.

Album Art Downloader XUI

Reply #1816
Just installed the latest update but when I choose the Browse option I get the following....

Album Art Downloader has encountered a fatal error, and has had to close.
If you wish to report this error, please include this information, which
has been written to the file: C:\Program Files\AlbumArtDownloader\errorlog.txt

App version: 0.40.1.0, running on Microsoft Windows NT 5.1.2600 Service Pack 3 (32 bit)

System.Windows.Markup.XamlParseException: Cannot create instance of 'BrowserResults' defined in assembly 'AlbumArt, Version=0.40.1.0, Culture=neutral, PublicKeyToken=null'. Exception has been thrown by the target of an invocation.  Error at object 'System.Windows.Controls.Grid' in markup file 'AlbumArt;component/filebrowser.xaml'. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'AlbumArtDownloader.BrowserResults' threw an exception. ---> System.NotSupportedException: No imaging component suitable to complete this operation was found. ---> System.Runtime.InteropServices.COMException (0x88982F50): Exception from HRESULT: 0x88982F50
  --- End of inner exception stack trace ---
  at System.Windows.Media.Imaging.BitmapEncoder.EnsureUnmanagedEncoder()
  at System.Windows.Media.Imaging.BitmapEncoder.get_CodecInfo()
  at AlbumArtDownloader.BrowserResults.<GetSupportedCodecs>d__8.MoveNext()
  at System.Linq.Enumerable.<SelectManyIterator>d__31`3.MoveNext()
  at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
  at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
  at AlbumArtDownloader.BrowserResults..cctor()
  --- End of inner exception stack trace ---
  --- End of inner exception stack trace ---
  at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
  at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
  at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
  at System.Activator.CreateInstance(Type type, Boolean nonPublic)
  at System.Windows.Markup.BamlRecordReader.CreateInstanceFromType(Type type, Int16 typeId, Boolean throwOnFail)
  --- End of inner exception stack trace ---
  at System.Windows.Markup.XamlParseException.ThrowException(String message, Exception innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Type objectType)
  at System.Windows.Markup.XamlParseException.ThrowException(ParserContext parserContext, Int32 lineNumber, Int32 linePosition, String message, Exception innerException)
  at System.Windows.Markup.BamlRecordReader.ThrowExceptionWithLine(String message, Exception innerException)
  at System.Windows.Markup.BamlRecordReader.CreateInstanceFromType(Type type, Int16 typeId, Boolean throwOnFail)
  at System.Windows.Markup.BamlRecordReader.GetElementAndFlags(BamlElementStartRecord bamlElementStartRecord, Object& element, ReaderFlags& flags, Type& delayCreatedType, Int16& delayCreatedTypeId)
  at System.Windows.Markup.BamlRecordReader.BaseReadElementStartRecord(BamlElementStartRecord bamlElementRecord)
  at System.Windows.Markup.BamlRecordReader.ReadElementStartRecord(BamlElementStartRecord bamlElementRecord)
  at System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord)
  at System.Windows.Markup.BamlRecordReader.Read(Boolean singleRecord)
  at System.Windows.Markup.TreeBuilderBamlTranslator.ParseFragment()
  at System.Windows.Markup.TreeBuilder.Parse()
  at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
  at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
  at AlbumArtDownloader.FileBrowser.InitializeComponent()
  at AlbumArtDownloader.FileBrowser..ctor()
  at AlbumArtDownloader.Common.NewFileBrowser(IAppWindow existingWindow)
  at AlbumArtDownloader.Menu.NewFileBrowserExec(Object sender, ExecutedRoutedEventArgs e)
  at System.Windows.Input.CommandBinding.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
  at System.Windows.Input.CommandManager.ExecuteCommandBinding(Object sender, ExecutedRoutedEventArgs e, CommandBinding commandBinding)
  at System.Windows.Input.CommandManager.FindCommandBinding(CommandBindingCollection commandBindings, Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
  at System.Windows.Input.CommandManager.FindCommandBinding(Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
  at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
  at System.Windows.UIElement.OnExecutedThunk(Object sender, ExecutedRoutedEventArgs e)
  at System.Windows.Input.ExecutedRoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object target)
  at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
  at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
  at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
  at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
  at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
  at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)
  at System.Windows.Input.RoutedCommand.ExecuteCore(Object parameter, IInputElement target, Boolean userInitiated)
  at System.Windows.Input.CommandManager.TransferEvent(IInputElement newSource, ExecutedRoutedEventArgs e)
  at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
  at System.Windows.UIElement.OnExecutedThunk(Object sender, ExecutedRoutedEventArgs e)
  at System.Windows.Input.ExecutedRoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object target)
  at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
  at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
  at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
  at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
  at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
  at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)
  at System.Windows.Input.RoutedCommand.ExecuteCore(Object parameter, IInputElement target, Boolean userInitiated)
  at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
  at System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)
  at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
  at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
  at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
  at System.Windows.Threading.DispatcherOperation.InvokeImpl()
  at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
  at System.Threading.ExecutionContext.runTryCode(Object userData)
  at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
  at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
  at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
  at System.Windows.Threading.DispatcherOperation.Invoke()
  at System.Windows.Threading.Dispatcher.ProcessQueue()
  at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
  at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
  at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
  at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
  at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
  at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
  at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter)
  at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
  at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
  at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
  at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
  at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
  at System.Windows.Threading.Dispatcher.Run()
  at System.Windows.Application.RunDispatcher(Object ignore)
  at System.Windows.Application.RunInternal(Window window)
  at System.Windows.Application.Run(Window window)
  at System.Windows.Application.Run()
  at AlbumArtDownloader.App.AlbumArtDownloader.IPriorInstance.Run()
  at AlbumArtDownloader.InstanceMutex.RunAppAsServiceHost(IPriorInstance instance, String channelUri)
  at AlbumArtDownloader.App.Main(String[] args)

Album Art Downloader XUI

Reply #1817
Further to the above, I reverted back to 0.37 and the browse option doesn't cause the app to crash,

Album Art Downloader XUI

Reply #1818
Notice that all images are not 600x600px

Hmm... they aren't 600x600, but they are pretty close. I'm not sure if it wouldn't be more useful to report them as 600x600, so that they get correctly filtered and sorted without needing to download the full sized imaeg. Of course if some were closer to 300 then that would be a different matter, but for a couple of pixels off? Anyway, here's miomusik.boo to try out. I've given that an unknown size, but I think the same applies as for SFR - they are all pretty close to 600, that I've seen...

Just installed the latest update but when I choose the Browse option I get the following....

Thanks for reporting this. It looks like there's a problem with the Windows Imaging Components installed on your PC. I think it's the same error as reported here: post by MC Escher. Could you try the same suggestion I made in the next post, of downloading WICExplorer? Alternatively, you can always stick with v0.37.

Alex

 

Album Art Downloader XUI

Reply #1819
One problem with MioMusik; are you sure you want to use the "_CD" in the regex? That way e.g. "metallica / king nothing" search doesn't find the single cover (http://www.miomusik.com/metallica/king_nothing_aint_my_bitch_Single.php). Also notice that there are other links as well for cd's: http://www.miomusik.com/king_jammy/king_at...hits_CD_DVD.php

Here's the next one, and last for today (I'll try to post the rest next week): iTunes, with the google site trick, example search. You have to get the album page and change the small image URL to get the 600x600px images. Notice again that not all images are 600x600px, example.

Album Art Downloader XUI

Reply #1820
One problem with MioMusik; are you sure you want to use the "_CD" in the regex?

I did that to exclude DVDs, but you're right, there's more variety than that. I guess I'll just include them all and let the user choose the best result. I've updated the script (just deleted the _CD part), if you want to download it again.

I'm not sure about iTunes. In the past Apple have been pretty hostile about downloading cover art, going to the extent of actually encrypting the artwork, so if it's going to end up being an arms race I don't want to take part.

Album Art Downloader XUI

Reply #1821
I've a different approach: the images are available through google now, so why not enjoy the ride while it lasts? If they start to get nasty, then just drop the script.. like with albumartexchange a while back. iTunes seems to have pretty good quality 600px covers so it would be a nice addition. I'm off now, maybe more tomorrow.


Album Art Downloader XUI

Reply #1823
Thank you for making this application, it's really helped me over the last few days.

Album Art Downloader XUI

Reply #1824
Fair enough. But I'm not going to take this one too far if they do start breaking it: itunes-google.boo


Hi Alex, a small tip, by changing in your script "600x600-75.jpg" with just "jpg" you have the original iTunes album art which is for the vast majority really higher than 600x600, also up to 1500x1500...

Thanks for this cool app!