Permalink
Browse files

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

…_binaries

Conflicts:
	SickBeard.py
  • Loading branch information...
2 parents eeea129 + 2d3b41e commit 631f576d959bd27e204e6bc3461f93cd68548ad0 @midgetspy committed Apr 8, 2011
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
@@ -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,13 +93,19 @@ 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
sickbeard.MY_FULLNAME = os.path.normpath(os.path.abspath(sys.argv[0]))
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,38 +126,57 @@ 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
forcedPort = None
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
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
# Author: Nic Wolfe <nic@wolfeden.ca>
# URL: http://code.google.com/p/sickbeard/
@@ -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
@@ -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
@@ -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;
}
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -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,15 +42,15 @@
/*
- * 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.
* http://jquery.org/license
*
* 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.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.

0 comments on commit 631f576

Please sign in to comment.