From 86b585aac7af17327f276685247508d6ca72f326 Mon Sep 17 00:00:00 2001 From: JackDandy Date: Sun, 31 Jan 2016 11:29:32 +0000 Subject: [PATCH] Fix issue setting some custom name patterns on the "Config/Post Processing/Episode Naming" tab. Remove Strike torrent provider. Add network icons. --- CHANGES.md | 9 +- gui/slick/images/network/bbc hd.png | Bin 0 -> 1894 bytes gui/slick/images/network/bravo!.png | Bin 0 -> 3419 bytes gui/slick/images/network/bravo.png | Bin 4558 -> 3419 bytes gui/slick/images/network/cctv.png | Bin 0 -> 2577 bytes gui/slick/images/network/cnbc.png | Bin 0 -> 2718 bytes gui/slick/images/network/living.png | Bin 0 -> 1814 bytes gui/slick/images/network/prime.png | Bin 0 -> 1515 bytes gui/slick/images/network/sky living.png | Bin 0 -> 1814 bytes gui/slick/images/network/sky sports.png | Bin 0 -> 1700 bytes gui/slick/images/network/stv.png | Bin 0 -> 2037 bytes gui/slick/images/network/svt.png | Bin 0 -> 2978 bytes gui/slick/images/network/tvnz.png | Bin 0 -> 1769 bytes gui/slick/images/providers/strike.png | Bin 417 -> 0 bytes gui/slick/js/configPostProcessing.js | 57 ++------ sickbeard/naming.py | 165 ++++++++++++------------ sickbeard/providers/__init__.py | 3 +- sickbeard/providers/strike.py | 84 ------------ 18 files changed, 98 insertions(+), 220 deletions(-) create mode 100644 gui/slick/images/network/bbc hd.png create mode 100644 gui/slick/images/network/bravo!.png create mode 100644 gui/slick/images/network/cctv.png create mode 100644 gui/slick/images/network/cnbc.png create mode 100644 gui/slick/images/network/living.png create mode 100644 gui/slick/images/network/prime.png create mode 100644 gui/slick/images/network/sky living.png create mode 100644 gui/slick/images/network/sky sports.png create mode 100644 gui/slick/images/network/stv.png create mode 100644 gui/slick/images/network/svt.png create mode 100644 gui/slick/images/network/tvnz.png delete mode 100644 gui/slick/images/providers/strike.png delete mode 100644 sickbeard/providers/strike.py diff --git a/CHANGES.md b/CHANGES.md index 2bcd6a52..de0fb6f3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,11 @@ -### 0.11.3 (2016-01-16 20:00:00 UTC) +### 0.11.4 (2016-01-31 11:30:00 UTC) + +* Fix issue setting some custom name patterns on the "Config/Post Processing/Episode Naming" tab +* Remove Strike torrent provider +* Add network icons + + +### 0.11.3 (2016-01-16 20:00:00 UTC) * Fix Search Settings display fail * Add Audience, Channel 5 (UK), Five US, Fox Channel, FreeForm, Global, HBO Canada, Keshet, More4, Rooster Teeth, TF1, diff --git a/gui/slick/images/network/bbc hd.png b/gui/slick/images/network/bbc hd.png new file mode 100644 index 0000000000000000000000000000000000000000..3a6b3c3fb7138751d72c66047b4b22ea4bcae95b GIT binary patch literal 1894 zcmV-s2buVZP)K@6 zM){BvHL*Wf;u0|;EQ*U5gTzK_P(T!nP(CbOEm*!P^yzcW&x~M<^Y%g93q6M($mvT0OtMRxws<$lC)Z_Iz2u8{c_!`pT$~PS@~yg zQ7tVky_lAkW?l}WXR)YMs;0G+zyJWpaX|orD5XLB_U%JnULHgu5jc*+t5>gZ?b+6rI z)#_`65S3RYp z#+xj}VllF^vheKLGvw#zMGZ*=$~Kj{*SV;^MHhv;?J6iOZKSBQY`2CpRG> z0XJ{ngkG;lettd%2mg1ZD3wZ#jg5KbRa8`*9UL6|)7i6ULq?58yzK1-09?I#6+dj; z2nWl8WmzO9CW2*IUPQ&Uqu`=3628fLQ@a=H97;{l+lsR_@YKVQW;bLLD{S67#cW!cb;-+zxyn>M-I z_U_#algR|7LV=@4k7DP}ov5p;Lu+d*Q(Idr>+kRX(WL~h3RqlRL{(K4SeAuUDn(aU z7e+@%{dPceb2EfOA>!lXap%q*ynFY~Xa55S4xqQU7ybSH{tV9G!@=Y6@LfmUl9Cea*|R51tJVH=^5n^X5JFU5 z6~HhI?%utN#>Pg})YKq4IvQH7)^7*gxN!qbO-;~hwb-?57mACEAr_0*?C*3s!7vQ? ze7;}fYcv{i@7}!+uJ5_oS-gDt5>KB##givbV7J@7ZcU+32#(_bfY#R5Hm|7wfk1$k zmKJn&cDe^ptJNqfD#FK)AJ<*rl`B_ZwOYY244h6U3JVKSS67EmpFVl*f9uvQ6ciL7 zDJcn$9z9xbcs?N{(_}KWl$V$Pz~}R$78Vwu*X!|MdA%1eUIYNJ4hNS1HaK$R2!euw z(B0iV4dAzgkX=5{0HII_p-_lz+qPl%?%e>e%Cl=hEEXd;I2f_9u}Dr%hQ(rm)9GBZ ze|2>=SeAuOr$a_Y20}tYuwlan#Kgp)p`igXnQWChA|oR$6%`d%`}+DmSf{2wJEJ-~ zI}scljN;;AR904^wY3!*jRyPo@1Fx8CxrY002B&E{VD}G91d747Tmsl8v=m%ISI8|?eicUA0J0XMg|%h8qn6(2D{x3 zyWNh>n>S;AejX1VJOHJiUs4qcMLi)zm7AN}kdu>>KRG$M)zwy5ScpTJnTV1|z;PV9 zySvfe-fjbMoDlMJj^lVIPMoOo+yd^TsJpuxYPA{+!?>f~)6=u^bY?s_?$A7Z_z)_U z${nrw`FR)&1`H1mui|nX$D@?Gxq7`GDJdyPNl8I$Y%Catf!S<^Ua!ZSH*dVn>vn=% zF8}-a^XIbx{Lvp`rEi2iNr#LZR>j z04o4GFff3Dfr0gQ$TWZjKA%rTBGCr`ZfVTT&7tk{g|8Cma#^K>($doQ3l}c%0Q|Uu z^Y7)z#{ht*@$Sf9x^$_exVX64-(&~?)oQiB5s5^O>FMdv($Z4h7bI+4eSQ6}1p)zQ zv)Mwvkc-B~#-9WN0k`r>O9)XJjYf$^qsaph<>Bn#5ke#`XL-#A*Gn1Kg3J5=53aX* zLWpW&Vj`lVqT-JLgaD2aLVo6p^VL0w5JFVr1~E g0R#|00AGOr05M;7y(7vwX#fBK07*qoM6N<$f;Inl1ONa4 literal 0 HcmV?d00001 diff --git a/gui/slick/images/network/bravo!.png b/gui/slick/images/network/bravo!.png new file mode 100644 index 0000000000000000000000000000000000000000..63e75a9c5a36295e401fa60088e5a1b6fb714ad7 GIT binary patch literal 3419 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 diff --git a/gui/slick/images/network/cctv.png b/gui/slick/images/network/cctv.png new file mode 100644 index 0000000000000000000000000000000000000000..7d62fc50e7c09df2a945389b4de7915cf719730e GIT binary patch literal 2577 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 Y0qs0W`tv;E&Hw-a07*qoM6N<$f|jsK=l}o! literal 0 HcmV?d00001 diff --git a/gui/slick/images/network/living.png b/gui/slick/images/network/living.png new file mode 100644 index 0000000000000000000000000000000000000000..6a696601483ab6131de5d705a38b670eb778c974 GIT binary patch literal 1814 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 RV2=O*002ovPDHLkV1jaHwPpYS literal 0 HcmV?d00001 diff --git a/gui/slick/images/network/sky living.png b/gui/slick/images/network/sky living.png new file mode 100644 index 0000000000000000000000000000000000000000..6a696601483ab6131de5d705a38b670eb778c974 GIT binary patch literal 1814 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 LNkvXXu0mjf&-!5@ literal 0 HcmV?d00001 diff --git a/gui/slick/images/providers/strike.png b/gui/slick/images/providers/strike.png deleted file mode 100644 index a857f5ff2ff01a19cacb5317669646091a10348b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmV;S0bc%zP)`iy$H?tZY`oAuMa@rWBDNa)pJ}A=Z*2 zq!3AAyGO9FkRUwd6H?Y20krl9zA~ zy%5ve5YweY0sGVqF?|m)4Qt7tYRU8HV-RBMwu>k2cm~g~7-G7QyI3>M=fC=+Lb`$t z<2+trF2wX21N^8ZZ%taEt)H014Lro<20A#(!6{tC2Ry;9ab~l4(fl0>=;ItVjdNMS zFLZ0k!@Z(5U>A#cQ%mlJm@YJvI(Sq|e&3$b2HeJZ?1Y$>jqhLu4{FJOCfWQa#9Hz< zT*Z20zf((IJ*auVgWn;h1uSD5w`$3s4{DkO=;00?*OJ$#Y24FaDr;}x-)Gz-00000 LNkvXXu0mjf;U>63 diff --git a/gui/slick/js/configPostProcessing.js b/gui/slick/js/configPostProcessing.js index daf99485..74097149 100644 --- a/gui/slick/js/configPostProcessing.js +++ b/gui/slick/js/configPostProcessing.js @@ -10,7 +10,6 @@ $(document).ready(function () { })(); function israr_supported() { - var pattern = $('#naming_pattern').val(); $.get(sbRoot + '/config/postProcessing/isRarSupported', function (data) { if (data == "supported") { @@ -29,9 +28,8 @@ $(document).ready(function () { function fill_examples() { var pattern = $('#naming_pattern').val(); var multi = $('#naming_multi_ep :selected').val(); - var anime_type = $('input[name="naming_anime"]:checked').val(); - $.get(sbRoot + '/config/postProcessing/testNaming', {pattern: pattern, anime_type: 3}, + $.get(sbRoot + '/config/postProcessing/testNaming', {pattern: pattern}, function (data) { if (data) { $('#naming_example').text(data + '.ext'); @@ -41,7 +39,7 @@ $(document).ready(function () { } }); - $.get(sbRoot + '/config/postProcessing/testNaming', {pattern: pattern, multi: multi, anime_type: 3}, + $.get(sbRoot + '/config/postProcessing/testNaming', {pattern: pattern, multi: multi}, function (data) { if (data) { $('#naming_example_multi').text(data + '.ext'); @@ -51,7 +49,7 @@ $(document).ready(function () { } }); - $.get(sbRoot + '/config/postProcessing/isNamingValid', {pattern: pattern, multi: multi, anime_type: anime_type}, + $.get(sbRoot + '/config/postProcessing/isNamingValid', {pattern: pattern, multi: multi}, function (data) { if (data == "invalid") { $('#naming_pattern').qtip('option', { @@ -80,6 +78,8 @@ $(document).ready(function () { } function fill_abd_examples() { + if (!$('#naming_custom_abd').is(':checked')) + return; var pattern = $('#naming_abd_pattern').val(); $.get(sbRoot + '/config/postProcessing/testNaming', {pattern: pattern, abd: 'True'}, @@ -121,47 +121,8 @@ $(document).ready(function () { } function fill_sports_examples() { - var pattern = $('#naming_sports_pattern').val(); - - $.get(sbRoot + '/config/postProcessing/testNaming', {pattern: pattern, sports: 'True'}, - function (data) { - if (data) { - $('#naming_sports_example').text(data + '.ext'); - $('#naming_sports_example_div').show(); - } else { - $('#naming_sports_example_div').hide(); - } - }); - - $.get(sbRoot + '/config/postProcessing/isNamingValid', {pattern: pattern, sports: 'True'}, - function (data) { - if (data == "invalid") { - $('#naming_sports_pattern').qtip('option', { - 'content.text': 'This pattern is invalid.', - 'style.classes': 'qtip-red qtip-rounded qtip-shadow' - }); - $('#naming_sports_pattern').qtip('toggle', true); - $('#naming_sports_pattern').css('background-color', '#FFDDDD'); - } else if (data == "seasonfolders") { - $('#naming_sports_pattern').qtip('option', { - 'content.text': 'This pattern would be invalid without the folders, using it will force "Flatten" off for all shows.', - 'style.classes': 'qtip-red qtip-rounded qtip-shadow' - }); - $('#naming_sports_pattern').qtip('toggle', true); - $('#naming_sports_pattern').css('background-color', '#FFFFDD'); - } else { - $('#naming_sports_pattern').qtip('option', { - 'content.text': 'This pattern is valid.', - 'style.classes': 'qtip-green qtip-rounded qtip-shadow' - }); - $('#naming_sports_pattern').qtip('toggle', false); - $('#naming_sports_pattern').css('background-color', '#FFFFFF'); - } - }); - - } - - function fill_sports_examples() { + if (!$('#naming_custom_sports').is(':checked')) + return; var pattern = $('#naming_sports_pattern').val(); $.get(sbRoot + '/config/postProcessing/testNaming', {pattern: pattern, sports: 'True'}, @@ -203,6 +164,8 @@ $(document).ready(function () { } function fill_anime_examples() { + if (!$('#naming_custom_anime').is(':checked')) + return; var pattern = $('#naming_anime_pattern').val(); var multi = $('#naming_anime_multi_ep :selected').val(); var anime_type = $('input[name="naming_anime"]:checked').val(); @@ -549,4 +512,4 @@ $(document).ready(function () { } return save_config; })) -}); \ No newline at end of file +}); diff --git a/sickbeard/naming.py b/sickbeard/naming.py index 49d2ed8e..568df682 100644 --- a/sickbeard/naming.py +++ b/sickbeard/naming.py @@ -24,33 +24,37 @@ from sickbeard import encodingKludge as ek from sickbeard import tv from sickbeard import common from sickbeard import logger -from sickbeard.name_parser.parser import NameParser, InvalidNameException +from sickbeard.name_parser.parser import NameParser from common import Quality, DOWNLOADED -name_presets = ('%SN - %Sx%0E - %EN', - '%S.N.S%0SE%0E.%E.N', - '%Sx%0E - %EN', - 'S%0SE%0E - %EN', - 'Season %0S/%S.N.S%0SE%0E.%Q.N-%RG' +name_presets = ( + '%SN - %Sx%0E - %EN', + '%S.N.S%0SE%0E.%E.N', + '%Sx%0E - %EN', + 'S%0SE%0E - %EN', + 'Season %0S/%S.N.S%0SE%0E.%Q.N-%RG' ) name_anime_presets = name_presets -name_abd_presets = ('%SN - %A-D - %EN', - '%S.N.%A.D.%E.N.%Q.N', - '%Y/%0M/%S.N.%A.D.%E.N-%RG' +name_abd_presets = ( + '%SN - %A-D - %EN', + '%S.N.%A.D.%E.N.%Q.N', + '%Y/%0M/%S.N.%A.D.%E.N-%RG' ) -name_sports_presets = ('%SN - %A-D - %EN', - '%S.N.%A.D.%E.N.%Q.N', - '%Y/%0M/%S.N.%A.D.%E.N-%RG' +name_sports_presets = ( + '%SN - %A-D - %EN', + '%S.N.%A.D.%E.N.%Q.N', + '%Y/%0M/%S.N.%A.D.%E.N-%RG' ) -class TVShow(): + +class TVShow: def __init__(self): - self.name = "Show Name" - self.genre = "Comedy" + self.name = 'Show Name' + self.genre = 'Comedy' self.indexerid = 1 self.air_by_date = 0 self.sports = 0 @@ -58,26 +62,17 @@ class TVShow(): self.scene = 0 def _is_anime(self): - if (self.anime > 0): - return True - else: - return False + return 0 < self.anime is_anime = property(_is_anime) def _is_sports(self): - if (self.sports > 0): - return True - else: - return False + return 0 < self.sports is_sports = property(_is_sports) def _is_scene(self): - if (self.scene > 0): - return True - else: - return False + return 0 < self.scene is_scene = property(_is_scene) @@ -106,16 +101,19 @@ def check_force_season_folders(pattern=None, multi=None, anime_type=None): to be enabled or not. Returns true if season folders need to be forced on or false otherwise. + :param pattern: String Naming Pattern + :param multi: Bool Multi-episode pattern + :param anime_type: Integer Numbering type to use for anime pattern """ - if pattern == None: + if None is pattern: pattern = sickbeard.NAMING_PATTERN - if anime_type == None: + if None is anime_type: anime_type = sickbeard.NAMING_ANIME valid = not validate_name(pattern, None, anime_type, file_only=True) - if multi != None: + if None is not multi: valid = valid or not validate_name(pattern, multi, anime_type, file_only=True) return valid @@ -126,18 +124,21 @@ def check_valid_naming(pattern=None, multi=None, anime_type=None): Checks if the name is can be parsed back to its original form for both single and multi episodes. Returns true if the naming is valid, false if not. + :param pattern: String Naming Pattern + :param multi: Bool Multi-episode pattern + :param anime_type: Integer Numbering type to use for anime pattern """ - if pattern == None: + if None is pattern: pattern = sickbeard.NAMING_PATTERN - if anime_type == None: + if None is anime_type: anime_type = sickbeard.NAMING_ANIME - logger.log(u"Checking whether the pattern " + pattern + " is valid for a single episode", logger.DEBUG) + logger.log(u'Checking whether the pattern %s is valid for a single episode' % pattern, logger.DEBUG) valid = validate_name(pattern, None, anime_type) - if multi != None: - logger.log(u"Checking whether the pattern " + pattern + " is valid for a multi episode", logger.DEBUG) + if None is not multi: + logger.log(u'Checking whether the pattern %s is valid for a multi episode' % pattern, logger.DEBUG) valid = valid and validate_name(pattern, multi, anime_type) return valid @@ -148,67 +149,72 @@ def check_valid_abd_naming(pattern=None): Checks if the name is can be parsed back to its original form for an air-by-date format. Returns true if the naming is valid, false if not. + :param pattern: String Naming Pattern """ - if pattern == None: + if None is pattern: pattern = sickbeard.NAMING_PATTERN - logger.log(u"Checking whether the pattern " + pattern + " is valid for an air-by-date episode", logger.DEBUG) + logger.log(u'Checking whether the pattern %s is valid for an air-by-date episode' % pattern, logger.DEBUG) valid = validate_name(pattern, abd=True) return valid + def check_valid_sports_naming(pattern=None): """ Checks if the name is can be parsed back to its original form for an sports format. Returns true if the naming is valid, false if not. + :param pattern: String Naming Pattern """ - if pattern == None: + if None is pattern: pattern = sickbeard.NAMING_PATTERN - logger.log(u"Checking whether the pattern " + pattern + " is valid for an sports episode", logger.DEBUG) + logger.log(u'Checking whether the pattern %s is valid for an sports episode' % pattern, logger.DEBUG) valid = validate_name(pattern, sports=True) return valid -def validate_name(pattern, multi=None, anime_type=None, file_only=False, abd=False, sports=False): - ep = generate_sample_ep(multi, abd, sports, anime_type) - new_name = ep.formatted_filename(pattern, multi, anime_type) + '.ext' +def validate_name(pattern, multi=None, anime_type=None, file_only=False, abd=False, sports=False): + ep = generate_sample_ep(multi, abd, sports, anime_type=anime_type) + + new_name = u'%s.ext' % ep.formatted_filename(pattern, multi, anime_type) new_path = ep.formatted_dir(pattern, multi) if not file_only: new_name = ek.ek(os.path.join, new_path, new_name) if not new_name: - logger.log(u"Unable to create a name out of " + pattern, logger.DEBUG) + logger.log(u'Unable to create a name out of %s' % pattern, logger.DEBUG) return False - logger.log(u"Trying to parse " + new_name, logger.DEBUG) + logger.log(u'Trying to parse %s' % new_name, logger.DEBUG) parser = NameParser(True, showObj=ep.show, naming_pattern=True) try: result = parser.parse(new_name) except Exception as e: - logger.log(u"Unable to parse " + new_name + ", not valid", logger.DEBUG) + logger.log(u'Unable to parse %s, not valid' % new_name, logger.DEBUG) return False - logger.log("The name " + new_name + " parsed into " + str(result), logger.DEBUG) + logger.log(u'The name %s parsed into %s' % (new_name, result), logger.DEBUG) if abd or sports: if result.air_date != ep.airdate: - logger.log(u"Air date incorrect in parsed episode, pattern isn't valid", logger.DEBUG) + logger.log(u'Air date incorrect in parsed episode, pattern isn\'t valid', logger.DEBUG) return False - elif anime_type != 3: - if len(result.ab_episode_numbers) and result.ab_episode_numbers != [x.absolute_number for x in [ep] + ep.relatedEps]: - logger.log(u"Absolute numbering incorrect in parsed episode, pattern isn't valid", logger.DEBUG) - return False - else: + elif 3 == anime_type: if result.season_number != ep.season: - logger.log(u"Season number incorrect in parsed episode, pattern isn't valid", logger.DEBUG) + logger.log(u'Season number incorrect in parsed episode, pattern isn\'t valid', logger.DEBUG) return False if result.episode_numbers != [x.episode for x in [ep] + ep.relatedEps]: - logger.log(u"Episode numbering incorrect in parsed episode, pattern isn't valid", logger.DEBUG) + logger.log(u'Episode numbering incorrect in parsed episode, pattern isn\'t valid', logger.DEBUG) + return False + else: + if len(result.ab_episode_numbers) and result.ab_episode_numbers != [x.absolute_number for x in + [ep] + ep.relatedEps]: + logger.log(u'Absolute numbering incorrect in parsed episode, pattern isn\'t valid', logger.DEBUG) return False return True @@ -216,14 +222,11 @@ def validate_name(pattern, multi=None, anime_type=None, file_only=False, abd=Fal def generate_sample_ep(multi=None, abd=False, sports=False, anime=False, anime_type=None): # make a fake episode object - ep = TVEpisode(2, 3, 3, "Ep Name") + ep = TVEpisode(2, 3, 3, 'Ep Name') ep._status = Quality.compositeStatus(DOWNLOADED, Quality.HDTV) ep._airdate = datetime.date(2011, 3, 9) - if anime: - ep.show.anime = 1 - if abd: ep._release_name = 'Show.Name.2011.03.09.HDTV.XviD-RLSGROUP' ep.show.air_by_date = 1 @@ -231,38 +234,28 @@ def generate_sample_ep(multi=None, abd=False, sports=False, anime=False, anime_t ep._release_name = 'Show.Name.2011.03.09.HDTV.XviD-RLSGROUP' ep.show.sports = 1 else: - if anime_type != 3: - ep.show.anime = 1 - ep._release_name = 'Show.Name.003.HDTV.XviD-RLSGROUP' - else: + if not anime or 3 == anime_type: ep._release_name = 'Show.Name.S02E03.HDTV.XviD-RLSGROUP' - - if multi != None: - ep._name = "Ep Name (1)" - - if anime_type != 3: + else: + ep._release_name = 'Show.Name.003.HDTV.XviD-RLSGROUP' ep.show.anime = 1 - ep._release_name = 'Show.Name.003-004.HDTV.XviD-RLSGROUP' - - secondEp = TVEpisode(2, 4, 4, "Ep Name (2)") - secondEp._status = Quality.compositeStatus(DOWNLOADED, Quality.HDTV) - secondEp._release_name = ep._release_name - - ep.relatedEps.append(secondEp) - else: + if None is not multi: + ep._name = 'Ep Name (1)' + second_ep = TVEpisode(2, 4, 4, 'Ep Name (2)') + second_ep._status = Quality.compositeStatus(DOWNLOADED, Quality.HDTV) + second_ep._release_name = ep._release_name + ep.relatedEps.append(second_ep) + if not anime or 3 == anime_type: ep._release_name = 'Show.Name.S02E03E04E05.HDTV.XviD-RLSGROUP' - secondEp = TVEpisode(2, 4, 4, "Ep Name (2)") - secondEp._status = Quality.compositeStatus(DOWNLOADED, Quality.HDTV) - secondEp._release_name = ep._release_name - - thirdEp = TVEpisode(2, 5, 5, "Ep Name (3)") - thirdEp._status = Quality.compositeStatus(DOWNLOADED, Quality.HDTV) - thirdEp._release_name = ep._release_name - - ep.relatedEps.append(secondEp) - ep.relatedEps.append(thirdEp) + third_ep = TVEpisode(2, 5, 5, 'Ep Name (3)') + third_ep._status = Quality.compositeStatus(DOWNLOADED, Quality.HDTV) + third_ep._release_name = ep._release_name + ep.relatedEps.append(third_ep) + else: + ep._release_name = 'Show.Name.003-004.HDTV.XviD-RLSGROUP' + ep.show.anime = 1 return ep @@ -270,4 +263,4 @@ def generate_sample_ep(multi=None, abd=False, sports=False, anime=False, anime_t def test_name(pattern, multi=None, abd=False, sports=False, anime=False, anime_type=None): ep = generate_sample_ep(multi, abd, sports, anime, anime_type) - return {'name': ep.formatted_filename(pattern, multi, anime_type), 'dir': ep.formatted_dir(pattern, multi)} \ No newline at end of file + return {'name': ep.formatted_filename(pattern, multi, anime_type), 'dir': ep.formatted_dir(pattern, multi)} diff --git a/sickbeard/providers/__init__.py b/sickbeard/providers/__init__.py index 51f31431..6e1eaad2 100755 --- a/sickbeard/providers/__init__.py +++ b/sickbeard/providers/__init__.py @@ -26,7 +26,7 @@ from sickbeard import logger from . import newznab, omgwtfnzbs, womble # torrent from . import alpharatio, beyondhd, bitmetv, bitsoup, btn, freshontv, funfile, gftracker, grabtheinfo, \ - hdbits, hdspace, iptorrents, kat, morethan, pisexy, pretome, rarbg, scc, scenetime, shazbat, speedcd, strike, \ + hdbits, hdspace, iptorrents, kat, morethan, pisexy, pretome, rarbg, scc, scenetime, shazbat, speedcd, \ thepiratebay, torrentbytes, torrentday, torrenting, torrentleech, torrentshack, transmithe_net, tvchaosuk # anime from . import nyaatorrents, tokyotoshokan @@ -54,7 +54,6 @@ __all__ = ['omgwtfnzbs', 'scenetime', 'shazbat', 'speedcd', - 'strike', 'thepiratebay', 'torrentbytes', 'torrentday', diff --git a/sickbeard/providers/strike.py b/sickbeard/providers/strike.py deleted file mode 100644 index 8b0ffa76..00000000 --- a/sickbeard/providers/strike.py +++ /dev/null @@ -1,84 +0,0 @@ -# coding=utf-8 -# -# This file is part of SickGear. -# -# SickGear is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# SickGear is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SickGear. If not, see . - -import re -from . import generic -from sickbeard import helpers -from sickbeard.helpers import tryInt - - -class StrikeProvider(generic.TorrentProvider): - - def __init__(self): - generic.TorrentProvider.__init__(self, 'Strike') - - self.url_base = 'https://getstrike.net/' - self.urls = {'config_provider_home_uri': self.url_base, - 'search': self.url_base + 'api/v2/torrents/search/?category=%s&phrase=%s'} - - self.url = self.urls['config_provider_home_uri'] - - self.minseed, self.minleech = 2 * [None] - - def _search_provider(self, search_params, **kwargs): - - results = [] - items = {'Cache': [], 'Season': [], 'Episode': [], 'Propers': []} - - for mode in search_params.keys(): - search_show = mode in ['Season', 'Episode'] - if not search_show and helpers.has_anime(): - search_params[mode] *= (1, 2)['Cache' == mode] - - for enum, search_string in enumerate(search_params[mode]): - search_url = self.urls['search'] % \ - (('tv', 'anime')[(search_show and bool(self.show and self.show.is_anime)) or bool(enum)], - (re.sub('[\.\s]+', ' ', search_string), 'x264')['Cache' == mode]) - - data_json = self.get_url(search_url, json=True) - - cnt = len(items[mode]) - try: - for item in data_json['torrents']: - seeders, leechers, title, download_magnet, size = [tryInt(n, n) for n in [item.get(x) for x in [ - 'seeds', 'leeches', 'torrent_title', 'magnet_uri', 'size']]] - if self._peers_fail(mode, seeders, leechers): - continue - - if title and download_magnet: - items[mode].append((title, download_magnet, seeders, self._bytesizer(size))) - - except Exception: - pass - self._log_search(mode, len(items[mode]) - cnt, search_url) - - self._sort_seeders(mode, items) - - results = list(set(results + items[mode])) - - return results - - def _season_strings(self, ep_obj, **kwargs): - - return generic.TorrentProvider._season_strings(self, ep_obj, scene=False) - - def _episode_strings(self, ep_obj, **kwargs): - - return generic.TorrentProvider._episode_strings(self, ep_obj, scene=False, **kwargs) - - -provider = StrikeProvider()