diff --git a/gui/slick/images/network/cbs all access.png b/gui/slick/images/network/cbs all access.png new file mode 100644 index 0000000000000000000000000000000000000000..190598f6f2f0f753400e2e0a55d6fd0ff8369fa5 Binary files /dev/null and b/gui/slick/images/network/cbs all access.png differ diff --git a/runscripts/init.openbsd b/runscripts/init.openbsd new file mode 100644 index 0000000000000000000000000000000000000000..9d96520ab87253f96f6d4e9ad937f84ba76df81e --- /dev/null +++ b/runscripts/init.openbsd @@ -0,0 +1,13 @@ +#!/bin/sh +# +daemon_home="/path/to/sickrage_homedir" +daemon_user="sickrage" +daemon="/usr/local/bin/python2.7 $daemon_home/SickRage/SickBeard.py" +daemon_flags="-q --daemon --nolaunch --datadir=$daemon_home" +daemon_timeout=5 + +. /etc/rc.d/rc.subr + +rc_reload=NO + +rc_cmd $1 diff --git a/sickbeard/common.py b/sickbeard/common.py index b113ddd9f491d1b3786a2bb25d3fc72331a0e735..4bcb3e598474997394daaf8d686d1076df763d7e 100644 --- a/sickbeard/common.py +++ b/sickbeard/common.py @@ -332,31 +332,31 @@ class Quality(object): return Quality.UNKNOWN if result is None else result # Is it UHD? - if ep.vres in [2160, 4320] and ep.scan == 'p': + if ep.vres in {2160, 4320} and ep.scan == 'p': # BluRay full_res = (ep.vres == 4320) if ep.avc and ep.bluray: - result = Quality.UHD_4K_BLURAY if not full_res else Quality.UHD_8K_BLURAY + result = (Quality.UHD_4K_BLURAY, Quality.UHD_8K_BLURAY)[full_res] # WEB-DL - elif (ep.avc and ep.itunes) or ep.web: - result = Quality.UHD_4K_WEBDL if not full_res else Quality.UHD_8K_WEBDL + elif (ep.avc and (ep.itunes or ep.amazon or ep.netflix)) or ep.web: + result = (Quality.UHD_4K_WEBDL, Quality.UHD_8K_WEBDL)[full_res] # HDTV elif ep.avc and ep.tv == 'hd': - result = Quality.UHD_4K_TV if not full_res else Quality.UHD_8K_TV + result = (Quality.UHD_4K_TV, Quality.UHD_8K_TV)[full_res] # Is it HD? - elif ep.vres in [1080, 720]: + elif ep.vres in {1080, 720}: if ep.scan == 'p': # BluRay full_res = (ep.vres == 1080) if ep.avc and (ep.bluray or ep.hddvd): - result = Quality.FULLHDBLURAY if full_res else Quality.HDBLURAY + result = (Quality.HDBLURAY, Quality.FULLHDBLURAY)[full_res] # WEB-DL - elif (ep.avc and ep.itunes) or ep.web: - result = Quality.FULLHDWEBDL if full_res else Quality.HDWEBDL + elif (ep.avc and (ep.itunes or ep.amazon or ep.netflix)) or ep.web: + result = (Quality.HDWEBDL, Quality.FULLHDWEBDL)[full_res] # HDTV elif ep.avc and ep.tv == 'hd': - result = Quality.FULLHDTV if full_res else Quality.HDTV #1080 HDTV h264 + result = (Quality.HDTV, Quality.FULLHDTV)[full_res] # 1080 HDTV h264 # MPEG2 encoded elif all([ep.vres == 1080, ep.tv == 'hd', ep.mpeg]): result = Quality.RAWHDTV @@ -364,6 +364,8 @@ class Quality(object): result = Quality.RAWHDTV elif (ep.res == '1080i') and ep.tv == 'hd' and (ep.mpeg or (ep.raw and ep.avc_non_free)): result = Quality.RAWHDTV + elif not ep.vres and ep.netflix or ep.amazon or ep.itunes: + result = Quality.HDWEBDL elif ep.hrws: result = Quality.HDTV diff --git a/sickrage/recompiled/tags.py b/sickrage/recompiled/tags.py index fd5fde974379f1819a3a0a48a8ab1c585e337835..00f09acdac13daca5fbcedf33ffdc5393b5d3926 100644 --- a/sickrage/recompiled/tags.py +++ b/sickrage/recompiled/tags.py @@ -16,11 +16,12 @@ dvd = re.compile(r'(?P<hd>hd)?dvd(?P<rip>rip|mux)?', re.I) web = re.compile(r'(web(?P<type>rip|mux|hd|.?dl|\b))', re.I) bluray = re.compile(r'(blue?-?ray|b[rd](?:rip|mux))', re.I) sat = re.compile(r'(dsr|satrip)', re.I) -itunes = re.compile(r'(itunes)', re.I) -netflix = re.compile(r'netflix(hd|uhd)', re.I) +itunes = re.compile(r'itunes(hd|uhd)?', re.I) +netflix = re.compile(r'netflix(hd|uhd)?', re.I) +amazon = re.compile(r'(amzn|amazon)(hd|uhd)?', re.I) # Codecs -avc = re.compile(r'([xh].?26[45])', re.I) +avc = re.compile(r'([xh].?26[45]|AVC)', re.I) xvid = re.compile(r'(xvid|divx)', re.I) mpeg = re.compile(r'(mpeg-?2)', re.I) diff --git a/sickrage/tagger/episode.py b/sickrage/tagger/episode.py index 7f881fbbbe58222c801f930b145a8b7ede41e98b..0bc860a17f258a62e34716737ad82d2b997d2afc 100644 --- a/sickrage/tagger/episode.py +++ b/sickrage/tagger/episode.py @@ -30,6 +30,7 @@ class EpisodeTags(object): 'mpeg': tags.mpeg, 'xvid': tags.xvid, 'netflix': tags.netflix, + 'amazon': tags.amazon, } def _get_match_obj(self, attr, regex=None, flags=0): @@ -277,3 +278,13 @@ class EpisodeTags(object): attr = 'netflix' match = self._get_match_obj(attr) return '' if not match else match.group() + + @property + def amazon(self): + """ + Amazon tage found in name + :return: an empty string if not found + """ + attr = 'amazon' + match = self._get_match_obj(attr) + return '' if not match else match.group() diff --git a/tests/common_tests.py b/tests/common_tests.py index e93df80f65d9f1313ce388e8efa7f81f3bc5c05a..7e90ed2674e58de46edf36f0fc7eaa871f35944f 100644 --- a/tests/common_tests.py +++ b/tests/common_tests.py @@ -98,7 +98,28 @@ class QualityStringTests(unittest.TestCase): "Test Show S01E02 720p WEB-DL AAC2 0 H 264-GROUP", "Test_Show.S01E02_720p_WEB-DL_AAC2.0_H264-GROUP", "Test.Show.S01E02.720p.WEB-DL.AAC2.0.H264-GROUP", - "Test.Show.S01E02.720p.iTunes.Rip.H264.AAC-GROUP" + "Test.Show.S01E02.720p.iTunes.Rip.H264.AAC-GROUP", + "Test.Show.S01E02.Episode.Name.Itunes.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.ItunesHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.ItunesUHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.720p.Itunes.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.720p.ItunesHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.720p.ItunesUHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.AMZN.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.Amazon.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.AmazonHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.AmazonUHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.720p.AMZN.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.720p.Amazon.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.720p.AmazonHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.720p.AmazonUHD.WEB-DL.x264", + + # German dubs + "Test.Show.S01E02.Episode.Name.German.DD51.Synced.DL.iTunesHD.AVC", + "Test.Show.S01E02.Episode.Name.German.DD51.Synced.DL.AmazonHD.x264", + "Test.Show.S01E02.Episode.Name.German.Dubbed.DL.iTunesHD.x264", + "Test.Show.S01E02.Episode.Name.German.DD51.DL.NetflixHD.x264", + "Test.Show.S01E02.Episode.Name.German.DD51.DL.NetflixUHD.x264" ], 'full_hd_web_dl': [ "Test.Show.S01E02.1080p.WEB-DL-GROUP", @@ -107,7 +128,21 @@ class QualityStringTests(unittest.TestCase): "Test.Show.S01E02.WEBRip.1080p.H264.AAC.2.0-GROUP", "Test.Show.S01E02.1080p.iTunes.H.264.AAC-GROUP", "Test Show S01E02 1080p iTunes H 264 AAC-GROUP", - "Test_Show_S01E02_1080p_iTunes_H_264_AAC-GROUP" + "Test_Show_S01E02_1080p_iTunes_H_264_AAC-GROUP", + "Test.Show.S01E02.Episode.Name.1080p.Itunes.WEB-DL.x264" + "Test.Show.S01E02.Episode.Name.1080p.ItunesHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.1080p.ItunesUHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.1080p.AMZN.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.1080p.Amazon.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.1080p.AmazonUHD.WEB-DL.x264", + "Test.Show.S01E02.Episode.Name.1080p.AmazonHD.WEB-DL.x264", + + # German dubs + "Test.Show.S01E02.Episode.Name.German.DD51.Synced.DL.1080p.iTunesHD.AVC", + "Test.Show.S01E02.Episode.Name.German.DD51.Synced.DL.1080p.AmazonHD.x264", + "Test.Show.S01E02.Episode.Name.German.Dubbed.DL.1080p.iTunesHD.x264", + "Test.Show.S01E02.Episode.Name.German.DD51.DL.1080p.NetflixHD.x264", + "Test.Show.S01E02.Episode.Name.German.DD51.DL.1080p.NetflixUHD.x264" ], 'hd_bluray': [ "Test.Show.S01E02.720p.BluRay.x264-GROUP",