Index: External/MP12/Common.GUIPlugins.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/Common.GUIPlugins.dll
===================================================================
--- External/MP12/Common.GUIPlugins.dll	(revision 0)
+++ External/MP12/Common.GUIPlugins.dll	(working copy)

Property changes on: External/MP12/Common.GUIPlugins.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: External/MP12/Common.Utils.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/Core.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/Databases.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/Dialogs.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/FanartHandler.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/Gentle.Common.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/Gentle.Framework.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/GUIMusic.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/GUIMusic.dll
===================================================================
--- External/MP12/GUIMusic.dll	(revision 0)
+++ External/MP12/GUIMusic.dll	(working copy)

Property changes on: External/MP12/GUIMusic.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: External/MP12/GUIVideos.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/GUIVideos.dll
===================================================================
--- External/MP12/GUIVideos.dll	(revision 0)
+++ External/MP12/GUIVideos.dll	(working copy)

Property changes on: External/MP12/GUIVideos.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: External/MP12/MP-TVSeries.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/TvControl.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/TVDatabase.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/TvPlugin.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: External/MP12/Utils.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: LatestMediaHandler.sln
===================================================================
--- LatestMediaHandler.sln	(revision 70)
+++ LatestMediaHandler.sln	(working copy)
@@ -1,13 +1,15 @@
 ﻿
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LatestMediaHandler", "LatestMediaHandler\LatestMediaHandler.csproj", "{4E7B5EA7-A01E-4E5A-A0CE-A3684A68376B}"
-EndProject
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.30110.0
+MinimumVisualStudioVersion = 10.0.40219.1
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{642C6B52-661A-4486-8AA3-10D32A525433}"
 	ProjectSection(SolutionItems) = preProject
 		LatestMediaHandler\FanartImage.cs = LatestMediaHandler\FanartImage.cs
 	EndProjectSection
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LatestMediaHandler", "LatestMediaHandler\LatestMediaHandler.csproj", "{4E7B5EA7-A01E-4E5A-A0CE-A3684A68376B}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
Index: LatestMediaHandler.suo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: LatestMediaHandler/bin/Debug/ILMerge.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: LatestMediaHandler/bin/Debug/ILMerge.exe
===================================================================
--- LatestMediaHandler/bin/Debug/ILMerge.exe	(revision 0)
+++ LatestMediaHandler/bin/Debug/ILMerge.exe	(working copy)

Property changes on: LatestMediaHandler/bin/Debug/ILMerge.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: LatestMediaHandler/bin/Debug/merge.bat
===================================================================
--- LatestMediaHandler/bin/Debug/merge.bat	(revision 0)
+++ LatestMediaHandler/bin/Debug/merge.bat	(working copy)
@@ -0,0 +1,4 @@
+@echo off
+IF EXIST LatestMediaHandler_UNMERGED.dll del LatestMediaHandler_UNMERGED.dll
+ren LatestMediaHandler.dll LatestMediaHandler_UNMERGED.dll
+ilmerge /out:LatestMediaHandler.dll LatestMediaHandler_UNMERGED.dll NLog.dll /targetplatform:v4,"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
Index: LatestMediaHandler/bin/Release/ILMerge.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: LatestMediaHandler/bin/Release/merge.bat
===================================================================
--- LatestMediaHandler/bin/Release/merge.bat	(revision 70)
+++ LatestMediaHandler/bin/Release/merge.bat	(working copy)
@@ -1,4 +1,4 @@
 @echo off
 IF EXIST LatestMediaHandler_UNMERGED.dll del LatestMediaHandler_UNMERGED.dll
 ren LatestMediaHandler.dll LatestMediaHandler_UNMERGED.dll
-ilmerge /out:LatestMediaHandler.dll LatestMediaHandler_UNMERGED.dll NLog.dll
+ilmerge /out:LatestMediaHandler.dll LatestMediaHandler_UNMERGED.dll NLog.dll /targetplatform:v4,"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
Index: LatestMediaHandler/LatestMediaHandler.csproj
===================================================================
--- LatestMediaHandler/LatestMediaHandler.csproj	(revision 70)
+++ LatestMediaHandler/LatestMediaHandler.csproj	(working copy)
@@ -1,5 +1,5 @@
 ﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,8 +10,29 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>LatestMediaHandler</RootNamespace>
     <AssemblyName>LatestMediaHandler</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <TargetFrameworkProfile />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -57,6 +78,9 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\External\MP12\ArgusTV.UI.Process.dll</HintPath>
     </Reference>
+    <Reference Include="Common.GUIPlugins">
+      <HintPath>..\External\MP12\Common.GUIPlugins.dll</HintPath>
+    </Reference>
     <Reference Include="Common.Utils, Version=1.1.6.27644, Culture=neutral, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\External\MP12\Common.Utils.dll</HintPath>
@@ -114,6 +138,12 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\External\MP12\Gentle.Framework.dll</HintPath>
     </Reference>
+    <Reference Include="GUIMusic">
+      <HintPath>..\External\MP12\GUIMusic.dll</HintPath>
+    </Reference>
+    <Reference Include="GUIVideos">
+      <HintPath>..\External\MP12\GUIVideos.dll</HintPath>
+    </Reference>
     <Reference Include="MovingPictures, Version=1.2.0.1188, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\External\MP12\MovingPictures.dll</HintPath>
@@ -256,6 +286,18 @@
   <ItemGroup>
     <EmbeddedResource Include="Resources\LatestMediaHandler_Icon_Disabled.png" />
   </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
Index: LatestMediaHandler/LatestMediaHandler.csproj.user
===================================================================
--- LatestMediaHandler/LatestMediaHandler.csproj.user	(revision 70)
+++ LatestMediaHandler/LatestMediaHandler.csproj.user	(working copy)
@@ -1,5 +1,14 @@
-﻿<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
   <PropertyGroup>
     <ProjectView>ShowAllFiles</ProjectView>
+    <PublishUrlHistory />
+    <InstallUrlHistory />
+    <SupportUrlHistory />
+    <UpdateUrlHistory />
+    <BootstrapperUrlHistory />
+    <ErrorReportUrlHistory />
+    <FallbackCulture>en-US</FallbackCulture>
+    <VerifyUploadedFiles>false</VerifyUploadedFiles>
   </PropertyGroup>
 </Project>
\ No newline at end of file
Index: LatestMediaHandler/LatestMusicHandler.cs
===================================================================
--- LatestMediaHandler/LatestMusicHandler.cs	(revision 70)
+++ LatestMediaHandler/LatestMusicHandler.cs	(working copy)
@@ -438,7 +438,7 @@
                             facade = gc as GUIFacadeControl;
                             if (facade != null)
                             {
-                                ShowAlbumInfo(GUIWindowManager.ActiveWindow, false, facade.SelectedListItem.Label, facade.SelectedListItem.Label2, (facade.SelectedListItem.MusicTag as MusicTag).FileName, facade.SelectedListItem.MusicTag as MusicTag);
+                                ShowAlbumInfo(GUIWindowManager.ActiveWindow, facade.SelectedListItem.Label, facade.SelectedListItem.Label2);//, (facade.SelectedListItem.MusicTag as MusicTag).FileName, facade.SelectedListItem.MusicTag as MusicTag);
                             }
                             break;
                         }
@@ -455,412 +455,330 @@
             }
         }
 
-        public void ShowAlbumInfo(int parentWindowID, bool isFolder, string artistName, string albumName, string strPath,
-                              MusicTag tag)
-        {
-            try
-            {
-                GUIDialogOK pDlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK);
-                GUIDialogProgress dlgProgress =
-                  (GUIDialogProgress)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_PROGRESS);
+      public void ShowAlbumInfo(int parentWindowID, string artistName, string albumName)
+      {
+        Log.Debug("Searching for album: {0} - {1}", albumName, artistName);
 
-                bool bDisplayErr = false;
-                AlbumInfo album = new AlbumInfo();
-                MusicAlbumInfo albumInfo = new MusicAlbumInfo();
-                if (m_db.GetAlbumInfo(albumName, artistName, ref album))
-                {
-                    albumInfo.Set(album);
-                }
-                else
-                {
-                    if (null != pDlgOK && !Win32API.IsConnectedToInternet())
-                    {
-                        pDlgOK.SetHeading(703);
-                        pDlgOK.SetLine(1, 703);
-                        pDlgOK.SetLine(2, string.Empty);
-                        pDlgOK.DoModal(GUIWindowManager.ActiveWindow);
-                        return;
-                    }
+        var dlgProgress = (GUIDialogProgress) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_PROGRESS);
+        var pDlgOK = (GUIDialogOK) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_OK);
 
-                    // show dialog box indicating we're searching the album
-                    if (dlgProgress != null)
-                    {
-                        dlgProgress.Reset();
-                        dlgProgress.SetHeading(185);
-                        dlgProgress.SetLine(1, albumName);
-                        dlgProgress.SetLine(2, artistName);
-                        dlgProgress.SetLine(3, tag.Year.ToString());
-                        dlgProgress.SetPercentage(0);
-                        //dlgProgress.StartModal(GetID);
-                        dlgProgress.StartModal(parentWindowID);
-                        dlgProgress.ShowProgressBar(true);
-                        dlgProgress.Progress();
-                    }
+        var errorEncountered = true;
+        var album = new AlbumInfo();
+        var albumInfo = new MusicAlbumInfo();
+        if (m_db.GetAlbumInfo(albumName, artistName, ref album))
+        {
+          // we already have album info in database so just use that
+          albumInfo.Set(album);
+          errorEncountered = false;
+        }
+        else
+        {
+// lookup details.  start with artist
 
-                    // find album info
-                    AllmusicSiteScraper scraper = new AllmusicSiteScraper();
-                    if (scraper.FindAlbumInfo(albumName, artistName, tag.Year))
-                    {
-                        if (dlgProgress != null)
-                        {
-                            dlgProgress.SetPercentage(30);
-                            dlgProgress.Progress();
-                            dlgProgress.Close();
-                        }
-                        // Did we find multiple albums?
-                        int iSelectedAlbum = 0;
-                        if (scraper.IsMultiple())
-                        {
-                            string szText = GUILocalizeStrings.Get(181);
-                            GUIDialogSelect pDlg = (GUIDialogSelect)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_SELECT);
-                            if (null != pDlg)
-                            {
-                                pDlg.Reset();
-                                pDlg.SetHeading(szText);
-                                foreach (MusicAlbumInfo foundAlbum in scraper.GetAlbumsFound())
-                                {
-                                    pDlg.Add(string.Format("{0} - {1}", foundAlbum.Title, foundAlbum.Artist));
-                                }
-                                pDlg.DoModal(parentWindowID);
+          if (null != pDlgOK && !Win32API.IsConnectedToInternet())
+          {
+            pDlgOK.SetHeading(703);
+            pDlgOK.SetLine(1, 703);
+            pDlgOK.SetLine(2, string.Empty);
+            pDlgOK.DoModal(GUIWindowManager.ActiveWindow);
+            return;
+          }
 
-                                // and wait till user selects one
-                                iSelectedAlbum = pDlg.SelectedLabel;
-                                if (iSelectedAlbum < 0)
-                                {
-                                    return;
-                                }
-                            }
-                            // ok, now show dialog we're downloading the album info
-                            MusicAlbumInfo selectedAlbum = scraper.GetAlbumsFound()[iSelectedAlbum];
-                            if (null != dlgProgress)
-                            {
-                                dlgProgress.Reset();
-                                dlgProgress.SetHeading(185);
-                                dlgProgress.SetLine(1, selectedAlbum.Title2);
-                                dlgProgress.SetLine(2, selectedAlbum.Artist);
-                                dlgProgress.StartModal(parentWindowID);
-                                dlgProgress.ShowProgressBar(true);
-                                dlgProgress.SetPercentage(40);
-                                dlgProgress.Progress();
-                            }
+          // show dialog box indicating we're searching the album
+          if (dlgProgress != null)
+          {
+            dlgProgress.Reset();
+            dlgProgress.SetHeading(326);
+            dlgProgress.SetLine(1, albumName);
+            dlgProgress.SetLine(2, artistName);
+            dlgProgress.SetPercentage(0);
+            dlgProgress.StartModal(GUIWindowManager.ActiveWindow);
+            dlgProgress.Progress();
+            dlgProgress.ShowProgressBar(true);
+          }
 
-                            if (!scraper.FindInfoByIndex(iSelectedAlbum))
-                            {
-                                if (null != dlgProgress)
-                                {
-                                    dlgProgress.Close();
-                                }
-                                return;
-                            }
-                        }
+          var scraper = new AllmusicSiteScraper();
+          List<AllMusicArtistMatch> artists;
+          var selectedMatch = new AllMusicArtistMatch();
 
-                        if (null != dlgProgress)
-                        {
-                            dlgProgress.SetPercentage(60);
-                            dlgProgress.Progress();
-                        }
+          if (scraper.GetArtists(artistName, out artists))
+          {
+            if (null != dlgProgress)
+            {
+              dlgProgress.SetPercentage(20);
+              dlgProgress.Progress();
+            }
+            if (artists.Count == 1)
+            {
+              // only have single match so no need to ask user
+              Log.Debug("Single Artist Match Found");
+              selectedMatch = artists[0];
+            }
+            else
+            {
+              // need to get user to choose which one to use
+              Log.Debug("Muliple Artist Match Found ({0}) prompting user", artists.Count);
+              var pDlg = (GUIDialogSelect2) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_SELECT2);
+              if (null != pDlg)
+              {
+                pDlg.Reset();
+                pDlg.SetHeading(GUILocalizeStrings.Get(1303));
 
-                        // Now we have either a Single hit or a selected Artist
-                        // Parse it
-                        if (albumInfo.Parse(scraper.GetHtmlContent()))
-                        {
-                            if (null != dlgProgress)
-                            {
-                                dlgProgress.SetPercentage(80);
-                                dlgProgress.Progress();
-                            }
-                            // set album title and artist from musicinfotag, not the one we got from allmusic.com
-                            albumInfo.Title = albumName;
-                            albumInfo.Artist = artistName;
-
-                            // set path, needed to store album in database
-                            albumInfo.AlbumPath = strPath;
-                            album = new AlbumInfo();
-                            album.Album = albumInfo.Title;
-                            album.Artist = albumInfo.Artist;
-                            album.Genre = albumInfo.Genre;
-                            album.Tones = albumInfo.Tones;
-                            album.Styles = albumInfo.Styles;
-                            album.Review = albumInfo.Review;
-                            album.Image = albumInfo.ImageURL;
-                            album.Rating = albumInfo.Rating;
-                            album.Tracks = albumInfo.Tracks;
-                            try
-                            {
-                                album.Year = Int32.Parse(albumInfo.DateOfRelease);
-                            }
-                            catch (Exception) { }
-
-                            // save to database
-                            m_db.AddAlbumInfo(album);
-                            if (null != dlgProgress)
-                            {
-                                dlgProgress.SetPercentage(100);
-                                dlgProgress.Progress();
-                                dlgProgress.Close();
-                            }
-
-                            if (isFolder)
-                            {
-                                // if there's an album thumb
-                                string thumb = MediaPortal.Util.Utils.GetAlbumThumbName(albumInfo.Artist, albumInfo.Title);
-                                // use the better one
-                                thumb = MediaPortal.Util.Utils.ConvertToLargeCoverArt(thumb);
-                                // to create a folder.jpg from it
-                                if (MediaPortal.Util.Utils.FileExistsInCache(thumb))// && _createMissingFolderThumbs)
-                                {
-                                    try
-                                    {
-                                        string folderjpg = MediaPortal.Util.Utils.GetFolderThumbForDir(strPath);
-                                        MediaPortal.Util.Utils.FileDelete(folderjpg);
-                                        File.Copy(thumb, folderjpg);
-                                    }
-                                    catch (Exception) { }
-                                }
-                            }
-                        }
-                        else
-                        {
-                            bDisplayErr = true;
-                        }
-                    }
-                    else
-                    {
-                        bDisplayErr = true;
-                    }
+                foreach (var i in artists.Select(artistMatch => new GUIListItem
+                                                                {
+                                                                  Label = artistMatch.Artist + " - " + artistMatch.Genre,
+                                                                  Label2 = artistMatch.YearsActive,
+                                                                  Path = artistMatch.ArtistUrl,
+                                                                  IconImage = artistMatch.ImageUrl
+                                                                }))
+                {
+                  pDlg.Add(i);
                 }
+                pDlg.DoModal(GUIWindowManager.ActiveWindow);
 
-                if (null != dlgProgress)
+                // and wait till user selects one
+                var iSelectedMatch = pDlg.SelectedLabel;
+                if (iSelectedMatch < 0)
                 {
-                    dlgProgress.Close();
+                  return;
                 }
+                selectedMatch = artists[iSelectedMatch];
+              }
 
-                if (!bDisplayErr)
+              if (null != dlgProgress)
+              {
+                dlgProgress.Reset();
+                dlgProgress.SetHeading(326);
+                dlgProgress.SetLine(1, albumName);
+                dlgProgress.SetLine(2, artistName);
+                dlgProgress.SetPercentage(40);
+                dlgProgress.StartModal(GUIWindowManager.ActiveWindow);
+                dlgProgress.ShowProgressBar(true);
+                dlgProgress.Progress();
+              }
+            }
+
+            string strAlbumUrl;
+            if (scraper.GetAlbumUrl(albumName, selectedMatch.ArtistUrl, out strAlbumUrl))
+            {
+              if (null != dlgProgress)
+              {
+                dlgProgress.SetPercentage(60);
+                dlgProgress.Progress();
+              }
+              if (albumInfo.Parse(strAlbumUrl))
+              {
+                if (null != dlgProgress)
                 {
-                    MediaPortal.GUI.Music.GUIMusicInfo pDlgAlbumInfo = (MediaPortal.GUI.Music.GUIMusicInfo)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_MUSIC_INFO);
-                    if (null != pDlgAlbumInfo)
-                    {
-                        pDlgAlbumInfo.Album = albumInfo;
-                        pDlgAlbumInfo.Tag = tag;
-
-                        pDlgAlbumInfo.DoModal(parentWindowID);
-                        if (pDlgAlbumInfo.NeedsRefresh)
-                        {
-                            m_db.DeleteAlbumInfo(albumName, artistName);
-                            ShowAlbumInfo(isFolder, artistName, albumName, strPath, tag);
-                            return;
-                        }
-                    }
-                    else
-                    {
-                        if (null != dlgProgress)
-                        {
-                            dlgProgress.Close();
-                        }
-                        if (null != pDlgOK)
-                        {
-                            pDlgOK.SetHeading(702);
-                            pDlgOK.SetLine(1, 702);
-                            pDlgOK.SetLine(2, string.Empty);
-                            pDlgOK.DoModal(GUIWindowManager.ActiveWindow);
-                        }
-                    }
+                  dlgProgress.SetPercentage(80);
+                  dlgProgress.Progress();
                 }
+                m_db.AddAlbumInfo(albumInfo.Get());
+                errorEncountered = false;
+              }
             }
-            catch (Exception ex)
-            {
-                logger.Error("ShowAlbumInfo: " + ex.ToString());
-            }
+          }
         }
 
-        protected void ShowAlbumInfo(bool isFolder, string artistName, string albumName, string strPath, MusicTag tag)
+        if (null != dlgProgress)
         {
-            ShowAlbumInfo(GUIWindowManager.ActiveWindow, isFolder, artistName, albumName, strPath, tag);
+          dlgProgress.SetPercentage(100);
+          dlgProgress.Progress();
+          dlgProgress.Close();
+          dlgProgress = null;
         }
 
-        protected virtual void ShowArtistInfo(string artistName, string albumName)
+        if (!errorEncountered)
         {
-            try
+          var pDlgAlbumInfo = (MediaPortal.GUI.Music.GUIMusicInfo) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_MUSIC_INFO);
+          if (null != pDlgAlbumInfo)
+          {
+            pDlgAlbumInfo.Album = albumInfo;
+
+            pDlgAlbumInfo.DoModal(parentWindowID);
+            if (pDlgAlbumInfo.NeedsRefresh)
             {
-                GUIDialogOK pDlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK);
-                GUIDialogProgress dlgProgress =
-                  (GUIDialogProgress)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_PROGRESS);
+              m_db.DeleteAlbumInfo(albumName, artistName);
+              ShowAlbumInfo(parentWindowID, artistName, albumName);
+              return;
+            }
+          }
+        }
+        else
+        {
+          Log.Debug("No Album Found");
 
-                bool bSaveDb = true;
-                bool bDisplayErr = false;
+          if (null != pDlgOK)
+          {
+            pDlgOK.SetHeading(187);
+            pDlgOK.SetLine(1, 187);
+            pDlgOK.SetLine(2, string.Empty);
+            pDlgOK.DoModal(GUIWindowManager.ActiveWindow);
+          }
+        }
+      }
 
-                ArtistInfo artist = new ArtistInfo();
-                MusicArtistInfo artistInfo = new MusicArtistInfo();
-                if (m_db.GetArtistInfo(artistName, ref artist))
-                {
-                    artistInfo.Set(artist);
-                }
-                else
-                {
-                    if (null != pDlgOK && !Win32API.IsConnectedToInternet())
-                    {
-                        pDlgOK.SetHeading(703);
-                        pDlgOK.SetLine(1, 703);
-                        pDlgOK.SetLine(2, string.Empty);
-                        pDlgOK.DoModal(GUIWindowManager.ActiveWindow);
-                        return;
-                    }
+      protected void ShowAlbumInfo(string artistName, string albumName)
+      {
+        ShowAlbumInfo(GUIWindowManager.ActiveWindow, artistName, albumName);
+      }
 
-                    // show dialog box indicating we're searching the artist
-                    if (dlgProgress != null)
-                    {
-                        dlgProgress.Reset();
-                        dlgProgress.SetHeading(320);
-                        dlgProgress.SetLine(1, artistName);
-                        dlgProgress.SetLine(2, string.Empty);
-                        dlgProgress.SetPercentage(0);
-                        dlgProgress.StartModal(GUIWindowManager.ActiveWindow);
-                        dlgProgress.Progress();
-                        dlgProgress.ShowProgressBar(true);
-                    }
+      protected virtual void ShowArtistInfo(string artistName, string albumName)
+      {
+        Log.Debug("Looking up Artist: {0}", albumName);
 
-                    // find artist info
-                    AllmusicSiteScraper scraper = new AllmusicSiteScraper();
-                    if (scraper.FindInfo(AllmusicSiteScraper.SearchBy.Artists, artistName))
-                    {
-                        // did we find at least 1 artist?
-                        if (scraper.IsMultiple())
-                        {
-                            // let user choose one
-                            int iSelectedArtist = 0;
-                            string szText = GUILocalizeStrings.Get(181);
-                            GUIDialogSelect pDlg = (GUIDialogSelect)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_SELECT);
-                            if (null != pDlg)
-                            {
-                                pDlg.Reset();
-                                pDlg.SetHeading(szText);
-                                foreach (string selectedArtist in scraper.GetItemsFound())
-                                {
-                                    pDlg.Add(selectedArtist);
-                                }
-                                pDlg.DoModal(GUIWindowManager.ActiveWindow);
+        var dlgProgress = (GUIDialogProgress) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_PROGRESS);
+        var pDlgOK = (GUIDialogOK) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_OK);
 
-                                // and wait till user selects one
-                                iSelectedArtist = pDlg.SelectedLabel;
-                                if (iSelectedArtist < 0)
-                                {
-                                    return;
-                                }
-                            }
+        var errorEncountered = true;
+        var artist = new ArtistInfo();
+        var artistInfo = new MusicArtistInfo();
+        if (m_db.GetArtistInfo(artistName, ref artist))
+        {
+          // we already have artist info in database so just use that
+          artistInfo.Set(artist);
+          errorEncountered = false;
+        }
+        else
+        {
+          // lookup artist details
 
-                            // ok, now show dialog we're downloading the artist info
-                            if (null != dlgProgress)
-                            {
-                                dlgProgress.Reset();
-                                dlgProgress.SetHeading(320);
-                                dlgProgress.SetLine(1, artistName);
-                                dlgProgress.SetLine(2, string.Empty);
-                                dlgProgress.SetPercentage(40);
-                                dlgProgress.StartModal(GUIWindowManager.ActiveWindow);
-                                dlgProgress.ShowProgressBar(true);
-                                dlgProgress.Progress();
-                            }
+          if (null != pDlgOK && !Win32API.IsConnectedToInternet())
+          {
+            pDlgOK.SetHeading(703);
+            pDlgOK.SetLine(1, 703);
+            pDlgOK.SetLine(2, string.Empty);
+            pDlgOK.DoModal(GUIWindowManager.ActiveWindow);
+            return;
+          }
 
-                            // download the artist info
-                            if (!scraper.FindInfoByIndex(iSelectedArtist))
-                            {
-                                if (null != dlgProgress)
-                                {
-                                    dlgProgress.Close();
-                                }
-                                return;
-                            }
-                        }
+          // show dialog box indicating we're searching the artist
+          if (dlgProgress != null)
+          {
+            dlgProgress.Reset();
+            dlgProgress.SetHeading(320);
+            dlgProgress.SetLine(1, artistName);
+            dlgProgress.SetLine(2, string.Empty);
+            dlgProgress.SetPercentage(0);
+            dlgProgress.StartModal(GUIWindowManager.ActiveWindow);
+            dlgProgress.Progress();
+            dlgProgress.ShowProgressBar(true);
+          }
 
-                        if (null != dlgProgress)
-                        {
-                            dlgProgress.SetPercentage(60);
-                            dlgProgress.Progress();
-                        }
-
-                        // Now we have either a Single hit or a selected Artist
-                        // Parse it
-                        if (artistInfo.Parse(scraper.GetHtmlContent()))
-                        {
-                            // if the artist selected from allmusic.com does not match
-                            // the one from the file, override the one from the allmusic
-                            // with the one from the file so the info is correct in the
-                            // database...
-                            if (!artistInfo.Artist.Equals(artistName))
-                            {
-                                artistInfo.Artist = artistName;
-                            }
-
-                            if (bSaveDb)
-                            {
-                                // save to database
-                                m_db.AddArtistInfo(artistInfo.Get());
-                            }
-
-                            if (null != dlgProgress)
-                            {
-                                dlgProgress.SetPercentage(100);
-                                dlgProgress.Progress();
-                                dlgProgress.Close();
-                                dlgProgress = null;
-                            }
-                        }
-                        else
-                        {
-                            bDisplayErr = true;
-                        }
-                    }
-                    else
-                    {
-                        bDisplayErr = true;
-                    }
+          var scraper = new AllmusicSiteScraper();
+          List<AllMusicArtistMatch> artists;
+          if (scraper.GetArtists(artistName, out artists))
+          {
+            var selectedMatch = new AllMusicArtistMatch();
+            if (artists.Count == 1)
+            {
+              // only have single match so no need to ask user
+              Log.Debug("Single Artist Match Found");
+              selectedMatch = artists[0];
+              errorEncountered = false;
+            }
+            else
+            {
+              // need to get user to choose which one to use
+              Log.Debug("Muliple Artist Match Found ({0}) prompting user", artists.Count);
+              var pDlg = (GUIDialogSelect2) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_SELECT2);
+              if (null != pDlg)
+              {
+                pDlg.Reset();
+                pDlg.SetHeading(GUILocalizeStrings.Get(1303));
+                foreach (var i in artists.Select(artistMatch => new GUIListItem
+                                                                {
+                                                                  Label = artistMatch.Artist + " - " + artistMatch.Genre,
+                                                                  Label2 = artistMatch.YearsActive,
+                                                                  Path = artistMatch.ArtistUrl,
+                                                                  IconImage = artistMatch.ImageUrl
+                                                                }))
+                {
+                  pDlg.Add(i);
                 }
+                pDlg.DoModal(GUIWindowManager.ActiveWindow);
 
-                if (null != dlgProgress)
+                // and wait till user selects one
+                var iSelectedMatch = pDlg.SelectedLabel;
+                if (iSelectedMatch < 0)
                 {
-                    dlgProgress.Close();
+                  return;
                 }
+                selectedMatch = artists[iSelectedMatch];
+              }
 
-                if (!bDisplayErr)
-                {
-                    // ok, show Artist info                    
-                    MediaPortal.GUI.Music.GUIMusicArtistInfo pDlgArtistInfo =
-                      (MediaPortal.GUI.Music.GUIMusicArtistInfo)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_ARTIST_INFO);
-                    if (null != pDlgArtistInfo)
-                    {
-                        pDlgArtistInfo.Artist = artistInfo;
-                        pDlgArtistInfo.DoModal(GUIWindowManager.ActiveWindow);
+              if (null != dlgProgress)
+              {
+                dlgProgress.Reset();
+                dlgProgress.SetHeading(320);
+                dlgProgress.SetLine(1, artistName);
+                dlgProgress.SetLine(2, string.Empty);
+                dlgProgress.SetPercentage(40);
+                dlgProgress.StartModal(GUIWindowManager.ActiveWindow);
+                dlgProgress.ShowProgressBar(true);
+                dlgProgress.Progress();
+              }
+            }
 
-                        if (pDlgArtistInfo.NeedsRefresh)
-                        {
-                            m_db.DeleteArtistInfo(artistInfo.Artist);
-                            ShowArtistInfo(artistName, albumName);
-                            return;
-                        }
-                    }
-                }
-                else
-                {
-                    if (null != dlgProgress)
-                    {
-                        dlgProgress.Close();
-                    }
-                    if (null != pDlgOK)
-                    {
-                        pDlgOK.SetHeading(702);
-                        pDlgOK.SetLine(1, 702);
-                        pDlgOK.SetLine(2, string.Empty);
-                        pDlgOK.DoModal(GUIWindowManager.ActiveWindow);
-                    }
-                }
+            if (null != dlgProgress)
+            {
+              dlgProgress.SetPercentage(60);
+              dlgProgress.Progress();
             }
-            catch (Exception ex)
+            if (artistInfo.Parse(selectedMatch.ArtistUrl))
             {
-                logger.Error("ShowArtistInfo: " + ex.ToString());
+              if (null != dlgProgress)
+              {
+                dlgProgress.SetPercentage(80);
+                dlgProgress.Progress();
+              }
+              m_db.AddArtistInfo(artistInfo.Get());
+              errorEncountered = false;
             }
+          }
         }
 
-        /// <summary>
+
+        if (null != dlgProgress)
+        {
+          dlgProgress.SetPercentage(100);
+          dlgProgress.Progress();
+          dlgProgress.Close();
+          dlgProgress = null;
+        }
+
+        if (!errorEncountered)
+        {
+          var pDlgArtistInfo =
+            (MediaPortal.GUI.Music.GUIMusicArtistInfo)
+              GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_ARTIST_INFO);
+          if (null != pDlgArtistInfo)
+          {
+            pDlgArtistInfo.Artist = artistInfo;
+            pDlgArtistInfo.DoModal(GUIWindowManager.ActiveWindow);
+
+            if (pDlgArtistInfo.NeedsRefresh)
+            {
+              m_db.DeleteArtistInfo(artistInfo.Artist);
+              ShowArtistInfo(artistName, albumName);
+            }
+          }
+        }
+        else
+        {
+          Log.Debug("Unable to get artist details");
+
+          if (null != pDlgOK)
+          {
+            pDlgOK.SetHeading(702);
+            pDlgOK.SetLine(1, 702);
+            pDlgOK.SetLine(2, string.Empty);
+            pDlgOK.DoModal(GUIWindowManager.ActiveWindow);
+          }
+        }
+      }
+
+      /// <summary>
         /// Returns last music track info added to MP music database.
         /// </summary>
         /// <returns>Hashtable containg artist names</returns>
Index: LatestMediaHandler/Properties/Resources.Designer.cs
===================================================================
--- LatestMediaHandler/Properties/Resources.Designer.cs	(revision 70)
+++ LatestMediaHandler/Properties/Resources.Designer.cs	(working copy)
@@ -1,7 +1,7 @@
 ﻿//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.3053
+//     Runtime Version:4.0.30319.34003
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -19,7 +19,7 @@
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     public class Resources {
@@ -60,6 +60,9 @@
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
         public static System.Drawing.Bitmap LatestMediaHandler_Icon {
             get {
                 object obj = ResourceManager.GetObject("LatestMediaHandler_Icon", resourceCulture);
@@ -67,6 +70,9 @@
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
         public static System.Drawing.Bitmap LatestMediaHandler_Icon_Disabled {
             get {
                 object obj = ResourceManager.GetObject("LatestMediaHandler_Icon_Disabled", resourceCulture);
Index: LatestMediaHandler/Properties/Settings.Designer.cs
===================================================================
--- LatestMediaHandler/Properties/Settings.Designer.cs	(revision 70)
+++ LatestMediaHandler/Properties/Settings.Designer.cs	(working copy)
@@ -1,7 +1,7 @@
 ﻿//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.3082
+//     Runtime Version:4.0.30319.34003
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -12,7 +12,7 @@
     
     
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
         
         private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
