Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'master' of github.com:midgetspy/Sick-Beard into windows…

…_binaries

Conflicts:
	SickBeard.py
  • Loading branch information...
commit 631f576d959bd27e204e6bc3461f93cd68548ad0 2 parents eeea129 + 2d3b41e
@midgetspy authored
Showing with 3,179 additions and 1,041 deletions.
  1. +33 −8 SickBeard.py
  2. +1 −1  autoProcessTV/hellaToSickBeard.py
  3. +2 −2 autoProcessTV/sabToSickBeard.py
  4. +3 −2 data/css/config.css
  5. +6 −2 data/css/default.css
  6. BIN  data/css/smooth-grinder/images/ui-bg_glass_55_fbf9ee_1x400.png
  7. BIN  data/css/smooth-grinder/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png
  8. BIN  data/css/smooth-grinder/images/ui-bg_highlight-soft_75_efefef_1x100.png
  9. BIN  data/css/smooth-grinder/images/ui-bg_inset-soft_75_dfdfdf_1x100.png
  10. BIN  data/css/smooth-grinder/images/ui-icons_8c291d_256x240.png
  11. +12 −12 data/css/smooth-grinder/{jquery-ui-1.8.10.custom.css → jquery-ui-1.8.11.custom.css}
  12. BIN  data/images/notifiers/growl.gif
  13. BIN  data/images/notifiers/libnotify.gif
  14. BIN  data/images/notifiers/nmj.gif
  15. BIN  data/images/notifiers/notifo.gif
  16. BIN  data/images/notifiers/plex.gif
  17. BIN  data/images/notifiers/prowl.gif
  18. BIN  data/images/notifiers/twitter.gif
  19. BIN  data/images/notifiers/xbmc.gif
  20. BIN  data/images/providers/tvtorrents.gif
  21. +0 −239 data/interfaces/default/config_general.tmpl
  22. +174 −11 data/interfaces/default/config_notifications.tmpl
  23. +302 −0 data/interfaces/default/config_postProcessing.tmpl
  24. +50 −17 data/interfaces/default/config_providers.tmpl
  25. +74 −95 data/interfaces/default/{config_episodedownloads.tmpl → config_search.tmpl}
  26. +20 −12 data/interfaces/default/displayShow.tmpl
  27. +3 −5 data/interfaces/default/editShow.tmpl
  28. +0 −1  data/interfaces/default/history.tmpl
  29. +1 −1  data/interfaces/default/home_addShows.tmpl
  30. +5 −4 data/interfaces/default/inc_top.tmpl
  31. +1 −0  data/interfaces/default/manage_manageSearches.tmpl
  32. +17 −0 data/interfaces/default/restart.tmpl
  33. +33 −0 data/interfaces/default/restart_bare.tmpl
  34. +1 −1  data/interfaces/default/viewlogs.tmpl
  35. +13 −0 data/js/config.js
  36. +65 −25 data/js/configNotifications.js
  37. +2 −2 data/js/{configGeneral.js → configPostProcessing.js}
  38. +4 −4 data/js/configProviders.js
  39. +27 −0 data/js/configSearch.js
  40. +8 −7 data/js/displayShow.js
  41. +143 −143 data/js/{jquery-ui-1.8.10.custom.min.js → jquery-ui-1.8.11.custom.min.js}
  42. +59 −0 data/js/restart.js
  43. +4 −4 data/js/rootDirs.js
  44. +86 −0 init.fedora
  45. +12 −5 initscript → init.ubuntu
  46. +3 −1 lib/httplib2/__init__.py
  47. +42 −41 lib/tvdb_api/tvdb_api.py
  48. +114 −16 sickbeard/__init__.py
  49. +18 −0 sickbeard/browser.py
  50. +54 −1 sickbeard/classes.py
  51. +3 −58 sickbeard/common.py
  52. +19 −1 sickbeard/databases/__init__.py
  53. +51 −0 sickbeard/databases/cache_db.py
  54. +74 −2 sickbeard/databases/mainDB.py
  55. +18 −0 sickbeard/encodingKludge.py
  56. +62 −10 sickbeard/helpers.py
  57. +18 −0 sickbeard/history.py
  58. +65 −0 sickbeard/image_cache.py
  59. +18 −0 sickbeard/metadata/__init__.py
  60. +67 −0 sickbeard/name_cache.py
  61. +6 −1 sickbeard/name_parser/parser.py
  62. +27 −20 sickbeard/notifiers/__init__.py
  63. +18 −0 sickbeard/notifiers/growl.py
  64. +18 −0 sickbeard/notifiers/libnotify.py
  65. +142 −0 sickbeard/notifiers/nmj.py
  66. +24 −7 sickbeard/notifiers/notifo.py
  67. +85 −0 sickbeard/notifiers/plex.py
  68. +18 −0 sickbeard/notifiers/prowl.py
  69. +18 −0 sickbeard/notifiers/tweet.py
  70. +24 −7 sickbeard/notifiers/xbmc.py
  71. +18 −0 sickbeard/nzbSplitter.py
  72. +89 −0 sickbeard/nzbget.py
  73. +15 −13 sickbeard/postProcessor.py
  74. +3 −3 sickbeard/properFinder.py
  75. +19 −0 sickbeard/providers/__init__.py
  76. +24 −5 sickbeard/providers/ezrss.py
  77. +28 −5 sickbeard/providers/generic.py
  78. +5 −5 sickbeard/providers/newzbin.py
  79. +6 −5 sickbeard/providers/newznab.py
  80. +3 −3 sickbeard/providers/nzbmatrix.py
  81. +3 −3 sickbeard/providers/nzbs_org.py
  82. +91 −0 sickbeard/providers/tvtorrents.py
  83. +96 −0 sickbeard/scene_exceptions.py
  84. +18 −0 sickbeard/scheduler.py
  85. +39 −7 sickbeard/search.py
  86. +3 −3 sickbeard/searchBacklog.py
  87. +1 −1  sickbeard/search_queue.py
  88. +18 −0 sickbeard/showUpdater.py
  89. +60 −46 sickbeard/{sceneHelpers.py → show_name_helpers.py}
  90. +24 −2 sickbeard/show_queue.py
  91. +4 −7 sickbeard/tv.py
  92. +56 −16 sickbeard/tvcache.py
  93. +22 −1 sickbeard/versionChecker.py
  94. +305 −139 sickbeard/webserve.py
  95. +18 −0 sickbeard/webserveInit.py
  96. +44 −9 tests/scene_helpers_tests.py
View
41 SickBeard.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
# Author: Nic Wolfe <nic@wolfeden.ca>
# URL: http://code.google.com/p/sickbeard/
#
@@ -93,6 +93,11 @@ def daemonize():
dev_null = file('/dev/null', 'r')
os.dup2(dev_null.fileno(), sys.stdin.fileno())
+ if sickbeard.CREATEPID:
+ pid = str(os.getpid())
+ logger.log(u"Writing PID " + pid + " to " + str(sickbeard.PIDFILE))
+ file(sickbeard.PIDFILE, 'w').write("%s\n" % pid)
+
def main():
# do some preliminary stuff
@@ -100,6 +105,7 @@ def main():
sickbeard.MY_NAME = os.path.basename(sickbeard.MY_FULLNAME)
sickbeard.PROG_DIR = os.path.dirname(sickbeard.MY_FULLNAME)
sickbeard.MY_ARGS = sys.argv[1:]
+ sickbeard.CREATEPID = False
try:
locale.setlocale(locale.LC_ALL, "")
@@ -120,9 +126,9 @@ def main():
threading.currentThread().name = "MAIN"
try:
- opts, args = getopt.getopt(sys.argv[1:], "qfdp:", ['quiet', 'forceupdate', 'daemon', 'port=', 'tvbinz'])
+ opts, args = getopt.getopt(sys.argv[1:], "qfdp::", ['quiet', 'forceupdate', 'daemon', 'port=', 'tvbinz', 'pidfile='])
except getopt.GetoptError:
- print "Available options: --quiet, --forceupdate, --port, --daemon"
+ print "Available options: --quiet, --forceupdate, --port, --daemon --pidfile"
sys.exit()
forceUpdate = False
@@ -130,28 +136,47 @@ def main():
for o, a in opts:
# for now we'll just silence the logging
- if (o in ('-q', '--quiet')):
+ if o in ('-q', '--quiet'):
consoleLogging = False
# for now we'll just silence the logging
- if (o in ('--tvbinz')):
+ if o in ('--tvbinz'):
sickbeard.SHOW_TVBINZ = True
# should we update right away?
- if (o in ('-f', '--forceupdate')):
+ if o in ('-f', '--forceupdate'):
forceUpdate = True
# use a different port
- if (o in ('-p', '--port')):
+ if o in ('-p', '--port'):
forcedPort = int(a)
# Run as a daemon
- if (o in ('-d', '--daemon')):
+ if o in ('-d', '--daemon'):
if sys.platform == 'win32':
print "Daemonize not supported under Windows, starting normally"
else:
consoleLogging = False
sickbeard.DAEMON = True
+ # write a pidfile if requested
+ if o in ('--pidfile'):
+ sickbeard.PIDFILE = str(a)
+
+ # if the pidfile already exists, sickbeard may still be running, so exit
+ if os.path.exists(sickbeard.PIDFILE):
+ sys.exit("PID file " + sickbeard.PIDFILE + " already exists. Exiting.")
+
+ # a pidfile is only useful in daemon mode
+ # also, test to make sure we can write the file properly
+ if sickbeard.DAEMON:
+ sickbeard.CREATEPID = True
+ try:
+ file(sickbeard.PIDFILE, 'w').write("pid\n")
+ except IOError, e:
+ raise SystemExit("Unable to write PID file: %s [%d]" % (e.strerror, e.errno))
+ else:
+ logger.log(u"Not running in daemon mode. PID file creation disabled.")
+
if consoleLogging:
print "Starting up Sick Beard "+SICKBEARD_VERSION+" from " + sickbeard.CONFIG_FILE
View
2  autoProcessTV/hellaToSickBeard.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
# Author: Nic Wolfe <nic@wolfeden.ca>
# URL: http://code.google.com/p/sickbeard/
View
4 autoProcessTV/sabToSickBeard.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
# Author: Nic Wolfe <nic@wolfeden.ca>
# URL: http://code.google.com/p/sickbeard/
@@ -28,4 +28,4 @@
elif len(sys.argv) >= 3:
autoProcessTV.processEpisode(sys.argv[1], sys.argv[2])
else:
- autoProcessTV.processEpisode(sys.argv[1])
+ autoProcessTV.processEpisode(sys.argv[1])
View
5 data/css/config.css
@@ -1,7 +1,8 @@
#config{text-align:center;padding:0 30px 20px;}
#config *{font-family:"Trebuchet MS", Verdana, sans-serif;margin:0;padding:0;}
-#config .imgLink img {padding-bottom:1px;}
-#config ul{list-style-type:none;}
+#config h3 a {text-decoration: none;}
+#config h3 img {vertical-align: baseline; padding-right: 5px;}
+#config ul{list-style-type:none;padding-left: 20px;}
#config h3{font-size:1.5em;color:#000;}
#config h4{font-size:1em;color:#333;text-transform:uppercase;margin:0 0 .2em;}
#config h5{font-size:1em;color:#000;margin:0 0 .2em;}
View
8 data/css/default.css
@@ -85,9 +85,13 @@ font-weight:700;
}
.h2footer {
-margin-top:-33px;
-margin-right:5px;
+margin: -33px 5px 6px 0px;
}
+.h2footer select {
+margin-top: -6px;
+margin-bottom: -6px;
+}
+
.h2footer span {
padding:2px;
}
View
BIN  data/css/smooth-grinder/images/ui-bg_glass_55_fbf9ee_1x400.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/css/smooth-grinder/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/css/smooth-grinder/images/ui-bg_highlight-soft_75_efefef_1x100.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/css/smooth-grinder/images/ui-bg_inset-soft_75_dfdfdf_1x100.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/css/smooth-grinder/images/ui-icons_8c291d_256x240.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
24 data/css/smooth-grinder/jquery-ui-1.8.10.custom.css → data/css/smooth-grinder/jquery-ui-1.8.11.custom.css
@@ -1,5 +1,5 @@
/*
- * jQuery UI CSS Framework 1.8.10
+ * jQuery UI CSS Framework 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -42,7 +42,7 @@
/*
- * jQuery UI CSS Framework 1.8.10
+ * jQuery UI CSS Framework 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -50,7 +50,7 @@
*
* http://docs.jquery.com/UI/Theming/API
*
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ffDefault=Verdana,Arial,sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=ffffff&bgTextureHeader=01_flat.png&bgImgOpacityHeader=0&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=dcdcdc&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=efefef&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=75&borderColorDefault=aaaaaa&fcDefault=222222&iconColorDefault=8c291d&bgColorHover=dddddd&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=222222&iconColorHover=222222&bgColorActive=dfdfdf&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=75&borderColorActive=aaaaaa&fcActive=140f06&iconColorActive=8c291d&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=aaaaaa&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=aaaaaa&fcError=8c291d&iconColorError=cd0a0a&bgColorOverlay=6e4f1c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=35&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=35&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ctl=themeroller&ffDefault=Verdana,Arial,sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=ffffff&bgTextureHeader=01_flat.png&bgImgOpacityHeader=0&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=dcdcdc&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=efefef&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=75&borderColorDefault=aaaaaa&fcDefault=222222&iconColorDefault=8c291d&bgColorHover=dddddd&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=222222&iconColorHover=222222&bgColorActive=dfdfdf&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=75&borderColorActive=aaaaaa&fcActive=140f06&iconColorActive=8c291d&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=aaaaaa&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=aaaaaa&fcError=8c291d&iconColorError=cd0a0a&bgColorOverlay=6e4f1c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=35&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=35&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
*/
@@ -298,7 +298,7 @@
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000 url(images/ui-bg_flat_0_000000_40x100.png) 50% 50% repeat-x; opacity: .35;filter:Alpha(Opacity=35); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
*/
/*
- * jQuery UI Resizable 1.8.10
+ * jQuery UI Resizable 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -317,7 +317,7 @@
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
- * jQuery UI Selectable 1.8.10
+ * jQuery UI Selectable 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -327,7 +327,7 @@
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
- * jQuery UI Accordion 1.8.10
+ * jQuery UI Accordion 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -346,7 +346,7 @@
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }
/*
- * jQuery UI Button 1.8.10
+ * jQuery UI Button 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -384,7 +384,7 @@ input.ui-button { padding: .4em 1em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
- * jQuery UI Dialog 1.8.10
+ * jQuery UI Dialog 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -405,7 +405,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
- * jQuery UI Slider 1.8.10
+ * jQuery UI Slider 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -429,7 +429,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }
/*
- * jQuery UI Tabs 1.8.10
+ * jQuery UI Tabs 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -447,7 +447,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
- * jQuery UI Datepicker 1.8.10
+ * jQuery UI Datepicker 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
@@ -514,7 +514,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
width: 200px; /*must have*/
height: 200px; /*must have*/
}/*
- * jQuery UI Progressbar 1.8.10
+ * jQuery UI Progressbar 1.8.11
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
View
BIN  data/images/notifiers/growl.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/images/notifiers/libnotify.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/images/notifiers/nmj.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/images/notifiers/notifo.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/images/notifiers/plex.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/images/notifiers/prowl.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/images/notifiers/twitter.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/images/notifiers/xbmc.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  data/images/providers/tvtorrents.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
239 data/interfaces/default/config_general.tmpl
@@ -12,51 +12,6 @@
#set global $topmenu="config"#
#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_top.tmpl")
-<script type="text/javascript">
-<!--
-nameTestURL = "$sbRoot/config/general/testNaming";
-//-->
-</script>
-<script type="text/javascript" src="$sbRoot/js/configGeneral.js"></script>
-#set $anyQualities, $bestQualities = $Quality.splitQuality($sickbeard.QUALITY_DEFAULT)
-<script type="text/javascript" charset="utf-8">
-<!--
-\$(document).ready(function(){
-
- if (#if $sickbeard.QUALITY_DEFAULT in $qualityPresets then "1" else "0"#) {
- \$('#customQuality').hide();
- }
-
- \$.fn.setFromPresets = function(preset) {
- if (preset == 0) {
- \$('#customQuality').show();
- return
- } else
- \$('#customQuality').hide();
-
- \$('#anyQualities option').each(function(i) {
- var result = preset & \$(this).val()
- if (result > 0) \$(this).attr('selected', 'selected');
- else \$(this).attr('selected', false);
- });
-
- \$('#bestQualities option').each(function(i) {
- var result = preset & (\$(this).val() << 16)
- if (result > 0) \$(this).attr('selected', 'selected');
- else \$(this).attr('selected', false);
- });
-
- return
- }
-
- \$('#qualityPreset').change(function(){
- \$(this).setFromPresets(\$('#qualityPreset :selected').val());
- });
-
-});
-//-->
-</script>
-
<div id="config">
<div id="config-content">
<h5>All non-absolute folder locations are relative to " <span class="path">$sickbeard.PROG_DIR</span> "</h5>
@@ -105,73 +60,6 @@ nameTestURL = "$sbRoot/config/general/testNaming";
</fieldset>
</div><!-- /component-group1 //-->
- <div id="core-component-group2" class="component-group clearfix">
-
- <div class="component-group-desc">
- <h3>Metadata</h3>
- <p>The data associated to the data. These are files associated to a TV show in the form of images and text that, when supported, will enhance the viewing experience.</p>
- </div>
-
- <fieldset class="component-group-list">
- <div class="field-pair">
- <label class="clearfix">
- <span class="component-title jumbo">Metadata Type:</span>
- <span class="component-desc">
- #set $m_dict = $metadata.get_metadata_generator_dict()
- <select id="metadataType">
- #for ($cur_name, $cur_generator) in $m_dict.items():
- <option value="$GenericMetadata.makeID($cur_name)">$cur_name</option>
- #end for
- </select>
- </span>
- </label>
- <span>Toggle the metadata options that you wish to be created. <b>Multiple targets may be used.</b></span>
- </div>
-
- <div id="metadataLegend">
- <div style="width: 190px; float: left;">Create:</div>
- <div style="width: 260px; float: left;">Results:</div>
- </div>
- <div class="clearfix"></div>
-
-#for ($cur_name, $cur_generator) in $m_dict.items():
-#set $cur_metadata_inst = $sickbeard.metadata_provider_dict[$cur_generator.name]
-#set $cur_id = $GenericMetadata.makeID($cur_name)
-<div class="metadataDiv" id="$cur_id">
- <div class="metadata_options">
- <label for="${cur_id}_show_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_show_metadata" #if $cur_metadata_inst.show_metadata then "checked=\"checked\"" else ""#/>&nbsp;Show Metadata</label>
- <label for="${cur_id}_episode_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_episode_metadata" #if $cur_metadata_inst.episode_metadata then "checked=\"checked\"" else ""#/>&nbsp;Episode Metadata</label>
- <label for="${cur_id}_fanart"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_fanart" #if $cur_metadata_inst.fanart then "checked=\"checked\"" else ""#/>&nbsp;Show Fanart Image</label>
- <label for="${cur_id}_poster"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_poster" #if $cur_metadata_inst.poster then "checked=\"checked\"" else ""#/>&nbsp;Show Folder Image</label>
- <label for="${cur_id}_episode_thumbnails"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_episode_thumbnails" #if $cur_metadata_inst.episode_thumbnails then "checked=\"checked\"" else ""#/>&nbsp;Episode Thumbnail</label>
- <label for="${cur_id}_season_thumbnails"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_season_thumbnails" #if $cur_metadata_inst.season_thumbnails then "checked=\"checked\"" else ""#/>&nbsp;Season Thumbnail</label>
- </div>
- <div class="metadata_example">
- <label for="${cur_id}_show_metadata"><span id="${cur_id}_eg_show_metadata">$cur_metadata_inst.eg_show_metadata</span></label>
- <label for="${cur_id}_episode_metadata"><span id="${cur_id}_eg_episode_metadata">$cur_metadata_inst.eg_episode_metadata</span></label>
- <label for="${cur_id}_fanart"><span id="${cur_id}_eg_fanart">$cur_metadata_inst.eg_fanart</span></label>
- <label for="${cur_id}_poster"><span id="${cur_id}_eg_poster">$cur_metadata_inst.eg_poster</span></label>
- <label for="${cur_id}_episode_thumbnails"><span id="${cur_id}_eg_episode_thumbnails">$cur_metadata_inst.eg_episode_thumbnails</span></label>
- <label for="${cur_id}_season_thumbnails"><span id="${cur_id}_eg_season_thumbnails">$cur_metadata_inst.eg_season_thumbnails</span></label>
- </div>
- <input type="hidden" name="${cur_id}_data" id="${cur_id}_data" value="$cur_metadata_inst.get_config()" />
-</div>
-#end for
-
- <div class="clearfix" style="clear:left;"></div>
-
- <div class="field-pair clearfix">
- <input type="checkbox" name="use_banner" id="use_banner" #if $sickbeard.USE_BANNER then "checked=checked" else ""#/>
- <label class="clearfix" for="use_banner">
- <span class="component-title">Use Banners</span>
- <span class="component-desc">Use banners instead of posters for your Show Folder Images</span>
- </label>
- </div>
-
- <input type="submit" value="Save Changes" /><br/>
-
- </fieldset>
- </div><!-- /component-group2 //-->
<div id="core-component-group3" class="component-group clearfix">
@@ -235,133 +123,6 @@ nameTestURL = "$sbRoot/config/general/testNaming";
</fieldset>
</div><!-- /component-group3 //-->
- <div id="core-component-group4" class="component-group clearfix">
-
- <div class="component-group-desc">
- <h3>Episode Naming</h3>
- <p>If post-processing 'Rename episodes' is enabled then use these settings.</p>
- </div>
-
- #set $naming_ep_type_text = ("1x02", "s01e02", "S01E02")
- #set $naming_multi_ep_type_text = ("extend", "duplicate", "repeat")
-
- <fieldset class="component-group-list">
- <div class="field-pair">
- <input type="checkbox" name="naming_show_name" id="naming_show_name" #if $sickbeard.NAMING_SHOW_NAME then "checked=\"checked\"" else ""#/>
- <label class="clearfix" for="naming_show_name">
- <span class="component-title">Show Name</span>
- <span class="component-desc">Include the TV show's name when renaming the file?</span>
- </label>
- </div>
-
- <div class="field-pair">
- <input type="checkbox" name="naming_ep_name" id="naming_ep_name" #if $sickbeard.NAMING_EP_NAME then "checked=\"checked\"" else ""#/>
- <label class="clearfix" for="naming_ep_name">
- <span class="component-title">Episode Name</span>
- <span class="component-desc">Include the TV show's episode title when renaming the file?</span>
- </label>
- </div>
-
- <div class="field-pair">
- <input type="checkbox" name="naming_use_periods" id="naming_use_periods" #if $sickbeard.NAMING_USE_PERIODS then "checked=\"checked\"" else ""#/>
- <label class="clearfix" for="naming_use_periods">
- <span class="component-title">Use Periods</span>
- <span class="component-desc">Replace the spaces with periods in the filename instead?</span>
- </label>
- </div>
-
- <div class="field-pair">
- <input type="checkbox" name="naming_quality" id="naming_quality" #if $sickbeard.NAMING_QUALITY then "checked=\"checked\"" else ""#/>
- <label class="clearfix" for="naming_quality">
- <span class="component-title">Quality</span>
- <span class="component-desc">Append the show quality to the end of the filename?</span>
- </label>
- </div>
-
- <div class="field-pair">
- <input type="checkbox" name="naming_dates" id="naming_dates" #if $sickbeard.NAMING_DATES then "checked=\"checked\"" else ""#/>
- <label class="clearfix" for="naming_dates">
- <span class="component-title">Air-By-Date Format</span>
- <span class="component-desc">Use the date instead of the season/episode format?</span>
- </label>
- <label class="nocheck clearfix">
- <span class="component-title">&nbsp;</span>
- <span class="component-desc">Only applies to air-by-date shows. (eg. 2010-02-15 vs S12E23)</span>
- </label>
- </div>
-
- <div class="field-pair">
- <label class="nocheck clearfix" for="naming_sep_type">
- <span class="component-title">Separator Style</span>
- <span class="component-desc">
- <select name="naming_sep_type" id="naming_sep_type">
- #for ($i, $ex) in enumerate($config.naming_sep_type_text):
- <option value="$i" #if $i == int($sickbeard.NAMING_SEP_TYPE) then "selected=\"selected\"" else ""#>$ex</option>
- #end for
- </select>
- </span>
- </label>
- </div>
-
- <div class="field-pair">
- <label class="nocheck clearfix" for="naming_ep_type">
- <span class="component-title">Number Style</span>
- <span class="component-desc">
- <select name="naming_ep_type" id="naming_ep_type">
- #for ($i, $ex) in enumerate($config.naming_ep_type_text):
- <option value="$i" #if $i == int($sickbeard.NAMING_EP_TYPE) then "selected=\"selected\"" else ""#>$ex</option>
- #end for
- </select>
- </span>
- </label>
- </div>
-
- <div class="field-pair" style="padding:10px; background: #efefef;">
- <label class="clearfix" for="naming_ep_type">
- <span class="component-title jumbo">Single-Ep Example:</span>
- <span class="component-desc jumbo" id="normalExampleText"></span>
- </label>
- </div>
-
- <div class="field-pair">
- <label class="nocheck clearfix" for="naming_multi_ep_type">
- <span class="component-title">Multi-episode Style</span>
- <span class="component-desc">
- <select name="naming_multi_ep_type" id="naming_multi_ep_type">
- #for ($i, $ex) in enumerate($config.naming_multi_ep_type_text):
- <option value="$i" #if $i == int($sickbeard.NAMING_MULTI_EP_TYPE) then "selected=\"selected\"" else ""#>$ex</option>
- #end for
- </select>
- </span>
- </label>
- </div>
-
- <div class="field-pair" style="padding:10px; background: #efefef;">
- <label class="clearfix" for="naming_multi_ep_type">
- <span class="component-title jumbo">Multi-Ep Example:</span>
- <span class="component-desc jumbo" id="multiExampleText"></span>
- </label>
- </div>
-
- <div class="field-pair">
- <label class="nocheck clearfix">
- <span class="component-title">Season Folder Format</span>
- <input type="text" id="season_folders_format" name="season_folders_format" value="$sickbeard.SEASON_FOLDERS_FORMAT" size="15" />
- </label>
- <label class="nocheck clearfix">
- <span class="component-title">&nbsp;</span>
- <span class="component-desc">Format to use when creating season folders.</span>
- </label>
- <label class="nocheck clearfix">
- <span class="component-title">&nbsp;</span>
- <span class="component-desc">(eg. 'Season %0d' or 'season%02d')</span>
- </label>
- </div>
-
- <input type="submit" value="Save Changes" />
- </fieldset>
- </div><!-- /component-group4 //-->
-
<br/><input type="submit" value="Save Changes" /><br/>
</div><!-- /config-components -->
View
185 data/interfaces/default/config_notifications.tmpl
@@ -8,6 +8,7 @@
#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_top.tmpl")
<script type="text/javascript" src="$sbRoot/js/configNotifications.js"></script>
+<script type="text/javascript" src="$sbRoot/js/config.js"></script>
<div id="config">
<div id="config-content">
@@ -19,7 +20,7 @@
<div id="core-component-group1" class="component-group clearfix">
<div class="component-group-desc">
- <h3>XBMC</h3>
+ <h3><a href="http://xbmc.org/" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/notifiers/xbmc.gif" alt="XBMC" title="XBMC" width="16" height="16" /> XBMC</a></h3>
<p>A free and open source cross-platform media center and home entertainment system software with a 10-foot user interface designed for the living-room TV.</p>
</div>
@@ -114,7 +115,101 @@
<div id="core-component-group2" class="component-group clearfix">
<div class="component-group-desc">
- <h3>Growl</h3>
+ <h3><a href="http://www.plexapp.com/" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/notifiers/plex.gif" alt="Plex Media Server" title="Plex Media Server" width="16" height="16" /> Plex Media Server</a></h3>
+ <p>Experience your media on a visually stunning, easy to use interface on your Mac connected to your TV. Your media library has never looked this good!</p>
+ </div>
+
+ <fieldset class="component-group-list">
+ <div class="field-pair">
+ <input type="checkbox" class="enabler" name="use_plex" id="use_plex" #if $sickbeard.USE_PLEX then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="use_plex">
+ <span class="component-title">Enable</span>
+ <span class="component-desc">Should Sick Beard send Plex commands?</span>
+ </label>
+ </div>
+
+ <div id="content_use_plex">
+ <div class="field-pair">
+ <input type="checkbox" name="plex_notify_onsnatch" id="plex_notify_onsnatch" #if $sickbeard.PLEX_NOTIFY_ONSNATCH then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="plex_notify_onsnatch">
+ <span class="component-title">Notify on Snatch</span>
+ <span class="component-desc">Send notification when we start a download?</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <input type="checkbox" name="plex_notify_ondownload" id="plex_notify_ondownload" #if $sickbeard.PLEX_NOTIFY_ONDOWNLOAD then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="plex_notify_ondownload">
+ <span class="component-title">Notify on Download</span>
+ <span class="component-desc">Send notification when we finish a download?</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <input type="checkbox" name="plex_update_library" id="plex_update_library" #if $sickbeard.PLEX_UPDATE_LIBRARY then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="plex_update_library">
+ <span class="component-title">Update Library</span>
+ <span class="component-desc">Update Plex Media Server library when we finish a download?</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">Plex Media Server IP:Port</span>
+ <input type="text" name="plex_server_host" id="plex_server_host" value="$sickbeard.PLEX_SERVER_HOST" size="35" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Host running Plex Media Server (eg. 192.168.1.100:32400)</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">Plex Client IP:Port</span>
+ <input type="text" name="plex_host" id="plex_host" value="$sickbeard.PLEX_HOST" size="35" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Host running Plex Client (eg. 192.168.1.100:3000)</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">Plex Client Username</span>
+ <input type="text" name="plex_username" id="plex_username" value="$sickbeard.PLEX_USERNAME" size="35" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Username of your Plex client API (blank for none)</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">Plex Client Password</span>
+ <input type="password" name="plex_password" id="plex_password" value="$sickbeard.PLEX_PASSWORD" size="35" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Password of your Plex client API (blank for none)</span>
+ </label>
+ </div>
+
+ <div class="testNotification" id="testPLEX-result">Click below to test.</div>
+ <input type="button" value="Test Plex Media Server" id="testPLEX" />
+ <input type="submit" value="Save Changes" />
+
+ </div><!-- /enabler_plex -->
+
+ </fieldset>
+ </div><!-- /component-group -->
+
+ <div id="core-component-group3" class="component-group clearfix">
+
+ <div class="component-group-desc">
+ <h3><a href="http://growl.info/" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/notifiers/growl.gif" alt="Growl" title="Growl" width="16" height="16" /> Growl</a></h3>
<p>A cross-platform unobtrusive global notification system.</p>
</div>
@@ -179,10 +274,10 @@
</fieldset>
</div><!-- /component-group //-->
- <div id="core-component-group3" class="component-group clearfix">
+ <div id="core-component-group4" class="component-group clearfix">
<div class="component-group-desc">
- <h3>Twitter</h3>
+ <h3><a href="http://www.twitter.com/" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/notifiers/twitter.gif" alt="Twitter" title="Twitter" width="16" height="16" /> Twitter</a></h3>
<p>A social networking and microblogging service, enabling its users to send and read other users' messages called tweets.</p>
</div>
@@ -254,10 +349,10 @@
</fieldset>
</div><!-- /component-group //-->
- <div id="core-component-group4" class="component-group clearfix">
+ <div id="core-component-group5" class="component-group clearfix">
<div class="component-group-desc">
- <h3>Prowl</h3>
+ <h3><a href="http://www.prowlapp.com/" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/notifiers/prowl.gif" alt="Prowl" title="Prowl" width="16" height="16" /> Prowl</a></h3>
<p>A Growl client for iOS.</p>
</div>
@@ -324,10 +419,10 @@
</fieldset>
</div><!-- /component-group //-->
- <div id="core-component-group5" class="component-group clearfix">
+ <div id="core-component-group6" class="component-group clearfix">
<div class="component-group-desc">
- <h3>Notifo</h3>
+ <h3><a href="http://notifo.com/" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/notifiers/notifo.gif" alt="Notifo" title="Notifo" width="16" height="16" /> Notifo</a></h3>
<p>A platform for push-notifications to either mobile or desktop clients</p>
</div>
@@ -390,9 +485,9 @@
</div>
- <div id="core-component-group6" class="component-group clearfix">
+ <div id="core-component-group7" class="component-group clearfix">
<div class="component-group-desc">
- <h3>Libnotify</h3>
+ <h3><a href="http://library.gnome.org/devel/libnotify/" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/notifiers/libnotify.gif" alt="Libnotify" title="Libnotify" width="16" height="16" /> Libnotify</a></h3>
<p>The standard desktop notification API for Linux/*nix systems. This notifier will only function if the pynotify module is installed (Ubuntu/Debian package <a href="apt:python-notify">python-notify</a>).</p>
</div>
@@ -401,7 +496,7 @@
<input type="checkbox" class="enabler" name="use_libnotify" id="use_libnotify" #if $sickbeard.USE_LIBNOTIFY then "checked=\"checked\"" else ""# />
<label class="clearfix" for="use_libnotify">
<span class="component-title">Enable</span>
- <span class="component-desc">Should Sick Beard send libnotify notifications?</span>
+ <span class="component-desc">Should Sick Beard send Libnotify notifications?</span>
</label>
</div>
@@ -431,6 +526,74 @@
</fieldset>
</div><!-- /component-group //-->
+ <div id="core-component-group8" class="component-group clearfix">
+
+ <div class="component-group-desc">
+ <h3><a href="http://www.popcornhour.com/" onclick="window.open(this.href, '_blank'); return false;"><img src="$sbRoot/images/notifiers/nmj.gif" alt="Networked Media Jukebox" title="Networked Media Jukebox" width="16" height="16" /> NMJ</a></h3>
+ <p>The Networked Media Jukebox, or NMJ, is the official media jukebox interface made available for the Popcorn Hour 200-series.</p>
+ </div>
+
+ <fieldset class="component-group-list">
+ <div class="field-pair">
+ <input type="checkbox" class="enabler" name="use_nmj" id="use_nmj" #if $sickbeard.USE_NMJ then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="use_nmj">
+ <span class="component-title">Enable</span>
+ <span class="component-desc">Should Sick Beard send update commands to NMJ?</span>
+ </label>
+ </div>
+
+ <div id="content_use_nmj">
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">Popcorn IP address</span>
+ <input type="text" name="nmj_host" id="nmj_host" value="$sickbeard.NMJ_HOST" size="35" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">IP of Popcorn 200-series (eg. 192.168.1.100)</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">Get Settings</span>
+ <input type="button" value="Get Settings" id="settingsNMJ" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">The Popcorn Hour device must be powered on and NMJ running.</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">NMJ Database</span>
+ <input type="text" name="nmj_database" id="nmj_database" value="$sickbeard.NMJ_DATABASE" size="35" #if $sickbeard.NMJ_DATABASE then "readonly=\"readonly\"" else ""# />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Automatically filled via the 'Get Settings' button.</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">NMJ Mount URL</span>
+ <input type="text" name="nmj_mount" id="nmj_mount" value="$sickbeard.NMJ_MOUNT" size="35" #if $sickbeard.NMJ_MOUNT then "readonly=\"readonly\"" else ""# />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Automatically filled via the 'Get Settings' button.</span>
+ </label>
+ </div>
+
+ <div class="testNotification" id="testNMJ-result">Click below to test.</div>
+ <input type="button" value="Test NMJ" id="testNMJ" />
+ <input type="submit" value="Save Changes" />
+ </div><!-- /content_use_nmj //-->
+ </fieldset>
+ </div><!-- /component-group //-->
+
<br/><input type="submit" value="Save Changes" /><br/>
</div><!-- /config-components //-->
View
302 data/interfaces/default/config_postProcessing.tmpl
@@ -0,0 +1,302 @@
+#import os.path
+#import sickbeard
+#from sickbeard.common import *
+#from sickbeard import config
+#from sickbeard import metadata
+#from sickbeard.metadata.generic import GenericMetadata
+#set global $title = "Config - Post Processing"
+#set global $header = "Post Processing Configuration"
+
+#set global $sbPath="../.."
+
+#set global $topmenu="config"#
+#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_top.tmpl")
+
+<script type="text/javascript" src="$sbRoot/js/configPostProcessing.js"></script>
+
+<div id="config">
+<div id="config-content">
+<h5>All non-absolute folder locations are relative to " <span class="path">$sickbeard.PROG_DIR</span> "</h5>
+
+<form action="savePostProcessing" method="post">
+
+ <div id="config-components">
+
+ <div id="core-component-group3" class="component-group clearfix">
+
+ <div class="component-group-desc">
+ <h3>Post-Processing</h3>
+ <p>Settings that dictate how Sick Beard should process completed downloads.</p>
+ </div>
+
+ <fieldset class="component-group-list">
+ <div class="field-pair">
+ <label class="nocheck clearfix" for="tv_download_dir">
+ <span class="component-title">TV Download Dir</span>
+ <input type="text" name="tv_download_dir" id="tv_download_dir" value="$sickbeard.TV_DOWNLOAD_DIR" size="45" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">The folder where your download client puts your TV downloads.</span>
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc"><b>NOTE:</b> Use only if not using SABnzbd+ post processing.</span>
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Or if SABnzbd+ and Sick Beard are on different PCs.</span>
+ </label>
+ </div>
+
+
+ <div class="field-pair">
+ <input type="checkbox" name="keep_processed_dir" id="keep_processed_dir" #if $sickbeard.KEEP_PROCESSED_DIR == True then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="keep_processed_dir">
+ <span class="component-title">Keep Original Files</span>
+ <span class="component-desc">Keep original files after they've been processed?</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <input type="checkbox" name="move_associated_files" id="move_associated_files" #if $sickbeard.MOVE_ASSOCIATED_FILES == True then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="move_associated_files">
+ <span class="component-title">Move Associated Files</span>
+ <span class="component-desc">Move srr/srt/sfv/etc files with the episode when processed?</span>
+ </label>
+ <label class="nocheck clearfix" for="move_associated_files">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc"><b>NOTE:</b> <i>.nfo</i> will be renamed to <i>.nfo-orig</i> when moved.</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <input type="checkbox" name="rename_episodes" id="rename_episodes" #if $sickbeard.RENAME_EPISODES == True then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="rename_episodes">
+ <span class="component-title">Rename Episodes</span>
+ <span class="component-desc">Rename episode using the naming settings below?</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <input type="checkbox" name="process_automatically" id="process_automatically" #if $sickbeard.PROCESS_AUTOMATICALLY == True then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="process_automatically">
+ <span class="component-title">Scan and Process</span>
+ <span class="component-desc">Scan and post-process any files in your <i>TV Download Dir</i>?</span>
+ </label>
+ <label class="nocheck clearfix" for="process_automatically">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc"><b>NOTE:</b> Do not use if you use sabToSickbeard w/ SABnzbd+!</span>
+ </label>
+ </div>
+
+ <div class="clearfix"></div>
+ <input type="submit" value="Save Changes" /><br/>
+
+ </fieldset>
+ </div><!-- /component-group3 //-->
+
+ <div id="core-component-group2" class="component-group clearfix">
+
+ <div class="component-group-desc">
+ <h3>Metadata</h3>
+ <p>The data associated to the data. These are files associated to a TV show in the form of images and text that, when supported, will enhance the viewing experience.</p>
+ </div>
+
+ <fieldset class="component-group-list">
+ <div class="field-pair">
+ <label class="clearfix">
+ <span class="component-title jumbo">Metadata Type:</span>
+ <span class="component-desc">
+ #set $m_dict = $metadata.get_metadata_generator_dict()
+ <select id="metadataType">
+ #for ($cur_name, $cur_generator) in $m_dict.items():
+ <option value="$GenericMetadata.makeID($cur_name)">$cur_name</option>
+ #end for
+ </select>
+ </span>
+ </label>
+ <span>Toggle the metadata options that you wish to be created. <b>Multiple targets may be used.</b></span>
+ </div>
+
+ <div id="metadataLegend">
+ <div style="width: 190px; float: left;">Create:</div>
+ <div style="width: 260px; float: left;">Results:</div>
+ </div>
+ <div class="clearfix"></div>
+
+#for ($cur_name, $cur_generator) in $m_dict.items():
+#set $cur_metadata_inst = $sickbeard.metadata_provider_dict[$cur_generator.name]
+#set $cur_id = $GenericMetadata.makeID($cur_name)
+<div class="metadataDiv" id="$cur_id">
+ <div class="metadata_options">
+ <label for="${cur_id}_show_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_show_metadata" #if $cur_metadata_inst.show_metadata then "checked=\"checked\"" else ""#/>&nbsp;Show Metadata</label>
+ <label for="${cur_id}_episode_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_episode_metadata" #if $cur_metadata_inst.episode_metadata then "checked=\"checked\"" else ""#/>&nbsp;Episode Metadata</label>
+ <label for="${cur_id}_fanart"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_fanart" #if $cur_metadata_inst.fanart then "checked=\"checked\"" else ""#/>&nbsp;Show Fanart Image</label>
+ <label for="${cur_id}_poster"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_poster" #if $cur_metadata_inst.poster then "checked=\"checked\"" else ""#/>&nbsp;Show Folder Image</label>
+ <label for="${cur_id}_episode_thumbnails"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_episode_thumbnails" #if $cur_metadata_inst.episode_thumbnails then "checked=\"checked\"" else ""#/>&nbsp;Episode Thumbnail</label>
+ <label for="${cur_id}_season_thumbnails"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_season_thumbnails" #if $cur_metadata_inst.season_thumbnails then "checked=\"checked\"" else ""#/>&nbsp;Season Thumbnail</label>
+ </div>
+ <div class="metadata_example">
+ <label for="${cur_id}_show_metadata"><span id="${cur_id}_eg_show_metadata">$cur_metadata_inst.eg_show_metadata</span></label>
+ <label for="${cur_id}_episode_metadata"><span id="${cur_id}_eg_episode_metadata">$cur_metadata_inst.eg_episode_metadata</span></label>
+ <label for="${cur_id}_fanart"><span id="${cur_id}_eg_fanart">$cur_metadata_inst.eg_fanart</span></label>
+ <label for="${cur_id}_poster"><span id="${cur_id}_eg_poster">$cur_metadata_inst.eg_poster</span></label>
+ <label for="${cur_id}_episode_thumbnails"><span id="${cur_id}_eg_episode_thumbnails">$cur_metadata_inst.eg_episode_thumbnails</span></label>
+ <label for="${cur_id}_season_thumbnails"><span id="${cur_id}_eg_season_thumbnails">$cur_metadata_inst.eg_season_thumbnails</span></label>
+ </div>
+ <input type="hidden" name="${cur_id}_data" id="${cur_id}_data" value="$cur_metadata_inst.get_config()" />
+</div>
+#end for
+
+ <div class="clearfix" style="clear:left;"></div>
+
+ <div class="field-pair clearfix">
+ <input type="checkbox" name="use_banner" id="use_banner" #if $sickbeard.USE_BANNER then "checked=checked" else ""#/>
+ <label class="clearfix" for="use_banner">
+ <span class="component-title">Use Banners</span>
+ <span class="component-desc">Use banners instead of posters for your Show Folder Images</span>
+ </label>
+ </div>
+
+ <input type="submit" value="Save Changes" /><br/>
+
+ </fieldset>
+ </div><!-- /component-group2 //-->
+
+ <div id="core-component-group4" class="component-group clearfix">
+
+ <div class="component-group-desc">
+ <h3>Episode Naming</h3>
+ <p>If post-processing 'Rename episodes' is enabled then use these settings.</p>
+ </div>
+
+ #set $naming_ep_type_text = ("1x02", "s01e02", "S01E02")
+ #set $naming_multi_ep_type_text = ("extend", "duplicate", "repeat")
+
+ <fieldset class="component-group-list">
+ <div class="field-pair">
+ <input type="checkbox" name="naming_show_name" id="naming_show_name" #if $sickbeard.NAMING_SHOW_NAME then "checked=\"checked\"" else ""#/>
+ <label class="clearfix" for="naming_show_name">
+ <span class="component-title">Show Name</span>
+ <span class="component-desc">Include the TV show's name when renaming the file?</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <input type="checkbox" name="naming_ep_name" id="naming_ep_name" #if $sickbeard.NAMING_EP_NAME then "checked=\"checked\"" else ""#/>
+ <label class="clearfix" for="naming_ep_name">
+ <span class="component-title">Episode Name</span>
+ <span class="component-desc">Include the TV show's episode title when renaming the file?</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <input type="checkbox" name="naming_use_periods" id="naming_use_periods" #if $sickbeard.NAMING_USE_PERIODS then "checked=\"checked\"" else ""#/>
+ <label class="clearfix" for="naming_use_periods">
+ <span class="component-title">Use Periods</span>
+ <span class="component-desc">Replace the spaces with periods in the filename instead?</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <input type="checkbox" name="naming_quality" id="naming_quality" #if $sickbeard.NAMING_QUALITY then "checked=\"checked\"" else ""#/>
+ <label class="clearfix" for="naming_quality">
+ <span class="component-title">Quality</span>
+ <span class="component-desc">Append the show quality to the end of the filename?</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <input type="checkbox" name="naming_dates" id="naming_dates" #if $sickbeard.NAMING_DATES then "checked=\"checked\"" else ""#/>
+ <label class="clearfix" for="naming_dates">
+ <span class="component-title">Air-By-Date Format</span>
+ <span class="component-desc">Use the date instead of the season/episode format?</span>
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Only applies to air-by-date shows. (eg. 2010-02-15 vs S12E23)</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix" for="naming_sep_type">
+ <span class="component-title">Separator Style</span>
+ <span class="component-desc">
+ <select name="naming_sep_type" id="naming_sep_type">
+ #for ($i, $ex) in enumerate($config.naming_sep_type_text):
+ <option value="$i" #if $i == int($sickbeard.NAMING_SEP_TYPE) then "selected=\"selected\"" else ""#>$ex</option>
+ #end for
+ </select>
+ </span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix" for="naming_ep_type">
+ <span class="component-title">Number Style</span>
+ <span class="component-desc">
+ <select name="naming_ep_type" id="naming_ep_type">
+ #for ($i, $ex) in enumerate($config.naming_ep_type_text):
+ <option value="$i" #if $i == int($sickbeard.NAMING_EP_TYPE) then "selected=\"selected\"" else ""#>$ex</option>
+ #end for
+ </select>
+ </span>
+ </label>
+ </div>
+
+ <div class="field-pair" style="padding:10px; background: #efefef;">
+ <label class="clearfix" for="naming_ep_type">
+ <span class="component-title jumbo">Single-Ep Example:</span>
+ <span class="component-desc jumbo" id="normalExampleText"></span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix" for="naming_multi_ep_type">
+ <span class="component-title">Multi-episode Style</span>
+ <span class="component-desc">
+ <select name="naming_multi_ep_type" id="naming_multi_ep_type">
+ #for ($i, $ex) in enumerate($config.naming_multi_ep_type_text):
+ <option value="$i" #if $i == int($sickbeard.NAMING_MULTI_EP_TYPE) then "selected=\"selected\"" else ""#>$ex</option>
+ #end for
+ </select>
+ </span>
+ </label>
+ </div>
+
+ <div class="field-pair" style="padding:10px; background: #efefef;">
+ <label class="clearfix" for="naming_multi_ep_type">
+ <span class="component-title jumbo">Multi-Ep Example:</span>
+ <span class="component-desc jumbo" id="multiExampleText"></span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">Season Folder Format</span>
+ <input type="text" id="season_folders_format" name="season_folders_format" value="$sickbeard.SEASON_FOLDERS_FORMAT" size="15" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Format to use when creating season folders.</span>
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">(eg. 'Season %0d' or 'season%02d')</span>
+ </label>
+ </div>
+
+ <input type="submit" value="Save Changes" />
+ </fieldset>
+ </div><!-- /component-group4 //-->
+
+ <br/><input type="submit" value="Save Changes" /><br/>
+ </div><!-- /config-components -->
+
+</form>
+</div></div>
+<div class="clearfix"></div>
+
+
+#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_bottom.tmpl")
View
67 data/interfaces/default/config_providers.tmpl
@@ -1,4 +1,5 @@
#import sickbeard
+#from sickbeard.providers.generic import GenericProvider
#set global $title="Config - Providers"
#set global $header="Search Providers"
@@ -11,11 +12,11 @@
<script type="text/javascript" src="$sbRoot/js/configProviders.js"></script>
<script type="text/javascript" charset="utf-8">
<!--
-sbRoot = '$sbRoot';
\$(document).ready(function(){
+var show_nzb_providers = #if $sickbeard.USE_NZBS then "true" else "false"#;
#for $curNewznabProvider in $sickbeard.newznabProviderList:
- \$(this).addProvider('$curNewznabProvider.getID()', '$curNewznabProvider.name', '$curNewznabProvider.url', '$curNewznabProvider.key', $int($curNewznabProvider.default));
+\$(this).addProvider('$curNewznabProvider.getID()', '$curNewznabProvider.name', '$curNewznabProvider.url', '$curNewznabProvider.key', $int($curNewznabProvider.default), show_nzb_providers);
#end for
});
//-->
@@ -34,7 +35,7 @@ sbRoot = '$sbRoot';
<h3>Provider Priorities</h3>
<p>Check off and drag the providers into the order you want them to be used.</p>
<p class="note">At least one provider is required but two are recommended.</p>
- <p>More providers offer redundancy but at the expense of a longer search period.</p>
+ <p>NZB/Torrent providers can be toggled in <a href="$sbRoot/config/search">Search Settings</a></p>
<p class="note"><span style="color: #654B24; font-size: 16px;">*</span> Provider does not support backlog searches at this time.</p>
<p class="note"><span style="color: #654B24; font-size: 16px;">**</span> Provider supports <b>limited</b> backlog searches, all episodes/qualities may not be available.</p>
</div>
@@ -45,15 +46,15 @@ sbRoot = '$sbRoot';
#if $curProvider.getID() == 'tvbinz' and not $sickbeard.SHOW_TVBINZ
#continue
#end if
- #set $curName = $curProvider.getID()
- #if $curProvider in $sickbeard.newznabProviderList:
- #set $imgName = 'newznab.gif'
- #else:
- #set $imgName = $curName + '.gif'
+ #if $curProvider.providerType == $GenericProvider.NZB and not $sickbeard.USE_NZBS:
+ #continue
+ #elif $curProvider.providerType == $GenericProvider.TORRENT and not $sickbeard.USE_TORRENTS:
+ #continue
#end if
+ #set $curName = $curProvider.getID()
<li class="ui-state-default" id="$curName">
- <input type="checkbox" id="enable_$curName" class="enabler" #if $curProvider.isEnabled() then "checked=\"checked\"" else ""#/>
- <a href="$curProvider.url" class="imgLink" target="_new"><img src="$sbRoot/images/providers/$imgName" alt="$curProvider.name" title="$curProvider.name" width="16" height="16" /></a>
+ <input type="checkbox" id="enable_$curName" class="provider_enabler" #if $curProvider.isEnabled() then "checked=\"checked\"" else ""#/>
+ <a href="$curProvider.url" class="imgLink" target="_new"><img src="$sbRoot/images/providers/$curProvider.imageName()" alt="$curProvider.name" title="$curProvider.name" width="16" height="16" /></a>
$curProvider.name
#if not $curProvider.supportsBacklog then "*" else ""#
#if $curProvider.name == "EZRSS" then "**" else ""#
@@ -75,15 +76,31 @@ sbRoot = '$sbRoot';
<fieldset class="component-group-list">
<div class="field-pair">
<label class="clearfix" for="editAProvider">
- <span class="component-title jumbo">Select Provider:</span>
+ <span class="component-title jumbo">Configure Provider:</span>
<span class="component-desc">
+ #set $provider_config_list = []
+ #for $cur_provider in ("nzbs_org", "nzbs_r_us", "newzbin", "nzbmatrix", "tvbinz", "tvtorrents"):
+ #set $cur_provider_obj = $sickbeard.providers.getProviderClass($cur_provider)
+ #if $cur_provider_obj.getID() == 'tvbinz' and not $sickbeard.SHOW_TVBINZ
+ #continue
+ #end if
+ #if $cur_provider_obj.providerType == $GenericProvider.NZB and not $sickbeard.USE_NZBS:
+ #continue
+ #elif $cur_provider_obj.providerType == $GenericProvider.TORRENT and not $sickbeard.USE_TORRENTS:
+ #continue
+ #end if
+ $provider_config_list.append($cur_provider_obj)
+ #end for
+
+ #if $provider_config_list:
<select id="editAProvider">
- #if $sickbeard.SHOW_TVBINZ then "<option value=\"tvbinz\">TVBinz" else ""#
- <option value="nzbs_org">NZBs.org</option>
- <option value="nzbs_r_us">NZBs'R'US</option>
- <option value="newzbin">Newzbin</option>
- <option value="nzbmatrix">NZBMatrix</option>
+ #for $cur_provider in $provider_config_list:
+ <option value="$cur_provider.getID()">$cur_provider.name</option>
+ #end for
</select>
+ #else:
+ No providers available to configure.
+ #end if
</span>
</label>
</div>
@@ -172,7 +189,23 @@ sbRoot = '$sbRoot';
</label>
</div>
</div>
-<!-- end div for editing providers //-->
+
+<div class="providerDiv" id="tvtorrentsDiv">
+ <div class="field-pair">
+ <label class="clearfix">
+ <span class="component-title">TvTorrents Digest:</span>
+ <input class="component-desc" type="text" name="tvtorrents_digest" value="$sickbeard.TVTORRENTS_DIGEST" size="40" />
+ </label>
+ </div>
+ <div class="field-pair">
+ <label class="clearfix">
+ <span class="component-title">TvTorrents Hash:</span>
+ <input class="component-desc" type="text" name="tvtorrents_hash" value="$sickbeard.TVTORRENTS_HASH" size="40" />
+ </label>
+ </div>
+</div>
+
+<!-- end div for editing providers -->
<input type="submit" value="Save Changes" /><br/>
View
169 data/interfaces/default/config_episodedownloads.tmpl → data/interfaces/default/config_search.tmpl
@@ -1,6 +1,6 @@
#import sickbeard
#set global $title="Config - Episode Search"
-#set global $header="Episode Download Options"
+#set global $header="Search Options"
#set global $sbPath="../.."
@@ -8,36 +8,13 @@
#import os.path
#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_top.tmpl")
-<script type="text/javascript" charset="utf-8">
-<!--
-\$(document).ready(function(){
-
- \$.fn.nzb_method_handler = function() {
-
- var selectedProvider = \$('#nzb_method :selected').val();
-
- if (selectedProvider == "blackhole") {
- \$('#blackhole_settings').show();
- \$('#sabnzbd_settings').hide();
- } else {
- \$('#blackhole_settings').hide();
- \$('#sabnzbd_settings').show();
- }
-
- }
-
- \$('#nzb_method').change(\$(this).nzb_method_handler);
-
- \$(this).nzb_method_handler();
-
-});
-//-->
-</script>
+<script type="text/javascript" src="$sbRoot/js/configSearch.js"></script>
+<script type="text/javascript" src="$sbRoot/js/config.js"></script>
<div id="config">
<div id="config-content">
<h5>All non-absolute folder locations are relative to " <span class="path">$sickbeard.PROG_DIR</span> "</h5>
-<form action="saveEpisodeDownloads" method="post">
+<form action="saveSearch" method="post">
<div id="config-components">
@@ -88,18 +65,28 @@
<div id="core-component-group2" class="component-group clearfix">
<div class="component-group-desc">
- <h3>Episode Results</h3>
- <p>Settings that dictate how Sick Beard handles NZB and Torrents search results.</p>
+ <h3>NZB Search</h3>
+ <p>Settings that dictate how Sick Beard handles NZB search results.</p>
</div>
<fieldset class="component-group-list">
+
+ <div class="field-pair">
+ <input type="checkbox" name="use_nzbs" class="enabler" id="use_nzbs" #if $sickbeard.USE_NZBS then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="use_nzbs">
+ <span class="component-title">Search NZBs</span>
+ <span class="component-desc">Should Sick Beard search for NZB files?</span>
+ </label>
+ </div>
+
+ <div id="content_use_nzbs">
<div class="field-pair">
<label class="clearfix" for="nzb_method">
<span class="component-title jumbo">NZB Method:</span>
<span class="component-desc">
<select name="nzb_method" id="nzb_method">
- #set $nzb_method_text = {'blackhole': "Black hole", 'sabnzbd': "SABnzbd"}
- #for $curAction in ('sabnzbd', 'blackhole'):
+ #set $nzb_method_text = {'blackhole': "Black hole", 'sabnzbd': "SABnzbd", 'nzbget': "NZBget"}
+ #for $curAction in ('sabnzbd', 'blackhole', 'nzbget'):
#if $sickbeard.NZB_METHOD == $curAction:
#set $nzb_method = "selected=\"selected\""
#else
@@ -112,17 +99,6 @@
</label>
</div>
- <div class="field-pair">
- <label class="nocheck clearfix">
- <span class="component-title">Torrent Black Hole</span>
- <input type="text" name="torrent_dir" id="torrent_dir" value="$sickbeard.TORRENT_DIR" size="45" />
- </label>
- <label class="nocheck clearfix">
- <span class="component-title">&nbsp;</span>
- <span class="component-desc">The directory where Sick Beard should store your <i>Torrent</i> files.</span>
- </label>
- </div>
-
<div id="blackhole_settings">
<div class="field-pair">
<label class="nocheck clearfix">
@@ -196,84 +172,87 @@
</label>
</div>
</div>
+
+ <div id="nzbget_settings">
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">NZBget HOST:PORT</span>
+ <input type="text" name="nzbget_host" value="$sickbeard.NZBGET_HOST" size="45" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Hostname and portnumber of the NZBget RPC (not NZBgetweb!)</span>
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">(eg. localhost:6789)</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">NZBget Password</span>
+ <input type="password" name="nzbget_password" value="$sickbeard.NZBGET_PASSWORD" size="20" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Password found in nzbget.conf (by default tegbzn6789)</span>
+ </label>
+ </div>
+
+ <div class="field-pair">
+ <label class="nocheck clearfix">
+ <span class="component-title">NZBget Category</span>
+ <input type="text" name="nzbget_category" value="$sickbeard.NZBGET_CATEGORY" size="20" />
+ </label>
+ <label class="nocheck clearfix">
+ <span class="component-title">&nbsp;</span>
+ <span class="component-desc">Category for downloads to go into (eg. TV)</span>
+ </label>
+ </div>
+ </div>
<div class="clearfix"></div>
<input type="submit" value="Save Changes" /><br/>
+ </div><!-- /content_use_nzbs //-->
+
</fieldset>
</div><!-- /component-group2 //-->
<div id="core-component-group3" class="component-group clearfix">
<div class="component-group-desc">
- <h3>Post-Processing</h3>
- <p>Settings that dictate how Sick Beard should process completed downloads.</p>
+ <h3>Torrent Search</h3>
+ <p>Settings that dictate how Sick Beard handles Torrent search results.</p>
</div>
<fieldset class="component-group-list">
- <div class="field-pair">
- <label class="nocheck clearfix" for="tv_download_dir">
- <span class="component-title">TV Download Dir</span>
- <input type="text" name="tv_download_dir" id="tv_download_dir" value="$sickbeard.TV_DOWNLOAD_DIR" size="45" />
- </label>
- <label class="nocheck clearfix">
- <span class="component-title">&nbsp;</span>
- <span class="component-desc">The folder where your download client puts your TV downloads.</span>
- </label>
- <label class="nocheck clearfix">
- <span class="component-title">&nbsp;</span>
- <span class="component-desc"><b>NOTE:</b> Use only if not using SABnzbd+ post processing.</span>
- </label>
- <label class="nocheck clearfix">
- <span class="component-title">&nbsp;</span>
- <span class="component-desc">Or if SABnzbd+ and Sick Beard are on different PCs.</span>
- </label>
- </div>
-
-
- <div class="field-pair">
- <input type="checkbox" name="keep_processed_dir" id="keep_processed_dir" #if $sickbeard.KEEP_PROCESSED_DIR == True then "checked=\"checked\"" else ""# />
- <label class="clearfix" for="keep_processed_dir">
- <span class="component-title">Keep Original Files</span>
- <span class="component-desc">Keep original files after they've been processed?</span>
- </label>
- </div>
-
- <div class="field-pair">
- <input type="checkbox" name="move_associated_files" id="move_associated_files" #if $sickbeard.MOVE_ASSOCIATED_FILES == True then "checked=\"checked\"" else ""# />
- <label class="clearfix" for="move_associated_files">
- <span class="component-title">Move Associated Files</span>
- <span class="component-desc">Move srr/srt/sfv/etc files with the episode when processed?</span>
- </label>
- <label class="nocheck clearfix" for="move_associated_files">
- <span class="component-title">&nbsp;</span>
- <span class="component-desc"><b>NOTE:</b> <i>.nfo</i> will be renamed to <i>.nfo-orig</i> when moved.</span>
- </label>
- </div>
<div class="field-pair">
- <input type="checkbox" name="rename_episodes" id="rename_episodes" #if $sickbeard.RENAME_EPISODES == True then "checked=\"checked\"" else ""# />
- <label class="clearfix" for="rename_episodes">
- <span class="component-title">Rename Episodes</span>
- <span class="component-desc">Rename episode using the naming settings in <a href="$sbRoot/config/general">General</a>?</span>
+ <input type="checkbox" name="use_torrents" class="enabler" id="use_torrents" #if $sickbeard.USE_TORRENTS == True then "checked=\"checked\"" else ""# />
+ <label class="clearfix" for="use_torrents">
+ <span class="component-title">Search Torrents</span>
+ <span class="component-desc">Should Sick Beard search for torrent files?</span>
</label>
</div>
+ <div id="content_use_torrents">
<div class="field-pair">
- <input type="checkbox" name="process_automatically" id="process_automatically" #if $sickbeard.PROCESS_AUTOMATICALLY == True then "checked=\"checked\"" else ""# />
- <label class="clearfix" for="process_automatically">
- <span class="component-title">Scan and Process</span>
- <span class="component-desc">Scan and post-process any files in your <i>TV Download Dir</i>?</span>
+ <label class="nocheck clearfix">
+ <span class="component-title">Torrent Black Hole</span>
+ <input type="text" name="torrent_dir" id="torrent_dir" value="$sickbeard.TORRENT_DIR" size="45" />
</label>
- <label class="nocheck clearfix" for="process_automatically">
+ <label class="nocheck clearfix">
<span class="component-title">&nbsp;</span>
- <span class="component-desc"><b>NOTE:</b> Do not use if you use sabToSickbeard w/ SABnzbd+!</span>
+ <span class="component-desc">The directory where Sick Beard should store your <i>Torrent</i> files.</span>
</label>
</div>
-
+
<div class="clearfix"></div>
<input type="submit" value="Save Changes" /><br/>
-
+ </div><!-- /content_use_torrents //-->
+
</fieldset>
</div><!-- /component-group3 //-->
View
32 data/interfaces/default/displayShow.tmpl
@@ -11,14 +11,27 @@
<script type="text/javascript" src="$sbRoot/js/jquery.bookmarkscroll.js"></script>
-<div class="h2footer align-right" style="margin-left:250px; line-height: 20px;">
+<div class="h2footer align-right">
+#if (len($seasonResults) > 14):
+ <select id="seasonJump">
+ <option value="jump">Jump to Season</option>
+ #for $seasonNum in $seasonResults:
+ <option value="#season-$seasonNum["season"]">#if int($seasonNum["season"]) == 0 then "Specials" else "Season " + str($seasonNum["season"])#</option>
+ #end for
+ </select>
+#else:
<b>Season:</b>
#for $seasonNum in $seasonResults:
- #if int($seasonNum["season"]) == 0 then "<span class=\"separator\">|</span> " else ""#
- <a href="#season-$seasonNum["season"]">
- #if int($seasonNum["season"]) == 0 then "Specials</a>" else str($seasonNum["season"])+"</a> "#
- #if int($seasonNum["season"]) >1 then "<span class=\"separator\">|</span> " else ""#
+ #if int($seasonNum["season"]) == 0:
+ <a href="#season-$seasonNum["season"]">Specials</a>
+ #else:
+ <a href="#season-$seasonNum["season"]">${str($seasonNum["season"])}</a>
+ #end if
+ #if $seasonNum != $seasonResults[-1]:
+ <span class="separator">|</span>
+ #end if
#end for
+#end if
</div><br/>
<input type="hidden" id="sbRoot" value="$sbRoot" />
@@ -60,13 +73,8 @@ replace with: <b><%=", ".join([Quality.qualityStrings[x] for x in bestQualities]
</td></tr>
<tr><td class="showLegend">Language:</td><td>$show.lang</td></tr>
<tr><td class="showLegend">Season Folders: </td><td><img src="$sbRoot/images/#if $show.seasonfolders == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
-#if $show.air_by_date or ($show.genre and "Talk Show" in $show.genre):
-#set $air_by_date = True
-#else
-#set $air_by_date = False
-#end if
<tr><td class="showLegend">Active: </td><td><img src="$sbRoot/images/#if int($show.paused) == 0 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
- <tr><td class="showLegend">Air-by-Date: </td><td><img src="$sbRoot/images/#if int($air_by_date) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
+ <tr><td class="showLegend">Air-by-Date: </td><td><img src="$sbRoot/images/#if int($show.air_by_date) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
</table>
</div>
@@ -151,6 +159,6 @@ $epLoc
</tr>
#end for
-</table><br /><br />
+</table><br />
#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_bottom.tmpl")
View
8 data/interfaces/default/editShow.tmpl
@@ -54,19 +54,17 @@ Quality:
#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_qualityChooser.tmpl")
<br />
<br />
-Language: <select name="tvdbLang" id="tvdbLangSelect"></select>
+Language: <select name="tvdbLang" id="tvdbLangSelect"></select><br />
+Note: This will only affect the language of the retrieved metadata file contents and episode filenames.<br />
+This <b>DOES NOT</b> allow Sick Beard to download non-english TV episodes!<br />
<br />
<br />
Use Season Folders: <input type="checkbox" name="seasonfolders" #if $show.seasonfolders == 1 then "checked=\"checked\"" else ""# /><br /><br />
Paused: <input type="checkbox" name="paused" #if $show.paused == 1 then "checked=\"checked\"" else ""# /><br /><br />
Air by date:
-#if ($show.genre and "Talk Show" not in $show.genre) or not $show.genre:
<input type="checkbox" name="air_by_date" #if $show.air_by_date == 1 then "checked=\"checked\"" else ""# /><br />
(check this if the show is released as Show.03.02.2010 rather than Show.S02E03)
-#else
-<input type="checkbox" disabled=\"disabled\" checked=\"checked\" />
-#end if
<br /><br />
<input type="submit" value="Submit" />
</form>
View
1  data/interfaces/default/history.tmpl
@@ -25,7 +25,6 @@
//-->
</script>
-
<table id="historyTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0">
<thead><tr><th class="nowrap">Time</th><th>Episode</th><th>Action</th><th>Provider</th><th>Quality</th></tr></thead>
<tbody>
View
2  data/interfaces/default/home_addShows.tmpl
@@ -32,7 +32,7 @@
<div class="button"><img src="$sbRoot/images/add-new32.png" alt="Add New Show"/></div>
<div class="buttontext">
<h2>Add New Show</h2>
- <p>For shows that you haven't downloaded yet, this option finds a show on TVDB.com, creates a directory for its episodes, and adds it to Sick Beard.</p>
+ <p>For shows that you haven't downloaded yet, this option finds a show on theTVDB.com, creates a directory for its episodes, and adds it to Sick Beard.</p>
</div>
</button>
View
9 data/interfaces/default/inc_top.tmpl
@@ -16,7 +16,7 @@
<link rel="stylesheet" type="text/css" href="$sbRoot/css/config.css" />
<link rel="stylesheet" type="text/css" href="$sbRoot/css/jquery.pnotify.default.css" />
<link rel="stylesheet" type="text/css" href="$sbRoot/css/jquery.autocomplete.css" />
- <link rel="stylesheet" type="text/css" href="$sbRoot/css/smooth-grinder/jquery-ui-1.8.10.custom.css" />
+ <link rel="stylesheet" type="text/css" href="$sbRoot/css/smooth-grinder/jquery-ui-1.8.11.custom.css" />
<link rel="stylesheet" type="text/css" href="$sbRoot/css/superfish.css" />
<link rel="stylesheet" type="text/css" href="$sbRoot/css/tablesorter.css"/>
<link rel="stylesheet" type="text/css" media="only screen and (max-device-width: 480px)" href="$sbRoot/css/iphone.css" />
@@ -61,7 +61,7 @@ table.tablesorter thead tr .headerSortDown { background-image: url("$sbRoot/imag
</style>
<script type="text/javascript" src="$sbRoot/js/jquery-1.5.1.min.js"></script>
- <script type="text/javascript" src="$sbRoot/js/jquery-ui-1.8.10.custom.min.js"></script>
+ <script type="text/javascript" src="$sbRoot/js/jquery-ui-1.8.11.custom.min.js"></script>
<script type="text/javascript" src="$sbRoot/js/superfish-1.4.8.js"></script>
<script type="text/javascript" src="$sbRoot/js/supersubs-0.2b.js"></script>
<script type="text/javascript" src="$sbRoot/js/jquery.autocomplete.min.js"></script>
@@ -200,9 +200,10 @@ table.tablesorter thead tr .headerSortDown { background-image: url("$sbRoot/imag
<li id="NAVconfig"><a href="$sbRoot/config">Config</a>
<ul>
<li><a href="$sbRoot/config/general/"><img src="$sbRoot/images/menu/config16.png" alt="" width="16" height="16" />General</a></li>
- <li><a href="$sbRoot/config/episodedownloads/"><img src="$sbRoot/images/menu/config16.png" alt="" width="16" height="16" />Episode Downloads</a></li>
- <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/search/"><img src="$sbRoot/images/menu/config16.png" alt="" width="16" height="16" />Search Settings</a></li>
<li><a href="$sbRoot/config/providers/"><img src="$sbRoot/images/menu/config16.png" alt="" width="16" height="16" />Search Providers</a></li>
+ <li><a href="$sbRoot/config/postProcessing/"><img src="$sbRoot/images/menu/config16.png" alt="" width="16" height="16" />Post Processing</a></li>
+ <li><a href="$sbRoot/config/notifications/"><img src="$sbRoot/images/menu/config16.png" alt="" width="16" height="16" />Notifications</a></li>
</ul>
</li>
<li id="NAVerrorlogs"><a href="$sbRoot/errorlogs">$logPageTitle</a>
View
1  data/interfaces/default/manage_manageSearches.tmpl
@@ -11,6 +11,7 @@
<script type="text/javascript" src="$sbRoot/js/plotTooltip.js"></script>
+
<b>Backlog Search:</b><br />
#if not $backlogRunning:
View
17 data/interfaces/default/restart.tmpl
@@ -0,0 +1,17 @@
+#import sickbeard
+#import datetime
+#from sickbeard.common import *
+#from sickbeard import db
+
+#set global $title="Home"
+#set global $header="Restarting Sick Beard"
+
+#set global $sbPath = ".."
+
+#set global $topmenu="home"#
+#import os.path
+#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_top.tmpl")
+
+#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/restart_bare.tmpl")
+
+#include $os.path.join($sickbeard.PROG_DIR, "data/interfaces/default/inc_bottom.tmpl")
View
33 data/interfaces/default/restart_bare.tmpl
@@ -0,0 +1,33 @@
+<script type="text/javascript" src="$sbRoot/js/jquery-1.5.1.min.js"></script>
+<script type="text/javascript" charset="utf-8">
+<!--
+sbRoot = "$sbRoot";
+//-->
+</script>
+
+<script type="text/javascript" src="$sbRoot/js/restart.js"></script>
+
+<h2>Performing Restart</h2>
+<br />
+<div id="shut_down_message">
+Waiting for Sick Beard to shut down:
+<img src="$sbRoot/images/loading16.gif" height="16" width="16" id="shut_down_loading" />
+<img src="$sbRoot/images/yes16.png" height="16" width="16" id="shut_down_success" style="display: none;" />
+</div>
+
+<div id="restart_message" style="display: none;">
+Waiting for Sick Beard to start again:
+<img src="$sbRoot/images/loading16.gif" height="16" width="16" id="restart_loading" />
+<img src="$sbRoot/images/yes16.png" height="16" width="16" id="restart_success" style="display: none;" />
+<img src="$sbRoot/images/no16.png" height="16" width="16" id="restart_failure" style="display: none;" />
+</div>
+
+<div id="refresh_message" style="display: none;">
+Loading the home page:
+<img src="$sbRoot/images/loading16.gif" height="16" width="16" id="refresh_loading" />
+</div>
+
+<div id="restart_fail_message" style="display: none;">
+Error: The restart has timed out, perhaps something prevented Sick Beard from starting again?
+</div>
+
View
2  data/interfaces/default/viewlogs.tmpl
@@ -21,7 +21,7 @@
//-->
</script>
-<div class="h2footer align-right"><b>Minimum logging level to display:</b> <select name="minLevel" id="minLevel" style="margin-top: -5px;">
+<div class="h2footer align-right"><b>Minimum logging level to display:</b> <select name="minLevel" id="minLevel">
#set $levels = $reverseNames.keys()
$levels.sort(lambda x,y: cmp($reverseNames[$x], $reverseNames[$y]))
#for $level in $levels:
View
13 data/js/config.js
@@ -0,0 +1,13 @@
+$(document).ready(function(){
+ $(".enabler").each(function(){
+ if (!$(this).attr('checked'))
+ $('#content_'+$(this).attr('id')).hide();
+ });
+
+ $(".enabler").click(function() {
+ if ($(this).attr('checked'))
+ $('#content_'+$(this).attr('id')).show();
+ else
+ $('#content_'+$(this).attr('id')).hide();
+ });
+});
View
90 data/js/configNotifications.js
@@ -2,72 +2,112 @@ $(document).ready(function(){
var loading = '<img src="'+sbRoot+'/images/loading16.gif" height="16" width="16" />';
$('#testGrowl').click(function(){
- document.getElementById('testGrowl-result').innerHTML = loading;
+ $('#testGrowl-result').html(loading);
var growl_host = $("#growl_host").val();
var growl_password = $("#growl_password").val();
var growl_result = $.get(sbRoot+"/home/testGrowl", {'host': growl_host, 'password': growl_password},
- function (data){ document.getElementById('testGrowl-result').innerHTML = data;});
+ function (data){ $('#testGrowl-result').html(data); });
});
$('#testProwl').click(function(){
- document.getElementById('testProwl-result').innerHTML = loading;
+ $('#testProwl-result').html(loading);
var prowl_api = $("#prowl_api").val();
var prowl_priority = $("#prowl_priority").val();
var prowl_result = $.get(sbRoot+"/home/testProwl", {'prowl_api': prowl_api, 'prowl_priority': prowl_priority},
- function (data){ document.getElementById('testProwl-result').innerHTML = data;});
+ function (data){ $('#testProwl-result').html(data); });
});
$('#testXBMC').click(function(){
- document.getElementById('testXBMC-result').innerHTML = loading;
+ $('#testXBMC-result').html(loading);
var xbmc_host = $("#xbmc_host").val();
var xbmc_username = $("#xbmc_username").val();
var xbmc_password = $("#xbmc_password").val();
$.get(sbRoot+"/home/testXBMC", {'host': xbmc_host, 'username': xbmc_username, 'password': xbmc_password},
- function (data){ document.getElementById('testXBMC-result').innerHTML = data;});
+ function (data){ $('#testXBMC-result').html(data); });
+ });
+
+ $('#testPLEX').click(function(){
+ $('#testPLEX-result').html(loading);
+ var plex_host = $("#plex_host").val();
+ var plex_username = $("#plex_username").val();
+ var plex_password = $("#plex_password").val();
+
+ $.get(sbRoot+"/home/testPLEX", {'host': plex_host, 'username': plex_username, 'password': plex_password},
+ function (data){ $('#testPLEX-result').html(data);});
});
$('#testNotifo').click(function(){
- document.getElementById('testNotifo-result').innerHTML = loading;
+ $('#testNotifo-result').html(loading);
var notifo_username = $("#notifo_username").val();
var notifo_apisecret = $("#notifo_apisecret").val();
$.get(sbRoot+"/home/testNotifo", {'username': notifo_username, 'apisecret': notifo_apisecret},
- function (data){ document.getElementById('testNotifo-result').innerHTML = data; });
+ function (data){ $('#testNotifo-result').html(data); });
});
$('#testLibnotify').click(function(){
$('#testLibnotify-result').html(loading);
- $.get("$sbRoot/home/testLibnotify",
- function(message){ document.getElementById('testLibnotify-result').innerHTML = message; });
+ $.get(sbRoot+"/home/testLibnotify",
+ function(message){ $('#testLibnotify-result').html(message); });
});
$('#twitterStep1').click(function(){
- document.getElementById('testTwitter-result').innerHTML = loading;
+ $('#testTwitter-result').html(loading);
var twitter1_result = $.get(sbRoot+"/home/twitterStep1", function (data){window.open(data)})
- .complete(function() { document.getElementById('testTwitter-result').innerHTML = '<b>Step1:</b> Confirm Authorization'; });
+ .complete(function() { $('#testTwitter-result').html('<b>Step1:</b> Confirm Authorization'); });
});
$('#twitterStep2').click(function(){
- document.getElementById('testTwitter-result').innerHTML = loading;
+ $('#testTwitter-result').html(loading);
var twitter_key = $("#twitter_key").val();
$.get(sbRoot+"/home/twitterStep2", {'key': twitter_key},
- function (data){ document.getElementById('testTwitter-result').innerHTML = data; });
+ function (data){ $('#testTwitter-result').html(data); });
});
$('#testTwitter').click(function(){
$.get(sbRoot+"/home/testTwitter",
- function (data){ document.getElementById('testTwitter-result').innerHTML = data;});
+ function (data){ $('#testTwitter-result').html(data); });
});
- $(".enabler").each(function(){
- if (!$(this).attr('checked'))
- $('#content_'+$(this).attr('id')).hide();
+ $('#settingsNMJ').click(function(){
+ if (!$('#nmj_host').val()) {
+ alert('Please fill in the Popcorn IP address');
+ $('#nmj_host').focus();
+ return;
+ }
+ $('#testNMJ-result').html(loading);
+ var nmj_host = $('#nmj_host').val();
+
+ $.get(sbRoot+"/home/settingsNMJ", {'host': nmj_host},
+ function (data){
+ if (data == null) {
+ $('#nmj_database').removeAttr('readonly');
+ $('#nmj_mount').removeAttr('readonly');
+ }
+ var JSONData = $.parseJSON(data);
+ $('#testNMJ-result').html(JSONData.message);
+ $('#nmj_database').val(JSONData.database);
+ $('#nmj_mount').val(JSONData.mount);
+
+ if (JSONData.database)
+ $('#nmj_database').attr('readonly', true);
+ else
+ $('#nmj_database').removeAttr('readonly');
+
+ if (JSONData.mount)
+ $('#nmj_mount').attr('readonly', true);
+ else
+ $('#nmj_mount').removeAttr('readonly');
+ });
});
- $(".enabler").click(function() {
- if ($(this).attr('checked'))
- $('#content_'+$(this).attr('id')).show();
- else
- $('#content_'+$(this).attr('id')).hide();
- });
-});
+ $('#testNMJ').click(function(){
+ $('#testNMJ-result').html(loading);
+ var nmj_host = $("#nmj_host").val();
+ var nmj_database = $("#nmj_database").val();
+ var nmj_mount = $("#nmj_mount").val();
+
+ $.get(sbRoot+"/home/testNMJ", {'host': nmj_host, 'database': nmj_database, 'mount': nmj_mount},
+ function (data){ $('#testNMJ-result').html(data); });
+ });
+});
View
4 data/js/configGeneral.js → data/js/configPostProcessing.js
@@ -12,13 +12,13 @@ $(document).ready(function(){
'whichTest': 'single'
}
- $.get(nameTestURL, params,
+ $.get(sbRoot+"/config/postProcessing/testNaming", params,
function(data){
$('#normalExampleText').text(data);
});
params['whichTest'] = 'multi'
- $.get(nameTestURL, params,
+ $.get(sbRoot+"/config/postProcessing/testNaming", params,
function(data){
$('#multiExampleText').text(data);
});
View
8 data/js/configProviders.js
@@ -13,7 +13,7 @@ $(document).ready(function(){
});
}
- $.fn.addProvider = function (id, name, url, key, isDefault) {
+ $.fn.addProvider = function (id, name, url, key, isDefault, showProvider) {
if (url.match('/$') == null)
url = url + '/'
@@ -24,8 +24,8 @@ $(document).ready(function(){
$('#editANewznabProvider').addOption(id, name);
$(this).populateNewznabSection();
- if ($('#provider_order_list > #'+id).length == 0) {
- var toAdd = '<li class="ui-state-default" id="'+id+'"> <input type="checkbox" id="enable_'+id+'" class="enabler" CHECKED> <a href="'+url+'" class="imgLink" target="_new"><img src="'+sbRoot+'/images/providers/newznab.gif" alt="'+name+'" width="16" height="16"></a> '+name+'</li>'
+ if ($('#provider_order_list > #'+id).length == 0 && showProvider != false) {
+ var toAdd = '<li class="ui-state-default" id="'+id+'"> <input type="checkbox" id="enable_'+id+'" class="provider_enabler" CHECKED> <a href="'+url+'" class="imgLink" target="_new"><img src="'+sbRoot+'/images/providers/newznab.gif" alt="'+name+'" width="16" height="16"></a> '+name+'</li>'
$('#provider_order_list').append(toAdd);
$('#provider_order_list').sortable("refresh");
@@ -140,7 +140,7 @@ $(document).ready(function(){
$(this).populateNewznabSection();
});
- $('.enabler').live('click', function(){
+ $('.provider_enabler').live('click', function(){
$(this).refreshProviderList();
});
View
27 data/js/configSearch.js
@@ -0,0 +1,27 @@
+$(document).ready(function(){
+
+ $.fn.nzb_method_handler = function() {
+
+ var selectedProvider = $('#nzb_method :selected').val();
+
+ if (selectedProvider == "blackhole") {
+ $('#blackhole_settings').show();
+ $('#sabnzbd_settings').hide();
+ $('#nzbget_settings').hide();
+ } else if (selectedProvider == "nzbget") {
+ $('#blackhole_settings').hide();
+ $('#sabnzbd_settings').hide();
+ $('#nzbget_settings').show();
+ } else {
+ $('#blackhole_settings').hide();
+ $('#sabnzbd_settings').show();
+ $('#nzbget_settings').hide();
+ }
+
+ }
+
+ $('#nzb_method').change($(this).nzb_method_handler);
+
+ $(this).nzb_method_handler();
+
+});
View
15 data/js/displayShow.js
@@ -1,12 +1,13 @@
$(document).ready(function(){
- $("table.sickbeardTable tr").click( function(event) {
- if (event.target.type !== "checkbox") {
- $(this).find("input:checkbox.epCheck").each(function(){
- $(this).attr("checked", !$(this).attr("checked"));
- });
- }
- });
+ $('#seasonJump').change(function() {
+ var id = $(this).val();
+ if (id && id != 'jump') {
+ $('html,body').animate({scrollTop: $(id).offset().top},'slow');
+ location.hash = id;
+ }
+ $(this).val('jump');
+ });
$("#prevShow").click(function(){
$('#pickShow option:selected').prev('option').attr('selected', 'selected');
View
286 data/js/jquery-ui-1.8.10.custom.min.js → data/js/jquery-ui-1.8.11.custom.min.js
143 additions, 143 deletions not shown
View
59 data/js/restart.js
@@ -0,0 +1,59 @@
+var is_alive_url = sbRoot+'/home/is_alive';
+var timeout_id;
+var current_pid = '';
+var num_restart_waits = 0;
+
+function is_alive() {
+ timeout_id = 0;
+ $.get(is_alive_url, function(