diff --git a/sickbeard/databases/mainDB.py b/sickbeard/databases/mainDB.py
index 70f6eacf0207efc9ca40e2af0dd24f411ff9c75e..9595846a639e89a46b8d9cf87a02dc562a9bb2ad 100644
--- a/sickbeard/databases/mainDB.py
+++ b/sickbeard/databases/mainDB.py
@@ -469,6 +469,31 @@ class AddSizeAndSceneNameFields(FixAirByDateSetting):
                     self.connection.action("UPDATE tv_episodes SET release_name = ? WHERE episode_id = ?", [cur_name, ep_results[0]["episode_id"]])
                     break
 
+        # check each snatch to see if we can use it to get a release name from
+        empty_results = self.connection.select("SELECT episode_id, location FROM tv_episodes WHERE release_name = ''")
+        
+        logger.log(u"Adding release name to all episodes with obvious scene filenames")
+        for cur_result in empty_results:
+            
+            ep_file_name = ek.ek(os.path.basename, cur_result["location"])
+            ep_file_name = ek.ek(os.path.splitext, ep_file_name)[0]
+            
+            # I only want to find real scene names here so anything with a space in it is out
+            if ' ' in ep_file_name:
+                continue
+            
+            try:
+                np = NameParser(False)
+                parse_result = np.parse(ep_file_name)
+            except InvalidNameException:
+                continue
+        
+            if not parse_result.release_group:
+                continue
+            
+            logger.log(u"Name "+ep_file_name+" gave release group of "+parse_result.release_group+", seems valid", logger.DEBUG)
+            self.connection.action("UPDATE tv_episodes SET release_name = ? WHERE episode_id = ?", [ep_file_name, cur_result["episode_id"]])
+
         self.incDBVersion()
 
 class RenameSeasonFolders(AddSizeAndSceneNameFields):
diff --git a/sickbeard/name_parser/parser.py b/sickbeard/name_parser/parser.py
index 116375f53ad5e0a89334c84d79235dbf3ba2dbfc..6d467c76b0e031d8c55c614d23c268d8429a2e50 100644
--- a/sickbeard/name_parser/parser.py
+++ b/sickbeard/name_parser/parser.py
@@ -330,7 +330,7 @@ class NameParserCache(object):
     
     def get(self, name):
         if name in self._previous_parsed:
-            logger.log("Using cached parse result for: " + str(name), logger.DEBUG)
+            logger.log("Using cached parse result for: " + name, logger.DEBUG)
             return self._previous_parsed[name]
         else:
             return None
diff --git a/sickbeard/name_parser/regexes.py b/sickbeard/name_parser/regexes.py
index f5593be36fe417fbd85df59f80c4a5a49a14ec0d..704016d773b5ba34d39e42c373e37c45f4cb2a38 100644
--- a/sickbeard/name_parser/regexes.py
+++ b/sickbeard/name_parser/regexes.py
@@ -29,7 +29,8 @@ ep_regexes = [
                ([. _-]+s(?P=season_num)[. _-]*             # S01 and optional separator
                e(?P<extra_ep_num>\d+))+                    # E03/etc and separator
                [. _-]*((?P<extra_info>.+?)                 # Source_Quality_Etc-
-               ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
+               ((?<![. _-])(?<!WEB)                        # Make sure this is really the release group
+               -(?P<release_group>[^- ]+))?)?$              # Group
                '''),
               
               ('fov_repeat',
@@ -42,7 +43,8 @@ ep_regexes = [
                ([. _-]+(?P=season_num)x                    # 1x
                (?P<extra_ep_num>\d+))+                     # 03/etc and separator
                [. _-]*((?P<extra_info>.+?)                 # Source_Quality_Etc-
-               ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
+               ((?<![. _-])(?<!WEB)                        # Make sure this is really the release group
+               -(?P<release_group>[^- ]+))?)?$              # Group
                '''),
               
               ('standard',
@@ -59,7 +61,8 @@ ep_regexes = [
                (([. _-]*e|-)                               # linking e/- char
                (?P<extra_ep_num>(?!(1080|720)[pi])\d+))*   # additional E03/etc
                [. _-]*((?P<extra_info>.+?)                 # Source_Quality_Etc-
-               ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
+               ((?<![. _-])(?<!WEB)                        # Make sure this is really the release group
+               -(?P<release_group>[^- ]+))?)?$              # Group
                '''),
 
               ('fov',
@@ -76,7 +79,8 @@ ep_regexes = [
                (?!(1080|720)[pi])(?!(?<=x)264)             # ignore obviously wrong multi-eps
                \d+))*                                      # additional x03/etc
                [\]. _-]*((?P<extra_info>.+?)               # Source_Quality_Etc-
-               ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
+               ((?<![. _-])(?<!WEB)                        # Make sure this is really the release group
+               -(?P<release_group>[^- ]+))?)?$              # Group
                '''),
         
               ('scene_date_format',
@@ -88,7 +92,8 @@ ep_regexes = [
                (?P<air_month>\d{2})[. _-]+                 # 11 and separator
                (?P<air_day>\d{2})                          # 23 and separator
                [. _-]*((?P<extra_info>.+?)                 # Source_Quality_Etc-
-               ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
+               ((?<![. _-])(?<!WEB)                        # Make sure this is really the release group
+               -(?P<release_group>[^- ]+))?)?$              # Group
                '''),
               
               ('stupid',
@@ -118,7 +123,8 @@ ep_regexes = [
                s(eason[. _-])?                             # S01/Season 01
                (?P<season_num>\d+)[. _-]*                  # S01 and optional separator
                [. _-]*((?P<extra_info>.+?)                 # Source_Quality_Etc-
-               ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
+               ((?<![. _-])(?<!WEB)                        # Make sure this is really the release group
+               -(?P<release_group>[^- ]+))?)?$              # Group
                '''
                ),
 
@@ -132,7 +138,8 @@ ep_regexes = [
                ((([. _-]+(and|&|to)[. _-]+)|-)             # and/&/to joiner
                (?P<extra_ep_num>(?!(1080|720)[pi])(\d+|[ivx]+))[. _-])            # second ep num
                ([. _-]*(?P<extra_info>.+?)                 # Source_Quality_Etc-
-               ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
+               ((?<![. _-])(?<!WEB)                        # Make sure this is really the release group
+               -(?P<release_group>[^- ]+))?)?$              # Group
                '''
                ),
 
@@ -149,7 +156,8 @@ ep_regexes = [
                (?P<extra_ep_num>(?!(1080|720)[pi])
                (\d+|([ivx]+(?=[. _-]))))[. _-])*            # second ep num
                ([. _-]*(?P<extra_info>.+?)                 # Source_Quality_Etc-
-               ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
+               ((?<![. _-])(?<!WEB)                        # Make sure this is really the release group
+               -(?P<release_group>[^- ]+))?)?$              # Group
                '''
                ),
 
@@ -172,7 +180,8 @@ ep_regexes = [
                (?P<ep_num>\d{1,2})                           # 02
                (?:-(?P<extra_ep_num>\d{1,2}))?               # 02
                [. _-]+((?P<extra_info>.+?)                 # Source_Quality_Etc-
-               ((?<![. _-])-(?P<release_group>[^-]+))?)?$  # Group
+               ((?<![. _-])(?<!WEB)                        # Make sure this is really the release group
+               -(?P<release_group>[^- ]+))?)?$              # Group
                '''
                ),
               ]
diff --git a/sickbeard/naming.py b/sickbeard/naming.py
index e750e7fb669708e6c69c18058b548c3cd97039da..8e1e4d0c02f79598569e267b1277d3e0852df08a 100644
--- a/sickbeard/naming.py
+++ b/sickbeard/naming.py
@@ -28,10 +28,6 @@ from sickbeard.name_parser.parser import NameParser, InvalidNameException
 
 from common import Quality, DOWNLOADED
 
-dir_presets = ('Season %0S',
-               '%RN',
-               )
-
 name_presets = ('%SN - %Sx%0E - %EN',
                 '%S.N.S%0SE%0E.%E.N',
                 '%Sx%0E - %EN',
diff --git a/sickbeard/tv.py b/sickbeard/tv.py
index 641c0a9895eaac272021ae78e239624a4f93db6b..c6d9dae6773cb36aa77cbc70bf60432f320795dc 100644
--- a/sickbeard/tv.py
+++ b/sickbeard/tv.py
@@ -1522,14 +1522,14 @@ class TVEpisode(object):
                 continue
             
             # start with the ep string, eg. E03
-            ep_string = self._format_string(ep_format.upper())#replace_map[ep_format.upper()]
+            ep_string = self._format_string(ep_format.upper())
             for other_ep in self.relatedEps:
                 if multi == NAMING_DUPLICATE:
                     # add " - S01"
                     ep_string += sep + season_format
                 # add "E04"
                 ep_string += ep_sep
-                ep_string += other_ep._format_string(ep_format.upper())#._replace_map()[ep_format.upper()]
+                ep_string += other_ep._format_string(ep_format.upper())
 
             if season_ep_match:
                 regex_replacement = r'\g<pre_sep>\g<2>\g<3>' + ep_string + r'\g<post_sep>'
diff --git a/tests/name_parser_tests.py b/tests/name_parser_tests.py
index 5b976043bdb6360e4d6d36e3309ac8cfce4f9654..9828f91077ddbc9c978b78499cba7b3a152e7516 100644
--- a/tests/name_parser_tests.py
+++ b/tests/name_parser_tests.py
@@ -27,6 +27,8 @@ simple_test_cases = {
               'Show Name - S06E01 - -30-': parser.ParseResult(None, 'Show Name', 6, [1], '30-' ),
               'Show-Name-S06E01-720p': parser.ParseResult(None, 'Show-Name', 6, [1], '720p' ),
               'Show-Name-S06E01-1080i': parser.ParseResult(None, 'Show-Name', 6, [1], '1080i' ),
+              'Show.Name.S06E01.Other.WEB-DL': parser.ParseResult(None, 'Show Name', 6, [1], 'Other.WEB-DL' ),
+              'Show.Name.S06E01 Some-Stuff Here': parser.ParseResult(None, 'Show Name', 6, [1], 'Some-Stuff Here' ),
               },
               
               'fov': {
@@ -40,18 +42,21 @@ simple_test_cases = {
               'Show-Name-1x02-720p': parser.ParseResult(None, 'Show-Name', 1, [2], '720p'),
               'Show-Name-1x02-1080i': parser.ParseResult(None, 'Show-Name', 1, [2], '1080i'),
               'Show Name [05x12] Ep Name': parser.ParseResult(None, 'Show Name', 5, [12], 'Ep Name'),
+              'Show.Name.1x02.WEB-DL': parser.ParseResult(None, 'Show Name', 1, [2], 'WEB-DL'),
               },
 
               'standard_repeat': {
               'Show.Name.S01E02.S01E03.Source.Quality.Etc-Group': parser.ParseResult(None, 'Show Name', 1, [2,3], 'Source.Quality.Etc', 'Group'),
               'Show.Name.S01E02.S01E03': parser.ParseResult(None, 'Show Name', 1, [2,3]),
               'Show Name - S01E02 - S01E03 - S01E04 - Ep Name': parser.ParseResult(None, 'Show Name', 1, [2,3,4], 'Ep Name'),
+              'Show.Name.S01E02.S01E03.WEB-DL': parser.ParseResult(None, 'Show Name', 1, [2,3], 'WEB-DL'),
               },
               
               'fov_repeat': {
               'Show.Name.1x02.1x03.Source.Quality.Etc-Group': parser.ParseResult(None, 'Show Name', 1, [2,3], 'Source.Quality.Etc', 'Group'),
               'Show.Name.1x02.1x03': parser.ParseResult(None, 'Show Name', 1, [2,3]),
               'Show Name - 1x02 - 1x03 - 1x04 - Ep Name': parser.ParseResult(None, 'Show Name', 1, [2,3,4], 'Ep Name'),
+              'Show.Name.1x02.1x03.WEB-DL': parser.ParseResult(None, 'Show Name', 1, [2,3], 'WEB-DL'),
               },
 
               'bare': {
@@ -71,20 +76,23 @@ simple_test_cases = {
               'no_season': {
               'Show Name - 01 - Ep Name': parser.ParseResult(None, 'Show Name', None, [1], 'Ep Name'),
               '01 - Ep Name': parser.ParseResult(None, None, None, [1], 'Ep Name'),
+              'Show Name - 01 - Ep Name - WEB-DL': parser.ParseResult(None, 'Show Name', None, [1], 'Ep Name - WEB-DL'),
               },
 
               'no_season_general': {
-              'Deconstructed.E07.1080i.HDTV.DD5.1.MPEG2-TrollHD': parser.ParseResult(None, 'Deconstructed', None, [7], '1080i.HDTV.DD5.1.MPEG2', 'TrollHD'),
               'Show.Name.E23.Source.Quality.Etc-Group': parser.ParseResult(None, 'Show Name', None, [23], 'Source.Quality.Etc', 'Group'),
               'Show Name - Episode 01 - Ep Name': parser.ParseResult(None, 'Show Name', None, [1], 'Ep Name'),
               'Show.Name.Part.3.Source.Quality.Etc-Group': parser.ParseResult(None, 'Show Name', None, [3], 'Source.Quality.Etc', 'Group'),
               'Show.Name.Part.1.and.Part.2.Blah-Group': parser.ParseResult(None, 'Show Name', None, [1,2], 'Blah', 'Group'),
               'Show.Name.Part.IV.Source.Quality.Etc-Group': parser.ParseResult(None, 'Show Name', None, [4], 'Source.Quality.Etc', 'Group'),
+              'Deconstructed.E07.1080i.HDTV.DD5.1.MPEG2-TrollHD': parser.ParseResult(None, 'Deconstructed', None, [7], '1080i.HDTV.DD5.1.MPEG2', 'TrollHD'),
+              'Show.Name.E23.WEB-DL': parser.ParseResult(None, 'Show Name', None, [23], 'WEB-DL'),
               },
 
               'no_season_multi_ep': {
               'Show.Name.E23-24.Source.Quality.Etc-Group': parser.ParseResult(None, 'Show Name', None, [23,24], 'Source.Quality.Etc', 'Group'),
               'Show Name - Episode 01-02 - Ep Name': parser.ParseResult(None, 'Show Name', None, [1,2], 'Ep Name'),
+              'Show.Name.E23-24.WEB-DL': parser.ParseResult(None, 'Show Name', None, [23,24], 'WEB-DL'),
               },
 
               'season_only': {
@@ -99,6 +107,7 @@ simple_test_cases = {
               'Show.Name.2010.23.11.Source.Quality.Etc-Group': parser.ParseResult(None, 'Show Name', None, [], 'Source.Quality.Etc', 'Group', datetime.date(2010,11,23)),
               'Show Name - 2010-11-23 - Ep Name': parser.ParseResult(None, 'Show Name', extra_info = 'Ep Name', air_date = datetime.date(2010,11,23)),
               '2010-11-23 - Ep Name': parser.ParseResult(None, extra_info = 'Ep Name', air_date = datetime.date(2010,11,23)),
+              'Show.Name.2010.11.23.WEB-DL': parser.ParseResult(None, 'Show Name', None, [], 'WEB-DL', None, datetime.date(2010,11,23)),
                }
               }
 
@@ -328,11 +337,11 @@ if __name__ == '__main__':
         suite = unittest.TestLoader().loadTestsFromTestCase(BasicTests)
     unittest.TextTestRunner(verbosity=2).run(suite)
 
-    suite = unittest.TestLoader().loadTestsFromTestCase(ComboTests)
-    unittest.TextTestRunner(verbosity=2).run(suite)
+    #suite = unittest.TestLoader().loadTestsFromTestCase(ComboTests)
+    #unittest.TextTestRunner(verbosity=2).run(suite)
 
-    suite = unittest.TestLoader().loadTestsFromTestCase(UnicodeTests)
-    unittest.TextTestRunner(verbosity=2).run(suite)
+    #suite = unittest.TestLoader().loadTestsFromTestCase(UnicodeTests)
+    #unittest.TextTestRunner(verbosity=2).run(suite)
 
-    suite = unittest.TestLoader().loadTestsFromTestCase(FailureCaseTests)
-    unittest.TextTestRunner(verbosity=2).run(suite)
+    #suite = unittest.TestLoader().loadTestsFromTestCase(FailureCaseTests)
+    #unittest.TextTestRunner(verbosity=2).run(suite)