1
0
mirror of https://github.com/moparisthebest/SickRage synced 2024-08-13 16:53:54 -04:00

Fixes issues #333 and problems with converting str to int via prettyName func

This commit is contained in:
echel0n 2014-05-03 15:29:00 -07:00
parent c29b29a7e7
commit afde3b4c28
11 changed files with 165 additions and 131 deletions

View File

@ -176,7 +176,7 @@ a{
#header .wrapper { #header .wrapper {
margin: 0 auto; margin: 0 auto;
position: relative; position: relative;
width: 850px; width: 960px;
} }
#header a:hover { #header a:hover {
background: none; background: none;
@ -192,7 +192,7 @@ a{
float: left; float: left;
position: relative; position: relative;
top: 0px; top: 0px;
left: 5px; left: -5px;
} }
#versiontext { #versiontext {
color: #FFFFFF; color: #FFFFFF;
@ -201,7 +201,7 @@ a{
position: relative; position: relative;
/* text-transform: lowercase;*/ /* text-transform: lowercase;*/
top: 42px; top: 42px;
left: 5px; left: -5px
} }
.update { .update {
@ -1863,3 +1863,12 @@ pre {
height: 37px; height: 37px;
text-align: center; text-align: center;
} }
#donate_form{
position: absolute;
border: 5px solid gray;
padding: 10px;
background: white;
width: 270px;
height: 220px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
gui/slick/images/payza.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -19,9 +19,6 @@
<b>Backlog</b>: $sbdatetime.sbdatetime.sbfdate($sickbeard.backlogSearchScheduler.nextRun()) <b>Backlog</b>: $sbdatetime.sbdatetime.sbfdate($sickbeard.backlogSearchScheduler.nextRun())
</div> </div>
<ul style="float:right;"> <ul style="float:right;">
<li>
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&amp;business=elmarkou%40gmail%2ecom&amp;lc=NL&amp;item_name=I%20Like%20to%20donate%20because%20I%20like%20this%20Sick-Beard%20Interface&amp;no_note=0&amp;currency_code=EUR&amp;bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHostedGuest" target="_blank"><img src="$sbRoot/images/like.png"> I like this interface!</a>
</li>
<li><a href="$sbRoot/manage/manageSearches/forceVersionCheck"><img src="$sbRoot/images/menu/update16.png" alt="" width="16" height="16" />Force Version Check</a></li> <li><a href="$sbRoot/manage/manageSearches/forceVersionCheck"><img src="$sbRoot/images/menu/update16.png" alt="" width="16" height="16" />Force Version Check</a></li>
<li><a href="$sbRoot/home/restart/?pid=$sbPID" class="confirm"><img src="$sbRoot/images/menu/restart16.png" alt="" width="16" height="16" />Restart</a></li> <li><a href="$sbRoot/home/restart/?pid=$sbPID" class="confirm"><img src="$sbRoot/images/menu/restart16.png" alt="" width="16" height="16" />Restart</a></li>
<li><a href="$sbRoot/home/shutdown/?pid=$sbPID" class="confirm"><img src="$sbRoot/images/menu/shutdown16.png" alt="" width="16" height="16" />Shutdown</a></li> <li><a href="$sbRoot/home/shutdown/?pid=$sbPID" class="confirm"><img src="$sbRoot/images/menu/shutdown16.png" alt="" width="16" height="16" />Shutdown</a></li>

View File

@ -156,7 +156,6 @@ a > i.icon-question-sign { background-image: url("$sbRoot/images/glyphicons-half
\$("#SubMenu a[href$='/home/updateXBMC/']").addClass('btn').html('<span class="ui-icon ui-icon-refresh pull-left"></span> Update XBMC'); \$("#SubMenu a[href$='/home/updateXBMC/']").addClass('btn').html('<span class="ui-icon ui-icon-refresh pull-left"></span> Update XBMC');
} }
\$(document).ready(function(){ \$(document).ready(function(){
initActions(); initActions();
\$("ul.sf-menu").supersubs({ \$("ul.sf-menu").supersubs({
minWidth: 12, // minimum width of sub-menus in em units minWidth: 12, // minimum width of sub-menus in em units
@ -199,10 +198,7 @@ a > i.icon-question-sign { background-image: url("$sbRoot/images/glyphicons-half
location.href = target; location.href = target;
return false; return false;
}); });
}); });
//--> //-->
</script> </script>
</head> </head>
@ -266,6 +262,7 @@ a > i.icon-question-sign { background-image: url("$sbRoot/images/glyphicons-half
<li><a href="$sbRoot/config/notifications/"><img src="$sbRoot/images/menu/config16.png" alt="" width="16" height="16" />Notifications</a></li> <li><a href="$sbRoot/config/notifications/"><img src="$sbRoot/images/menu/config16.png" alt="" width="16" height="16" />Notifications</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>

View File

@ -1,89 +1,93 @@
function initHeader() { function initHeader() {
//settings //settings
var header = $("#header"); var header = $("#header");
var fadeSpeed = 100, fadeTo = 0.8, topDistance = 20; var fadeSpeed = 100, fadeTo = 0.8, topDistance = 20;
var topbarME = function() { $(header).fadeTo(fadeSpeed,1); }, topbarML = function() { $(header).fadeTo(fadeSpeed,fadeTo); }; var topbarME = function () {
var inside = false; $(header).fadeTo(fadeSpeed, 1);
//do }, topbarML = function () {
$(window).scroll(function() { $(header).fadeTo(fadeSpeed, fadeTo);
position = $(window).scrollTop(); };
if(position > topDistance && !inside) { var inside = false;
//add events //do
topbarML(); $(window).scroll(function () {
$(header).bind('mouseenter',topbarME); position = $(window).scrollTop();
$(header).bind('mouseleave',topbarML); if (position > topDistance && !inside) {
inside = true; //add events
} topbarML();
else if (position < topDistance){ $(header).bind('mouseenter', topbarME);
topbarME(); $(header).bind('mouseleave', topbarML);
$(header).unbind('mouseenter',topbarME); inside = true;
$(header).unbind('mouseleave',topbarML); }
inside = false; else if (position < topDistance) {
} topbarME();
}); $(header).unbind('mouseenter', topbarME);
$(header).unbind('mouseleave', topbarML);
inside = false;
}
});
} }
function showMsg(msg,loader,timeout,ms) { function showMsg(msg, loader, timeout, ms) {
var feedback = $("#ajaxMsg"); var feedback = $("#ajaxMsg");
update = $("#updatebar"); update = $("#updatebar");
if ( update.is(":visible") ) { if (update.is(":visible")) {
var height = update.height() + 35; var height = update.height() + 35;
feedback.css("bottom",height + "px"); feedback.css("bottom", height + "px");
} else { } else {
feedback.removeAttr("style"); feedback.removeAttr("style");
} }
feedback.fadeIn(); feedback.fadeIn();
var message = $("<div class='msg'>" + msg + "</div>"); var message = $("<div class='msg'>" + msg + "</div>");
if (loader) { if (loader) {
var message = $("<div class='msg'><img src='interfaces/default/images/loader_black.gif' alt='loading' class='loader' style='position: relative;top:10px;margin-top:-15px; margin-left:-10px;'/>" + msg + "</div>"); var message = $("<div class='msg'><img src='interfaces/default/images/loader_black.gif' alt='loading' class='loader' style='position: relative;top:10px;margin-top:-15px; margin-left:-10px;'/>" + msg + "</div>");
feedback.css("padding","14px 10px") feedback.css("padding", "14px 10px")
} }
$(feedback).prepend(message); $(feedback).prepend(message);
if (timeout) { if (timeout) {
setTimeout(function(){ setTimeout(function () {
message.fadeOut(function(){ message.fadeOut(function () {
$(this).remove(); $(this).remove();
feedback.fadeOut(); feedback.fadeOut();
}); });
},ms); }, ms);
} }
} }
function resetFilters(text){ function resetFilters(text) {
if ( $(".dataTables_filter").length > 0 ) { if ($(".dataTables_filter").length > 0) {
$(".dataTables_filter input").attr("placeholder","filter " + text + ""); $(".dataTables_filter input").attr("placeholder", "filter " + text + "");
} }
} }
function preventDefault(){ function preventDefault() {
$("a[href='#']").live('click', function(){ $("a[href='#']").live('click', function () {
return false; return false;
}); });
} }
function initFancybox() { function initFancybox() {
if ( $("a[rel=dialog]").length > 0 ) { if ($("a[rel=dialog]").length > 0) {
$.getScript(sbRoot + '/js/fancybox/jquery.fancybox-1.3.4.js', function() { $.getScript(sbRoot + '/js/fancybox/jquery.fancybox-1.3.4.js', function () {
$("head").append("<link rel='stylesheet' href='" + sbRoot + "/js/fancybox/jquery.fancybox-1.3.4.css'>"); $("head").append("<link rel='stylesheet' href='" + sbRoot + "/js/fancybox/jquery.fancybox-1.3.4.css'>");
$("a[rel=dialog]").fancybox({ $("a[rel=dialog]").fancybox({
type: "image" type: "image"
}); });
}); });
} }
} }
function initTabs() { function initTabs() {
$("#config-components").tabs({ $("#config-components").tabs({
activate: function(event, ui) { activate: function (event, ui) {
var lastOpenedPanel = $(this).data("lastOpenedPanel"); var lastOpenedPanel = $(this).data("lastOpenedPanel");
var selected = $(this).tabs('option', 'selected'); var selected = $(this).tabs('option', 'selected');
if (lastOpenedPanel) { if (lastOpenedPanel) {
} else { } else {
lastOpenedPanel = $(ui.oldPanel) lastOpenedPanel = $(ui.oldPanel)
} }
if (!$(this).data("topPositionTab")) { if (!$(this).data("topPositionTab")) {
@ -104,9 +108,9 @@ function initTabs() {
.toggleClass("ui-tabs-hide") .toggleClass("ui-tabs-hide")
.css("position", "absolute") .css("position", "absolute")
.css("top", $(this).data("topPositionTab") + "px") .css("top", $(this).data("topPositionTab") + "px")
.fadeOut(700, function() { .fadeOut(700, function () {
$(this) $(this)
.css("position", ""); .css("position", "");
}); });
} }
@ -119,13 +123,41 @@ function initTabs() {
}); });
} }
function init() { function initDonateBox() {
initHeader(); //open popup
preventDefault(); $("#donate").click(function () {
initFancybox(); $("#donate_form").fadeIn(1000);
initTabs(); positionPopup();
});
//close popup
$("#close").click(function () {
$("#donate_form").fadeOut(500);
});
} }
$(document).ready(function(){ //position the popup at the center of the page
init(); function positionPopup() {
}); if (!$("#donate_form").is(':visible')) {
return;
}
$("#donate_form").css({
left: ($(window).width() - $('#donate_form').width()) / 2,
top: ($(window).width() - $('#donate_form').width()) / 4,
position: 'absolute'
});
}
//maintain the popup at center of the page when browser resized
$(window).bind('resize', positionPopup);
function init() {
initHeader();
preventDefault();
initFancybox();
initTabs();
initDonateBox();
}
$(document).ready(function () {
init();
});

View File

@ -987,6 +987,9 @@ def initialize(consoleLogging=True):
newznabProviderList = providers.getNewznabProviderList(NEWZNAB_DATA) newznabProviderList = providers.getNewznabProviderList(NEWZNAB_DATA)
providerList = providers.makeProviderList() providerList = providers.makeProviderList()
# fix scene numbering in mainDB
scene_numbering.fix_scene_numbering()
# initialize newznab providers # initialize newznab providers
currentSearchScheduler = scheduler.Scheduler(searchCurrent.CurrentSearcher(), currentSearchScheduler = scheduler.Scheduler(searchCurrent.CurrentSearcher(),
cycleTime=datetime.timedelta(minutes=SEARCH_FREQUENCY), cycleTime=datetime.timedelta(minutes=SEARCH_FREQUENCY),

View File

@ -35,7 +35,6 @@ class MainSanityCheck(db.DBSanityCheck):
self.fix_duplicate_shows() self.fix_duplicate_shows()
self.fix_duplicate_episodes() self.fix_duplicate_episodes()
self.fix_orphan_episodes() self.fix_orphan_episodes()
self.fix_scene_numbering()
def fix_duplicate_shows(self): def fix_duplicate_shows(self):
@ -124,35 +123,6 @@ class MainSanityCheck(db.DBSanityCheck):
logger.log(u"Missing idx_sta_epi_sta_air for TV Episodes table detected!, fixing...") logger.log(u"Missing idx_sta_epi_sta_air for TV Episodes table detected!, fixing...")
self.connection.action("CREATE INDEX idx_sta_epi_sta_air ON tv_episodes (season,episode, status, airdate)") self.connection.action("CREATE INDEX idx_sta_epi_sta_air ON tv_episodes (season,episode, status, airdate)")
def fix_scene_numbering(self):
ql = []
sqlResults = self.connection.select(
"SELECT showid, indexerid, indexer, episode_id, season, episode FROM tv_episodes WHERE scene_season = -1 OR scene_episode = -1")
for epResult in sqlResults:
indexerid = int(str(epResult["showid"]).encode('UTF-8'))
indexer = int(str(epResult["indexer"]).encode('UTF-8'))
season = int(str(epResult["season"]).encode('UTF-8'))
episode = int(str(epResult["episode"]).encode('UTF-8'))
logger.log(
u"Repairing any scene numbering issues for showid: " + str(epResult["showid"]) + u" season: " + str(
epResult["season"]) + u" episode: " + str(epResult["episode"]), logger.DEBUG)
scene_season, scene_episode = sickbeard.scene_numbering.get_scene_numbering(indexerid,
indexer,
season,
episode)
ql.append(["UPDATE tv_episodes SET scene_season = ? WHERE indexerid = ?", [scene_season, epResult["indexerid"]]])
ql.append(
["UPDATE tv_episodes SET scene_episode = ? WHERE indexerid = ?", [scene_episode, epResult["indexerid"]]])
self.connection.mass_action(ql)
def backupDatabase(version): def backupDatabase(version):
logger.log(u"Backing up database before upgrade") logger.log(u"Backing up database before upgrade")
if not helpers.backupVersionedFile(db.dbFilename(), version): if not helpers.backupVersionedFile(db.dbFilename(), version):

View File

@ -360,4 +360,36 @@ def get_xem_numbering_for_season(indexer_id, indexer, season):
else: else:
result.setdefault(int(season), []).append(int(season)) result.setdefault(int(season), []).append(int(season))
return result return result
def fix_scene_numbering():
ql = []
myDB = db.DBConnection()
sqlResults = myDB.select(
"SELECT showid, indexerid, indexer, episode_id, season, episode FROM tv_episodes WHERE scene_season = -1 OR scene_episode = -1")
for epResult in sqlResults:
indexerid = int(epResult["showid"])
indexer = int(epResult["indexer"])
season = int(epResult["season"])
episode = int(epResult["episode"])
logger.log(
u"Repairing any scene numbering issues for showid: " + str(epResult["showid"]) + u" season: " + str(
epResult["season"]) + u" episode: " + str(epResult["episode"]), logger.DEBUG)
scene_season, scene_episode = sickbeard.scene_numbering.get_scene_numbering(indexerid,
indexer,
season,
episode)
ql.append(
["UPDATE tv_episodes SET scene_season = ? WHERE indexerid = ?", [scene_season, epResult["indexerid"]]])
ql.append(
["UPDATE tv_episodes SET scene_episode = ? WHERE indexerid = ?", [scene_episode, epResult["indexerid"]]])
myDB.mass_action(ql)

View File

@ -52,12 +52,6 @@ def filterBadReleases(name):
logger.log(u"Unable to parse the filename " + name + " into a valid episode", logger.WARNING) logger.log(u"Unable to parse the filename " + name + " into a valid episode", logger.WARNING)
return False return False
# if we can't find the show then there's nothing we can really do
if not parse_result.show:
logger.log(u"This show isn't in your list, skipping ...",
logger.DEBUG)
return False
# if any of the bad strings are in the name then say no # if any of the bad strings are in the name then say no
if sickbeard.IGNORE_WORDS: if sickbeard.IGNORE_WORDS:
resultFilters.extend(sickbeard.IGNORE_WORDS.split(',')) resultFilters.extend(sickbeard.IGNORE_WORDS.split(','))

View File

@ -1778,7 +1778,7 @@ class TVEpisode(object):
Returns: A string representing the episode's name and season/ep numbers Returns: A string representing the episode's name and season/ep numbers
""" """
return self._format_pattern('%SN - %XMSx%0XME - %EN') return self._format_pattern('%SN - %XSx%0XE - %EN')
def _ep_name(self): def _ep_name(self):
""" """
@ -1876,13 +1876,13 @@ class TVEpisode(object):
'%Q.N': dot(Quality.qualityStrings[epQual]), '%Q.N': dot(Quality.qualityStrings[epQual]),
'%Q_N': us(Quality.qualityStrings[epQual]), '%Q_N': us(Quality.qualityStrings[epQual]),
'%S': str(self.season), '%S': str(self.season),
'%0S': '%02d' % self.season, '%0S': '%02d' % int(self.season),
'%E': str(self.episode), '%E': str(self.episode),
'%0E': '%02d' % self.episode, '%0E': '%02d' % int(self.episode),
'%XMS': str(self.scene_season), '%XS': str(self.scene_season),
'%0XMS': '%02d' % self.scene_season, '%0XS': '%02d' % int(self.scene_season),
'%XME': str(self.scene_episode), '%XE': str(self.scene_episode),
'%0XME': '%02d' % self.scene_episode, '%0XE': '%02d' % int(self.scene_episode),
'%RN': release_name(self.release_name), '%RN': release_name(self.release_name),
'%RG': release_group(self.release_name), '%RG': release_group(self.release_name),
'%AD': str(self.airdate).replace('-', ' '), '%AD': str(self.airdate).replace('-', ' '),