diff --git a/src/NzbDrone.Core/MetaData/Consumers/Xbmc/XbmcMetadata.cs b/src/NzbDrone.Core/MetaData/Consumers/Xbmc/XbmcMetadata.cs
index 0e74e81c4..78a61588b 100644
--- a/src/NzbDrone.Core/MetaData/Consumers/Xbmc/XbmcMetadata.cs
+++ b/src/NzbDrone.Core/MetaData/Consumers/Xbmc/XbmcMetadata.cs
@@ -193,16 +193,22 @@ public override MetadataFile FindMetadataFile(Series series, string path)
             {
                 metadata.Type = MetadataType.SeasonImage;
 
-                var seasonNumber = seasonMatch.Groups["season"].Value;
+                var seasonNumberMatch = seasonMatch.Groups["season"].Value;
+                int seasonNumber;
 
-                if (seasonNumber.Contains("specials"))
+                if (seasonNumberMatch.Contains("specials"))
                 {
                     metadata.SeasonNumber = 0;
                 }
 
+                else if (Int32.TryParse(seasonNumberMatch, out seasonNumber))
+                {
+                    metadata.SeasonNumber = seasonNumber;
+                }
+
                 else
                 {
-                    metadata.SeasonNumber = Convert.ToInt32(seasonNumber);
+                    return null;
                 }
                 
                 return metadata;
@@ -462,7 +468,7 @@ private MetadataFile WriteEpisodeImages(Series series, EpisodeFile episodeFile,
             var filename = GetEpisodeImageFilename(episodeFile.Path);
             var relativePath = DiskProviderBase.GetRelativePath(series.Path, filename);
 
-            var existingMetadata = existingMetadataFiles.SingleOrDefault(c => c.Type == MetadataType.EpisodeImage &&
+            var existingMetadata = existingMetadataFiles.FirstOrDefault(c => c.Type == MetadataType.EpisodeImage &&
                                                                               c.EpisodeFileId == episodeFile.Id);
 
             if (existingMetadata != null)