Skip to main content

Topic: Album Art Downloader XUI (Read 1264609 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • Eli
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2300
Anyway, here's the script if you want to give it a go: file-drop-target.boo
Alex



Works, but I found that you can only drag 1 image. If you drag more then 1, the others don't show up and all the images "add up" and create a corrupted image. I tried to drag multiple images, only the first showed in the results, but the size climbed, and when save the image was corrupt.

  • Eli
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2301
Code: [Select]
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\CD DVD\AlbumArtDownloader\errorlog.txt

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

System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark& stackMark)
   at System.Threading.Thread.Start()
   at System.Threading.Thread.Start(Object parameter)
   at AlbumArtDownloader.Source.Search(String artist, String album)
   at AlbumArtDownloader.ArtSearchWindow.AlterSearch()
   at AlbumArtDownloader.ArtSearchWindow.FindExec(Object sender, RoutedEventArgs 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 MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   at System.Windows.Controls.Primitives.ButtonBase.OnClick()
   at System.Windows.Controls.Button.OnClick()
   at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
   at System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
   at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   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.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
   at System.Windows.UIElement.CrackMouseButtonEventAndReRaiseEvent(DependencyObject sender, MouseButtonEventArgs e)
   at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
   at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   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.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(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)

  • Eli
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2302
Code: [Select]
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\CD DVD\AlbumArtDownloader\errorlog.txt

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

System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
   at System.Windows.Media.MediaContext.NotifyPartitionIsZombie(Int32 failureCode)
   at System.Windows.Media.MediaContext.NotifyChannelMessage()
   at System.Windows.Interop.HwndTarget.HandleMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(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)

  • AlexVallat
  • [*][*][*][*][*]
  • Developer
Album Art Downloader XUI
Reply #2303
I would envision an optional/drop down window at the top

Thanks for the suggestion, but this isn't going to work. There is no single "target folder", and I don't think automatically saving an image when it's dragged and dropped onto a search window is an appropriate default action anyway. Displaying track or album info is outside the scope of this application, I don't want it to be a library management application.

I found that you can only drag 1 image. If you drag more then 1, the others don't show up and all the images "add up" and create a corrupted image. I tried to drag multiple images, only the first showed in the results, but the size climbed, and when save the image was corrupt.
Strange. When I tried it, if I dragged and dropped an image before it finished loading in the browser, it would be 'corrupt' as in only the bit it had downloaded so far would show up, but apart from that it worked fine. When you say drag more than 1, do you mean a multiple selection, or dragging one, then separately dragging a second one, and so on? What browser are you using? Could you try just dragging image files from Windows Explorer and see if you see the same issue?

I see your error reports. Both of them are complaining about running out of memory, which means they don't point directly at the problem - to fix it I'd need to know why it ran out of memory, not just what happened after it did. The second one looks like it was out of memory as soon as it was launched, so I'm guessing that you tried to run that immediately after it crashed the first time, and you still had no memory available. That's particularly weird, as if the first one had grabbed all the memory, it should have become free again as soon as it crashed out. The first error report suggests that it crashed when trying to extend a search, but doesn't give me any clues as to why it should have been out of memory at that point. Did anything unusual happen just before then? Are there any steps you can take that reproduce the problem, that I can try here?

Alex

  • Eli
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2304
Alex,
Neither crash had anything to do with the drag and drop, and seemed to be random.

In regards to possibly displaying tracks I wasn't intending or suggesting that it be a library management tool. However, sometime when I get multiple results for a search, and some of them includes backs, which lists the tracks I can figure out what the correct art is for that album.

You don't need to automatically save if you drag and drop to that window, but I thought having a separate window may fix the problem you mentioned with drag and drop before.

I am using Firefox, and anytime I drag/drop an image to the drag/drop window it is becoming corrupt and reporting a size larger then it is, even if I drag only 1 image. I will try explorer and chrome.
  • Last Edit: 11 May, 2013, 07:56:54 AM by Eli

  • Eli
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2305
After this crash AAD did not restart normally the first time, don't know if its a fluke or has to do with the crash:

Code: [Select]

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

System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
   at System.Windows.Media.MediaContext.NotifyPartitionIsZombie(Int32 failureCode)
   at System.Windows.Media.MediaContext.NotifyChannelMessage()
   at System.Windows.Interop.HwndTarget.HandleMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(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)

  • AlexVallat
  • [*][*][*][*][*]
  • Developer
Album Art Downloader XUI
Reply #2306
After this crash AAD did not restart normally the first time, don't know if its a fluke or has to do with the crash:
That's the same error as before: out of memory. Unfortunately, there's no way for it to report *why* you are out of memory. Perhaps you could check the Processes tab of Task Manager and see if any process is using massive amounts of memory? The AAD process is AlbumArt.exe, so if that's the thing that's using up all the memory, please check to see if there is only one of them, or several.

Did you have any success dragging and dropping files from Windows Explorer into the drop target script? I'm using Firefox 22 here and it's working fine, but there could be all sorts of different behaviours on different browsers and versions, that's why I thought using Windows Explorer instead of a browser would be a good basis to check that the script itself was working OK.

Alex

  • Eli
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2307
Dragging from Windows Explorer works fine.

Also seems to work from IE 8.

My Firefox is 20.0.1, which corrupts any image I drag and drop to AAD
  • Last Edit: 14 May, 2013, 12:26:01 PM by Eli

  • AlexVallat
  • [*][*][*][*][*]
  • Developer
Album Art Downloader XUI
Reply #2308
My Firefox is 20.0.1, which corrupts any image I drag and drop to AAD

Hmm... just tried a fresh install of Firefox 20.0.1 from Firefox Portable so that it would be separate from my main browser, and it seems to work fine. I'm at a bit of a loss as to why it would be corrupting dragged images for you - is it with any image, or just specific ones or from a specific site? What happens if you drag and drop an image onto the windows desktop, does it corrupt it there too?

Alex

  • Zarggg
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2309
I don't know if this has been reported yet, but the http://sourceforge.net/projects/album-art/...latest/download link still points to the 0.45 installer.

  • AlexVallat
  • [*][*][*][*][*]
  • Developer
Album Art Downloader XUI
Reply #2310
I don't know if this has been reported yet, but the http://sourceforge.net/projects/album-art/...latest/download link still points to the 0.45 installer.
Thanks for pointing that out! Sourceforge is supposed to update that automatically, but I guess it needed a shove this time. I should have noticed, though.

Alex

  • Eli
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2311
My Firefox is 20.0.1, which corrupts any image I drag and drop to AAD

I'm at a bit of a loss as to why it would be corrupting dragged images for you - is it with any image, or just specific ones or from a specific site? What happens if you drag and drop an image onto the windows desktop, does it corrupt it there too?

Alex


I can drag from FF just fine to anything else. I do it all the time to explorer and dBpoweramp. It only seems to be a problem with AAD.

  • Eli
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2312

  • nikolai4ik
  • [*][*][*]
Album Art Downloader XUI
Reply #2313
hey guys I have a big problem. Some time ago AAD started crashing instantly upon launch. I click on the .exe and in 0.2 seconds a window "album art downloader has stopped working" pops up. I've tried reinstalling and it didn't work. Any way to fix or maybe generate a log of error?

  • Eli
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2314
And another site to search:

bandcamp.com

  • AlexVallat
  • [*][*][*][*][*]
  • Developer
Album Art Downloader XUI
Reply #2315
hey guys I have a big problem. Some time ago AAD started crashing instantly upon launch. I click on the .exe and in 0.2 seconds a window "album art downloader has stopped working" pops up. I've tried reinstalling and it didn't work. Any way to fix or maybe generate a log of error?
AAD automatically displays a log file when it crashes. The fact that it didn't in your case means that it couldn't even write out an error log before it crashed. There will probably be a log of the error in the Windows Event Viewer produced by the .net framework itself, but frankly if it can't even run enough of AAD to write a normal error log then chances are there won't be anything I can do about it.

Thanks for the site suggestions, a couple of good ones there (certainly if you have any music published by bandcamp!). Let me know if these work out OK, and I'll publish them through Online Updates: absolutepunk.boo, bandcamp.boo

Alex

  • thomian
  • [*]
Album Art Downloader XUI
Reply #2316
Hey Alex,

I noticed, that the iTunes Store actually offers 1200x1200 pixels in addition to the 600x600 pix.
I guess that they adjusted their album art download function to the better resolution of iPads.
However, it is not the original image file that Apple offered before. (The 1200 picture seems to be rescaled.) But it is better than 600x600.

here are examples:
http://a3.mzstatic.com/us/r1000/057/Music/...200x1200-75.jpg
http://a4.mzstatic.com/us/r1000/041/Music/...200x1200-75.jpg

It seems to work for all albums I've tested so far. You may adjust your script.

Yours,
Thomian

  • AlexVallat
  • [*][*][*][*][*]
  • Developer
Album Art Downloader XUI
Reply #2317
I noticed, that the iTunes Store actually offers 1200x1200 pixels in addition to the 600x600 pix.

Nice one, thanks for letting me know. I've updated itunes.boo to try 1200x1200 before falling back to 600x600 now.

Alex

  • kareha
  • [*][*]
Album Art Downloader XUI
Reply #2318
Is it possible to search multiple countries with the iTunes cover option?  I have a lot of Japanese music and would like nice cover art for them.

  • AlexVallat
  • [*][*][*][*][*]
  • Developer
Album Art Downloader XUI
Reply #2319
Is it possible to search multiple countries with the iTunes cover option?  I have a lot of Japanese music and would like nice cover art for them.

Yes, see here: iTunes_Country-Specific_Searches. If you download the itunes-JP.boo then you should be able to access iTunes Japan. If it's stopped working, let me know and I'll investigate.

Alex

  • kareha
  • [*][*]
Album Art Downloader XUI
Reply #2320
Is it possible to search multiple countries with the iTunes cover option?  I have a lot of Japanese music and would like nice cover art for them.

Yes, see here: iTunes_Country-Specific_Searches. If you download the itunes-JP.boo then you should be able to access iTunes Japan. If it's stopped working, let me know and I'll investigate.

Alex


Works perfectly


  • marc2003
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2321
I've updated itunes.boo to try 1200x1200 before falling back to 600x600 now.


thanks for this. i've found quite a few nice updates for my collection. it's just a shame not all of it can be trusted. some of the large images are worse quality than the 600x600 images i already have.

(merely an observation. i know you can't do anything about it.  thanks again.)
  • Last Edit: 17 May, 2013, 04:41:49 PM by marc2003

  • marc2003
  • [*][*][*][*][*]
Album Art Downloader XUI
Reply #2322
if anybody here uses foobar2000 to play their files, you might be interested in some artwork display scripts i've made for it. full instructions can be found here: https://dl.dropboxusercontent.com/u/22801321/wsh/samples.zip

i'm mentioning it here because i've just updated them with right click menu options to launch album art downloader with the current artist/album as search terms.

a few other advantages it has over the default artwork panel:

-it can crop images while maintaining aspect
-it shows the actual image size as tooltips
-has a Refresh option to instantly update the panel if the artwork is edited/replaced during playback

the zip above contains 2 scripts of interest. artreader is a straight up replacement for the built-in artwork panel. cd jewel case shouldn't need any explanation but i've included a screenshot below.

click

any issues should be reported in this thread.
  • Last Edit: 17 May, 2013, 08:03:41 PM by marc2003

  • SanMarc
  • [*]
Album Art Downloader XUI
Reply #2323
Hello everybody
I'd like to get the script to 45worlds.com website (Magazines, 78s, 12" Singles and CD Singles). Is it possible?

Thanks in advance

  • dwhizz
  • [*]
Album Art Downloader XUI
Reply #2324
just edited alex's excellent google script to search for jpeg only. any comments?

Code: [Select]
import AlbumArtDownloader.Scripts
import util

class GoogleImageJpeg(AlbumArtDownloader.Scripts.IScript):
    Name as string:
        get: return "GoogleImageJpeg"
    Version as string:
        get: return "0.1"
    Author as string:
        get: return "Duncan Hampshire"
    def Search(artist as string, album as string, results as IScriptResults):
        artist = StripCharacters("&.'\";:?!", artist)
        album = StripCharacters("&.'\";:?!", album)

        imagesHtml = GetPageIsoLatin1("https://www.google.com/search?as_st=y&tbm=isch&hl=en&as_q=" + EncodeUrl(artist + " " + album) + "&as_epq=&as_oq=&as_eq=&cr=&as_sitesearch=&safe=images&tbs=ift:jpg&biw=1600&bih=775&sei=1ZCoUfvFNMPWPePggOgM")

        imageMatches = Regex("/imgres\\?imgurl=(?<fullSize>[^&]+)&amp;imgrefurl=(?<infoUri>[^&]+)[^>]+?&amp;h=(?<height>\\d+)&amp;w=(?<width>\\d+)[^>]+?&amp;tbnid=(?<tbnid>[^&]+).+?<\\/cite><br\\s*\\/?>(?<title>.+?)<br", RegexOptions.Singleline | RegexOptions.IgnoreCase).Matches(imagesHtml)
        
        results.EstimatedCount = imageMatches.Count
        
        for imageMatch as Match in imageMatches:
            title = System.Web.HttpUtility.HtmlDecode(/<\/?b>/.Replace(imageMatch.Groups["title"].Value, ""))
            fullSize = imageMatch.Groups["fullSize"].Value
            infoUri = imageMatch.Groups["infoUri"].Value
            height = System.Int32.Parse(imageMatch.Groups["height"].Value)
            width = System.Int32.Parse(imageMatch.Groups["width"].Value)
            tbnid = imageMatch.Groups["tbnid"].Value
            
            results.Add("http://tbn0.google.com/images?q=tbn:${tbnid}", title, infoUri, width, height, fullSize);


    def RetrieveFullSizeImage(fullSizeCallbackParameter):
        return fullSizeCallbackParameter