diff --git a/gui/slick/css/style.css b/gui/slick/css/style.css index c1fc73535bed00339e44ad523d418d56c44885d2..1b84437cb1aeb512ffcd58bbac3f996e910a6c75 100644 --- a/gui/slick/css/style.css +++ b/gui/slick/css/style.css @@ -4,139 +4,139 @@ fonts /* Open Sans */ /* Regular */ @font-face { - font-family: 'Open Sans'; + font-family: 'Open Sans'; - src: url('fonts/OpenSans-Regular-webfont.eot'); - src: url('fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Regular-webfont.woff') format('woff'), - url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg'); - font-weight: normal; - font-weight: 400; - font-style: normal; + src: url('fonts/OpenSans-Regular-webfont.eot'); + src: url('fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Regular-webfont.woff') format('woff'), + url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg'); + font-weight: normal; + font-weight: 400; + font-style: normal; } /* Italic */ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Italic-webfont.eot'); - src: url('fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Italic-webfont.woff') format('woff'), - url('fonts/OpenSans-Italic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg'); - font-weight: normal; - font-weight: 400; - font-style: italic; + font-family: 'Open Sans'; + src: url('fonts/OpenSans-Italic-webfont.eot'); + src: url('fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Italic-webfont.woff') format('woff'), + url('fonts/OpenSans-Italic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg'); + font-weight: normal; + font-weight: 400; + font-style: italic; } /* Light */ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Light-webfont.eot'); - src: url('fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Light-webfont.woff') format('woff'), - url('fonts/OpenSans-Light-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg'); - font-weight: 200; - font-style: normal; + font-family: 'Open Sans'; + src: url('fonts/OpenSans-Light-webfont.eot'); + src: url('fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Light-webfont.woff') format('woff'), + url('fonts/OpenSans-Light-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg'); + font-weight: 200; + font-style: normal; } /* Light Italic */ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-LightItalic-webfont.eot'); - src: url('fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-LightItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg'); - font-weight: 200; - font-style: italic; + font-family: 'Open Sans'; + src: url('fonts/OpenSans-LightItalic-webfont.eot'); + src: url('fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-LightItalic-webfont.woff') format('woff'), + url('fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg'); + font-weight: 200; + font-style: italic; } /* Semibold */ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Semibold-webfont.eot'); - src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), - url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); - font-weight: 600; - font-style: normal; + font-family: 'Open Sans'; + src: url('fonts/OpenSans-Semibold-webfont.eot'); + src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), + url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); + font-weight: 600; + font-style: normal; } /* Semibold Italic */ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); - font-weight: 600; - font-style: italic; + font-family: 'Open Sans'; + src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); + src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), + url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); + font-weight: 600; + font-style: italic; } /* Bold */ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Semibold-webfont.eot'); - src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), - url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); - font-weight: bold; - font-weight: 700; - font-style: normal; + font-family: 'Open Sans'; + src: url('fonts/OpenSans-Semibold-webfont.eot'); + src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), + url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); + font-weight: bold; + font-weight: 700; + font-style: normal; } /* Bold Italic */ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); - font-weight: bold; - font-weight: 700; - font-style: italic; + font-family: 'Open Sans'; + src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); + src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), + url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); + font-weight: bold; + font-weight: 700; + font-style: italic; } /* Extra Bold */ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Bold-webfont.eot'); - src: url('fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Bold-webfont.woff') format('woff'), - url('fonts/OpenSans-Bold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg'); - font-weight: 900; - font-style: normal; + font-family: 'Open Sans'; + src: url('fonts/OpenSans-Bold-webfont.eot'); + src: url('fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Bold-webfont.woff') format('woff'), + url('fonts/OpenSans-Bold-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg'); + font-weight: 900; + font-style: normal; } /* Extra Bold Italic */ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-BoldItalic-webfont.eot'); - src: url('fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-BoldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg'); - font-weight: 900; - font-style: italic; + font-family: 'Open Sans'; + src: url('fonts/OpenSans-BoldItalic-webfont.eot'); + src: url('fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-BoldItalic-webfont.woff') format('woff'), + url('fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg'); + font-weight: 900; + font-style: italic; } /* Droid Sans */ @font-face { - font-family: 'droid_sans_mono'; - src: url('fonts/droidsansmono-webfont.eot'); - src: url('fonts/droidsansmono-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/droidsansmono-webfont.woff') format('woff'), - url('fonts/droidsansmono-webfont.ttf') format('truetype'), - url('fonts/droidsansmono-webfont.svg#droid_sans_monoregular') format('svg'); - font-weight: normal; - font-style: normal; + font-family: 'droid_sans_mono'; + src: url('fonts/droidsansmono-webfont.eot'); + src: url('fonts/droidsansmono-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/droidsansmono-webfont.woff') format('woff'), + url('fonts/droidsansmono-webfont.ttf') format('truetype'), + url('fonts/droidsansmono-webfont.svg#droid_sans_monoregular') format('svg'); + font-weight: normal; + font-style: normal; } @@ -145,8 +145,8 @@ inc_top.mako ========================================================================== */ .navbaricon { - margin-top: -15px; - margin-bottom: -15px; + margin-top: -15px; + margin-bottom: -15px; } #contentWrapper { @@ -155,44 +155,44 @@ inc_top.mako [class^="icon-"], [class*=" icon-"] { - background-image: url("../images/glyphicons-halflings.png"); + background-image: url("../images/glyphicons-halflings.png"); } .icon-white { - background-image: url("../images/glyphicons-halflings-white.png"); + background-image: url("../images/glyphicons-halflings-white.png"); } .dropdown-menu li > a:hover > [class^="menu-icon-"], .dropdown-menu li > a:hover > [class*=" menu-icon-"] { - background-image: url("../images/menu/menu-icons-white.png"); + background-image: url("../images/menu/menu-icons-white.png"); } [class^="icon16-"], [class*=" icon16-"] { - background-image: url("../images/glyphicons-config.png"); + background-image: url("../images/glyphicons-config.png"); } .ui-autocomplete-loading { - background: white url("../images/loading16.gif") right center no-repeat; + background: white url("../images/loading16.gif") right center no-repeat; } .browserDialog.busy .ui-dialog-buttonpane { - background: url("../images/loading.gif") 10px 50% no-repeat !important; + background: url("../images/loading.gif") 10px 50% no-repeat !important; } .ui-progressbar .ui-progressbar-overlay { - background: url("../css/lib/images/animated-overlay.gif"); + background: url("../css/lib/images/animated-overlay.gif"); } .ui-dialog, .ui-dialog-buttonpane { - background: #eceadf url("../css/lib/images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat !important; + background: #eceadf url("../css/lib/images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat !important; } .ui-accordion-content, .ui-tabs-panel { - background: #ededed !important; - background-image: none !important; + background: #ededed !important; + background-image: none !important; } .ui-widget { @@ -201,18 +201,18 @@ inc_top.mako } .ui-widget-content { - background: #dcdcdc url("../css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png") 50% top repeat-x; + background: #dcdcdc url("../css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png") 50% top repeat-x; } .ui-widget-header { - background: #ffffff url("../css/lib/images/ui-bg_flat_0_ffffff_40x100.png") 50% 50% repeat-x; + background: #ffffff url("../css/lib/images/ui-bg_flat_0_ffffff_40x100.png") 50% 50% repeat-x; } .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { - background: #ffffff; - border: 1px solid #CCCCCC; + background: #ffffff; + border: 1px solid #CCCCCC; } .ui-state-hover, @@ -221,262 +221,262 @@ inc_top.mako .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { - background: #ffffff; + background: #ffffff; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { - background: #F7F7F7; + background: #F7F7F7; } .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { - background: #fbf9ee url("../css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; + background: #fbf9ee url("../css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { - background: #fef1ec url("../css/lib/images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; + background: #fef1ec url("../css/lib/images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; } .ui-icon, .ui-widget-content .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); + background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); } .ui-widget-header .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); + background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); } .ui-state-default .ui-icon { - background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); + background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); + background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); } .ui-state-active .ui-icon { - background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); + background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); } .ui-state-highlight .ui-icon { - background-image: url("../css/lib/images/ui-icons_2e83ff_256x240.png"); + background-image: url("../css/lib/images/ui-icons_2e83ff_256x240.png"); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { - background-image: url("../css/lib/images/ui-icons_cd0a0a_256x240.png"); + background-image: url("../css/lib/images/ui-icons_cd0a0a_256x240.png"); } .ui-widget-overlay { - background: #aaaaaa url("../css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; + background: #aaaaaa url("../css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; } .ui-widget-shadow { - background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x; + background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { - color: #140F06; - text-decoration: none; + color: #140F06; + text-decoration: none; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { - color: #222; - text-decoration: none; + color: #222; + text-decoration: none; } .ui-tabs { - padding: 0px; - background: none; - border-width: 0px; + padding: 0px; + background: none; + border-width: 0px; } .ui-tabs .ui-tabs-nav { - padding-left: 0px; - background: transparent; - border-width: 0px 0px 0px 0px; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; + padding-left: 0px; + background: transparent; + border-width: 0px 0px 0px 0px; + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + border-radius: 0px; } .ui-tabs .ui-tabs-panel { - background-color: #F7F7F7 !important; - border: 1px solid #CCCCCC !important; - padding: 1em; + background-color: #F7F7F7 !important; + border: 1px solid #CCCCCC !important; + padding: 1em; } .ui-tabs .ui-tabs-nav li.ui-tabs-active { - border-top-left-radius: 5px; - border-top-right-radius: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; } .ui-tabs-nav > :not(.ui-tabs-active){ - border-top-left-radius: 5px; - border-top-right-radius: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; } #content { - width: 95%; - min-width: 875px; - padding: 15px; - margin-left: auto; - margin-right: auto; - clear: both; + width: 95%; + min-width: 875px; + padding: 15px; + margin-left: auto; + margin-right: auto; + clear: both; } #SubMenu { - padding-right: 20px; - clear: both; - font-size: 12px; - float: right; + padding-right: 20px; + clear: both; + font-size: 12px; + float: right; } .upgrade-notification { - width: 600px; - text-align: center; - margin-left: auto; - margin-right: auto; - margin-top: 50px; - margin-bottom: 0px; + width: 600px; + text-align: center; + margin-left: auto; + margin-right: auto; + margin-top: 50px; + margin-bottom: 0px; } [class^="menu-icon-"], [class*=" menu-icon-"] { - background: url("../images/menu/menu-icons-black.png"); - height: 16px; - width: 16px; - display: inline-block; - position: relative; - top: 2px; - float: left; + background: url("../images/menu/menu-icons-black.png"); + height: 16px; + width: 16px; + display: inline-block; + position: relative; + top: 2px; + float: left; } @media(max-width:767px){ - [class^="menu-icon-"], [class*=" menu-icon-"] { - background: url("../images/menu/menu-icons-white.png"); - height: 16px; - width: 16px; - display: inline-block; - position: relative; - top: 2px; - float: left; - } + [class^="menu-icon-"], [class*=" menu-icon-"] { + background: url("../images/menu/menu-icons-white.png"); + height: 16px; + width: 16px; + display: inline-block; + position: relative; + top: 2px; + float: left; + } } .menu-icon-addshow { - background-position: 0px 0px; + background-position: 0px 0px; } .menu-icon-anime { - background-position: -21px 0px; + background-position: -21px 0px; } .menu-icon-backlog-view { - background-position: -42px 0px; + background-position: -42px 0px; } .menu-icon-backlog { - background-position: -63px 0px; + background-position: -63px 0px; } .menu-icon-bittorrent { - background-position: -84px 0px; + background-position: -84px 0px; } .menu-icon-config-index { - background-position: -105px 0px; + background-position: -105px 0px; } .menu-icon-config { - background-position: -126px 0px; + background-position: -126px 0px; } .menu-icon-failed-download { - background-position: -147px 0px; + background-position: -147px 0px; } .menu-icon-home { - background-position: -168px 0px; + background-position: -168px 0px; } .menu-icon-manage { - background-position: -189px 0px; + background-position: -189px 0px; } .menu-icon-manage-searches { - background-position: -210px 0px; + background-position: -210px 0px; } .menu-icon-poster { - background-position: -231px 0px; + background-position: -231px 0px; } .menu-icon-postprocess { - background-position: -252px 0px; + background-position: -252px 0px; } .menu-icon-restart { - background-position: -273px 0px; + background-position: -273px 0px; } .menu-icon-shutdown { - background-position: -294px 0px; + background-position: -294px 0px; } .menu-icon-update { - background-position: -315px 0px; + background-position: -315px 0px; } .menu-icon-viewlog-errors { - background-position: -336px 0px; + background-position: -336px 0px; } .menu-icon-viewlog { - background-position: -357px 0px; + background-position: -357px 0px; } .menu-icon-kodi { - background-position: -378px 0px; + background-position: -378px 0px; } .menu-icon-help { - background-position: -399px 0px; + background-position: -399px 0px; } [class^="submenu-icon-"], [class*=" submenu-icon-"] { - background: url("../images/menu/menu-icons-black.png"); - height: 16px; - width: 16px; + background: url("../images/menu/menu-icons-black.png"); + height: 16px; + width: 16px; } .submenu-icon-anime { - background-position: -21px 0px; + background-position: -21px 0px; } .submenu-icon-bittorrent { - background-position: -84px 0px; + background-position: -84px 0px; } .submenu-icon-failed-download { - background-position: -147px 0px; + background-position: -147px 0px; } .submenu-icon-restart { - background-position: -273px 0px; + background-position: -273px 0px; } .submenu-icon-shutdown { - background-position: -294px 0px; + background-position: -294px 0px; } .submenu-icon-kodi { - background-position: -378px 0px; + background-position: -378px 0px; } /* ======================================================================= @@ -484,16 +484,16 @@ inc_bottom.mako ========================================================================== */ .footer { - width: 100%; - padding: 20px 0; - color: #4e4e4e; - text-align: center; - font-size: 12px; + width: 100%; + padding: 20px 0; + color: #4e4e4e; + text-align: center; + font-size: 12px; } .footerhighlight { - color: #111; - display: inline; + color: #111; + display: inline; } /* ======================================================================= @@ -502,13 +502,13 @@ inc_rootDirs.mako .rootdir-selectbox, .rootdir-selectbox #rootDirs, .rootdir-controls { - width: 430px + width: 430px } .rootdir-selectbox { - padding: 0 0 5px + padding: 0 0 5px } .rootdir-controls { - text-align: center + text-align: center } /* ======================================================================= @@ -516,274 +516,274 @@ home.mako ========================================================================== */ .imgbanner .banner { - border: 1px solid #ccc; - overflow: hidden; - height: 66px; - overflow: hidden; - border-radius: 8px; - vertical-align: top; - width: 360px; - display: block; - margin-left: auto; - margin-right: auto; + border: 1px solid #ccc; + overflow: hidden; + height: 66px; + overflow: hidden; + border-radius: 8px; + vertical-align: top; + width: 360px; + display: block; + margin-left: auto; + margin-right: auto; } .imgsmallposter .small { - height: 66px; - overflow: hidden; - border-radius: 3px; - vertical-align: middle; - width: 45px; - border: 1px solid #ccc; - margin-right: 5px; + height: 66px; + overflow: hidden; + border-radius: 3px; + vertical-align: middle; + width: 45px; + border: 1px solid #ccc; + margin-right: 5px; } .search { - margin-bottom: 10px; + margin-bottom: 10px; } .ui-progressbar { - height: 20px; - line-height: 18px; + height: 20px; + line-height: 18px; } .ui-progressbar .ui-progressbar-value { - box-sizing: content-box !important; + box-sizing: content-box !important; } .progressbarText { - position: absolute; - top: 0; - width: 100%; - height: 100%; - overflow: visible; - text-align: center; - text-shadow: 0 0 0.1em #fff; - vertical-align: middle; - font-size: 12px; - color: #000000; + position: absolute; + top: 0; + width: 100%; + height: 100%; + overflow: visible; + text-align: center; + text-shadow: 0 0 0.1em #fff; + vertical-align: middle; + font-size: 12px; + color: #000000; } .progress-100 { - background-image: -moz-linear-gradient(#395f07, #2a4705) !important; - background-image: linear-gradient(#395f07, #2a4705) !important; - background-image: -webkit-linear-gradient(#395f07, #2a4705) !important; - background-image: -o-linear-gradient(#395f07, #2a4705) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; + background-image: -moz-linear-gradient(#395f07, #2a4705) !important; + background-image: linear-gradient(#395f07, #2a4705) !important; + background-image: -webkit-linear-gradient(#395f07, #2a4705) !important; + background-image: -o-linear-gradient(#395f07, #2a4705) !important; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; } .progress-80 { - background-image: -moz-linear-gradient(#a6cf41, #5b990d) !important; - background-image: linear-gradient(#a6cf41, #5b990d) !important; - background-image: -webkit-linear-gradient(#a6cf41, #5b990d) !important; - background-image: -o-linear-gradient(#a6cf41, #5b990d) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; + background-image: -moz-linear-gradient(#a6cf41, #5b990d) !important; + background-image: linear-gradient(#a6cf41, #5b990d) !important; + background-image: -webkit-linear-gradient(#a6cf41, #5b990d) !important; + background-image: -o-linear-gradient(#a6cf41, #5b990d) !important; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; } .progress-60 { - background-image: -moz-linear-gradient(#fad440, #f2a70d) !important; - background-image: linear-gradient(#fad440, #f2a70d) !important; - background-image: -webkit-linear-gradient(#fad440, #f2a70d) !important; - background-image: -o-linear-gradient(#fad440, #f2a70d) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; + background-image: -moz-linear-gradient(#fad440, #f2a70d) !important; + background-image: linear-gradient(#fad440, #f2a70d) !important; + background-image: -webkit-linear-gradient(#fad440, #f2a70d) !important; + background-image: -o-linear-gradient(#fad440, #f2a70d) !important; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; } .progress-40 { - background-image: -moz-linear-gradient(#fab543, #f2700d) !important; - background-image: linear-gradient(#fab543, #f2700d) !important; - background-image: -webkit-linear-gradient(#fab543, #f2700d) !important; - background-image: -o-linear-gradient(#fab543, #f2700d) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; + background-image: -moz-linear-gradient(#fab543, #f2700d) !important; + background-image: linear-gradient(#fab543, #f2700d) !important; + background-image: -webkit-linear-gradient(#fab543, #f2700d) !important; + background-image: -o-linear-gradient(#fab543, #f2700d) !important; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; } .progress-20 { - background-image: -moz-linear-gradient(#da5945, #b11a10) !important; - background-image: linear-gradient(#da5945, #b11a10) !important; - background-image: -webkit-linear-gradient(#da5945, #b11a10) !important; - background-image: -o-linear-gradient(#da5945, #b11a10) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; + background-image: -moz-linear-gradient(#da5945, #b11a10) !important; + background-image: linear-gradient(#da5945, #b11a10) !important; + background-image: -webkit-linear-gradient(#da5945, #b11a10) !important; + background-image: -o-linear-gradient(#da5945, #b11a10) !important; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; } #container, #container-anime { - margin: 0 auto; + margin: 0 auto; } .show { - margin: 12px; - width: 188px; - height: 352px; - background-color: #DFDACF; - border: 1px solid #111; - border-radius: 6px; + margin: 12px; + width: 188px; + height: 352px; + background-color: #DFDACF; + border: 1px solid #111; + border-radius: 6px; } .show-image { - overflow: hidden; - height: 273px; - width: 186px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; + overflow: hidden; + height: 273px; + width: 186px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; } .show .ui-progressbar { - height: 7px !important; - top: -2px; + height: 7px !important; + top: -2px; } .show .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { - border-bottom-right-radius: 0px; + border-bottom-right-radius: 0px; } .show .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { - border-bottom-left-radius: 0px; + border-bottom-left-radius: 0px; } .show .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { - border-top-right-radius: 0px; + border-top-right-radius: 0px; } .show .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { - border-top-left-radius: 0px; + border-top-left-radius: 0px; } .show .ui-widget-content { - border-top: 1px solid #111; - border-bottom: 1px solid #111; - border-left: 0px; - border-right: 0px; + border-top: 1px solid #111; + border-bottom: 1px solid #111; + border-left: 0px; + border-right: 0px; } .ui-progressbar .ui-progressbar-value { - height:20px + height:20px } .ui-progressbar .progress-20 { - border: none; + border: none; } .show .progress-20, .show .progress-40, .show .progress-60, .show .progress-80 { - border-radius: 0px; - height: 7px + border-radius: 0px; + height: 7px } .show-title { - position: relative; - overflow: hidden; - white-space: nowrap; - font-size: 11px; - margin: 4px 4px 0px 4px; + position: relative; + overflow: hidden; + white-space: nowrap; + font-size: 11px; + margin: 4px 4px 0px 4px; } .show-title:after { - content: ""; - pointer-events: none; - position: absolute; - width: 20px; - height: 100%; - top: 0; - right: 0; - background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + content: ""; + pointer-events: none; + position: absolute; + width: 20px; + height: 100%; + top: 0; + right: 0; + background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); } .show-date { - position: relative; - overflow: hidden; - white-space: nowrap; - font-size: 11px; - margin: 0px 4px 4px 4px; + position: relative; + overflow: hidden; + white-space: nowrap; + font-size: 11px; + margin: 0px 4px 4px 4px; } .show-date:after { - content: ""; - pointer-events: none; - position: absolute; - width: 20px; - height: 100%; - top: 0; - right: 0; - background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + content: ""; + pointer-events: none; + position: absolute; + width: 20px; + height: 100%; + top: 0; + right: 0; + background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); + background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); } .show-table { - text-align:center; - vertical-align:middle; - width: 33% + text-align:center; + vertical-align:middle; + width: 33% } .show-add { - font-size: 11px; - text-align: left; - display: block; + font-size: 11px; + text-align: left; + display: block; } .show-status { - font-size: 11px; - text-align: left; - display: block; + font-size: 11px; + text-align: left; + display: block; } .show-network-image { - width: 50px; - height: auto; + width: 50px; + height: auto; } .show-dlstats { - font-size: 11px; - text-align: left; - display: block; - margin-left: 4px; + font-size: 11px; + text-align: left; + display: block; + margin-left: 4px; } .show-quality { - font-size: 11px; - text-align: right; - display: block; - margin-right: 4px; + font-size: 11px; + text-align: right; + display: block; + margin-right: 4px; } #sort-by { - display: inline; - list-style-type: none; - padding: 0; - margin-left: 5px; + display: inline; + list-style-type: none; + padding: 0; + margin-left: 5px; } #sort-by ul, #sort-by li { - display: inline; - margin: 0; - padding: 0; + display: inline; + margin: 0; + padding: 0; } .posterview { - margin: 0 auto; + margin: 0 auto; } td.tvShow a { - color: #000; - text-decoration: none; + color: #000; + text-decoration: none; } td.tvShow a:hover { - cursor: pointer; - color: #428BCA; + cursor: pointer; + color: #428BCA; } #popover-target label { @@ -804,59 +804,59 @@ home_addShows.mako ========================================================================== */ #addShowPortal { - width: 700px; - padding: 10px 0; - margin-right: auto; - margin-left: auto; + width: 700px; + padding: 10px 0; + margin-right: auto; + margin-left: auto; } #addShowPortal a { - padding: 10px; + padding: 10px; } div.button { - display: table-cell; - vertical-align: middle; - padding-left: 10px; + display: table-cell; + vertical-align: middle; + padding-left: 10px; } div.buttontext { - display: table-cell; - padding-left: 20px; - text-align: left; - white-space: normal; + display: table-cell; + padding-left: 20px; + text-align: left; + white-space: normal; } div.buttontext h3 { - margin-top: 10px; + margin-top: 10px; } div.buttontext p { - font-size: 13px; + font-size: 13px; } .icon-addnewshow { - background-image: url("../images/addshows/add-new32-black.png"); - width: 32px; - height: 32px; + background-image: url("../images/addshows/add-new32-black.png"); + width: 32px; + height: 32px; } .icon-addtrendingshow { - background-image: url("../images/addshows/add-trending32-black.png"); - width: 32px; - height: 32px; + background-image: url("../images/addshows/add-trending32-black.png"); + width: 32px; + height: 32px; } .icon-addrecommendedshow { - background-image: url("../images/addshows/add-trakt32-black.png"); - width: 32px; - height: 32px; + background-image: url("../images/addshows/add-trakt32-black.png"); + width: 32px; + height: 32px; } .icon-addexistingshow { - background-image: url("../images/addshows/add-existing32-black.png"); - width: 32px; - height: 32px; + background-image: url("../images/addshows/add-existing32-black.png"); + width: 32px; + height: 32px; } /* ======================================================================= @@ -864,30 +864,30 @@ home_newShow.mako ========================================================================== */ #addShowForm, #recommendedShowsForm { - width: 800px; - margin-left: auto; - margin-right: auto; - padding: 10px 0; - font-size:13px; + width: 800px; + margin-left: auto; + margin-right: auto; + padding: 10px 0; + font-size:13px; } #newShowPortal { - width: 960px; - padding: 10px 0; - margin-right: auto; - margin-left: auto; + width: 960px; + padding: 10px 0; + margin-right: auto; + margin-left: auto; } #displayText { - padding: 8px; - overflow: hidden; - font-size: 14px; - background-color: #efefef; - border: 1px solid #dfdede; + padding: 8px; + overflow: hidden; + font-size: 14px; + background-color: #efefef; + border: 1px solid #dfdede; } #searchResults input[type="radio"] { - vertical-align: -2px; + vertical-align: -2px; } /* ======================================================================= @@ -895,30 +895,30 @@ home_addExistingShow.mako ========================================================================== */ .existingtabs { - padding: 1em 1.4em; + padding: 1em 1.4em; } ul#rootDirStaticList { - margin-right: auto; - margin-left: auto; - text-align: left; + margin-right: auto; + margin-left: auto; + text-align: left; } ul#rootDirStaticList li { - padding: 4px 5px 4px 5px; - margin: 2px; - list-style: none outside none; - cursor: pointer; - background: url('../css/lib/images/ui-bg_highlight-soft_75_efefef_1x100.png') repeat-x scroll 50% 50% #EFEFEF; + padding: 4px 5px 4px 5px; + margin: 2px; + list-style: none outside none; + cursor: pointer; + background: url('../css/lib/images/ui-bg_highlight-soft_75_efefef_1x100.png') repeat-x scroll 50% 50% #EFEFEF; } ul#rootDirStaticList li label { - margin-top: 5px; - margin-bottom: 5px; + margin-top: 5px; + margin-bottom: 5px; } ul#rootDirStaticList li input[type="checkbox"] { - vertical-align: -2px; + vertical-align: -2px; } /* ======================================================================= @@ -926,44 +926,44 @@ home_trendingShows.mako ========================================================================== */ .traktShowTitleIcons { - float: right; - padding-right: 4px; - padding-bottom: 4px; + float: right; + padding-right: 4px; + padding-bottom: 4px; } .traktContainer p { - padding-top: 2px; + padding-top: 2px; } .traktContainer p img { - position: relative; - top: -2px; + position: relative; + top: -2px; } .traktContainer p, .traktContainer i { - white-space: nowrap; - font-size: 12px; - overflow: hidden; + white-space: nowrap; + font-size: 12px; + overflow: hidden; /* text-shadow: 1px 1px 0px #000;*/ - padding-left: 4px; - margin: 0; + padding-left: 4px; + margin: 0; } .traktContainer { - margin: 12px; - width: 188px; - background-color: #DFDACF; - border: 1px solid #111; - border-radius: 6px; + margin: 12px; + width: 188px; + background-color: #DFDACF; + border: 1px solid #111; + border-radius: 6px; } .trakt-image { - overflow: hidden; - height: 273px; - width: 186px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - border-bottom: 1px solid #111; + overflow: hidden; + height: 273px; + width: 186px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom: 1px solid #111; } /* ======================================================================= @@ -971,10 +971,10 @@ home_postprocess.mako ========================================================================== */ #postProcess { - width: 800px; - padding-top: 10px; - margin-right: auto; - margin-left: auto; + width: 800px; + padding-top: 10px; + margin-right: auto; + margin-left: auto; } /* ======================================================================= @@ -982,139 +982,139 @@ displayShow.mako ========================================================================== */ #posterCol { - float: left; - margin-right: 10px; - margin-bottom: 20px; + float: left; + margin-right: 10px; + margin-bottom: 20px; } #showCol { - overflow: hidden; - margin-bottom: 20px; + overflow: hidden; + margin-bottom: 20px; } .navShow { - display: inline; - cursor: pointer; + display: inline; + cursor: pointer; } #prevShow, #nextShow, #topcontrol { - -webkit-filter: grayscale(100%); - filter: grayscale(100%); - filter: gray; - filter: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' height='0'><filter id='greyscale'><feColorMatrix type='matrix' values='0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0' /></filter></svg>#greyscale"); + -webkit-filter: grayscale(100%); + filter: grayscale(100%); + filter: gray; + filter: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' height='0'><filter id='greyscale'><feColorMatrix type='matrix' values='0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0' /></filter></svg>#greyscale"); } h1.title { - padding-bottom: 12px; - margin-bottom: 15px; - line-height: 30px; - text-align: left; - text-rendering: optimizelegibility; - border-bottom: 1px solid #888; + padding-bottom: 12px; + margin-bottom: 15px; + line-height: 30px; + text-align: left; + text-rendering: optimizelegibility; + border-bottom: 1px solid #888; } .displayspecials { - position: relative; - top: -24px; + position: relative; + top: -24px; } #showinfo { - cursor: default; + cursor: default; } #showinfo { - display: inline-block; - position: relative; - top: -3px; + display: inline-block; + position: relative; + top: -3px; } span.imdbstars { - display: inline-block; - vertical-align: top; - cursor: help; - margin-top: 4px; + display: inline-block; + vertical-align: top; + cursor: help; + margin-top: 4px; } span.imdbstars, span.imdbstars > * { - height: 12px; - background: url(../images/rating.png) 0 -12px repeat-x; - width: 120px; - display: inline-block; - vertical-align: top; + height: 12px; + background: url(../images/rating.png) 0 -12px repeat-x; + width: 120px; + display: inline-block; + vertical-align: top; } span.imdbstars > * { - background-position: 0 0; - max-width:120px; + background-position: 0 0; + max-width:120px; } ul.tags { - list-style-type: none; - position: relative; - top: -5px; - margin-left: -40px; + list-style-type: none; + position: relative; + top: -5px; + margin-left: -40px; } ul.tags li { - margin-right: 4px; - margin-bottom: 5px; - padding: 3px 4px 3px 25px; - background: url(../images/tag.png) no-repeat scroll 5px 4px #555; - border-radius: 3px; - border: 1px solid #111; - color: #FFF; - font: 14px/18px "Open Sans", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; - text-shadow: 0px 1px rgba(0, 0, 0, 0.8); - float: left; + margin-right: 4px; + margin-bottom: 5px; + padding: 3px 4px 3px 25px; + background: url(../images/tag.png) no-repeat scroll 5px 4px #555; + border-radius: 3px; + border: 1px solid #111; + color: #FFF; + font: 14px/18px "Open Sans", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; + text-shadow: 0px 1px rgba(0, 0, 0, 0.8); + float: left; } ul.tags li a{ - color: #FFF; + color: #FFF; } .tvshowImg { - border: 1px solid #ccc; - border-radius: 5px; - height: 311px; - width: auto; - float: left; + border: 1px solid #ccc; + border-radius: 5px; + height: 311px; + width: auto; + float: left; } #summary { - padding: 10px; - background-color: #efefef; - border: 1px solid #dfdede; - width: 100%; - height: 250px; - overflow: auto; - cursor: default; + padding: 10px; + background-color: #efefef; + border: 1px solid #dfdede; + width: 100%; + height: 250px; + overflow: auto; + cursor: default; } .summaryTable { - max-width: 70%; - overflow: hidden; + max-width: 70%; + overflow: hidden; } #checkboxControls { - padding-top: 5px; + padding-top: 5px; } #checkboxControls span { - padding: 5px; - font-size: 13px; - font-weight: bold; - border-radius: 5px; + padding: 5px; + font-size: 13px; + font-weight: bold; + border-radius: 5px; } #checkboxControls label { - white-space: nowrap; - display: inline-block; + white-space: nowrap; + display: inline-block; } #checkboxControls input[type="checkbox"] { - vertical-align: -2px; + vertical-align: -2px; } .unaired { @@ -1137,28 +1137,28 @@ ul.tags li a{ } span.unaired { - color: #584b20; - border: 1px solid #584b20; + color: #584b20; + border: 1px solid #584b20; } span.skipped { - color: #1d5068; - border: 1px solid #1d5068; + color: #1d5068; + border: 1px solid #1d5068; } span.good { - color: #295730; - border: 1px solid #295730; + color: #295730; + border: 1px solid #295730; } span.qual { - color: #765100; - border: 1px solid #765100; + color: #765100; + border: 1px solid #765100; } span.wanted { - color: #890000; - border: 1px solid #890000; + color: #890000; + border: 1px solid #890000; } span.snatched { - color: #652164; - border: 1px solid #652164; + color: #652164; + border: 1px solid #652164; } span.unaired b, @@ -1167,154 +1167,154 @@ span.good b, span.qual b, span.wanted b, span.snatched b { - color: #000000; - font-weight: 800; + color: #000000; + font-weight: 800; } .plotInfo { - cursor: help; - float: right; - position: relative; - top: 2px; + cursor: help; + float: right; + position: relative; + top: 2px; } .plotInfoNone { - cursor: help; - float: right; - position: relative; - top: 2px; - opacity: 0.4; + cursor: help; + float: right; + position: relative; + top: 2px; + opacity: 0.4; } .displayShowTable { - table-layout: auto; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - text-align: center; - border: none; - empty-cells: show; - color: #000 !important; + table-layout: auto; + width: 100%; + border-collapse: collapse; + border-spacing: 0; + text-align: center; + border: none; + empty-cells: show; + color: #000 !important; } .displayShowTable.display_show { - clear:both + clear:both } .displayShowTable th.row-seasonheader { - border: none !important; - background-color: #222 !important; - color: #fff !important; - padding-top: 15px !important; - text-align: left !important; + border: none !important; + background-color: #222 !important; + color: #fff !important; + padding-top: 15px !important; + text-align: left !important; } .displayShowTable td.col-search { - text-align: center; + text-align: center; } .sickbeardTable { - table-layout: auto; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - text-align: center; - border: none; - empty-cells: show; + table-layout: auto; + width: 100%; + border-collapse: collapse; + border-spacing: 0; + text-align: center; + border: none; + empty-cells: show; } .sickbeardTable.display_show { - clear:both + clear:both } .sickbeardTable th{ - color: #fff; - text-align: center; - background-color: #333; - white-space: nowrap; + color: #fff; + text-align: center; + background-color: #333; + white-space: nowrap; } .sickbeardTable th, .sickbeardTable td { - border-top: 1px solid #fff; - border-left: 1px solid #fff; - padding: 4px; + border-top: 1px solid #fff; + border-left: 1px solid #fff; + padding: 4px; } th.row-seasonheader { - border: none; - background-color: #fff; - color: #000; - padding-top: 15px; - text-align: left; + border: none; + background-color: #fff; + color: #000; + padding-top: 15px; + text-align: left; } tr.seasonheader { - padding-bottom: 5px; - padding-top: 10px; - text-align: left; - border: none; - color: #fff; + padding-bottom: 5px; + padding-top: 10px; + text-align: left; + border: none; + color: #fff; } th.col-checkbox, td.col-checkbox { - width: 30px; - border-left: none; - text-align: center; + width: 30px; + border-left: none; + text-align: center; } th.col-checkbox input[type="checkbox"], td.col-checkbox input[type="checkbox"] { - vertical-align: -2px; + vertical-align: -2px; } th.col-metadata, td.col-metadata { - width: 28px; + width: 28px; } th.col-ep, td.col-ep { - width: 50px; - white-space: nowrap; + width: 50px; + white-space: nowrap; } th.col-airdate, td.col-airdate { - width: 86px; - white-space: nowrap; + width: 86px; + white-space: nowrap; } th.col-name, td.col-name { - min-width: 100px; + min-width: 100px; } td.col-name { - text-align: left; + text-align: left; } th.col-subtitles, td.col-subtitles { - width: 150px; - text-align: center; + width: 150px; + text-align: center; } th.col-status, td.col-status { - width: 210px; - text-align: center; + width: 230px; + text-align: center; } th.col-quality, td.col-quality { - width: 110px; + width: 110px; } th.col-legend, td.col-legend { - width: 80px; + width: 80px; } th.col-search, @@ -1323,22 +1323,22 @@ td.col-search { } .showLegend { - padding-right: 6px; - padding-bottom: 1px; - width: 150px; + padding-right: 6px; + padding-bottom: 1px; + width: 150px; } .input-scene { - height: 20px; - line-height: 1.5; - border-radius: 3px; + height: 20px; + line-height: 1.5; + border-radius: 3px; } #editShow { - width: 700px; - padding-top: 10px; - margin-right: auto; - margin-left: auto; + width: 700px; + padding-top: 10px; + margin-right: auto; + margin-left: auto; } /* ======================================================================= @@ -1346,193 +1346,193 @@ comingEpisodes.mako ========================================================================== */ .sort_data { - display: none; + display: none; } .key { - margin-bottom: 20px; + margin-bottom: 20px; } .listing-key { - padding: 5px; - font-size: 13px; - font-weight: bold; - border-radius: 5px; + padding: 5px; + font-size: 13px; + font-weight: bold; + border-radius: 5px; } .listing-default { - background-color: #f5f1e4; + background-color: #f5f1e4; } .listing-current { - background-color: #dfd; + background-color: #dfd; } .listing-overdue { - background-color: #fdd; + background-color: #fdd; } .listing-toofar { - background-color: #bedeed; + background-color: #bedeed; } span.listing-default { - color: #826f30; - border: 1px solid #826f30; + color: #826f30; + border: 1px solid #826f30; } span.listing-current { - color: #295730; - border: 1px solid #295730; + color: #295730; + border: 1px solid #295730; } span.listing-overdue { - color: #890000; - border: 1px solid #890000; + color: #890000; + border: 1px solid #890000; } span.listing-toofar { - color: #1d5068; - border: 1px solid #1d5068; + color: #1d5068; + border: 1px solid #1d5068; } h2.day, h2.network { - margin: 10px 0; - font-size: 24px; - line-height: 36px; - font-weight: bold; - letter-spacing: 1px; - color: #FFF; - text-align: center; - text-shadow: -1px -1px 0px rgba(0, 0, 0, 0.3); - background-color: #333; + margin: 10px 0; + font-size: 24px; + line-height: 36px; + font-weight: bold; + letter-spacing: 1px; + color: #FFF; + text-align: center; + text-shadow: -1px -1px 0px rgba(0, 0, 0, 0.3); + background-color: #333; } .tvshowDiv { - display: block; - clear: both; - border: 1px solid #ccc; - margin: auto; - padding: 0px; - text-align: left; - width: 750px; - border-radius: 5px; - background: #fff; - cursor: default; - overflow: hidden; + display: block; + clear: both; + border: 1px solid #ccc; + margin: auto; + padding: 0px; + text-align: left; + width: 750px; + border-radius: 5px; + background: #fff; + cursor: default; + overflow: hidden; } .tvshowDiv a:hover { - color: #428BCA; + color: #428BCA; } .tvshowDiv a, .tvshowDiv a:link, .tvshowDiv a:visited, .tvshowDiv a:hover { - text-decoration: none; - background: none; + text-decoration: none; + background: none; } .tvshowTitle a { - color: #000000; - float: left; - line-height: 1.4em; - font-size: 1.4em; - text-shadow: -1px -1px 0 #FFF; + color: #000000; + float: left; + line-height: 1.4em; + font-size: 1.4em; + text-shadow: -1px -1px 0 #FFF; } .tvshowTitleIcons { - float: right; - padding: 3px 5px; + float: right; + padding: 3px 5px; } .tvshowDiv td { - padding: 5px 10px; + padding: 5px 10px; } .tvshowDiv td.next_episode { - width: 100%; - height: 90%; - border-bottom: 1px solid #ccc; - vertical-align: top; - color: #000; + width: 100%; + height: 90%; + border-bottom: 1px solid #ccc; + vertical-align: top; + color: #000; } .bannerThumb { - vertical-align: top; - height: auto; - width: 748px; - border-bottom: 1px solid #ccc; + vertical-align: top; + height: auto; + width: 748px; + border-bottom: 1px solid #ccc; } .posterThumb { - vertical-align: top; - height: auto; - width: 180px; - border-right: 1px solid #ccc; + vertical-align: top; + height: auto; + width: 180px; + border-right: 1px solid #ccc; } .ep_listing { - width: auto; - border: 1px solid #ccc; - margin-bottom: 10px; - padding: 10px; + width: auto; + border: 1px solid #ccc; + margin-bottom: 10px; + padding: 10px; } .ep_summary { - margin-left: 5px; - font-style: italic; + margin-left: 5px; + font-style: italic; } .ep_summaryTrigger { - cursor: pointer; - vertical-align: middle; + cursor: pointer; + vertical-align: middle; } .ep_summaryTriggerNone { - opacity: 0.4; - vertical-align: middle; + opacity: 0.4; + vertical-align: middle; } .calendarWrapper { - width:1000px; - margin:0 auto; - padding:0 3px + width:1000px; + margin:0 auto; + padding:0 3px } .calendarTable { - float:left; - width:142px !important; - white-space:nowrap; - table-layout:fixed !important; + float:left; + width:142px !important; + white-space:nowrap; + table-layout:fixed !important; } .calendarShow { - padding:0 !important + padding:0 !important } .calendarShow .poster { - padding-bottom:2px + padding-bottom:2px } .calendarShow .poster img { - width:142px; - height:auto + width:142px; + height:auto } .calendarShow .text { - padding:0 5px 10px 5px + padding:0 5px 10px 5px } .calendarShow .text .airtime, .calendarShow .text .episode-title { - overflow:hidden; - text-overflow:ellipsis; - display:block; - font-size:11px + overflow:hidden; + text-overflow:ellipsis; + display:block; + font-size:11px } .calendarShow .show-status { - padding:5px 10px 10px; - text-align:center + padding:5px 10px 10px; + text-align:center } /* ======================================================================= @@ -1540,180 +1540,180 @@ config*.mako ========================================================================== */ #config-content { - display: block; - width: 960px; - padding: 0 0 40px; - margin: 0 auto; - clear: both; - text-align: left; + display: block; + width: 960px; + padding: 0 0 40px; + margin: 0 auto; + clear: both; + text-align: left; } .component-group { - padding: 15px 15px 25px; - border-bottom: 1px dotted #ccc; - min-height: 200px; + padding: 15px 15px 25px; + border-bottom: 1px dotted #ccc; + min-height: 200px; } .component-item { - border-bottom: 1px dotted #666; - min-height: 200px; + border-bottom: 1px dotted #666; + min-height: 200px; } .component-group-desc{ - float: left; - width: 250px; + float: left; + width: 250px; } .component-group-desc h3{ - margin-top: 5px; + margin-top: 5px; } .component-group-desc p { - width: 90%; - margin: 10px 0; - color: #666; + width: 90%; + margin: 10px 0; + color: #666; } #config div.field-pair { - padding: 12px 0px; + padding: 12px 0px; } #config div.field-pair select, #config div.field-pair input { - margin-right: 6px; + margin-right: 6px; } #config div.field-pair input { - float: left; + float: left; } #config .nocheck, #config div #customQuality, .metadataDiv { - padding-left: 20px; + padding-left: 20px; } #config span.component-title { - float: left; - width: 172px; - margin-right: 10px; - font-size: 13px; - font-weight: bold; + float: left; + width: 172px; + margin-right: 10px; + font-size: 13px; + font-weight: bold; } #config span.component-desc { - font-size: 12px; - font-weight: normal; - display:block; - width:475px; - margin-left:182px + font-size: 12px; + font-weight: normal; + display:block; + width:475px; + margin-left:182px } #config label.space-right { - margin-right:10px + margin-right:10px } #config .metadataDiv { - display: none; + display: none; } .component-group-save { - float: right; - padding-top: 10px; + float: right; + padding-top: 10px; } select .selected { - font-weight: 700; + font-weight: 700; } .jumbo { - font-size: 15px !important; - line-height: 24px; + font-size: 15px !important; + line-height: 24px; } .testNotification { - padding: 5px; - margin-bottom: 10px; - line-height: 20px; - border: 1px dotted #CCC; + padding: 5px; + margin-bottom: 10px; + line-height: 20px; + border: 1px dotted #CCC; } #providerOrderList { - width: 250px; - padding-left: 20px; - list-style-type: none; + width: 250px; + padding-left: 20px; + list-style-type: none; } #provider_order_list, #service_order_list { - width: 250px; - padding-left: 20px; - list-style-type: none; + width: 250px; + padding-left: 20px; + list-style-type: none; } #provider_order_list li, #service_order_list li { - padding: 5px; - margin: 5px 0; - font-size: 14px; + padding: 5px; + margin: 5px 0; + font-size: 14px; } #provider_order_list .ui-state-default.torrent-provider { - background-color: #FFFFFF !important; + background-color: #FFFFFF !important; } #provider_order_list .ui-state-default.nzb-provider { - background-color: #DDD !important; + background-color: #DDD !important; } #provider_order_list input, #service_order_list input { - margin: 0px 2px; + margin: 0px 2px; } #config .tip_scale label span.component-title { - width: 85px !important; - font-size: 12px !important; - margin-top: 2px !important; + width: 85px !important; + font-size: 12px !important; + margin-top: 2px !important; } #config .tip_scale label span.component-desc { - margin-left: 120px !important; - width: 220px !important; + margin-left: 120px !important; + width: 220px !important; } .infoTableHeader, .infoTableCell { - padding: 5px; + padding: 5px; } .infoTableSeperator { - border-top: 1px dotted #666666; + border-top: 1px dotted #666666; } [class^="icon16-"], [class*=" icon16-"] { - background-image: url("../images/glyphicons-config-black.png"); - background-position: -40px 0; - background-repeat: no-repeat; - display: inline-block; - height: 16px; - line-height: 16px; - vertical-align: text-top; - width: 16px; + background-image: url("../images/glyphicons-config-black.png"); + background-position: -40px 0; + background-repeat: no-repeat; + display: inline-block; + height: 16px; + line-height: 16px; + vertical-align: text-top; + width: 16px; } .icon16-github { - background-position: 0 0; + background-position: 0 0; } .icon16-mirc { - background-position: -20px 0; + background-position: -20px 0; } .icon16-sb { - background-position: -40px 0; + background-position: -40px 0; } .icon16-web { - background-position: -60px 0; + background-position: -60px 0; } .icon16-win { - background-position: -80px 0; + background-position: -80px 0; } /* ======================================================================= @@ -1721,42 +1721,42 @@ config_postProcessing.mako ========================================================================== */ #config div.example { - padding: 10px; background-color: #efefef; + padding: 10px; background-color: #efefef; } .Key { - width: 100%; - padding: 6px; - font-size: 13px; - background-color: #f4f4f4; - border: 1px solid #ccc; - border-collapse: collapse; - border-spacing: 0; + width: 100%; + padding: 6px; + font-size: 13px; + background-color: #f4f4f4; + border: 1px solid #ccc; + border-collapse: collapse; + border-spacing: 0; } .Key th, .tableHeader { - padding: 3px 9px; - margin: 0; - color: #fff; - text-align: center; - background: none repeat scroll 0 0 #666; + padding: 3px 9px; + margin: 0; + color: #fff; + text-align: center; + background: none repeat scroll 0 0 #666; } .Key td { - padding: 1px 5px !important; + padding: 1px 5px !important; } .Key tr { - border-bottom: 1px solid #ccc; + border-bottom: 1px solid #ccc; } .Key tr.even { - background-color: #dfdede; + background-color: #dfdede; } .legend { - position: relative; - top: 2px; + position: relative; + top: 2px; } /* ======================================================================= @@ -1764,58 +1764,58 @@ config_notifications.mako ========================================================================== */ div.metadata_options_wrapper { - float: left; - width: 190px; + float: left; + width: 190px; } div.metadata_example_wrapper { - float: right; - width: 325px; + float: right; + width: 325px; } div.metadata_options { - padding: 7px; - overflow: auto; - background: #f5f1e4; - border: 1px solid #ccc; + padding: 7px; + overflow: auto; + background: #f5f1e4; + border: 1px solid #ccc; } div.metadata_options label:hover { - color: #fff; - background-color: #57442b; - cursor: pointer; + color: #fff; + background-color: #57442b; + cursor: pointer; } div.metadata_options label { - display: block; - padding-left: 7px; - line-height: 20px; - color: #036; + display: block; + padding-left: 7px; + line-height: 20px; + color: #036; } div.metadata_example { - padding: 8px; + padding: 8px; } div.metadata_example label { - display: block; - line-height: 21px; - color: #000; - cursor: pointer; + display: block; + line-height: 21px; + color: #000; + cursor: pointer; } div.metadataDiv .disabled { - color: #ccc; + color: #ccc; } .notifier-icon { - float: left; - margin: 6px 4px 0px 0px; + float: left; + margin: 6px 4px 0px 0px; } .warning { - border-color: #F89406; - background: url("../images/warning16.png") no-repeat right 5px center #fff; + border-color: #F89406; + background: url("../images/warning16.png") no-repeat right 5px center #fff; } /* ======================================================================= @@ -1823,56 +1823,56 @@ manage*.mako ========================================================================== */ .manageTable th { - white-space: normal; - line-height: 24px; + white-space: normal; + line-height: 24px; } .manageTable td.tableright { - text-align: left; + text-align: left; } td.tableright { - text-align: center; + text-align: center; } .optionWrapper { - width: 450px; - margin-left: auto; - margin-right: auto; - padding: 6px 12px; + width: 450px; + margin-left: auto; + margin-right: auto; + padding: 6px 12px; } .optionWrapper span.selectTitle { - float: left; - text-align: left; - vertical-align: middle; - width: 225px; - padding: 6px 0px; + float: left; + text-align: left; + vertical-align: middle; + width: 225px; + padding: 6px 0px; } .optionWrapper div.selectChoices { - float: left; - width: 175px; - margin-left: 25px; + float: left; + width: 175px; + margin-left: 25px; } .optionWrapper br { - clear: both; + clear: both; } .manageCustom { - text-align: center; - padding: 6px; - margin-left: 25px; + text-align: center; + padding: 6px; + margin-left: 25px; } .separator { - font-size: 90%; - color: #333333; + font-size: 90%; + color: #333333; } a.whitelink { - color: #fff; + color: #fff; } /* ======================================================================= @@ -1880,168 +1880,168 @@ Global ========================================================================== */ span.path { - padding: 3px 6px; - color: #8b0000; - background-color: #f5f1e4; + padding: 3px 6px; + color: #8b0000; + background-color: #f5f1e4; } .align-left { - text-align: left; + text-align: left; } .h2footer { - margin: -45px 0 8px; - line-height: 18px; + margin: -45px 0 8px; + line-height: 18px; } span.quality { - font: 12px/13px "Open Sans", verdana, sans-serif; - background-image:-webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - background-image:-moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - background-image:-o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - background-image:linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - -webkit-box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); - box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); - text-shadow: 0px 1px rgba(0, 0, 0, 0.8); - color: #FFFFFF; - display: inline-block; - padding: 2px 4px; - text-align: center; - vertical-align: baseline; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + font: 12px/13px "Open Sans", verdana, sans-serif; + background-image:-webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); + background-image:-moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); + background-image:-o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); + background-image:linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); + -webkit-box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); + box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); + text-shadow: 0px 1px rgba(0, 0, 0, 0.8); + color: #FFFFFF; + display: inline-block; + padding: 2px 4px; + text-align: center; + vertical-align: baseline; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; } span.any-hd { - background-color: #2672b6; - background: repeating-linear-gradient( - -45deg, - #2672b6, - #2672b6 10px, - #5b990d 10px, - #5b990d 20px - ); + background-color: #2672b6; + background: repeating-linear-gradient( + -45deg, + #2672b6, + #2672b6 10px, + #5b990d 10px, + #5b990d 20px + ); } span.Custom { - background-color: #621993; + background-color: #621993; } span.HD { - background-color: #2672B6; + background-color: #2672B6; } span.HDTV { - background-color: #2672B6; + background-color: #2672B6; } span.HD720p { - background-color: #5b990d; + background-color: #5b990d; } span.HD1080p { - background-color: #2672B6; + background-color: #2672B6; } span.RawHD { - background-color: #cd7300; + background-color: #cd7300; } span.RawHDTV { - background-color: #cd7300; + background-color: #cd7300; } span.SD { - background-color: #BE2625; + background-color: #BE2625; } span.SDTV { - background-color: #BE2625; + background-color: #BE2625; } span.SDDVD { - background-color: #BE2625; + background-color: #BE2625; } span.Any { - background-color: #666; + background-color: #666; } span.Unknown { - background-color: #999; + background-color: #999; } span.Proper { - background-color: #3F7F00; + background-color: #3F7F00; } span.false { - color: #993333; - /* red */ + color: #993333; + /* red */ } span.true { - color: #669966; - /* green */ + color: #669966; + /* green */ } option.flag { - padding-left: 35px; - background-repeat: no-repeat; - background-position: 10px 50%; + padding-left: 35px; + background-repeat: no-repeat; + background-position: 10px 50%; } /* Anime section for editShow */ .bwlWrapper { - height:auto; - margin: 0 auto; + height:auto; + margin: 0 auto; } #Anime { - clear: both; - overflow-x: hidden; - overflow-y: hidden; - font-size: 14px; + clear: both; + overflow-x: hidden; + overflow-y: hidden; + font-size: 14px; } #Anime div.component-group-desc { - float: left; - width: 165px; + float: left; + width: 165px; } #Anime div.component-group-desc p { - margin-bottom: 0.4em; - margin-left: 0; - margin-right: 0; - margin-top: 0.4em; - width: 95%; + margin-bottom: 0.4em; + margin-left: 0; + margin-right: 0; + margin-top: 0.4em; + width: 95%; } div.blackwhitelist{ - float:left; - text-align: center; + float:left; + text-align: center; } div.blackwhitelist input { - margin: 5px 0px; + margin: 5px 0px; } div.blackwhitelist.pool select{ - width: 230px; + width: 230px; } div.blackwhitelist.white select, div.blackwhitelist.black select { - width: 150px; + width: 150px; } div.blackwhitelist span { - display: block; - text-align: center; + display: block; + text-align: center; } div.blackwhitelist.anidb, div.blackwhitelist.manual { - margin: 7px 0px; + margin: 7px 0px; } /* ======================================================================= @@ -2049,97 +2049,97 @@ bootstrap Overrides ========================================================================== */ body { - padding-top: 60px; - overflow-y: scroll; - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #000; + padding-top: 60px; + overflow-y: scroll; + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #000; } html * { - outline: 0 !important; + outline: 0 !important; } input[type="checkbox"] { - margin: 2px 0px 0px; - line-height: normal; + margin: 2px 0px 0px; + line-height: normal; } input[type="radio"] { - margin: 2px 0px 0px; - line-height: normal; + margin: 2px 0px 0px; + line-height: normal; } input, textarea, select, .uneditable-input { - width: auto; - color: #000; + width: auto; + color: #000; } .container-fluid { - margin-left: 10px; - margin-right: 10px; + margin-left: 10px; + margin-right: 10px; } .navbar-brand { - padding: 0px; + padding: 0px; } /* navbar styling */ .navbar-default .navbar-brand { - color: #ffffff; + color: #ffffff; } .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { - color: #ffffff; - background-color: transparent; + color: #ffffff; + background-color: transparent; } .navbar-default .navbar-text { - color: #dddddd; + color: #dddddd; } .navbar-default .navbar-nav > li > a { - color: #dddddd; + color: #dddddd; } .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; + color: #ffffff; + background-color: transparent; } .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #333333; + color: #ffffff; + background-color: #333333; } .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; + color: #cccccc; + background-color: transparent; } .navbar-default .navbar-toggle { - border-color: #cccccc; + border-color: #cccccc; } .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { - background-color: #333333; + background-color: #333333; } .navbar-default .navbar-toggle .icon-bar { - background-color: #333333; + background-color: #333333; } .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { - background-color: #333333; - color: #ffffff; + background-color: #333333; + color: #ffffff; } @media (max-width: 767px) { @@ -2166,92 +2166,92 @@ input, textarea, select, .uneditable-input { } .navbar-default .navbar-link { - color: #dddddd; + color: #dddddd; } .navbar-default .navbar-link:hover { - color: #ffffff; + color: #ffffff; } .navbar-default .btn-link { - color: #98978b; + color: #98978b; } .navbar-default .btn-link:hover, .navbar-default .btn-link:focus { - color: #dddddd; + color: #dddddd; } .navbar-default .btn-link[disabled]:hover, fieldset[disabled] .navbar-default .btn-link:hover, .navbar-default .btn-link[disabled]:focus, fieldset[disabled] .navbar-default .btn-link:focus { - color: #cccccc; + color: #cccccc; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #F5F5F5; + color: #262626; + text-decoration: none; + background-color: #F5F5F5; } .dropdown-menu > li > a { - padding: 4px 36px 4px 20px; + padding: 4px 36px 4px 20px; } .dropdown-menu { - background-color: #F5F1E4; - border: 1px solid rgba(0, 0, 0, 0.15); - box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176); + background-color: #F5F1E4; + border: 1px solid rgba(0, 0, 0, 0.15); + box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176); } .form-control { - color: #000000; + color: #000000; } .form-control-inline { - min-width: 0; - width: auto; - display: inline; + min-width: 0; + width: auto; + display: inline; } .btn { - display: inline-block; - *display: inline; - padding: 4px 10px 4px; - margin-bottom: 0; - *margin-left: .3em; - font-size: 12px; - line-height: 16px; - *line-height: 20px; - color: #333333; - text-align: center; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - vertical-align: middle; - cursor: pointer; - background-color: #f5f5f5; - *background-color: #e6e6e6; - background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); - background-image: linear-gradient(top, #ffffff, #e6e6e6); - background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); - background-repeat: repeat-x; - border: 1px solid #cccccc; - *border: 0; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - border-color: #e6e6e6 #e6e6e6 #bfbfbf; - border-bottom-color: #b3b3b3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); - *zoom: 1; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + display: inline-block; + *display: inline; + padding: 4px 10px 4px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 12px; + line-height: 16px; + *line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(top, #ffffff, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn:hover, @@ -2259,88 +2259,88 @@ fieldset[disabled] .navbar-default .btn-link:focus { .btn.active, .btn.disabled, .btn[disabled] { - background-color: #e6e6e6; - *background-color: #d9d9d9; + background-color: #e6e6e6; + *background-color: #d9d9d9; } .btn:active, .btn.active { - background-color: #cccccc \9; + background-color: #cccccc \9; } .btn:first-child { - *margin-left: 0; + *margin-left: 0; } .btn:hover { - color: #333333; - text-decoration: none; - background-color: #e6e6e6; - *background-color: #d9d9d9; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -ms-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + *background-color: #d9d9d9; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -ms-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; } .btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; } .btn.active, .btn:active { - background-color: #e6e6e6; - background-color: #d9d9d9 \9; - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn.disabled, .btn[disabled] { - cursor: default; - background-color: #e6e6e6; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; + cursor: default; + background-color: #e6e6e6; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } .btn-large { - padding: 9px 14px; - font-size: 15px; - line-height: normal; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; + padding: 9px 14px; + font-size: 15px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } .btn-large [class^="icon-"] { - margin-top: 1px; + margin-top: 1px; } .btn-small { - padding: 5px 9px; - font-size: 11px; - line-height: 16px; + padding: 5px 9px; + font-size: 11px; + line-height: 16px; } .btn-small [class^="icon-"] { - margin-top: -1px; + margin-top: -1px; } .btn-mini { - padding: 2px 6px; - font-size: 11px; - line-height: 14px; + padding: 2px 6px; + font-size: 11px; + line-height: 14px; } .btn-primary, @@ -2355,8 +2355,8 @@ fieldset[disabled] .navbar-default .btn-link:focus { .btn-info:hover, .btn-inverse, .btn-inverse:hover { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .btn-primary.active, @@ -2365,23 +2365,23 @@ fieldset[disabled] .navbar-default .btn-link:focus { .btn-success.active, .btn-info.active, .btn-inverse.active { - color: rgba(255, 255, 255, 0.75); + color: rgba(255, 255, 255, 0.75); } .btn-primary { - background-color: #0074cc; - *background-color: #0055cc; - background-image: -ms-linear-gradient(top, #0088cc, #0055cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); - background-image: -o-linear-gradient(top, #0088cc, #0055cc); - background-image: -moz-linear-gradient(top, #0088cc, #0055cc); - background-image: linear-gradient(top, #0088cc, #0055cc); - background-repeat: repeat-x; - border-color: #0055cc #0055cc #003580; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); + background-color: #0074cc; + *background-color: #0055cc; + background-image: -ms-linear-gradient(top, #0088cc, #0055cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); + background-image: -o-linear-gradient(top, #0088cc, #0055cc); + background-image: -moz-linear-gradient(top, #0088cc, #0055cc); + background-image: linear-gradient(top, #0088cc, #0055cc); + background-repeat: repeat-x; + border-color: #0055cc #0055cc #003580; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); } .btn-primary:hover, @@ -2389,29 +2389,29 @@ fieldset[disabled] .navbar-default .btn-link:focus { .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { - background-color: #0055cc; - *background-color: #004ab3; + background-color: #0055cc; + *background-color: #004ab3; } .btn-primary:active, .btn-primary.active { - background-color: #004099 \9; + background-color: #004099 \9; } .btn-warning { - background-color: #faa732; - *background-color: #f89406; - background-image: -ms-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(top, #fbb450, #f89406); - background-repeat: repeat-x; - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); + background-color: #faa732; + *background-color: #f89406; + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); } .btn-warning:hover, @@ -2419,29 +2419,29 @@ fieldset[disabled] .navbar-default .btn-link:focus { .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { - background-color: #f89406; - *background-color: #df8505; + background-color: #f89406; + *background-color: #df8505; } .btn-warning:active, .btn-warning.active { - background-color: #c67605 \9; + background-color: #c67605 \9; } .btn-danger { - background-color: #da4f49; - *background-color: #bd362f; - background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(top, #ee5f5b, #bd362f); - background-repeat: repeat-x; - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(top, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); } .btn-danger:hover, @@ -2449,29 +2449,29 @@ fieldset[disabled] .navbar-default .btn-link:focus { .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { - background-color: #bd362f; - *background-color: #a9302a; + background-color: #bd362f; + *background-color: #a9302a; } .btn-danger:active, .btn-danger.active { - background-color: #942a25 \9; + background-color: #942a25 \9; } .btn-success { - background-color: #5bb75b; - *background-color: #51a351; - background-image: -ms-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(top, #62c462, #51a351); - background-repeat: repeat-x; - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -ms-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(top, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); } .btn-success:hover, @@ -2479,29 +2479,29 @@ fieldset[disabled] .navbar-default .btn-link:focus { .btn-success.active, .btn-success.disabled, .btn-success[disabled] { - background-color: #51a351; - *background-color: #499249; + background-color: #51a351; + *background-color: #499249; } .btn-success:active, .btn-success.active { - background-color: #408140 \9; + background-color: #408140 \9; } .btn-info { - background-color: #49afcd; - *background-color: #2f96b4; - background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(top, #5bc0de, #2f96b4); - background-repeat: repeat-x; - border-color: #2f96b4 #2f96b4 #1f6377; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(top, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); } .btn-info:hover, @@ -2509,29 +2509,29 @@ fieldset[disabled] .navbar-default .btn-link:focus { .btn-info.active, .btn-info.disabled, .btn-info[disabled] { - background-color: #2f96b4; - *background-color: #2a85a0; + background-color: #2f96b4; + *background-color: #2a85a0; } .btn-info:active, .btn-info.active { - background-color: #24748c \9; + background-color: #24748c \9; } .btn-inverse { - background-color: #414141; - *background-color: #222222; - background-image: -ms-linear-gradient(top, #555555, #222222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222)); - background-image: -webkit-linear-gradient(top, #555555, #222222); - background-image: -o-linear-gradient(top, #555555, #222222); - background-image: -moz-linear-gradient(top, #555555, #222222); - background-image: linear-gradient(top, #555555, #222222); - background-repeat: repeat-x; - border-color: #222222 #222222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); + background-color: #414141; + *background-color: #222222; + background-image: -ms-linear-gradient(top, #555555, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222)); + background-image: -webkit-linear-gradient(top, #555555, #222222); + background-image: -o-linear-gradient(top, #555555, #222222); + background-image: -moz-linear-gradient(top, #555555, #222222); + background-image: linear-gradient(top, #555555, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); } .btn-inverse:hover, @@ -2539,46 +2539,46 @@ fieldset[disabled] .navbar-default .btn-link:focus { .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { - background-color: #222222; - *background-color: #151515; + background-color: #222222; + *background-color: #151515; } .btn-inverse:active, .btn-inverse.active { - background-color: #080808 \9; + background-color: #080808 \9; } .btn-xs { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; } @media(min-width:768px){ - .navbar .nav > li > .dropdown-menu:after { - position: absolute; - top: -6px; - right: 12px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #F5F1E4; - border-left: 6px solid transparent; - content: ""; - } + .navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + right: 12px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #F5F1E4; + border-left: 6px solid transparent; + content: ""; + } } label { - font-weight: normal; + font-weight: normal; } pre { - border: 1px solid; + border: 1px solid; } .alert { - padding: 10px; - text-align: center; + padding: 10px; + text-align: center; } /* ======================================================================= @@ -2586,49 +2586,49 @@ input sizing (for config pages) ========================================================================== */ #config select { - min-width: 0; - width: auto; - display: inline; - margin-top: -4px; + min-width: 0; + width: auto; + display: inline; + margin-top: -4px; } .btn-inline { - margin-top: -3px; + margin-top: -3px; } .input75 { - width: 75px; - margin-top: -4px; + width: 75px; + margin-top: -4px; } .input100 { - width: 100px; - margin-top: -4px; + width: 100px; + margin-top: -4px; } .input150 { - width: 150px; - margin-top: -4px; + width: 150px; + margin-top: -4px; } .input200 { - width: 200px; - margin-top: -4px; + width: 200px; + margin-top: -4px; } .input250 { - width: 250px; - margin-top: -4px; + width: 250px; + margin-top: -4px; } .input300 { - width: 300px; - margin-top: -4px; + width: 300px; + margin-top: -4px; } .input350 { - width: 350px; - margin-top: -4px; + width: 350px; + margin-top: -4px; } /* ======================================================================= @@ -2636,43 +2636,43 @@ browser.css overrides ========================================================================== */ #fileBrowserDialog { - overflow-y: auto; + overflow-y: auto; } #fileBrowserDialog ul li a:hover { - color: #00f; - background: none; + color: #00f; + background: none; } #fileBrowserDialog h2 { - font-size: 20px; + font-size: 20px; } .ui-autocomplete { - max-height: 180px; - overflow-x: hidden; - overflow-y: auto; + max-height: 180px; + overflow-x: hidden; + overflow-y: auto; } /* IE6 hack since it doesn't support max-height */ * html .ui-autocomplete { - height: 180px; - padding-right: 20px; + height: 180px; + padding-right: 20px; } .ui-autocomplete .ui-menu-item .ui-state-focus { - color: #fff; - background: none; - background-color: #0a246a; + color: #fff; + background: none; + background-color: #0a246a; } /* restore 1.8.x resize handle on dialog button pane */ .ui-dialog .ui-resizable-se { - width: 14px; - height: 14px; - right: 3px; - bottom: 3px; - background-position: -80px -224px; + width: 14px; + height: 14px; + right: 3px; + bottom: 3px; + background-position: -80px -224px; } /* ======================================================================= @@ -2680,120 +2680,120 @@ formWizard.css ========================================================================== */ fieldset.sectionwrap { - width: 800px; - padding: 5px; - text-align: left; - border-width: 0; + width: 800px; + padding: 5px; + text-align: left; + border-width: 0; } legend.legendStep { - color: #57442b; - margin-bottom: 0px; + color: #57442b; + margin-bottom: 0px; } div.stepsguide { - margin-bottom: 15px; - overflow: hidden; - text-align: left; - cursor: pointer; + margin-bottom: 15px; + overflow: hidden; + text-align: left; + cursor: pointer; } div.stepsguide .step { - float: left; - width: 33%; - font: bold 24px Arial; + float: left; + width: 33%; + font: bold 24px Arial; } div.stepsguide .step p { - margin: 12px 0; - border-bottom: 4px solid #57442b; + margin: 12px 0; + border-bottom: 4px solid #57442b; } div.stepsguide .disabledstep { - color: #c4c4c4; + color: #c4c4c4; } div.stepsguide .disabledstep p { - border-bottom: 4px solid #8a775e; + border-bottom: 4px solid #8a775e; } div.stepsguide .step .smalltext { - font-size: 13px; - font-weight: normal; + font-size: 13px; + font-weight: normal; } div.formpaginate { - width: 800px; - margin-top: 1em; - overflow: auto; - font-weight: bold; - text-align: center; + width: 800px; + margin-top: 1em; + overflow: auto; + font-weight: bold; + text-align: center; } div.formpaginate .prev, div.formpaginate .next { - padding: 3px 6px; - color: #fff; - cursor: hand; - cursor: pointer; - background: #57442b; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; + padding: 3px 6px; + color: #fff; + cursor: hand; + cursor: pointer; + background: #57442b; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } .stepDiv { - padding: 15px 0; + padding: 15px 0; } #tabs .nocheck, .stepDiv .nocheck { - padding-left: 16px; + padding-left: 16px; } #tabs label span.component-title, .stepDiv label span.component-title { - padding-bottom: 10px; - float: left; - width: 172px; - margin-right: 10px; - font-size: 13px; - font-weight: bold; + padding-bottom: 10px; + float: left; + width: 172px; + margin-right: 10px; + font-size: 13px; + font-weight: bold; } #tabs label span.component-desc, .stepDiv label span.component-desc { - padding-bottom: 10px; - font-size: 12px; - font-weight: normal; - display: block; - width: 475px; - margin-left: 182px; + padding-bottom: 10px; + font-size: 12px; + font-weight: normal; + display: block; + width: 475px; + margin-left: 182px; } div.field-pair input { - margin-right: 6px; - float: left; + margin-right: 6px; + float: left; } /* step 3 related */ #customQuality { - display: block; - padding: 10px 0; - overflow: hidden; - clear: both; + display: block; + padding: 10px 0; + overflow: hidden; + clear: both; } #customQualityWrapper div.component-group-desc { - float: left; - width: 172px; - margin-right: 10px; + float: left; + width: 172px; + margin-right: 10px; } #customQualityWrapper div.component-group-desc p { - width: 85%; - margin: .8em 0; - font-size: 1.13em; - color: #666; + width: 85%; + margin: .8em 0; + font-size: 1.13em; + color: #666; } /* ======================================================================= @@ -2801,51 +2801,51 @@ tablesorter.css ========================================================================== */ .tablesorter { - width: 100%; - margin-right: auto; - margin-left: auto; - color: #000; - text-align: left; - background-color: #fff; - border-spacing: 0; + width: 100%; + margin-right: auto; + margin-left: auto; + color: #000; + text-align: left; + background-color: #fff; + border-spacing: 0; } .tablesorter th, .tablesorter td { - padding: 4px; - border-top: #fff 1px solid; - border-left: #fff 1px solid; - vertical-align: middle; + padding: 4px; + border-top: #fff 1px solid; + border-left: #fff 1px solid; + vertical-align: middle; } /* remove extra border from left edge */ .tablesorter th:first-child, .tablesorter td:first-child { - border-left: none; + border-left: none; } .tablesorter th { - color: #fff; - text-align: center; - text-shadow: -1px -1px 0 rgba(0,0,0,0.3); - background-color: #333; - border-collapse: collapse; - font-weight: normal; + color: #fff; + text-align: center; + text-shadow: -1px -1px 0 rgba(0,0,0,0.3); + background-color: #333; + border-collapse: collapse; + font-weight: normal; } .tablesorter .tablesorter-header { - padding: 4px 18px 4px 18px; - cursor: pointer; - background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); - background-position: center right; - background-repeat: no-repeat; - /* background-image: url(../images/tablesorter/bg.gif); */ + padding: 4px 18px 4px 18px; + cursor: pointer; + background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); + background-position: center right; + background-repeat: no-repeat; + /* background-image: url(../images/tablesorter/bg.gif); */ } .tablesorter thead .tablesorter-headerDesc { - background-color: #555; - background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); - /* background-image: url(../images/tablesorter/asc.gif); */ + background-color: #555; + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); + /* background-image: url(../images/tablesorter/asc.gif); */ } .tablesorter thead .tablesorter-headerAsc { @@ -2855,66 +2855,66 @@ tablesorter.css } .tablesorter thead .sorter-false { - background-image: none; - padding: 4px; - cursor: default; + background-image: none; + padding: 4px; + cursor: default; } thead.tablesorter-stickyHeader { - border-top: 2px solid #fff; - border-bottom: 2px solid #fff; + border-top: 2px solid #fff; + border-bottom: 2px solid #fff; } /* Zebra Widget - row alternating colors */ .tablesorter tr.odd, .sickbeardTable tr.odd { - background-color: #f5f1e4; + background-color: #f5f1e4; } .tablesorter tr.even, .sickbeardTable tr.even { - background-color: #dfdacf; + background-color: #dfdacf; } /* filter widget */ .tablesorter .filtered { - display: none; + display: none; } .tablesorter input.tablesorter-filter { - width: 98%; - height: auto; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + width: 98%; + height: auto; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } .tablesorter tr.tablesorter-filter-row, .tablesorter tr.tablesorter-filter-row td { - text-align: center; - background: #eee; - border-bottom: 1px solid #ddd; + text-align: center; + background: #eee; + border-bottom: 1px solid #ddd; } /* optional disabled input styling */ .tablesorter input.tablesorter-filter-row .disabled { - display: none; + display: none; } .tablesorter-header-inner { - padding: 0 2px; - text-align: center; + padding: 0 2px; + text-align: center; } .tablesorter tfoot tr { - color: #fff; - text-align: center; - text-shadow: -1px -1px 0 rgba(0,0,0,0.3); - background-color: #333; - border-collapse: collapse; + color: #fff; + text-align: center; + text-shadow: -1px -1px 0 rgba(0,0,0,0.3); + background-color: #333; + border-collapse: collapse; } .tablesorter tfoot a { - color:#fff; - text-decoration: none; + color:#fff; + text-decoration: none; } /* ======================================================================= @@ -2922,138 +2922,138 @@ token-input.css ========================================================================== */ ul.token-input-list { - overflow: hidden; - height: auto !important; - height: 1%; - width: 273px; - border: 1px solid #ccc; - cursor: text; - font-size: 10px; - font-family: Verdana; - z-index: 999; - margin: 0; - padding: 0 0 1px 0; - background-color: #fff; - list-style-type: none; + overflow: hidden; + height: auto !important; + height: 1%; + width: 273px; + border: 1px solid #ccc; + cursor: text; + font-size: 10px; + font-family: Verdana; + z-index: 999; + margin: 0; + padding: 0 0 1px 0; + background-color: #fff; + list-style-type: none; /* clear: left; */ - border-top-left-radius: 3px; - border-top-right-radius: 3px; - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; } ul.token-input-list li { - list-style-type: none; + list-style-type: none; } ul.token-input-list li input { - border: 0; - padding: 3px 4px; - background-color: white; + border: 0; + padding: 3px 4px; + background-color: white; /* -webkit-appearance: caret; */ } li.token-input-token { - overflow: hidden; - height: auto !important; - height: 1%; - margin: 3px; - padding: 3px 5px 0 5px; - background-color: #d0efa0; - color: #000; - font-weight: bold; - cursor: default; - display: block; + overflow: hidden; + height: auto !important; + height: 1%; + margin: 3px; + padding: 3px 5px 0 5px; + background-color: #d0efa0; + color: #000; + font-weight: bold; + cursor: default; + display: block; } li.token-input-token img { - padding-top: 7px; - padding-right: 4px; - float: left; + padding-top: 7px; + padding-right: 4px; + float: left; } li.token-input-token input { - padding-top: 2px !important; - padding-right: 4px !important; - float: left; + padding-top: 2px !important; + padding-right: 4px !important; + float: left; } li.token-input-token p { - float: left; - padding: 0; - margin: 0; - line-height: 2.0 !important; + float: left; + padding: 0; + margin: 0; + line-height: 2.0 !important; } li.token-input-token span { - float: right; - color: #777; - cursor: pointer; + float: right; + color: #777; + cursor: pointer; } li.token-input-selected-token { - background-color: #08844e; - color: #fff; + background-color: #08844e; + color: #fff; } li.token-input-selected-token span { - color: #bbb; + color: #bbb; } li.token-input-input-token input { - margin: 3px 3px 3px 3px !important; + margin: 3px 3px 3px 3px !important; } div.token-input-dropdown { - position: absolute; - width: 273px; - overflow: hidden; - border-left: 1px solid; - border-right: 1px solid; - border-bottom: 1px solid; - cursor: default; - font-size: 11px; - font-family: Verdana; - z-index: 1; + position: absolute; + width: 273px; + overflow: hidden; + border-left: 1px solid; + border-right: 1px solid; + border-bottom: 1px solid; + cursor: default; + font-size: 11px; + font-family: Verdana; + z-index: 1; } div.token-input-dropdown p { - margin: 0; - padding: 3px; - font-weight: bold; - color: #777; + margin: 0; + padding: 3px; + font-weight: bold; + color: #777; } div.token-input-dropdown ul { - margin: 0; - padding: 0; + margin: 0; + padding: 0; } div.token-input-dropdown ul li { - background-color: #fff; - padding: 3px; - list-style-type: none; + background-color: #fff; + padding: 3px; + list-style-type: none; } div.token-input-dropdown ul li.token-input-dropdown-item { - background-color: #fafafa; + background-color: #fafafa; } div.token-input-dropdown ul li.token-input-dropdown-item2 { - background-color: #fff; + background-color: #fff; } div.token-input-dropdown ul li em { - font-weight: bold; - font-style: normal; + font-weight: bold; + font-style: normal; } div.token-input-dropdown ul li.token-input-selected-dropdown-item { - background-color: #6196c2; + background-color: #6196c2; } span.token-input-delete-token { - margin: 0 1px; + margin: 0 1px; } .red-text {color:#d33} @@ -3061,11 +3061,11 @@ span.token-input-delete-token { .nextline-block {display:block} .trakt-image { - display: block; - width: 100%; - height: 100%; - z-index: 0; - background-image: url(/images/poster-dark.jpg) + display: block; + width: 100%; + height: 100%; + z-index: 0; + background-image: url(/images/poster-dark.jpg) } /* ======================================================================= @@ -3073,94 +3073,94 @@ jquery.confirm.css ========================================================================== */ #confirmOverlay{ - width: 100%; - height: 100%; - position: fixed; - top: 0; - left: 0; - background: url('../images/bg.gif'); - background: -moz-linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)) repeat-x rgba(0,0,0,0.5); - background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.5))) repeat-x rgba(0,0,0,0.5); - z-index: 100000; + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background: url('../images/bg.gif'); + background: -moz-linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)) repeat-x rgba(0,0,0,0.5); + background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.5))) repeat-x rgba(0,0,0,0.5); + z-index: 100000; } #confirmBox{ - background: #F5F1E4; - width: 460px; - position: fixed; - left: 50%; - top: 50%; - margin: -130px 0 0 -230px; - border: 1px solid #111; - box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.175); + background: #F5F1E4; + width: 460px; + position: fixed; + left: 50%; + top: 50%; + margin: -130px 0 0 -230px; + border: 1px solid #111; + box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.175); } #confirmBox h1, #confirmBox p{ - padding: 6px 10px; + padding: 6px 10px; } #confirmBox h1 { - background-color: #333; - border-bottom: 1px solid #111; - color: #fff; - margin: 0; - font-size: 22px; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); + background-color: #333; + border-bottom: 1px solid #111; + color: #fff; + margin: 0; + font-size: 22px; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); } #confirmBox p { - padding-top: 20px; - color: #000; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.75); + padding-top: 20px; + color: #000; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.75); } #confirmButtons { - padding: 15px 0; - text-align: center; + padding: 15px 0; + text-align: center; } #confirmBox .button { - margin-right: 15px; - padding: 2px 20px; - text-decoration: none; - display: inline-block; - color: #fff; - text-align:center; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); - background-clip: padding-box; - border: 1px solid #111; - border-radius: 3px; - cursor: pointer; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - background-image: -moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - background-image: -o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - background-image: linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - -webkit-box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); - box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); + margin-right: 15px; + padding: 2px 20px; + text-decoration: none; + display: inline-block; + color: #fff; + text-align:center; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); + background-clip: padding-box; + border: 1px solid #111; + border-radius: 3px; + cursor: pointer; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); + background-image: -moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); + background-image: -o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); + background-image: linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); + -webkit-box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); + box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); } #confirmBox .button:last-child { - margin-right:0; + margin-right:0; } #confirmBox .green { - background-color: #3F7636; + background-color: #3F7636; } #confirmBox .green:hover { - background-color: #48873E; + background-color: #48873E; } #confirmBox .red { - background-color: #8D2D2B; + background-color: #8D2D2B; } #confirmBox .red:hover { - background-color: #A13331; + background-color: #A13331; } /* ======================================================================= @@ -3168,12 +3168,12 @@ pnotify.css ========================================================================== */ .ui-pnotify-sticker { - margin-top: -12px; + margin-top: -12px; } .ui-pnotify-closer { - margin-top: -12px; - margin-right: -10px; + margin-top: -12px; + margin-right: -10px; } /* ======================================================================= @@ -3181,7 +3181,7 @@ login.css ========================================================================== */ .login { - display: block; + display: block; } .login h1 { @@ -3251,43 +3251,43 @@ IMDB Popular ========================================================================== */ .popularShow{ - margin-bottom:30px; + margin-bottom:30px; } .popularShow h3{ - padding:0px; - margin:0px; - display:inline-block; - margin-right:30px; + padding:0px; + margin:0px; + display:inline-block; + margin-right:30px; } .popularShow .left{ - float:left; - width:100px; + float:left; + width:100px; } .popularShow .right{ - float:left; - width:600px; + float:left; + width:600px; } .popularShow .year{ - font-style:italic; - opacity:0.7; + font-style:italic; + opacity:0.7; } .popularShow .coverImage{ - width:80%; - padding-left:20px; - margin-top:4px; + width:80%; + padding-left:20px; + margin-top:4px; } .popularShow .rating{ - font-size:90%; - display:inline-block; - margin-left:0px; + font-size:90%; + display:inline-block; + margin-left:0px; } .popularShow p{ - margin-bottom:0px; + margin-bottom:0px; } diff --git a/gui/slick/images/network/rtp internacional.png b/gui/slick/images/network/rtp internacional.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc2db9a10bb4eb8c761adcef5f18f3828bc4a8e Binary files /dev/null and b/gui/slick/images/network/rtp internacional.png differ diff --git a/gui/slick/images/network/rtp madeira.png b/gui/slick/images/network/rtp madeira.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c4bb7e8de00f5869c8147bf067f94dbfb5fb55 Binary files /dev/null and b/gui/slick/images/network/rtp madeira.png differ diff --git a/gui/slick/images/network/rtp n.png b/gui/slick/images/network/rtp n.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ea131131caac2b0e5b0abd9d982af2df782605 Binary files /dev/null and b/gui/slick/images/network/rtp n.png differ diff --git a/gui/slick/images/network/rtp1.png b/gui/slick/images/network/rtp1.png new file mode 100644 index 0000000000000000000000000000000000000000..923298feedb8695e30feb0b31166db580aa96834 Binary files /dev/null and b/gui/slick/images/network/rtp1.png differ diff --git a/gui/slick/images/network/sic mulher.png b/gui/slick/images/network/sic mulher.png new file mode 100644 index 0000000000000000000000000000000000000000..14e0f69ae0e084b85f039dec40970b990faf6cd4 Binary files /dev/null and b/gui/slick/images/network/sic mulher.png differ diff --git a/gui/slick/images/network/sic radical.png b/gui/slick/images/network/sic radical.png new file mode 100644 index 0000000000000000000000000000000000000000..092352ae34545ba78be78a34839682dd4723c444 Binary files /dev/null and b/gui/slick/images/network/sic radical.png differ diff --git a/gui/slick/images/network/sic sempre gold.png b/gui/slick/images/network/sic sempre gold.png new file mode 100644 index 0000000000000000000000000000000000000000..c53aa2de4d03ee6278e13ec20a9356406556e6e8 Binary files /dev/null and b/gui/slick/images/network/sic sempre gold.png differ diff --git a/gui/slick/images/network/sic.png b/gui/slick/images/network/sic.png new file mode 100644 index 0000000000000000000000000000000000000000..38af9aa5459b9e8e9bf9f9906f621f28042fe098 Binary files /dev/null and b/gui/slick/images/network/sic.png differ diff --git a/gui/slick/images/network/tv cabo.png b/gui/slick/images/network/tv cabo.png new file mode 100644 index 0000000000000000000000000000000000000000..fab4bb32abee7fc1074bd5cf689112fd4f29d519 Binary files /dev/null and b/gui/slick/images/network/tv cabo.png differ diff --git a/gui/slick/js/new/config_backuprestore.js b/gui/slick/js/new/config_backuprestore.js new file mode 100644 index 0000000000000000000000000000000000000000..774e7e39dda07a91c29487ea9768e0c3037fb740 --- /dev/null +++ b/gui/slick/js/new/config_backuprestore.js @@ -0,0 +1,5 @@ +$(document).load(function(){ + $('#backupDir').fileBrowser({ title: 'Select backup folder to save to', key: 'backupPath' }); + $('#backupFile').fileBrowser({ title: 'Select backup files to restore', key: 'backupFile', includeFiles: 1 }); + $('#config-components').tabs(); +}); diff --git a/gui/slick/js/new/config_general.js b/gui/slick/js/new/config_general.js new file mode 100644 index 0000000000000000000000000000000000000000..98b5a603ce851ec8a6643d9abd1c682cdcdb485a --- /dev/null +++ b/gui/slick/js/new/config_general.js @@ -0,0 +1,18 @@ +$(document).ready(function(){ + if ($("input[name='proxy_setting']").val().length === 0) { + $("input[id='proxy_indexers']").prop('checked', false); + $("label[for='proxy_indexers']").hide(); + } + + $("input[name='proxy_setting']").on('input', function() { + if($(this).val().length === 0) { + $("input[id='proxy_indexers']").prop('checked', false); + $("label[for='proxy_indexers']").hide(); + } else { + $("label[for='proxy_indexers']").show(); + } + }); + + $('#log_dir').fileBrowser({ title: 'Select log file folder location' }); + $('#config-components').tabs(); +}); diff --git a/gui/slick/js/new/config_notifications.js b/gui/slick/js/new/config_notifications.js new file mode 100644 index 0000000000000000000000000000000000000000..c9762b0429a8f53ef0ce419bba01c493bd9eedc1 --- /dev/null +++ b/gui/slick/js/new/config_notifications.js @@ -0,0 +1,3 @@ +$(document).load(function(){ + $('#config-components').tabs(); +}); diff --git a/gui/slick/js/new/editShow.js b/gui/slick/js/new/editShow.js new file mode 100644 index 0000000000000000000000000000000000000000..4742e1631810440b6259ee9fc1465711707aba30 --- /dev/null +++ b/gui/slick/js/new/editShow.js @@ -0,0 +1,56 @@ +var all_exceptions = []; + +$('#location').fileBrowser({ title: 'Select Show Location' }); + +$('#submit').click(function(){ + all_exceptions = []; + + $("#exceptions_list option").each ( function() { + all_exceptions.push( $(this).val() ); + }); + + $("#exceptions_list").val(all_exceptions); + + if($('meta[data-var="show.is_anime"]').data('content') === 'True') generate_bwlist(); +}); +$('#addSceneName').click(function() { + var scene_ex = $('#SceneName').val(); + var option = $("<option>"); + all_exceptions = []; + + $("#exceptions_list option").each ( function() { + all_exceptions.push($(this).val()); + }); + + $('#SceneName').val(''); + + if ($.inArray(scene_ex, all_exceptions) > -1 || (scene_ex === '')) return; + + $("#SceneException").show(); + + option.attr("value",scene_ex); + option.html(scene_ex); + return option.appendTo('#exceptions_list'); +}); + +$('#removeSceneName').click(function() { + $('#exceptions_list option:selected').remove(); + + $(this).toggle_SceneException(); +}); + +$.fn.toggle_SceneException = function() { + all_exceptions = []; + + $("#exceptions_list option").each ( function() { + all_exceptions.push( $(this).val() ); + }); + + if (all_exceptions === ''){ + $("#SceneException").hide(); + } else { + $("#SceneException").show(); + } +}; + +$(this).toggle_SceneException(); diff --git a/gui/slick/js/new/history.js b/gui/slick/js/new/history.js new file mode 100644 index 0000000000000000000000000000000000000000..d1fda4e62418a0715859b5f54162a9a73765bfc0 --- /dev/null +++ b/gui/slick/js/new/history.js @@ -0,0 +1,76 @@ +$.tablesorter.addParser({ + id: 'cDate', + is: function(s) { + return false; + }, + format: function(s) { + return s; + }, + type: 'numeric' +}); + +$(document).ready(function(){ + $("#historyTable:has(tbody tr)").tablesorter({ + widgets: ['zebra', 'filter'], + sortList: [[0,1]], + textExtraction: (function(){ + if($('meta[data-var="layout"]').data('content') == 'detailed'){ + return { + 0: function(node) { return $(node).find("span").text().toLowerCase(); }, + 4: function(node) { return $(node).find("span").text().toLowerCase(); } + }; + } else { + return { + 0: function(node) { return $(node).find("span").text().toLowerCase(); }, + 1: function(node) { return $(node).find("span").text().toLowerCase(); }, + 2: function(node) { return $(node).attr("provider").toLowerCase(); }, + 5: function(node) { return $(node).attr("quality").toLowerCase(); } + }; + } + }), + headers: (function(){ + if($('meta[data-var="layout"]').data('content') == 'detailed'){ + return { + 0: { sorter: 'cDate' }, + 4: { sorter: 'quality' } + }; + } else { + return { + 0: { sorter: 'cDate' }, + 4: { sorter: false }, + 5: { sorter: 'quality' } + }; + } + }) + }); + + $('#history_limit').on('change', function() { + var url = sbRoot + '/history/?limit=' + $(this).val(); + window.location.href = url; + }); + + if(['True', 1].indexOf($('meta[data-var="sickbeard.FUZZY_DATING"]').data('content')) >= 0){ + $.timeago.settings.allowFuture = true; + $.timeago.settings.strings = { + prefixAgo: null, + prefixFromNow: 'In ', + suffixAgo: "ago", + suffixFromNow: "", + seconds: "less than a minute", + minute: "about a minute", + minutes: "%d minutes", + hour: "about an hour", + hours: "about %d hours", + day: "a day", + days: "%d days", + month: "about a month", + months: "%d months", + year: "about a year", + years: "%d years", + wordSeparator: " ", + numbers: [] + }; + $("[datetime]").timeago(); + } + +}); diff --git a/gui/slick/js/new/home.js b/gui/slick/js/new/home.js index a71dc84faca2a3a929846ee095d6b4313b329e1a..30ece0195542a13156644d703c2615992f33a54a 100644 --- a/gui/slick/js/new/home.js +++ b/gui/slick/js/new/home.js @@ -56,13 +56,18 @@ $.tablesorter.addParser({ }); $(document).ready(function(){ + // Resets the tables sorting, needed as we only use a single call for both tables in tablesorter + $('.resetsorting').on('click', function(){ + $('table').trigger('filterReset'); + }); + // This needs to be refined to work a little faster. $('.progressbar').each(function(progressbar){ var showId = $(this).data('show-id'); var percentage = $(this).data('progress-percentage'); var classToAdd = percentage == 100 ? 100 : percentage > 80 ? 80 : percentage > 60 ? 60 : percentage > 40 ? 40 : 20; $(this).progressbar({ value: percentage }); - $(this).data('progress-text') ? $(this).append('<div class="progressbarText" title="' + $(this).data('progress-tip') + '">' + $(this).data('progress-text') + '</div>') : ''; + if($(this).data('progress-text')) $(this).append('<div class="progressbarText" title="' + $(this).data('progress-tip') + '">' + $(this).data('progress-text') + '</div>'); $(this).find('.ui-progressbar-value').addClass('progress-' + classToAdd); }); @@ -71,7 +76,7 @@ $(document).ready(function(){ $(this).remove(); }); - $("#showListTableShows:has(tbody tr)").tablesorter({ + $("#showListTableShows:has(tbody tr), #showListTableAnime:has(tbody tr)").tablesorter({ sortList: [[7,1],[2,0]], textExtraction: { 0: function(node) { return $(node).find("span").text().toLowerCase(); }, @@ -136,112 +141,7 @@ $(document).ready(function(){ } } - var result = f.match(/(\d+)\s(-|to)\s(\d+)/i); - if (result) { - if ((result[2] === "-") || (result[2] === "to")) { - if ((pct >= parseInt(result[1])) && (pct <= parseInt(result[3]))) { - test = true; - } - } - } - - var result = f.match(/(=)?\s?(\d+)\s?(=)?/i); - if (result) { - if ((result[1] === "=") || (result[3] === "=")) { - if (parseInt(result[2]) === pct) { - test = true; - } - } - } - - if (!isNaN(parseFloat(f)) && isFinite(f)) { - if (parseInt(f) === pct) { - test = true; - } - } - } - return test; - } - }, - filter_reset: '.resetshows', - columnSelector_mediaquery: false - }; - } else { - return { - filter_columnFilters: false - }; - } - }()), - sortStable: true, - sortAppend: [[2,0]] - }); - - $("#showListTableAnime:has(tbody tr)").tablesorter({ - sortList: [[6,1],[2,0]], - textExtraction: { - 0: function(node) { return $(node).find("span").text().toLowerCase(); }, - 1: function(node) { return $(node).find("span").text().toLowerCase(); }, - 3: function(node) { return $(node).find("span").prop("title").toLowerCase(); }, - 4: function(node) { return $(node).find("span").text().toLowerCase(); }, - 5: function(node) { return $(node).find("span:first").text(); }, - 6: function(node) { return $(node).find("img").attr("alt"); } - }, - widgets: ['saveSort', 'zebra', 'stickyHeaders', 'filter', 'columnSelector'], - headers: (function(){ - if($('meta[data-var="sickbeard.FILTER_ROW"]').data('content') == 'True'){ - return { - 0: { sorter: 'isoDate' }, - 1: { columnSelector: false }, - 2: { sorter: 'loadingNames' }, - 4: { sorter: 'quality' }, - 5: { sorter: 'eps' }, - 6: { filter : 'parsed' } - }; - } else { - return { - 0: { sorter: 'isoDate' }, - 1: { columnSelector: false }, - 2: { sorter: 'loadingNames' }, - 4: { sorter: 'quality' }, - 5: { sorter: 'eps' } - }; - } - }()), - widgetOptions: (function(){ - if($('meta[data-var="sickbeard.FILTER_ROW"]').data('content') == 'True'){ - return { - filter_columnFilters: true, - filter_hideFilters : true, - filter_saveFilters : true, - filter_functions : { - 5:function(e, n, f, i, r, c) { - var test = false; - var pct = Math.floor((n % 1) * 1000); - if (f === '') { - test = true; - } else { - var result = f.match(/(<|<=|>=|>)\s(\d+)/i); - if (result) { - if (result[1] === "<") { - if (pct < parseInt(result[2])) { - test = true; - } - } else if (result[1] === "<=") { - if (pct <= parseInt(result[2])) { - test = true; - } - } else if (result[1] === ">=") { - if (pct >= parseInt(result[2])) { - test = true; - } - } else if (result[1] === ">") { - if (pct > parseInt(result[2])) { - test = true; - } - } - } - - var result = f.match(/(\d+)\s(-|to)\s(\d+)/i); + result = f.match(/(\d+)\s(-|to)\s(\d+)/i); if (result) { if ((result[2] === "-") || (result[2] === "to")) { if ((pct >= parseInt(result[1])) && (pct <= parseInt(result[3]))) { @@ -250,7 +150,7 @@ $(document).ready(function(){ } } - var result = f.match(/(=)?\s?(\d+)\s?(=)?/i); + result = f.match(/(=)?\s?(\d+)\s?(=)?/i); if (result) { if ((result[1] === "=") || (result[3] === "=")) { if (parseInt(result[2]) === pct) { @@ -268,7 +168,6 @@ $(document).ready(function(){ return test; } }, - filter_reset: '.resetanime', columnSelector_mediaquery: false }; } else { diff --git a/gui/slick/js/new/home_trendingShows.js b/gui/slick/js/new/home_trendingShows.js new file mode 100644 index 0000000000000000000000000000000000000000..b96203a3ce019dc4e0f1fec3848f1dddf9aa2c5b --- /dev/null +++ b/gui/slick/js/new/home_trendingShows.js @@ -0,0 +1,55 @@ +$(document).ready(function(){ + $( "#tabs" ).tabs({ + collapsible: true, + // selected: ${('0', '-1')[bool(sickbeard.ROOT_DIRS)]} + }); + + // initialise combos for dirty page refreshes + $('#showsort').val('original'); + $('#showsortdirection').val('asc'); + + $('#container').isotope({ + itemSelector: '.trakt_show', + sortBy: 'original-order', + layoutMode: 'fitRows', + getSortData: { + name: function( itemElem ) { + var name = $(itemElem).attr('data-name') || ''; + return ($('meta[data-var="sickbeard.SORT_ARTICLE"]').data('content') == 'False' ? name.replace(/^(The|A|An)\s/i, '') : name).toLowerCase(); + }, + rating: '[data-rating] parseInt', + votes: '[data-votes] parseInt', + } + }); + + $('#showsort').on( 'change', function() { + var sortCriteria; + switch (this.value) { + case 'original': + sortCriteria = 'original-order'; + break; + case 'rating': + /* randomise, else the rating_votes can already + * have sorted leaving this with nothing to do. + */ + $('#container').isotope({sortBy: 'random'}); + sortCriteria = 'rating'; + break; + case 'rating_votes': + sortCriteria = ['rating', 'votes']; + break; + case 'votes': + sortCriteria = 'votes'; + break; + default: + sortCriteria = 'name'; + break; + } + $('#container').isotope({sortBy: sortCriteria}); + }); + + $('#showsortdirection').on( 'change', function() { + $('#container').isotope({sortAscending: ('asc' == this.value)}); + }); +}); +window.setInterval('location.reload(true)', 600000); // Refresh every 10 minutes diff --git a/gui/slick/js/new/manage.js b/gui/slick/js/new/manage.js new file mode 100644 index 0000000000000000000000000000000000000000..6a6754dd7f5c81187d6d4231161e2165b1d643e6 --- /dev/null +++ b/gui/slick/js/new/manage.js @@ -0,0 +1,56 @@ +$.tablesorter.addParser({ + id: 'showNames', + is: function(s) { + return false; + }, + format: function(s) { + return ($('meta[data-var="sickbeard.SORT_ARTICLE"]').data('content') == 'True' ? (s || '') : (s || '').replace(/^(The|A|An)\s/i,'')); + }, + type: 'text' +}); +$.tablesorter.addParser({ + id: 'quality', + is: function(s) { + return false; + }, + format: function(s) { + return s.replace('hd1080p',5).replace('hd720p',4).replace('hd',3).replace('sd',2).replace('any',1).replace('best',0).replace('custom',7); + }, + type: 'numeric' +}); + +$(document).ready(function(){ + $("#massUpdateTable:has(tbody tr)").tablesorter({ + sortList: [[1,0]], + textExtraction: { + 2: function(node) { return $(node).find("span").text().toLowerCase(); }, + 3: function(node) { return $(node).find("img").attr("alt"); }, + 4: function(node) { return $(node).find("img").attr("alt"); }, + 5: function(node) { return $(node).find("img").attr("alt"); }, + 6: function(node) { return $(node).find("img").attr("alt"); }, + 7: function(node) { return $(node).find("img").attr("alt"); }, + 8: function(node) { return $(node).find("img").attr("alt"); }, + }, + widgets: ['zebra'], + headers: { + 0: { sorter: false}, + 1: { sorter: 'showNames'}, + 2: { sorter: 'quality'}, + 3: { sorter: 'sports'}, + 4: { sorter: 'scene'}, + 5: { sorter: 'anime'}, + 6: { sorter: 'flatfold'}, + 7: { sorter: 'paused'}, + 8: { sorter: 'subtitle'}, + 9: { sorter: 'default_ep_status'}, + 10: { sorter: 'status'}, + 11: { sorter: false}, + 12: { sorter: false}, + 13: { sorter: false}, + 14: { sorter: false}, + 15: { sorter: false}, + 16: { sorter: false}, + 17: { sorter: false} + } + }); +}); diff --git a/gui/slick/js/new/trendingShows.js b/gui/slick/js/new/trendingShows.js new file mode 100644 index 0000000000000000000000000000000000000000..9b50dfc2da1c3eaa7c52d77059e43760dfb1baa8 --- /dev/null +++ b/gui/slick/js/new/trendingShows.js @@ -0,0 +1,57 @@ +$(document).ready(function(){ + // initialise combos for dirty page refreshes + $('#showsort').val('original'); + $('#showsortdirection').val('asc'); + + var $container = [$('#container')]; + $.each($container, function (j) { + this.isotope({ + itemSelector: '.trakt_show', + sortBy: 'original-order', + layoutMode: 'fitRows', + getSortData: { + name: function(itemElem) { + var name = $(itemElem).attr('data-name') || ''; + return ($('meta[data-var="sickbeard.SORT_ARTICLE"]').data('content') == 'False' ? name.replace(/^(The|A|An)\s/i, '') : name).toLowerCase(); + }, + rating: '[data-rating] parseInt', + votes: '[data-votes] parseInt', + } + }); + }); + + $('#showsort').on( 'change', function() { + var sortCriteria; + switch (this.value) { + case 'original': + sortCriteria = 'original-order'; + break; + case 'rating': + /* randomise, else the rating_votes can already + * have sorted leaving this with nothing to do. + */ + $('#container').isotope({sortBy: 'random'}); + sortCriteria = 'rating'; + break; + case 'rating_votes': + sortCriteria = ['rating', 'votes']; + break; + case 'votes': + sortCriteria = 'votes'; + break; + default: + sortCriteria = 'name'; + break; + } + $('#container').isotope({sortBy: sortCriteria}); + }); + + $('#showsortdirection').on( 'change', function() { + $('#container').isotope({sortAscending: ('asc' == this.value)}); + }); +}); + +setTimeout(function () { + "use strict"; + location.reload(true); +}, 60000); diff --git a/gui/slick/js/new/viewlogs.js b/gui/slick/js/new/viewlogs.js new file mode 100644 index 0000000000000000000000000000000000000000..0f94159940bd158ecfad41bf4f2edb2950161994 --- /dev/null +++ b/gui/slick/js/new/viewlogs.js @@ -0,0 +1,59 @@ +$(document).ready(function(){ + $('#minLevel,#logFilter,#logSearch').on('change', function(){ + if ($('#logSearch').val().length > 0){ + $('#logSearch').prop('disabled', true); + $('#logFilter option[value="<NONE>"]').prop('selected', true); + $('#minLevel option[value=5]').prop('selected', true); + } + $('#minLevel').prop('disabled', true); + $('#logFilter').prop('disabled', true); + $('#logSearch').prop('disabled', true); + url = sbRoot + '/errorlogs/viewlog/?minLevel='+$('select[name=minLevel]').val()+'&logFilter='+$('select[name=logFilter]').val()+'&logSearch='+$('#logSearch').val(); + $.get(url, function(data){ + history.pushState('data', '', url); + $('pre').html($(data).find('pre').html()); + $('#minLevel').removeProp('disabled'); + $('#logFilter').removeProp('disabled'); + $('#logSearch').removeProp('disabled'); + }); + }); + + $(window).load(function(){ + if ( $('#logSearch').val().length === 0 ) { + $('#minLevel').prop('disabled', false); + $('#logFilter').prop('disabled', false); + $('#logSearch').prop('disabled', false); + } else { + $('#minLevel').prop('disabled', true); + $('#logFilter').prop('disabled', true); + $('#logSearch').prop('disabled', false); + } + + document.body.style.cursor='default'; + }); + + $('#logSearch').on('keyup', function() { + if ( $('#logSearch').val().length === 0 ) { + $('#logFilter option[value=<NONE>]').prop('selected', true); + $('#minLevel option[value=20]').prop('selected', true); + $('#minLevel').prop('disabled', false); + $('#logFilter').prop('disabled', false); + url = sbRoot + '/errorlogs/viewlog/?minLevel='+$('select[name=minLevel]').val()+'&logFilter='+$('select[name=logFilter]').val()+'&logSearch='+$('#logSearch').val(); + $.get(url, function(data){ + history.pushState('data', '', url); + $('pre').html($(data).find('pre').html()); + $('#minLevel').removeProp('disabled'); + $('#logFilter').removeProp('disabled'); + $('#logSearch').removeProp('disabled'); + }); + } else { + $('#minLevel').prop('disabled', true); + $('#logFilter').prop('disabled', true); + } + }); +}); + +setTimeout(function () { + "use strict"; + location.reload(true); +}, 60000); diff --git a/gui/slick/views/comingEpisodes.mako b/gui/slick/views/comingEpisodes.mako index fa1b562f193914fbfbab14f823b0cb448ef8107a..d462f4dba77eb0a5764c0d9cc9c62fc9f73bd446 100644 --- a/gui/slick/views/comingEpisodes.mako +++ b/gui/slick/views/comingEpisodes.mako @@ -79,7 +79,7 @@ <thead> <tr> - <th>Airdate</th> + <th>Airdate (${('local', 'network')[sickbeard.TIMEZONE_DISPLAY == 'network']})</th> <th>Show</th> <th nowrap="nowrap">Next Ep</th> <th>Next Ep Name</th> diff --git a/gui/slick/views/config_backuprestore.mako b/gui/slick/views/config_backuprestore.mako index 793d998a860cf0176df2afa9aa5882da6baab5db..1813c2d6af58fa510d452891c47f7a41ff379bea 100644 --- a/gui/slick/views/config_backuprestore.mako +++ b/gui/slick/views/config_backuprestore.mako @@ -12,11 +12,7 @@ %> <%block name="scripts"> <script type="text/javascript" src="${sbRoot}/js/configBackupRestore.js?${sbPID}"></script> -<script type="text/javascript" charset="utf-8"> - $('#backupDir').fileBrowser({ title: 'Select backup folder to save to', key: 'backupPath' }); - $('#backupFile').fileBrowser({ title: 'Select backup files to restore', key: 'backupFile', includeFiles: 1 }); - $('#config-components').tabs(); -</script> +<script type="text/javascript" src="${sbRoot}/js/new/config_backuprestore.js"></script> </%block> <%block name="content"> % if not header is UNDEFINED: diff --git a/gui/slick/views/config_general.mako b/gui/slick/views/config_general.mako index 304dc291731a5b94667156ce63da5ce9e5d6ec5c..2ac46d862ca57dcc39f675d07220f5497674571a 100644 --- a/gui/slick/views/config_general.mako +++ b/gui/slick/views/config_general.mako @@ -15,26 +15,7 @@ <script type="text/javascript" src="${sbRoot}/js/config.js?${sbPID}"></script> <script type="text/javascript" src="${sbRoot}/js/rootDirs.js?${sbPID}"></script> <script type="text/javascript" src="${sbRoot}/js/lib/bootstrap-formhelpers.min-2.3.0.js?${sbPID}"></script> -<script type="text/javascript" charset="utf-8"> - $(document).ready(function(){ - if ($("input[name='proxy_setting']").val().length == 0) { - $("input[id='proxy_indexers']").prop('checked', false); - $("label[for='proxy_indexers']").hide(); - } - - $("input[name='proxy_setting']").on('input', function() { - if( $(this).val().length === 0 ) { - $("input[id='proxy_indexers']").prop('checked', false); - $("label[for='proxy_indexers']").hide(); - } else { - $("label[for='proxy_indexers']").show(); - } - }); - }); - - $('#log_dir').fileBrowser({ title: 'Select log file folder location' }); - $('#config-components').tabs(); -</script> +<script type="text/javascript" src="${sbRoot}/js/new/config_general.js"></script> </%block> <%block name="content"> % if not header is UNDEFINED: @@ -95,10 +76,10 @@ <span class="component-desc"> <select id="default_page" name="default_page" class="form-control input-sm"> <option value="news" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'news']}>News</option> - <option value="home" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'home']}>Home</option> + <option value="IRC" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'IRC']}>IRC</option> + <option value="home" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'home']}>Shows</option> <option value="comingEpisodes" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'comingEpisodes']}>Coming Episodes</option> <option value="history" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'history']}>History</option> - <option value="IRC" ${('', 'selected="selected"')[sickbeard.DEFAULT_PAGE == 'IRC']}>IRC</option> </select> <span>when launching SickRage interface</span> </span> @@ -375,7 +356,12 @@ <label for="network"> <input type="radio" name="timezone_display" id="network" value="network" ${('', 'checked="checked"')[sickbeard.TIMEZONE_DISPLAY == "network"]} />Network </label> - <div class="clear-left"><p>display dates and times in either your timezone or the shows network timezone</p></div> + <div class="clear-left"> + <p>display dates and times in either your timezone or the shows network timezone</p> + </div> + <div class="clear-left"> + <p> <b>Note:</b> Use local timezone to start searching for episodes minutes after show ends (depends on your dailysearch frequency)</p> + </div> </span> </div> diff --git a/gui/slick/views/config_notifications.mako b/gui/slick/views/config_notifications.mako index b0060b5ee35a8bbb0b6d5f255f9af82bcbbd0e85..f3e88e477ca0b5df6e599be1415abdf7d6471096 100644 --- a/gui/slick/views/config_notifications.mako +++ b/gui/slick/views/config_notifications.mako @@ -10,9 +10,7 @@ <%block name="scripts"> <script type="text/javascript" src="${sbRoot}/js/configNotifications.js?${sbPID}"></script> <script type="text/javascript" src="${sbRoot}/js/config.js?${sbPID}"></script> -<script type="text/javascript" charset="utf-8"> - $('#config-components').tabs(); -</script> +<script type="text/javascript" src="${sbRoot}/js/new/config_notifications.js"></script> </%block> <%block name="content"> % if not header is UNDEFINED: diff --git a/gui/slick/views/editShow.mako b/gui/slick/views/editShow.mako index ffce6c2fa4cddf409af077790c63d3b165ce45a0..09e724a965f9adfffbdb714c17add6da110a52e5 100644 --- a/gui/slick/views/editShow.mako +++ b/gui/slick/views/editShow.mako @@ -8,69 +8,13 @@ from sickrage.helper import exceptions from sickbeard import scene_exceptions %> +<%block name="metas"> +<meta data-var="show.is_anime" data-content="${show.is_anime}"> +</%block> <%block name="scripts"> <script type="text/javascript" src="${sbRoot}/js/qualityChooser.js?${sbPID}"></script> <script type="text/javascript" src="${sbRoot}/js/lib/bootstrap-formhelpers.min-2.3.0.js?${sbPID}"></script> -<script type="text/javascript" charset="utf-8"> - var all_exceptions = new Array; - - $('#location').fileBrowser({ title: 'Select Show Location' }); - - $('#submit').click(function(){ - all_exceptions = [] - - $("#exceptions_list option").each ( function() { - all_exceptions.push( $(this).val() ); - }); - - $("#exceptions_list").val(all_exceptions); - - % if show.is_anime: - generate_bwlist() - % endif - }); - $('#addSceneName').click(function() { - var scene_ex = $('#SceneName').val() - var option = $("<option>") - all_exceptions = [] - - $("#exceptions_list option").each ( function() { - all_exceptions.push( $(this).val() ) - }); - - $('#SceneName').val('') - - if ($.inArray(scene_ex, all_exceptions) > -1 || (scene_ex == '')) - return - - $("#SceneException").show() - - option.attr("value",scene_ex) - option.html(scene_ex) - return option.appendTo('#exceptions_list'); - }); - - $('#removeSceneName').click(function() { - $('#exceptions_list option:selected').remove(); - - $(this).toggle_SceneException() - }); - - $.fn.toggle_SceneException = function() { - all_exceptions = [] - - $("#exceptions_list option").each ( function() { - all_exceptions.push( $(this).val() ); - }); - - if (all_exceptions == '') - $("#SceneException").hide(); - else - $("#SceneException").show(); - } - - $(this).toggle_SceneException(); -</script> +<script type="text/javascript" src="${sbRoot}/js/new/editShow.js"></script> % if show.is_anime: <script type="text/javascript" src="${sbRoot}/js/blackwhite.js?${sbPID}"></script> % endif diff --git a/gui/slick/views/history.mako b/gui/slick/views/history.mako index 875b93ac441b36c28a193e8dc0358c00458748c4..3a603206118cb526ab7a1a7985f490a2549814c4 100644 --- a/gui/slick/views/history.mako +++ b/gui/slick/views/history.mako @@ -25,64 +25,14 @@ .sort_data {display:none;} </style> </%block> +<%block name="metas"> +<meta data-var="sickbeard.FUZZY_DATING" data-content="${sickbeard.FUZZY_DATING}"> +<meta data-var="layout" data-content="${layout}"> +<meta data-var="fuzzydate" data-content="${fuzzydate}"> +</%block> <%block name="scripts"> -<script type="text/javascript"> -$.tablesorter.addParser({ - id: 'cDate', - is: function(s) { - return false; - }, - format: function(s) { - return s; - }, - type: 'numeric' -}); - -$(document).ready(function(){ - $("#historyTable:has(tbody tr)").tablesorter({ - widgets: ['zebra', 'filter'], - sortList: [[0,1]], - textExtraction: { - % if ( layout == 'detailed'): - 0: function(node) { return $(node).find("span").text().toLowerCase(); }, - 4: function(node) { return $(node).find("span").text().toLowerCase(); } - % else: - 0: function(node) { return $(node).find("span").text().toLowerCase(); }, - 1: function(node) { return $(node).find("span").text().toLowerCase(); }, - 2: function(node) { return $(node).attr("provider").toLowerCase(); }, - 5: function(node) { return $(node).attr("quality").toLowerCase(); } - % endif - }, - headers: { - % if ( layout == 'detailed'): - 0: { sorter: 'cDate' }, - 4: { sorter: 'quality' } - % else: - 0: { sorter: 'cDate' }, - 4: { sorter: false }, - 5: { sorter: 'quality' } - % endif - } - - }); - $('#history_limit').on('change', function() { - var url = '${sbRoot}/history/?limit=' + $(this).val() - window.location.href = url - }); - - % if sickbeard.FUZZY_DATING: - fuzzyMoment({ - containerClass : '.${fuzzydate}', - dateHasTime : true, - dateFormat : '${sickbeard.DATE_PRESET}', - timeFormat : '${sickbeard.TIME_PRESET_W_SECONDS}', - trimZero : ${('false', 'true')[bool(sickbeard.TRIM_ZERO)]}, - dtGlue : ', ', - }); - % endif - -}); -</script> +<script type="text/javascript" src="${sbRoot}/js/lib/jquery.timeago.js"></script> +<script type="text/javascript" src="${sbRoot}/js/new/history.js"></script> </%block> <%block name="content"> <%namespace file="/inc_defs.mako" import="renderQualityPill"/> @@ -93,6 +43,9 @@ $(document).ready(function(){ % endif <div class="h2footer pull-right"><b>Limit:</b> <select name="history_limit" id="history_limit" class="form-control form-control-inline input-sm"> + <option value="10" ${('', 'selected="selected"')[limit == 10]}>10</option> + <option value="25" ${('', 'selected="selected"')[limit == 25]}>25</option> + <option value="50" ${('', 'selected="selected"')[limit == 50]}>50</option> <option value="100" ${('', 'selected="selected"')[limit == 100]}>100</option> <option value="250" ${('', 'selected="selected"')[limit == 250]}>250</option> <option value="500" ${('', 'selected="selected"')[limit == 500]}>500</option> diff --git a/gui/slick/views/home.mako b/gui/slick/views/home.mako index 9acb800665c78346dfbe8721bd371c2dbff60e80..b6d954ca0505e3420c88ed5a5d774acc4ed08c1a 100644 --- a/gui/slick/views/home.mako +++ b/gui/slick/views/home.mako @@ -40,7 +40,7 @@ max_download_count = max_download_count * 100 %> -<%block name="scripts"> +<%block name="metas"> <meta data-var="sickbeard.SORT_ARTICLE" data-content="${sickbeard.SORT_ARTICLE}"> <meta data-var="sickbeard.FILTER_ROW" data-content="${sickbeard.FILTER_ROW}"> <meta data-var="sickbeard.ANIME_SPLIT_HOME" data-content="${sickbeard.ANIME_SPLIT_HOME}"> @@ -53,6 +53,8 @@ <meta data-var="max_download_count" data-content="${max_download_count}"> <meta data-var="layout" data-content="${layout}"> <meta data-var="fuzzydate" data-content="${fuzzydate}"> +</%block> +<%block name="scripts"> <script type="text/javascript" src="${sbRoot}/js/lib/jquery.timeago.js"></script> <script type="text/javascript" src="${sbRoot}/js/new/home.js"></script> </%block> @@ -78,7 +80,7 @@ % if layout != 'poster': Search: <input class="search form-control form-control-inline input-sm input200" type="search" data-column="2" placeholder="Search Show Name"> - <button type="button" class="resetshows resetanime btn btn-inline">Reset Search</button> + <button type="button" class="resetsorting btn btn-inline">Reset Search</button> % endif </span> diff --git a/gui/slick/views/home_popularShows.mako b/gui/slick/views/home_popularShows.mako index d54a204a69697361e9b259f0e8c72b1af16329bf..81128fa81f018e69cb349a53f62922be50e6176a 100644 --- a/gui/slick/views/home_popularShows.mako +++ b/gui/slick/views/home_popularShows.mako @@ -1,6 +1,8 @@ <%inherit file="/layouts/main.mako"/> <%! from sickbeard.helpers import anon_url + import sickbeard + imdb_tt = [show.imdbid for show in sickbeard.showList if show.imdbid] %> <%block name="content"> <h2>Popular Shows</h2> @@ -27,8 +29,12 @@ <p>${cur_result['outline']}<span class="year"> - Released ${cur_result['year']}<span></p> <span class="imdb_url"><a href="${anon_url(cur_result['imdb_url'])}">View on IMDB</a></span> | + % if cur_result['imdb_tt'] not in imdb_tt: <span class="imdb_sickrage_search"><a href="${sbRoot}/home/addShows/newShow/?search_string=${cur_result['name']}"> Add Show</a></span> + % else: + <span> Already added </span> + % endif </div> <br style="clear:both" /> diff --git a/gui/slick/views/home_trendingShows.mako b/gui/slick/views/home_trendingShows.mako index d6aa8d55d5aa80798f429482d7e53a35fdf698da..da97bd52feed048ebae3069fb19829d283e941d2 100644 --- a/gui/slick/views/home_trendingShows.mako +++ b/gui/slick/views/home_trendingShows.mako @@ -8,73 +8,14 @@ from sickbeard import sbdatetime from sickbeard.helpers import anon_url %> +<%block name="metas"> +<meta data-var="sickbeard.SORT_ARTICLE" data-content="${sickbeard.SORT_ARTICLE}"> +</%block> <%block name="scripts"> <script type="text/javascript" src="${sbRoot}/js/addTrendingShow.js?${sbPID}"></script> <script type="text/javascript" src="${sbRoot}/js/rootDirs.js?${sbPID}"></script> <script type="text/javascript" src="${sbRoot}/js/plotTooltip.js?${sbPID}"></script> -<script type="text/javascript"> -$(document).ready(function(){ - $( "#tabs" ).tabs({ - collapsible: true, - selected: ${('0', '-1')[bool(sickbeard.ROOT_DIRS)]} - }); - - // initialise combos for dirty page refreshes - $('#showsort').val('original'); - $('#showsortdirection').val('asc'); - - var $container = [$('#container')]; - $.each($container, function (j) { - this.isotope({ - itemSelector: '.trakt_show', - sortBy: 'original-order', - layoutMode: 'fitRows', - getSortData: { - name: function( itemElem ) { - var name = $( itemElem ).attr('data-name') || ''; -% if not sickbeard.SORT_ARTICLE: - name = name.replace(/^(The|A|An)\s/i, ''); -% endif - return name.toLowerCase(); - }, - rating: '[data-rating] parseInt', - votes: '[data-votes] parseInt', - } - }); - }); - - $('#showsort').on( 'change', function() { - var sortCriteria; - switch (this.value) { - case 'original': - sortCriteria = 'original-order' - break; - case 'rating': - /* randomise, else the rating_votes can already - * have sorted leaving this with nothing to do. - */ - $('#container').isotope({sortBy: 'random'}); - sortCriteria = 'rating'; - break; - case 'rating_votes': - sortCriteria = ['rating', 'votes']; - break; - case 'votes': - sortCriteria = 'votes'; - break; - default: - sortCriteria = 'name' - break; - } - $('#container').isotope({sortBy: sortCriteria}); - }); - - $('#showsortdirection').on( 'change', function() { - $('#container').isotope({sortAscending: ('asc' == this.value)}); - }); -}); -window.setInterval('location.reload(true)', 600000); // Refresh every 10 minutes -</script> +<script type="text/javascript" src="${sbRoot}/js/new/home_trendingShows.js"></script> </%block> <%block name="content"> % if not header is UNDEFINED: diff --git a/gui/slick/views/layouts/main.mako b/gui/slick/views/layouts/main.mako index 5052f020324b5504447aa4ca21bcfc1d0cf4abf8..e7d3bc29b2b41634c14b67689ed04ab0043f6b18 100644 --- a/gui/slick/views/layouts/main.mako +++ b/gui/slick/views/layouts/main.mako @@ -1,7 +1,7 @@ <%! import sickbeard import datetime - from sickbeard import db + from sickbeard import db, network_timezones from sickbeard.common import Quality, SKIPPED, WANTED, UNAIRED, ARCHIVED, IGNORED, SNATCHED, SNATCHED_PROPER, SNATCHED_BEST, FAILED from sickbeard.common import qualityPresets, qualityPresetStrings import calendar @@ -280,7 +280,8 @@ Memory used: <span class="footerhighlight">${sickbeard.helpers.pretty_filesize(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss)}</span> | % endif Load time: <span class="footerhighlight">${"%.4f" % (time() - sbStartTime)}s</span> / Mako: <span class="footerhighlight">${"%.4f" % (time() - makoStartTime)}s</span> | - Branch: <span class="footerhighlight">${sickbeard.BRANCH}</span> + Branch: <span class="footerhighlight">${sickbeard.BRANCH}</span> | + Now: <span class="footerhighlight">${datetime.datetime.now(network_timezones.sb_timezone)}</span> </div> </div> </footer> diff --git a/gui/slick/views/manage.mako b/gui/slick/views/manage.mako index bf51d4b3a0a55177dcc4985c4fce700b9c2bebc6..8d9c213dc7fd902331e7d50e4952981981f4931a 100644 --- a/gui/slick/views/manage.mako +++ b/gui/slick/views/manage.mako @@ -6,68 +6,7 @@ %> <%block name="scripts"> <script type="text/javascript" src="${sbRoot}/js/lib/bootbox.min.js?${sbPID}"></script> -<script type="text/javascript" charset="utf-8"> -$.tablesorter.addParser({ - id: 'showNames', - is: function(s) { - return false; - }, - format: function(s) { - % if not sickbeard.SORT_ARTICLE: - return (s || '').replace(/^(The|A|An)\s/i,''); - % else: - return (s || ''); - % endif - }, - type: 'text' -}); -$.tablesorter.addParser({ - id: 'quality', - is: function(s) { - return false; - }, - format: function(s) { - return s.replace('hd1080p',5).replace('hd720p',4).replace('hd',3).replace('sd',2).replace('any',1).replace('best',0).replace('custom',7); - }, - type: 'numeric' -}); - -$(document).ready(function(){ - $("#massUpdateTable:has(tbody tr)").tablesorter({ - sortList: [[1,0]], - textExtraction: { - 2: function(node) { return $(node).find("span").text().toLowerCase(); }, - 3: function(node) { return $(node).find("img").attr("alt"); }, - 4: function(node) { return $(node).find("img").attr("alt"); }, - 5: function(node) { return $(node).find("img").attr("alt"); }, - 6: function(node) { return $(node).find("img").attr("alt"); }, - 7: function(node) { return $(node).find("img").attr("alt"); }, - 8: function(node) { return $(node).find("img").attr("alt"); }, - }, - widgets: ['zebra'], - headers: { - 0: { sorter: false}, - 1: { sorter: 'showNames'}, - 2: { sorter: 'quality'}, - 3: { sorter: 'sports'}, - 4: { sorter: 'scene'}, - 5: { sorter: 'anime'}, - 6: { sorter: 'flatfold'}, - 7: { sorter: 'paused'}, - 8: { sorter: 'subtitle'}, - 9: { sorter: 'default_ep_status'}, - 10: { sorter: 'status'}, - 11: { sorter: false}, - 12: { sorter: false}, - 13: { sorter: false}, - 14: { sorter: false}, - 15: { sorter: false}, - 16: { sorter: false}, - 17: { sorter: false} - } - }); -}); -</script> +<script type="text/javascript" src="${sbRoot}/js/new/manage.js"></script> <script type="text/javascript" src="${sbRoot}/js/massUpdate.js?${sbPID}"></script> </%block> <%block name="content"> diff --git a/gui/slick/views/trendingShows.mako b/gui/slick/views/trendingShows.mako index d953abca5648e85a390e4dd1f21c843c901b45d9..55c227204d4f1fa8380637d4804fe8b8b0a320ed 100644 --- a/gui/slick/views/trendingShows.mako +++ b/gui/slick/views/trendingShows.mako @@ -8,64 +8,11 @@ from sickbeard import sbdatetime from sickbeard.helpers import anon_url %> +<%block name="metas"> +<meta data-var="sickbeard.SORT_ARTICLE" data-content="${sickbeard.SORT_ARTICLE}"> +</%block> <%block name="scripts"> -<script type="text/javascript"> -$(document).ready(function(){ - // initialise combos for dirty page refreshes - $('#showsort').val('original'); - $('#showsortdirection').val('asc'); - - var $container = [$('#container')]; - $.each($container, function (j) { - this.isotope({ - itemSelector: '.trakt_show', - sortBy: 'original-order', - layoutMode: 'fitRows', - getSortData: { - name: function( itemElem ) { - var name = $( itemElem ).attr('data-name') || ''; -% if not sickbeard.SORT_ARTICLE: - name = name.replace(/^(The|A|An)\s/i, ''); -% endif - return name.toLowerCase(); - }, - rating: '[data-rating] parseInt', - votes: '[data-votes] parseInt', - } - }); - }); - - $('#showsort').on( 'change', function() { - var sortCriteria; - switch (this.value) { - case 'original': - sortCriteria = 'original-order' - break; - case 'rating': - /* randomise, else the rating_votes can already - * have sorted leaving this with nothing to do. - */ - $('#container').isotope({sortBy: 'random'}); - sortCriteria = 'rating'; - break; - case 'rating_votes': - sortCriteria = ['rating', 'votes']; - break; - case 'votes': - sortCriteria = 'votes'; - break; - default: - sortCriteria = 'name' - break; - } - $('#container').isotope({sortBy: sortCriteria}); - }); - - $('#showsortdirection').on( 'change', function() { - $('#container').isotope({sortAscending: ('asc' == this.value)}); - }); -}); -</script> +<script type="text/javascript" src="${sbRoot}/js/new/trendingShows.js"></script> </%block> <%block name="content"> <div id="container"> diff --git a/gui/slick/views/viewlogs.mako b/gui/slick/views/viewlogs.mako index c9b955c6d18e88681873c355c31eebf7d19c85c1..7037ddcf8b5a17daba7f8b65d0c0205e70f0e34b 100644 --- a/gui/slick/views/viewlogs.mako +++ b/gui/slick/views/viewlogs.mako @@ -5,64 +5,7 @@ from sickbeard.logger import reverseNames %> <%block name="scripts"> -<script type="text/javascript"> -$(document).ready( -function(){ - $('#minLevel,#logFilter,#logSearch').on('change', function(){ - if ($('#logSearch').val().length > 0){ - $('#logSearch').prop('disabled', true); - $('#logFilter option[value="<NONE>"]').prop('selected', true); - $('#minLevel option[value=5]').prop('selected', true); - } - $('#minLevel').prop('disabled', true); - $('#logFilter').prop('disabled', true); - $('#logSearch').prop('disabled', true); - url = '${sbRoot}/errorlogs/viewlog/?minLevel='+$('select[name=minLevel]').val()+'&logFilter='+$('select[name=logFilter]').val()+'&logSearch='+$('#logSearch').val() - $.get(url, function(data){ - history.pushState('data', '', url); - $('pre').html($(data).find('pre').html()); - $('#minLevel').removeProp('disabled'); - $('#logFilter').removeProp('disabled'); - $('#logSearch').removeProp('disabled'); - }); - }); - - $(window).load(function(){ - if ( $('#logSearch').val().length == 0 ) { - $('#minLevel').prop('disabled', false); - $('#logFilter').prop('disabled', false); - $('#logSearch').prop('disabled', false); - } else { - $('#minLevel').prop('disabled', true); - $('#logFilter').prop('disabled', true); - $('#logSearch').prop('disabled', false); - } - - document.body.style.cursor='default'; - }); - - $('#logSearch').on('keyup', function() { - if ( $('#logSearch').val().length == 0 ) { - $('#logFilter option[value=<NONE>]').prop('selected', true); - $('#minLevel option[value=20]').prop('selected', true); - $('#minLevel').prop('disabled', false); - $('#logFilter').prop('disabled', false); - url = '${sbRoot}/errorlogs/viewlog/?minLevel='+$('select[name=minLevel]').val()+'&logFilter='+$('select[name=logFilter]').val()+'&logSearch='+$('#logSearch').val() - $.get(url, function(data){ - history.pushState('data', '', url); - $('pre').html($(data).find('pre').html()); - $('#minLevel').removeProp('disabled'); - $('#logFilter').removeProp('disabled'); - $('#logSearch').removeProp('disabled'); - }); - } else { - $('#minLevel').prop('disabled', true); - $('#logFilter').prop('disabled', true); - } - }); -}); -window.setInterval( "location.reload(true)", 600000); // Refresh every 10 minutes -</script> +<script type="text/javascript" src="${sbRoot}/js/new/viewlogs.js"></script> </%block> <%block name="content"> % if not header is UNDEFINED: diff --git a/sickbeard/dailysearcher.py b/sickbeard/dailysearcher.py index db774959516f560504ef73f4a4aac88f8ea7897a..50304f68327556837d7fe793b8db3794b887dc9e 100644 --- a/sickbeard/dailysearcher.py +++ b/sickbeard/dailysearcher.py @@ -27,7 +27,7 @@ from sickbeard import logger from sickbeard import db from sickbeard import common from sickbeard import helpers -from sickbeard import network_timezones +from sickbeard import sbdatetime, network_timezones from sickrage.helper.exceptions import MultipleShowObjectsException @@ -80,9 +80,12 @@ class DailySearcher(): continue try: - end_time = network_timezones.parse_date_time(sqlEp['airdate'], show.airs, - show.network) + datetime.timedelta( + end_time = sbdatetime.sbdatetime.convert_to_setting(network_timezones.parse_date_time(sqlEp['airdate'], show.airs, + show.network)) + datetime.timedelta( minutes=helpers.tryInt(show.runtime, 60)) + #Keep this for future debug + #logger.log(u"Show %s ends at %s and now it is %s. Runtime is %s and airs %s" % (show.name, end_time, curTime, show.runtime, show.airs),logger.DEBUG ) + # filter out any episodes that haven't aried yet if end_time > curTime: continue diff --git a/sickbeard/db.py b/sickbeard/db.py index 5fa1fdff9ad245ed4afd2a2d53dbc39b6fa9acd1..eb81bd2dfcf5e2052475033fc9b9ae8f3257e7fa 100644 --- a/sickbeard/db.py +++ b/sickbeard/db.py @@ -264,13 +264,13 @@ class DBConnection(object): genParams = lambda myDict: [x + " = ?" for x in myDict.keys()] - query = "UPDATE " + tableName + " SET " + ", ".join(genParams(valueDict)) + " WHERE " + " AND ".join( + query = "UPDATE [" + tableName + "] SET " + ", ".join(genParams(valueDict)) + " WHERE " + " AND ".join( genParams(keyDict)) self.action(query, valueDict.values() + keyDict.values()) if self.connection.total_changes == changesBefore: - query = "INSERT INTO " + tableName + " (" + ", ".join(valueDict.keys() + keyDict.keys()) + ")" + \ + query = "INSERT INTO [" + tableName + "] (" + ", ".join(valueDict.keys() + keyDict.keys()) + ")" + \ " VALUES (" + ", ".join(["?"] * len(valueDict.keys() + keyDict.keys())) + ")" self.action(query, valueDict.values() + keyDict.values()) @@ -281,7 +281,7 @@ class DBConnection(object): :param tableName: name of table :return: array of name/type info """ - sqlResult = self.select("PRAGMA table_info(%s)" % tableName) + sqlResult = self.select("PRAGMA table_info(`%s`)" % tableName) columns = {} for column in sqlResult: columns[column['name']] = {'type': column['type']} @@ -335,8 +335,8 @@ class DBConnection(object): :param type: Column type to add :param default: Default value for column """ - self.action("ALTER TABLE %s ADD %s %s" % (table, column, type)) - self.action("UPDATE %s SET %s = ?" % (table, column), (default,)) + self.action("ALTER TABLE [%s] ADD %s %s" % (table, column, type)) + self.action("UPDATE [%s] SET %s = ?" % (table, column), (default,)) def sanityCheckDatabase(connection, sanity_check): sanity_check(connection).check() @@ -431,8 +431,8 @@ class SchemaUpgrade(object): return column in self.connection.tableInfo(tableName) def addColumn(self, table, column, type="NUMERIC", default=0): - self.connection.action("ALTER TABLE %s ADD %s %s" % (table, column, type)) - self.connection.action("UPDATE %s SET %s = ?" % (table, column), (default,)) + self.connection.action("ALTER TABLE [%s] ADD %s %s" % (table, column, type)) + self.connection.action("UPDATE [%s] SET %s = ?" % (table, column), (default,)) def checkDBVersion(self): return self.connection.checkDBVersion() diff --git a/sickbeard/imdbPopular.py b/sickbeard/imdbPopular.py index a4a51c57ce33cb1bf98be94a4c643adade091fcd..3d09ec4b0b999080631489d3555dca4fc6819b7d 100644 --- a/sickbeard/imdbPopular.py +++ b/sickbeard/imdbPopular.py @@ -54,6 +54,7 @@ class imdbPopular: if td: show['name'] = td.find("a").contents[0] show['imdb_url'] = "http://www.imdb.com" + td.find("a")["href"] + show['imdb_tt'] = show['imdb_url'][-10:][0:9] show['year'] = td.find("span", {"class": "year_type"}).contents[0].split(" ")[0][1:] rating_all = td.find("div", {"class": "user_rating"}) diff --git a/sickbeard/providers/btdigg.py b/sickbeard/providers/btdigg.py index f0be007a4a5981b0117a8031d5227e570b987929..b608613f80904e7d11c4064bb72e9c00dec389f7 100644 --- a/sickbeard/providers/btdigg.py +++ b/sickbeard/providers/btdigg.py @@ -36,8 +36,12 @@ class BTDIGGProvider(generic.TorrentProvider): self.supportsBacklog = True self.public = True - self.url = 'https://api.btdigg.org/' - + + self.urls = {'url': u'https://btdigg.org/', + 'api': u'https://api.btdigg.org/', + } + self.url = self.urls['url'] + self.cache = BTDiggCache(self) def isEnabled(self): @@ -131,7 +135,7 @@ class BTDIGGProvider(generic.TorrentProvider): logger.log("Performing Search: {0}".format(search_params)) # TODO: Make order configurable. 0: weight, 1: req, 2: added, 3: size, 4: files, 5 - searchUrl = self.url + "api/private-341ada3245790954/s02?q=" + search_params + "&p=0&order=1" + searchUrl = self.urls['api'] + "api/private-341ada3245790954/s02?q=" + search_params + "&p=0&order=1" jdata = self.getURL(searchUrl, json=True) if not jdata: diff --git a/sickbeard/providers/btn.py b/sickbeard/providers/btn.py index 70b7e8a3a293bc64e4acee477e4a00f52704bdcd..e38484ad05b45c51b197a45327b1f4f4796901b6 100644 --- a/sickbeard/providers/btn.py +++ b/sickbeard/providers/btn.py @@ -54,10 +54,10 @@ class BTNProvider(generic.TorrentProvider): self.cache = BTNCache(self) - self.urls = {'base_url': "http://api.btnapps.net"} + self.urls = {'base_url': u'http://api.btnapps.net', + 'website': u'http://broadcasthe.net/',} - - self.url = self.urls['base_url'] + self.url = self.urls['website'] def isEnabled(self): return self.enabled @@ -141,7 +141,7 @@ class BTNProvider(generic.TorrentProvider): def _api_call(self, apikey, params={}, results_per_page=1000, offset=0): - server = jsonrpclib.Server(self.url) + server = jsonrpclib.Server(self.urls['base_url']) parsedJSON = {} try: diff --git a/sickbeard/providers/fnt.py b/sickbeard/providers/fnt.py index a86b796e513e4e1804cede53a91245415afe638d..b94e2b82398ec77a8d6dc54b03a1f78270c08468 100644 --- a/sickbeard/providers/fnt.py +++ b/sickbeard/providers/fnt.py @@ -201,6 +201,7 @@ class FNTProvider(generic.TorrentProvider): #Filter unseeded torrent if not seeders or seeders < self.minseed or leechers < self.minleech: + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG) continue item = title, download_url , id, seeders, leechers diff --git a/sickbeard/providers/freshontv.py b/sickbeard/providers/freshontv.py index 859e0a097f8baba9ffa11a8a6aa684d91c77341a..dd7ab17ef0781bde80c97336f8821ffc8105e25d 100644 --- a/sickbeard/providers/freshontv.py +++ b/sickbeard/providers/freshontv.py @@ -295,6 +295,7 @@ class FreshOnTVProvider(generic.TorrentProvider): #Filter unseeded torrent if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG) continue if not title or not download_url: diff --git a/sickbeard/providers/kat.py b/sickbeard/providers/kat.py index 50fb3a9f3299b39d405b5dd6d6ddb03f432397ba..0f142b056037a45255b05ccc1395b59ae5d55f6a 100644 --- a/sickbeard/providers/kat.py +++ b/sickbeard/providers/kat.py @@ -141,6 +141,7 @@ class KATProvider(generic.TorrentProvider): continue if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG) continue if self.confirmed and not verified: diff --git a/sickbeard/providers/libertalia.py b/sickbeard/providers/libertalia.py index 8424a0b9e978ea224537d2f78d62105164433e62..f7a7220faf343c3a0a4782efbc9a1f929a2996e5 100644 --- a/sickbeard/providers/libertalia.py +++ b/sickbeard/providers/libertalia.py @@ -139,7 +139,7 @@ class LibertaliaProvider(generic.TorrentProvider): logger.log(u'Login to ' + self.name + ' was successful.', logger.DEBUG) return True else: - logger.log(u'Login to ' + self.name + ' was unsuccessful.', logger.DEBUG) + logger.log(u'Login to ' + self.name + ' was unsuccessful.', logger.WARNING) return False return True diff --git a/sickbeard/providers/morethantv.py b/sickbeard/providers/morethantv.py index 9560408783ad1ceaff9012ad3103a3df112407a8..1dbebd06c1ce9de0a89ebfda68cff0c741b11978 100644 --- a/sickbeard/providers/morethantv.py +++ b/sickbeard/providers/morethantv.py @@ -230,6 +230,7 @@ class MoreThanTVProvider(generic.TorrentProvider): #Filter unseeded torrent if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG) continue if not title or not download_url: diff --git a/sickbeard/providers/scc.py b/sickbeard/providers/scc.py index e70fceb5cdd5124c00c424783d34b4086f7c1753..f71151790b156fa06be28ced2e4b420bd2d662f8 100644 --- a/sickbeard/providers/scc.py +++ b/sickbeard/providers/scc.py @@ -213,6 +213,7 @@ class SCCProvider(generic.TorrentProvider): continue if not title or not download_url or seeders < self.minseed or leechers < self.minleech: + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG) continue item = title, download_url, id, seeders, leechers diff --git a/sickbeard/providers/scenetime.py b/sickbeard/providers/scenetime.py index acf01e7b4843d8357f05dff98aad7c8b7b8ee002..bad45bd4f3a23811445a352e20e1613cf884d515 100644 --- a/sickbeard/providers/scenetime.py +++ b/sickbeard/providers/scenetime.py @@ -201,6 +201,7 @@ class SceneTimeProvider(generic.TorrentProvider): #Filter unseeded torrent if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG) continue if not title or not download_url: diff --git a/sickbeard/providers/shazbat.py b/sickbeard/providers/shazbat.py index d1cb5aa92bb1cd1786361bb6f61740b03f34b481..282c706e63c593c70ab8e31c5d4da9599afefa74 100644 --- a/sickbeard/providers/shazbat.py +++ b/sickbeard/providers/shazbat.py @@ -38,8 +38,9 @@ class ShazbatProvider(generic.TorrentProvider): self.cache = ShazbatCache(self) - self.urls = {'base_url': 'http://www.shazbat.tv/'} - self.url = self.urls['base_url'] + self.urls = {'base_url': u'http://www.shazbat.tv/', + 'website': u'http://www.shazbat.tv/login',} + self.url = self.urls['website'] def isEnabled(self): return self.enabled @@ -76,7 +77,7 @@ class ShazbatCache(tvcache.TVCache): def _getRSSData(self): - rss_url = self.provider.url + 'rss/recent?passkey=' + provider.passkey + '&fname=true' + rss_url = self.provider.urls['base_url'] + 'rss/recent?passkey=' + provider.passkey + '&fname=true' logger.log(self.provider.name + u" cache update URL: " + rss_url, logger.DEBUG) return self.getRSSFeed(rss_url, items=['entries', 'feed']) diff --git a/sickbeard/providers/speedcd.py b/sickbeard/providers/speedcd.py index 4533e94d22c389bd1eba5f3a52f0a23778d062a1..a57b7e430a73cb75d92899338a29819a784b7193 100644 --- a/sickbeard/providers/speedcd.py +++ b/sickbeard/providers/speedcd.py @@ -176,6 +176,7 @@ class SpeedCDProvider(generic.TorrentProvider): leechers = int(torrent['leech']) if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG) continue if not title or not url: diff --git a/sickbeard/providers/strike.py b/sickbeard/providers/strike.py index 18f39be7a024d26407c454e72ca3102356bb7b19..a4af145aa9e928dd5bfe3a3218fc956fc42fb436 100644 --- a/sickbeard/providers/strike.py +++ b/sickbeard/providers/strike.py @@ -143,9 +143,10 @@ class STRIKEProvider(generic.TorrentProvider): for item in jdata['torrents']: seeders = ('seeds' in item and item['seeds']) or 0 leechers = ('leeches' in item and item['leeches']) or 0 + name = ('torrent_title' in item and item['torrent_title']) or '' if seeders < self.minseed or leechers < self.minleech: + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG) continue - name = ('torrent_title' in item and item['torrent_title']) or '' magnet = ('magnet_uri' in item and item['magnet_uri']) or '' if name and magnet: results.append((name, magnet, seeders)) diff --git a/sickbeard/providers/thepiratebay.py b/sickbeard/providers/thepiratebay.py index 3cf73da813aef876a7909bdb412cdbfaf2cb691e..682994d3061237df87f5a65cd232121b7a9d2714 100644 --- a/sickbeard/providers/thepiratebay.py +++ b/sickbeard/providers/thepiratebay.py @@ -149,6 +149,7 @@ class ThePirateBayProvider(generic.TorrentProvider): #Filter unseeded torrent if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG) continue #Accept Torrent only from Good People for every Episode Search diff --git a/sickbeard/providers/tntvillage.py b/sickbeard/providers/tntvillage.py index 4c357a674423cb0416088c08920588bb10324730..ebaf4ef2ed335b7170958cf9968551c056c1145f 100644 --- a/sickbeard/providers/tntvillage.py +++ b/sickbeard/providers/tntvillage.py @@ -404,6 +404,7 @@ class TNTVillageProvider(generic.TorrentProvider): continue if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG) continue if not title or not download_url: diff --git a/sickbeard/providers/torrentbytes.py b/sickbeard/providers/torrentbytes.py index 95400ea00eea41691bbad992b760984e6431cbe0..c0fac96dd69bb46e6124e84a94e52898308930f7 100644 --- a/sickbeard/providers/torrentbytes.py +++ b/sickbeard/providers/torrentbytes.py @@ -195,6 +195,7 @@ class TorrentBytesProvider(generic.TorrentProvider): #Filter unseeded torrent if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG) continue if not title or not download_url: diff --git a/sickbeard/providers/torrentleech.py b/sickbeard/providers/torrentleech.py index d46ba094d32c4fbe6d14d3bf86eba309ee1f3f2d..2446e18499dfd6fb14d8dd1c393f74c42f71695b 100644 --- a/sickbeard/providers/torrentleech.py +++ b/sickbeard/providers/torrentleech.py @@ -194,6 +194,7 @@ class TorrentLeechProvider(generic.TorrentProvider): #Filter unseeded torrent if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG) continue if not title or not download_url: diff --git a/sickbeard/providers/transmitthenet.py b/sickbeard/providers/transmitthenet.py index b9113e3f98e889a2b1ef31aaf441835f5b4b1cca..e1deb3fee7c67a2bdb126fee2ab7a0434702a6ba 100644 --- a/sickbeard/providers/transmitthenet.py +++ b/sickbeard/providers/transmitthenet.py @@ -195,6 +195,7 @@ class TransmitTheNetProvider(generic.TorrentProvider): #Filter unseeded torrent if seeders < self.minseed: + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders: {0} (S:{1})".format(name, seeders), logger.DEBUG) continue if not title or not download_href: diff --git a/sickbeard/providers/tvchaosuk.py b/sickbeard/providers/tvchaosuk.py index 297762280af09d14429e5a1e68dfb4bee0b33c65..6c14551887e7026d450fc49f07aaeb8d570060be 100644 --- a/sickbeard/providers/tvchaosuk.py +++ b/sickbeard/providers/tvchaosuk.py @@ -171,6 +171,7 @@ class TVChaosUKProvider(generic.TorrentProvider): #Filter unseeded torrent if not seeders or seeders < self.minseed or leechers < self.minleech: + logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(name, seeders, leechers), logger.DEBUG) continue if not title or not url: diff --git a/sickbeard/providers/xthor.py b/sickbeard/providers/xthor.py index ebbfec0598b9143d820b04d178680a168f86457c..350b5c98011086636be3df6e21fb46b480882d6f 100644 --- a/sickbeard/providers/xthor.py +++ b/sickbeard/providers/xthor.py @@ -47,7 +47,7 @@ class XthorProvider(generic.TorrentProvider): self.cj = cookielib.CookieJar() self.url = "https://xthor.bz" - self.urlsearch = "https://xthor.bz/browse.php?search=%s%s" + self.urlsearch = "https://xthor.bz/browse.php?search=\"%s%s\"" self.categories = "&searchin=title&incldead=0" self.enabled = False diff --git a/sickbeard/subtitles.py b/sickbeard/subtitles.py index 3bb9cc2e4c70d23ef0548c70510750d97836d168..3850a5333537fe9954fbef69fa2fa7df9482ad3c 100644 --- a/sickbeard/subtitles.py +++ b/sickbeard/subtitles.py @@ -94,7 +94,7 @@ def subtitlesLanguages(video_path): resultList = [] # Serch for embedded subtitles - embedded_languages = subliminal.video.scan_video(video_path, subtitles=False, embedded_subtitles=not sickbeard.EMBEDDED_SUBTITLES_ALL) + embedded_languages = subliminal.scan_video(video_path, subtitles=False, embedded_subtitles=not sickbeard.EMBEDDED_SUBTITLES_ALL) # Search subtitles in the absolute path if sickbeard.SUBTITLES_DIR and ek(os.path.exists, sickbeard.SUBTITLES_DIR): diff --git a/sickbeard/traktChecker.py b/sickbeard/traktChecker.py index 7d0d4e11ef0a20e30ede2e12e4a481c091f3120b..7fb995cdaaf5a699f3c04b648346ad06005f29a9 100644 --- a/sickbeard/traktChecker.py +++ b/sickbeard/traktChecker.py @@ -425,10 +425,12 @@ class TraktChecker(): else: helpers.chmodAsParent(showPath) - sickbeard.showQueueScheduler.action.addShow(int(indexer), int(indexer_id), showPath, status, - int(sickbeard.QUALITY_DEFAULT), - int(sickbeard.FLATTEN_FOLDERS_DEFAULT), - paused=sickbeard.TRAKT_START_PAUSED) + sickbeard.showQueueScheduler.action.addShow(int(indexer), int(indexer_id), showPath, + default_status=status, + quality=int(sickbeard.QUALITY_DEFAULT), + flatten_folders=int(sickbeard.FLATTEN_FOLDERS_DEFAULT), + paused=sickbeard.TRAKT_START_PAUSED, + default_status_after=status) else: logger.log(u"There was an error creating the show, no root directory setting found", logger.ERROR) return diff --git a/sickbeard/tv.py b/sickbeard/tv.py index 31059dfd32fa319e0f92415d50a7896f80955bb0..442677c1324ff75b574f65425dbb8bff6708de0f 100644 --- a/sickbeard/tv.py +++ b/sickbeard/tv.py @@ -1433,6 +1433,13 @@ class TVEpisode(object): """Look for subtitles files and refresh the subtitles property""" self.subtitles = subtitles.subtitlesLanguages(self.location) + def getWantedLanguages(self): + languages = set() + for language in frozenset(subtitles.wantedLanguages()).difference(subtitles.subtitlesLanguages(self.location)): + languages.add(subtitles.fromietf(language)) + self.refreshSubtitles() + return languages + def downloadSubtitles(self, force=False): if not ek(os.path.isfile, self.location): logger.log(u"%s: Episode file doesn't exist, can't download subtitles for S%02dE%02d" % @@ -1449,15 +1456,11 @@ class TVEpisode(object): #logging.getLogger('subliminal').setLevel(logging.DEBUG) try: - languages = set() - for language in frozenset(subtitles.wantedLanguages()).difference(self.subtitles): - languages.add(subtitles.fromietf(language)) - + providers = sickbeard.subtitles.getEnabledServiceList() + languages = self.getWantedLanguages(); if not languages: logger.log(u'%s: No missing subtitles for S%02dE%02d' % (self.show.indexerid, self.season, self.episode), logger.DEBUG) return - - providers = sickbeard.subtitles.getEnabledServiceList() vname = self.location video = None try: diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py index 4659f5db1489bfcef009b79fc40ee8126758cb3b..8f98be9a042776185c3982e47bad6e9e22222ad8 100644 --- a/sickbeard/webapi.py +++ b/sickbeard/webapi.py @@ -92,7 +92,6 @@ result_type_map = { class ApiHandler(RequestHandler): """ api class that returns json results """ version = 5 # use an int since float-point is unpredictable - intent = 4 def __init__(self, *args, **kwargs): super(ApiHandler, self).__init__(*args, **kwargs) @@ -110,8 +109,9 @@ class ApiHandler(RequestHandler): # set the output callback # default json - outputCallbackDict = {'default': self._out_as_json, - 'image': lambda x: x['image'], + outputCallbackDict = { + 'default': self._out_as_json, + 'image': self._out_as_image, } accessMsg = u"API :: " + self.request.remote_ip + " - gave correct API KEY. ACCESS GRANTED" @@ -149,20 +149,23 @@ class ApiHandler(RequestHandler): try:self.finish(outputCallback(outDict)) except:pass + def _out_as_image(self, dict): + self.set_header('Content-Type', dict['image'].get_media_type()) + return dict['image'].get_media() + def _out_as_json(self, dict): self.set_header("Content-Type", "application/json;charset=UTF-8") try: - out = json.dumps(dict, indent=self.intent, ensure_ascii=False, sort_keys=True) + out = json.dumps(dict, ensure_ascii=False, sort_keys=True) callback = self.get_query_argument('callback', None) or self.get_query_argument('jsonp', None) - if callback != None: + if callback is not None: out = callback + '(' + out + ');' # wrap with JSONP call if requested except Exception, e: # if we fail to generate the output fake an error logger.log(u"API :: " + traceback.format_exc(), logger.DEBUG) - out = '{"result":"' + result_type_map[RESULT_ERROR] + '", "message": "error while composing output: "' + ex( - e) + '"}' + out = '{"result": "%s", "message": "error while composing output: %s"}' %\ + (result_type_map[RESULT_ERROR], ex(e)) return out - def call_dispatcher(self, args, kwargs): """ calls the appropriate CMD class looks for a cmd in args and kwargs @@ -268,7 +271,7 @@ class ApiHandler(RequestHandler): class ApiCall(ApiHandler): - _help = {"desc": "No help message available. Please tell the devs that a help msg is missing for this cmd"} + _help = {"desc": "This command is not documented. Please report this to the developers."} def __init__(self, args, kwargs): # missing @@ -450,7 +453,7 @@ class ApiCall(ApiHandler): class TVDBShorthandWrapper(ApiCall): - _help = {"desc": "this is an internal function wrapper. call the help command directly for more information"} + _help = {"desc": "This is an internal function wrapper. Call the help command directly for more information."} def __init__(self, args, kwargs, sid): self.origArgs = args @@ -626,20 +629,21 @@ class IntParseError(Exception): class CMD_Help(ApiCall): - _help = {"desc": "display help information for a given subject/command", - "optionalParameters": {"subject": {"desc": "command - the top level command"}, - } + _help = { + "desc": "Get help about a given command", + "optionalParameters": { + "subject": {"desc": "The name of the command to get the help of"}, + } } def __init__(self, args, kwargs): # required # optional - self.subject, args = self.check_params(args, kwargs, "subject", "help", False, "string", - _functionMaper.keys()) + self.subject, args = self.check_params(args, kwargs, "subject", "help", False, "string", _functionMaper.keys()) ApiCall.__init__(self, args, kwargs) def run(self): - """ display help information for a given subject/command """ + """ Get help about a given command """ if self.subject in _functionMaper: out = _responds(RESULT_SUCCESS, _functionMaper.get(self.subject)((), {"help": 1}).run()) else: @@ -649,10 +653,10 @@ class CMD_Help(ApiCall): class CMD_ComingEpisodes(ApiCall): _help = { - "desc": "Display the coming episodes", + "desc": "Get the coming episodes", "optionalParameters": { "sort": {"desc": "Change the sort order"}, - "type": {"desc": "One or more of allowedValues separated by |"}, + "type": {"desc": "One or more categories of coming episodes, separated by |"}, "paused": { "desc": "0 to exclude paused shows, 1 to include them, or omitted to use SickRage default value" }, @@ -665,13 +669,13 @@ class CMD_ComingEpisodes(ApiCall): self.sort, args = self.check_params(args, kwargs, "sort", "date", False, "string", ComingEpisodes.sorts.keys()) self.type, args = self.check_params(args, kwargs, "type", '|'.join(ComingEpisodes.categories), False, "list", ComingEpisodes.categories) - self.paused, args = self.check_params(args, kwargs, "paused", sickbeard.COMING_EPS_DISPLAY_PAUSED, False, "int", - [0, 1]) + self.paused, args = self.check_params(args, kwargs, "paused", sickbeard.COMING_EPS_DISPLAY_PAUSED, False, + "bool", []) # super, missing, help ApiCall.__init__(self, args, kwargs) def run(self): - """ Display the coming episodes """ + """ Get the coming episodes """ grouped_coming_episodes = ComingEpisodes.get_coming_episodes(self.type, self.sort, True, self.paused) data = {section: [] for section in grouped_coming_episodes.keys()} @@ -698,17 +702,19 @@ class CMD_ComingEpisodes(ApiCall): class CMD_Episode(ApiCall): - _help = {"desc": "display detailed info about an episode", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"}, - "season": {"desc": "the season number"}, - "episode": {"desc": "the episode number"} - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "full_path": { - "desc": "show the full absolute path (if valid) instead of a relative path for the episode location"} - } + _help = { + "desc": "Get detailed information about an episode", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + "season": {"desc": "The season number"}, + "episode": {"desc": "The episode number"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "full_path": { + "desc": "Return the full absolute show location (if valid, and True), or the relative show location" + }, + } } def __init__(self, args, kwargs): @@ -722,7 +728,7 @@ class CMD_Episode(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display detailed info about an episode """ + """ Get detailed information about an episode """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -763,15 +769,16 @@ class CMD_Episode(ApiCall): class CMD_EpisodeSearch(ApiCall): - _help = {"desc": "search for an episode. the response might take some time", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"}, - "season": {"desc": "the season number"}, - "episode": {"desc": "the episode number"} - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - } + _help = { + "desc": "Search for an episode. The response might take some time.", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + "season": {"desc": "The season number"}, + "episode": {"desc": "The episode number"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -784,7 +791,7 @@ class CMD_EpisodeSearch(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ search for an episode """ + """ Search for an episode """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -813,18 +820,18 @@ class CMD_EpisodeSearch(ApiCall): class CMD_EpisodeSetStatus(ApiCall): - _help = {"desc": "set status of an episode or season (when no ep is provided)", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"}, - "season": {"desc": "the season number"}, - "status": {"desc": "the status values: wanted, skipped, ignored, failed"} - }, - "optionalParameters": { - "episode": {"desc": "the episode number"}, - "force": {"desc": "should we replace existing (downloaded) episodes or not"}, - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - } - + _help = { + "desc": "Set the status of an episode or a season (when no episode is provided)", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + "season": {"desc": "The season number"}, + "status": {"desc": "The status of the episode or season"} + }, + "optionalParameters": { + "episode": {"desc": "The episode number"}, + "force": {"desc": "True to replace existing downloaded episode or season, False otherwise"}, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -840,7 +847,7 @@ class CMD_EpisodeSetStatus(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ set status of an episode or a season (when no ep is provided) """ + """ Set the status of an episode or a season (when no episode is provided) """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -932,15 +939,16 @@ class CMD_EpisodeSetStatus(ApiCall): class CMD_SubtitleSearch(ApiCall): - _help = {"desc": "search episode subtitles. the response might take some time", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"}, - "season": {"desc": "the season number"}, - "episode": {"desc": "the episode number"} - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - } + _help = { + "desc": "Search for an episode subtitles. The response might take some time.", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + "season": {"desc": "The season number"}, + "episode": {"desc": "The episode number"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -953,7 +961,7 @@ class CMD_SubtitleSearch(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ search episode subtitles """ + """ Search for an episode subtitles """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -987,11 +995,12 @@ class CMD_SubtitleSearch(ApiCall): class CMD_Exceptions(ApiCall): - _help = {"desc": "display scene exceptions for all or a given show", - "optionalParameters": { - "indexerid": {"desc": "unique id of a show"}, - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - } + _help = { + "desc": "Get the scene exceptions for all or a given show", + "optionalParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -1003,7 +1012,7 @@ class CMD_Exceptions(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display scene exceptions for all or a given show """ + """ Get the scene exceptions for all or a given show """ myDB = db.DBConnection("cache.db", row_type="dict") if self.indexerid == None: @@ -1032,10 +1041,10 @@ class CMD_Exceptions(ApiCall): class CMD_History(ApiCall): _help = { - "desc": "display SickRage downloaded/snatched history", + "desc": "Get the downloaded and/or snatched history", "optionalParameters": { - "limit": {"desc": "limit returned results"}, - "type": {"desc": "only show a specific type of results"}, + "limit": {"desc": "The maximum number of results to return"}, + "type": {"desc": "Only get some entries. No value will returns every type"}, } } @@ -1043,15 +1052,14 @@ class CMD_History(ApiCall): # required # optional self.limit, args = self.check_params(args, kwargs, "limit", 100, False, "int", []) - self.type, args = self.check_params(args, kwargs, "type", None, False, "string", - ["downloaded", "snatched"]) + self.type, args = self.check_params(args, kwargs, "type", None, False, "string", ["downloaded", "snatched"]) self.type = self.type.lower() if isinstance(self.type, str) else '' # super, missing, help ApiCall.__init__(self, args, kwargs) def run(self): - """ display SickRage downloaded/snatched history """ + """ Get the downloaded and/or snatched history """ data = History().get(self.limit, self.type) results = [] @@ -1080,7 +1088,7 @@ class CMD_History(ApiCall): class CMD_HistoryClear(ApiCall): - _help = {"desc": "clear SickRage's history"} + _help = {"desc": "Clear the entire history"} def __init__(self, args, kwargs): # required @@ -1089,14 +1097,14 @@ class CMD_HistoryClear(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ clear SickRage's history """ + """ Clear the entire history """ History().clear() return _responds(RESULT_SUCCESS, msg="History cleared") class CMD_HistoryTrim(ApiCall): - _help = {"desc": "trim SickRage's history by removing entries greater than 30 days old"} + _help = {"desc": "Trim history entries older than 30 days"} def __init__(self, args, kwargs): # required @@ -1105,16 +1113,18 @@ class CMD_HistoryTrim(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ trim SickRage's history """ + """ Trim history entries older than 30 days """ History().trim() return _responds(RESULT_SUCCESS, msg='Removed history entries older than 30 days') class CMD_Failed(ApiCall): - _help = {"desc": "display failed downloads", - "optionalParameters": {"limit": {"desc": "limit returned results"} - } + _help = { + "desc": "Get the failed downloads", + "optionalParameters": { + "limit": {"desc": "The maximum number of results to return"}, + } } def __init__(self, args, kwargs): @@ -1125,7 +1135,7 @@ class CMD_Failed(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display failed downloads """ + """ Get the failed downloads """ myDB = db.DBConnection('failed.db', row_type="dict") @@ -1137,8 +1147,9 @@ class CMD_Failed(ApiCall): return _responds(RESULT_SUCCESS, sqlResults) + class CMD_Backlog(ApiCall): - _help = {"desc": "display backlogged episodes"} + _help = {"desc": "Get the backlogged episodes"} def __init__(self, args, kwargs): # required @@ -1147,7 +1158,7 @@ class CMD_Backlog(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display backlogged episodes """ + """ Get the backlogged episodes """ shows = [] @@ -1176,10 +1187,17 @@ class CMD_Backlog(ApiCall): return _responds(RESULT_SUCCESS, shows) + class CMD_Logs(ApiCall): - _help = {"desc": "view sickrage's log", - "optionalParameters": {"min_level ": { - "desc": "the minimum level classification of log entries to show, with each level inherting its above level"}} + _help = { + "desc": "Get the logs", + "optionalParameters": { + "min_level": { + "desc": + "The minimum level classification of log entries to return. " + "Each level inherits its above levels: debug < info < warning < error" + }, + } } def __init__(self, args, kwargs): @@ -1191,7 +1209,7 @@ class CMD_Logs(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ view sickrage's log """ + """ Get the logs """ # 10 = Debug / 20 = Info / 30 = Warning / 40 = Error minLevel = logger.reverseNames[str(self.min_level).upper()] @@ -1237,15 +1255,17 @@ class CMD_Logs(ApiCall): class CMD_PostProcess(ApiCall): - _help = {"desc": "Manual postprocess TV Download Dir", - "optionalParameters": {"path": {"desc": "Post process this folder"}, - "force_replace": {"desc": "Force already Post Processed Dir/Files"}, - "return_data": {"desc": "Returns result for the process"}, - "process_method": {"desc": "Symlink, hardlink, move or copy the file"}, - "is_priority": {"desc": "Replace the file even if it exists in a higher quality"}, - "failed": {"desc": "Mark download as failed"}, - "type": {"desc": "What type of postprocess request is this, auto of manual"} - } + _help = { + "desc": "Manually post-process the files in the download folder", + "optionalParameters": { + "path": {"desc": "The path to the folder to post-process"}, + "force_replace": {"desc": "Force already post-processed files to be post-processed again"}, + "return_data": {"desc": "Returns the result of the post-process"}, + "process_method": {"desc": "How should valid post-processed files be handled"}, + "is_priority": {"desc": "Replace the file even if it exists in a higher quality"}, + "failed": {"desc": "Mark download as failed"}, + "type": {"desc": "The type of post-process being requested"}, + } } def __init__(self, args, kwargs): @@ -1254,17 +1274,16 @@ class CMD_PostProcess(ApiCall): self.path, args = self.check_params(args, kwargs, "path", None, False, "string", []) self.force_replace, args = self.check_params(args, kwargs, "force_replace", 0, False, "bool", []) self.return_data, args = self.check_params(args, kwargs, "return_data", 0, False, "bool", []) - self.process_method, args = self.check_params(args, kwargs, "process_method", False, False, - "string", ["copy", "symlink", "hardlink", "move"]) + self.process_method, args = self.check_params(args, kwargs, "process_method", False, False, "string", + ["copy", "symlink", "hardlink", "move"]) self.is_priority, args = self.check_params(args, kwargs, "is_priority", 0, False, "bool", []) self.failed, args = self.check_params(args, kwargs, "failed", 0, False, "bool", []) - self.type, args = self.check_params(args, kwargs, "type", "auto", None, "string", - ["auto", "manual"]) + self.type, args = self.check_params(args, kwargs, "type", "auto", None, "string", ["auto", "manual"]) # super, missing, help ApiCall.__init__(self, args, kwargs) def run(self): - """ Starts the postprocess """ + """ Manually post-process the files in the download folder """ if not self.path and not sickbeard.TV_DOWNLOAD_DIR: return _responds(RESULT_FAILURE, msg="You need to provide a path or set TV Download Dir") @@ -1284,7 +1303,7 @@ class CMD_PostProcess(ApiCall): class CMD_SickBeard(ApiCall): - _help = {"desc": "display misc sickrage related information"} + _help = {"desc": "Get miscellaneous information about SickRage"} def __init__(self, args, kwargs): # required @@ -1293,18 +1312,21 @@ class CMD_SickBeard(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display misc sickrage related information """ + """ dGet miscellaneous information about SickRage """ data = {"sr_version": sickbeard.BRANCH, "api_version": self.version, "api_commands": sorted(_functionMaper.keys())} return _responds(RESULT_SUCCESS, data) class CMD_SickBeardAddRootDir(ApiCall): - _help = {"desc": "add a sickrage user's parent directory", - "requiredParameters": {"location": {"desc": "the full path to root (parent) directory"} - }, - "optionalParameters": {"default": {"desc": "make the location passed the default root (parent) directory"} - } + _help = { + "desc": "Add a new root (parent) directory to SickRage", + "requiredParameters": { + "location": {"desc": "The full path to the new root (parent) directory"}, + }, + "optionalParameters": { + "default": {"desc": "Make this new location the default root (parent) directory"}, + } } def __init__(self, args, kwargs): @@ -1316,7 +1338,7 @@ class CMD_SickBeardAddRootDir(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ add a parent directory to sickrage's config """ + """ Add a new root (parent) directory to SickRage """ self.location = urllib.unquote_plus(self.location) location_matched = 0 @@ -1356,8 +1378,9 @@ class CMD_SickBeardAddRootDir(ApiCall): sickbeard.ROOT_DIRS = root_dirs_new return _responds(RESULT_SUCCESS, _getRootDirs(), msg="Root directories updated") + class CMD_SickBeardCheckVersion(ApiCall): - _help = {"desc": "check if a new version of SickRage is available"} + _help = {"desc": "Check if a new version of SickRage is available"} def __init__(self, args, kwargs): # required @@ -1386,8 +1409,9 @@ class CMD_SickBeardCheckVersion(ApiCall): return _responds(RESULT_SUCCESS, data) + class CMD_SickBeardCheckScheduler(ApiCall): - _help = {"desc": "query the scheduler"} + _help = {"desc": "Get information about the scheduler"} def __init__(self, args, kwargs): # required @@ -1396,7 +1420,7 @@ class CMD_SickBeardCheckScheduler(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ query the scheduler """ + """ Get information about the scheduler """ myDB = db.DBConnection() sqlResults = myDB.select("SELECT last_backlog FROM info") @@ -1411,8 +1435,11 @@ class CMD_SickBeardCheckScheduler(ApiCall): class CMD_SickBeardDeleteRootDir(ApiCall): - _help = {"desc": "delete a sickrage user's parent directory", - "requiredParameters": {"location": {"desc": "the full path to root (parent) directory"}} + _help = { + "desc": "Delete a root (parent) directory from SickRage", + "requiredParameters": { + "location": {"desc": "The full path to the root (parent) directory to remove"}, + } } def __init__(self, args, kwargs): @@ -1423,7 +1450,7 @@ class CMD_SickBeardDeleteRootDir(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ delete a parent directory from sickrage's config """ + """ Delete a root (parent) directory from SickRage """ if sickbeard.ROOT_DIRS == "": return _responds(RESULT_FAILURE, _getRootDirs(), msg="No root directories detected") @@ -1457,7 +1484,7 @@ class CMD_SickBeardDeleteRootDir(ApiCall): class CMD_SickBeardGetDefaults(ApiCall): - _help = {"desc": "get sickrage user defaults"} + _help = {"desc": "Get SickRage's user default configuration value"} def __init__(self, args, kwargs): # required @@ -1466,7 +1493,7 @@ class CMD_SickBeardGetDefaults(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ get sickrage user defaults """ + """ Get SickRage's user default configuration value """ anyQualities, bestQualities = _mapQuality(sickbeard.QUALITY_DEFAULT) @@ -1477,7 +1504,7 @@ class CMD_SickBeardGetDefaults(ApiCall): class CMD_SickBeardGetMessages(ApiCall): - _help = {"desc": "get all messages"} + _help = {"desc": "Get all messages"} def __init__(self, args, kwargs): # required @@ -1495,7 +1522,7 @@ class CMD_SickBeardGetMessages(ApiCall): class CMD_SickBeardGetRootDirs(ApiCall): - _help = {"desc": "get sickrage user parent directories"} + _help = {"desc": "Get all root (parent) directories"} def __init__(self, args, kwargs): # required @@ -1504,14 +1531,17 @@ class CMD_SickBeardGetRootDirs(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ get the parent directories defined in sickrage's config """ + """ Get all root (parent) directories """ return _responds(RESULT_SUCCESS, _getRootDirs()) class CMD_SickBeardPauseBacklog(ApiCall): - _help = {"desc": "pause the backlog search", - "optionalParameters": {"pause ": {"desc": "pause or unpause the global backlog"}} + _help = { + "desc": "Pause or unpause the backlog search", + "optionalParameters": { + "pause ": {"desc": "True to pause the backlog search, False to unpause it"} + } } def __init__(self, args, kwargs): @@ -1522,7 +1552,7 @@ class CMD_SickBeardPauseBacklog(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ pause the backlog search """ + """ Pause or unpause the backlog search """ if self.pause: sickbeard.searchQueueScheduler.action.pause_backlog() # @UndefinedVariable return _responds(RESULT_SUCCESS, msg="Backlog paused") @@ -1532,7 +1562,7 @@ class CMD_SickBeardPauseBacklog(ApiCall): class CMD_SickBeardPing(ApiCall): - _help = {"desc": "check to see if sickrage is running"} + _help = {"desc": "Ping SickRage to check if it is running"} def __init__(self, args, kwargs): # required @@ -1541,7 +1571,7 @@ class CMD_SickBeardPing(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ check to see if sickrage is running """ + """ Ping SickRage to check if it is running """ if sickbeard.started: return _responds(RESULT_SUCCESS, {"pid": sickbeard.PID}, "Pong") else: @@ -1549,7 +1579,7 @@ class CMD_SickBeardPing(ApiCall): class CMD_SickBeardRestart(ApiCall): - _help = {"desc": "restart SickRage"} + _help = {"desc": "Restart SickRage"} def __init__(self, args, kwargs): # required @@ -1558,7 +1588,7 @@ class CMD_SickBeardRestart(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ restart SickRage """ + """ Restart SickRage """ if not Restart.restart(sickbeard.PID): return _responds(RESULT_FAILURE, msg='SickRage can not be restarted') @@ -1566,12 +1596,14 @@ class CMD_SickBeardRestart(ApiCall): class CMD_SickBeardSearchIndexers(ApiCall): - _help = {"desc": "search for show on the indexers with a given string and language", - "optionalParameters": {"name": {"desc": "name of the show you want to search for"}, - "indexerid": {"desc": "unique id of a show"}, - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "lang": {"desc": "the 2 letter abbreviation lang id"} - } + _help = { + "desc": "Search for a show with a given name on all the indexers, in a specific language", + "optionalParameters": { + "name": {"desc": "The name of the show you want to search for"}, + "indexerid": {"desc": "Unique ID of a show"}, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "lang": {"desc": "The 2-letter language code of the desired show"}, + } } def __init__(self, args, kwargs): @@ -1579,15 +1611,15 @@ class CMD_SickBeardSearchIndexers(ApiCall): # required # optional self.name, args = self.check_params(args, kwargs, "name", None, False, "string", []) - self.lang, args = self.check_params(args, kwargs, "lang", sickbeard.INDEXER_DEFAULT_LANGUAGE, False, "string", self.valid_languages.keys()) - + self.lang, args = self.check_params(args, kwargs, "lang", sickbeard.INDEXER_DEFAULT_LANGUAGE, False, "string", + self.valid_languages.keys()) self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, False, "int", []) # super, missing, help ApiCall.__init__(self, args, kwargs) def run(self): - """ search for show at tvdb with a given string and language """ + """ Search for a show with a given name on all the indexers, in a specific language """ results = [] lang_id = self.valid_languages[self.lang] @@ -1654,14 +1686,15 @@ class CMD_SickBeardSearchIndexers(ApiCall): class CMD_SickBeardSearchTVDB(CMD_SickBeardSearchIndexers): - _help = {"desc": "search for show on theTVDB with a given string and language", - "optionalParameters": {"name": {"desc": "name of the show you want to search for"}, - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "lang": {"desc": "the 2 letter abbreviation lang id"} - } + _help = { + "desc": "Search for a show with a given name on The TVDB, in a specific language", + "optionalParameters": { + "name": {"desc": "The name of the show you want to search for"}, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "lang": {"desc": "The 2-letter language code of the desired show"}, + } } - def __init__(self, args, kwargs): CMD_SickBeardSearchIndexers.__init__(self, args, kwargs) self.indexerid, args = self.check_params(args, kwargs, "tvdbid", None, False, "int", []) @@ -1672,10 +1705,14 @@ class CMD_SickBeardSearchTVRAGE(CMD_SickBeardSearchIndexers): Deprecated, TVRage is no more. """ - _help = {"desc": "search for show on TVRage with a given string and language", - "optionalParameters": {"name": {"desc": "name of the show you want to search for"}, - "lang": {"desc": "the 2 letter abbreviation lang id"} - } + _help = { + "desc": + "Search for a show with a given name on TVRage, in a specific language. " + "This command should not longer be used, as TVRage was shut down.", + "optionalParameters": { + "name": {"desc": "The name of the show you want to search for"}, + "lang": {"desc": "The 2-letter language code of the desired show"}, + } } def __init__(self, args, kwargs): @@ -1684,13 +1721,17 @@ class CMD_SickBeardSearchTVRAGE(CMD_SickBeardSearchIndexers): def run(self): return _responds(RESULT_FAILURE, msg="TVRage is no more, invalid result") + class CMD_SickBeardSetDefaults(ApiCall): - _help = {"desc": "set sickrage user defaults", - "optionalParameters": {"initial": {"desc": "initial quality for the show"}, - "archive": {"desc": "archive quality for the show"}, - "flatten_folders": {"desc": "flatten subfolders within the show directory"}, - "status": {"desc": "status of missing episodes"} - } + _help = { + "desc": "Set SickRage's user default configuration value", + "optionalParameters": { + "initial": {"desc": "The initial quality of a show"}, + "archive": {"desc": "The archive quality of a show"}, + "future_show_paused": {"desc": "True to list paused shows in the coming episode, False otherwise"}, + "flatten_folders": {"desc": "Flatten sub-folders within the show directory"}, + "status": {"desc": "Status of missing episodes"}, + } } def __init__(self, args, kwargs): @@ -1701,19 +1742,16 @@ class CMD_SickBeardSetDefaults(ApiCall): "fullhdwebdl", "hdbluray", "fullhdbluray", "unknown"]) self.archive, args = self.check_params(args, kwargs, "archive", None, False, "list", ["sddvd", "hdtv", "rawhdtv", "fullhdtv", "hdwebdl", - "fullhdwebdl", - "hdbluray", "fullhdbluray"]) - self.future_show_paused, args = self.check_params(args, kwargs, "future_show_paused", None, False, - "bool", []) - self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders", None, False, - "bool", []) + "fullhdwebdl", "hdbluray", "fullhdbluray"]) + self.future_show_paused, args = self.check_params(args, kwargs, "future_show_paused", None, False, "bool", []) + self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders", None, False, "bool", []) self.status, args = self.check_params(args, kwargs, "status", None, False, "string", ["wanted", "skipped", "ignored"]) # super, missing, help ApiCall.__init__(self, args, kwargs) def run(self): - """ set sickrage user defaults """ + """ Set SickRage's user default configuration value """ quality_map = {'sdtv': Quality.SDTV, 'sddvd': Quality.SDDVD, @@ -1763,7 +1801,7 @@ class CMD_SickBeardSetDefaults(ApiCall): class CMD_SickBeardShutdown(ApiCall): - _help = {"desc": "shutdown SickRage"} + _help = {"desc": "Shutdown SickRage"} def __init__(self, args, kwargs): # required @@ -1772,7 +1810,7 @@ class CMD_SickBeardShutdown(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ shutdown SickRage """ + """ Shutdown SickRage """ if not Shutdown.stop(sickbeard.PID): return _responds(RESULT_FAILURE, msg='SickRage can not be shut down') @@ -1780,7 +1818,7 @@ class CMD_SickBeardShutdown(ApiCall): class CMD_SickBeardUpdate(ApiCall): - _help = {"desc": "update SickRage to the latest version available"} + _help = {"desc": "Update SickRage to the latest version available"} def __init__(self, args, kwargs): # required @@ -1801,15 +1839,16 @@ class CMD_SickBeardUpdate(ApiCall): return _responds(RESULT_FAILURE, msg="SickRage is already up to date") -class CMD_Show(ApiCall): - _help = {"desc": "display information for a given show", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"}, - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - } +class CMD_Show(ApiCall): + _help = { + "desc": "Get detailed information about a show", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -1820,7 +1859,7 @@ class CMD_Show(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display information for a given show """ + """ Get detailed information about a show """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -1893,23 +1932,24 @@ class CMD_Show(ApiCall): class CMD_ShowAddExisting(ApiCall): - _help = {"desc": "add a show in sickrage with an existing folder", - "requiredParameters": {"indexerid": {"desc": "unique id of a show"}, - "location": {"desc": "full path to the existing folder for the show"} - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "initial": {"desc": "initial quality for the show"}, - "archive": {"desc": "archive quality for the show"}, - "flatten_folders": {"desc": "flatten subfolders for the show"}, - "subtitles": {"desc": "allow search episode subtitle"} - } + _help = { + "desc": "Add an existing show in SickRage", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + "location": {"desc": "Full path to the existing shows's folder"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "initial": {"desc": "The initial quality of the show"}, + "archive": {"desc": "The archive quality of the show"}, + "flatten_folders": {"desc": "True to flatten the show folder, False otherwise"}, + "subtitles": {"desc": "True to search for subtitles, False otherwise"}, + } } def __init__(self, args, kwargs): # required self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "", []) - self.location, args = self.check_params(args, kwargs, "location", None, True, "string", []) # optional self.initial, args = self.check_params(args, kwargs, "initial", None, False, "list", @@ -1917,18 +1957,16 @@ class CMD_ShowAddExisting(ApiCall): "fullhdwebdl", "hdbluray", "fullhdbluray", "unknown"]) self.archive, args = self.check_params(args, kwargs, "archive", None, False, "list", ["sddvd", "hdtv", "rawhdtv", "fullhdtv", "hdwebdl", - "fullhdwebdl", - "hdbluray", "fullhdbluray"]) + "fullhdwebdl", "hdbluray", "fullhdbluray"]) self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders", - str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, - "bool", []) + str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, "bool", []) self.subtitles, args = self.check_params(args, kwargs, "subtitles", int(sickbeard.USE_SUBTITLES), False, "int", []) # super, missing, help ApiCall.__init__(self, args, kwargs) def run(self): - """ add a show in sickrage with an existing folder """ + """ Add an existing show in SickRage """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if showObj: return _responds(RESULT_FAILURE, msg="An existing indexerid already exists in the database") @@ -1984,29 +2022,30 @@ class CMD_ShowAddExisting(ApiCall): class CMD_ShowAddNew(ApiCall): - _help = {"desc": "add a new show to sickrage", - "requiredParameters": {"indexerid": {"desc": "unique id of a show"} - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "initial": {"desc": "initial quality for the show"}, - "location": {"desc": "base path for where the show folder is to be created"}, - "archive": {"desc": "archive quality for the show"}, - "flatten_folders": {"desc": "flatten subfolders for the show"}, - "status": {"desc": "status of missing episodes"}, - "lang": {"desc": "the 2 letter lang abbreviation id"}, - "subtitles": {"desc": "allow search episode subtitle"}, - "anime": {"desc": "set show to anime"}, - "scene": {"desc": "show searches episodes by scene numbering"}, - "future_status": {"desc": "status of future episodes"} - } + _help = { + "desc": "Add a new show to SickRage", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "initial": {"desc": "The initial quality of the show"}, + "location": {"desc": "The path to the folder where the show should be created"}, + "archive": {"desc": "The archive quality of the show"}, + "flatten_folders": {"desc": "True to flatten the show folder, False otherwise"}, + "status": {"desc": "The status of missing episodes"}, + "lang": {"desc": "The 2-letter language code of the desired show"}, + "subtitles": {"desc": "True to search for subtitles, False otherwise"}, + "anime": {"desc": "True to mark the show as an anime, False otherwise"}, + "scene": {"desc": "True if episodes search should be made by scene numbering, False otherwise"}, + "future_status": {"desc": "The status of future episodes"}, + } } def __init__(self, args, kwargs): self.valid_languages = sickbeard.indexerApi().config['langabbv_to_id'] # required self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "int", []) - # optional self.location, args = self.check_params(args, kwargs, "location", None, False, "string", []) self.initial, args = self.check_params(args, kwargs, "initial", None, False, "list", @@ -2014,32 +2053,27 @@ class CMD_ShowAddNew(ApiCall): "fullhdwebdl", "hdbluray", "fullhdbluray", "unknown"]) self.archive, args = self.check_params(args, kwargs, "archive", None, False, "list", ["sddvd", "hdtv", "rawhdtv", "fullhdtv", "hdwebdl", - "fullhdwebdl", - "hdbluray", "fullhdbluray"]) + "fullhdwebdl", "hdbluray", "fullhdbluray"]) self.flatten_folders, args = self.check_params(args, kwargs, "flatten_folders", - str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, - "bool", []) + str(sickbeard.FLATTEN_FOLDERS_DEFAULT), False, "bool", []) self.status, args = self.check_params(args, kwargs, "status", None, False, "string", ["wanted", "skipped", "ignored"]) self.lang, args = self.check_params(args, kwargs, "lang", sickbeard.INDEXER_DEFAULT_LANGUAGE, False, "string", self.valid_languages.keys()) self.subtitles, args = self.check_params(args, kwargs, "subtitles", int(sickbeard.USE_SUBTITLES), - False, "int", - []) + False, "bool", []) self.anime, args = self.check_params(args, kwargs, "anime", int(sickbeard.ANIME_DEFAULT), False, - "int", - []) + "bool", []) self.scene, args = self.check_params(args, kwargs, "scene", int(sickbeard.SCENE_DEFAULT), False, - "int", - []) + "bool", []) self.future_status, args = self.check_params(args, kwargs, "future_status", None, False, "string", - ["wanted", "skipped", "ignored"]) + ["wanted", "skipped", "ignored"]) # super, missing, help ApiCall.__init__(self, args, kwargs) def run(self): - """ add a show in sickrage with an existing folder """ + """ Add a new show to SickRage """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if showObj: return _responds(RESULT_FAILURE, msg="An existing indexerid already exists in database") @@ -2153,13 +2187,14 @@ class CMD_ShowAddNew(ApiCall): class CMD_ShowCache(ApiCall): - _help = {"desc": "check sickrage's cache to see if the banner or poster image for a show is valid", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"} - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - } + _help = { + "desc": "Check SickRage's cache to see if the images (poster, banner, fanart) for a show are valid", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -2170,7 +2205,7 @@ class CMD_ShowCache(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ check sickrage's cache to see if the banner or poster image for a show is valid """ + """ Check SickRage's cache to see if the images (poster, banner, fanart) for a show are valid """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -2195,11 +2230,13 @@ class CMD_ShowDelete(ApiCall): _help = { "desc": "Delete a show in SickRage", "requiredParameters": { - "indexerid": {"desc": "Unique id of a show"}, + "indexerid": {"desc": "Unique ID of a show"}, }, "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "removefiles": {"desc": "Deletes the files, there is no going back! Default if false"}, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "removefiles": { + "desc": "True to delete the files associated with the show, False otherwise. This can not be undone!" + }, } } @@ -2207,7 +2244,7 @@ class CMD_ShowDelete(ApiCall): # required self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "int", []) # optional - self.removefiles, args = self.check_params(args, kwargs, "removefiles", 0, False, "int", [0, 1]) + self.removefiles, args = self.check_params(args, kwargs, "removefiles", 0, False, "bool", []) # super, missing, help ApiCall.__init__(self, args, kwargs) @@ -2222,13 +2259,14 @@ class CMD_ShowDelete(ApiCall): class CMD_ShowGetQuality(ApiCall): - _help = {"desc": "get quality setting for a show in sickrage", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"} - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - } + _help = { + "desc": "Get the quality setting of a show", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -2239,7 +2277,7 @@ class CMD_ShowGetQuality(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ get quality setting for a show in sickrage """ + """ Get the quality setting of a show """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -2251,12 +2289,12 @@ class CMD_ShowGetQuality(ApiCall): class CMD_ShowGetPoster(ApiCall): _help = { - "desc": "get the poster stored for a show in sickrage", + "desc": "Get the poster of a show", "requiredParameters": { - "indexerid": {"desc": "unique id of a show"} + "indexerid": {"desc": "Unique ID of a show"}, }, "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, } } @@ -2268,21 +2306,21 @@ class CMD_ShowGetPoster(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ get the poster for a show in sickrage """ + """ Get the poster a show """ return { 'outputType': 'image', - 'image': ShowPoster(self.indexerid).get_media() + 'image': ShowPoster(self.indexerid), } class CMD_ShowGetBanner(ApiCall): _help = { - "desc": "get the banner stored for a show in sickrage", + "desc": "Get the banner of a show", "requiredParameters": { - "indexerid": {"desc": "unique id of a show"} + "indexerid": {"desc": "Unique ID of a show"}, }, "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, } } @@ -2294,26 +2332,22 @@ class CMD_ShowGetBanner(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ get the banner for a show in sickrage """ + """ Get the banner of a show """ return { 'outputType': 'image', - 'image': ShowBanner(self.indexerid).get_media() + 'image': ShowBanner(self.indexerid), } class CMD_ShowGetNetworkLogo(ApiCall): _help = { - "desc": "Get the network logo stored for a show in SickRage", + "desc": "Get the network logo of a show", "requiredParameters": { - "indexerid": { - "desc": "Unique id of a show", - }, + "indexerid": {"desc": "Unique ID of a show"}, }, "optionalParameters": { - "tvdbid": { - "desc": "TheTVDB.com unique id of a show", - }, - }, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -2325,23 +2359,23 @@ class CMD_ShowGetNetworkLogo(ApiCall): def run(self): """ - :return: The network logo for a show in SickRage + :return: Get the network logo of a show """ return { 'outputType': 'image', - 'image': ShowNetworkLogo(self.indexerid).get_media() + 'image': ShowNetworkLogo(self.indexerid), } class CMD_ShowGetFanArt(ApiCall): _help = { - "desc": "Get the fan art stored for a show in SickRage", + "desc": "Get the fan art of a show", "requiredParameters": { - "indexerid": {"desc": "Unique id of a show"} + "indexerid": {"desc": "Unique ID of a show"}, }, "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - }, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -2352,22 +2386,22 @@ class CMD_ShowGetFanArt(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ Get the fan art for a show in SickRage """ + """ Get the fan art of a show """ return { 'outputType': 'image', - 'image': ShowFanArt(self.indexerid).get_media() + 'image': ShowFanArt(self.indexerid), } class CMD_ShowPause(ApiCall): _help = { - "desc": "Set a show's paused state in SickRage", + "desc": "Pause or unpause a show", "requiredParameters": { - "indexerid": {"desc": "Unique id of a show"}, + "indexerid": {"desc": "Unique ID of a show"}, }, "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "pause": {"desc": "1 to pause the show, 0 to resume the show"} + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "pause": {"desc": "True to pause the show, False otherwise"}, } } @@ -2380,7 +2414,7 @@ class CMD_ShowPause(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ Set a show's paused state in SickRage """ + """ Pause or unpause a show """ error, show = Show.pause(self.indexerid, self.pause) if error is not None: @@ -2393,10 +2427,10 @@ class CMD_ShowRefresh(ApiCall): _help = { "desc": "Refresh a show in SickRage", "requiredParameters": { - "indexerid": {"desc": "Unique id of a show"}, + "indexerid": {"desc": "Unique ID of a show"}, }, "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, } } @@ -2418,28 +2452,27 @@ class CMD_ShowRefresh(ApiCall): class CMD_ShowSeasonList(ApiCall): - _help = {"desc": "display the season list for a given show", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"}, - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "sort": {"desc": "change the sort order from descending to ascending"} - } + _help = { + "desc": "Get the list of seasons of a show", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "sort": {"desc": "Return the seasons in ascending or descending order"} + } } def __init__(self, args, kwargs): # required self.indexerid, args = self.check_params(args, kwargs, "indexerid", None, True, "int", []) # optional - self.sort, args = self.check_params(args, kwargs, "sort", "desc", False, "string", - ["asc", - "desc"]) # "asc" and "desc" default and fallback is "desc" + self.sort, args = self.check_params(args, kwargs, "sort", "desc", False, "string", ["asc", "desc"]) # super, missing, help ApiCall.__init__(self, args, kwargs) def run(self): - """ display the season list for a given show """ + """ Get the list of seasons of a show """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -2459,14 +2492,15 @@ class CMD_ShowSeasonList(ApiCall): class CMD_ShowSeasons(ApiCall): - _help = {"desc": "display a listing of episodes for all or a given season", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"}, - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "season": {"desc": "the season number"}, - } + _help = { + "desc": "Get the list of episodes for one or all seasons of a show", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "season": {"desc": "The season number"}, + } } def __init__(self, args, kwargs): @@ -2478,7 +2512,7 @@ class CMD_ShowSeasons(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display a listing of episodes for all or a given show """ + """ Get the list of episodes for one or all seasons of a show """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -2530,14 +2564,14 @@ class CMD_ShowSeasons(ApiCall): class CMD_ShowSetQuality(ApiCall): _help = { - "desc": "set desired quality of a show in sickrage. if neither initial or archive are provided then the config default quality will be used", + "desc": "Set the quality setting of a show. If no quality is provided, the default user setting is used.", "requiredParameters": { - "indexerid": {"desc": "unique id of a show"} + "indexerid": {"desc": "Unique ID of a show"}, }, "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - "initial": {"desc": "initial quality for the show"}, - "archive": {"desc": "archive quality for the show"} + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + "initial": {"desc": "The initial quality of the show"}, + "archive": {"desc": "The archive quality of the show"}, } } @@ -2558,9 +2592,7 @@ class CMD_ShowSetQuality(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ set the quality for a show in sickrage by taking in a deliminated - string of qualities, map to their value and combine for new values - """ + """ Set the quality setting of a show. If no quality is provided, the default user setting is used. """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -2597,13 +2629,14 @@ class CMD_ShowSetQuality(ApiCall): class CMD_ShowStats(ApiCall): - _help = {"desc": "display episode statistics for a given show", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"}, - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - } + _help = { + "desc": "Get episode statistics for a given show", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -2614,7 +2647,7 @@ class CMD_ShowStats(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display episode statistics for a given show """ + """ Get episode statistics for a given show """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -2705,13 +2738,14 @@ class CMD_ShowStats(ApiCall): class CMD_ShowUpdate(ApiCall): - _help = {"desc": "update a show in sickrage", - "requiredParameters": { - "indexerid": {"desc": "unique id of a show"}, - }, - "optionalParameters": { - "tvdbid": {"desc": "thetvdb.com unique id of a show"}, - } + _help = { + "desc": "Update a show in SickRage", + "requiredParameters": { + "indexerid": {"desc": "Unique ID of a show"}, + }, + "optionalParameters": { + "tvdbid": {"desc": "thetvdb.com unique ID of a show"}, + } } def __init__(self, args, kwargs): @@ -2722,7 +2756,7 @@ class CMD_ShowUpdate(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ update a show in sickrage """ + """ Update a show in SickRage """ showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(self.indexerid)) if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") @@ -2736,11 +2770,12 @@ class CMD_ShowUpdate(ApiCall): class CMD_Shows(ApiCall): - _help = {"desc": "display all shows in sickrage", - "optionalParameters": { - "sort": {"desc": "sort the list of shows by show name instead of indexer unique id"}, - "paused": {"desc": "only show the shows that are set to paused"}, - }, + _help = { + "desc": "Get all shows in SickRage", + "optionalParameters": { + "sort": {"desc": "The sorting strategy to apply to the list of shows"}, + "paused": {"desc": "True to include paused shows, False otherwise"}, + }, } def __init__(self, args, kwargs): @@ -2752,7 +2787,7 @@ class CMD_Shows(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display_is_int_multi( self.indexerid )shows in sickrage """ + """ Get all shows in SickRage """ shows = {} for curShow in sickbeard.showList: @@ -2796,8 +2831,7 @@ class CMD_Shows(ApiCall): class CMD_ShowsStats(ApiCall): - _help = {"desc": "display the global shows and episode stats" - } + _help = {"desc": "Get the global shows and episodes statistics"} def __init__(self, args, kwargs): # required @@ -2806,7 +2840,7 @@ class CMD_ShowsStats(ApiCall): ApiCall.__init__(self, args, kwargs) def run(self): - """ display the global shows and episode stats """ + """ Get the global shows and episodes statistics """ stats = {} myDB = db.DBConnection() diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index bf8538388d0a1e8dc13f38d9c9987694b0c2d64e..2805537dc992c2a2620ee0ab2550ea6d5cd992e4 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -3496,9 +3496,19 @@ class History(WebRoot): self.history = HistoryTool() - def index(self, limit=100): - limit = int(limit) + def index(self, limit=None): + + if limit is None: + if sickbeard.HISTORY_LIMIT: + limit = int(sickbeard.HISTORY_LIMIT) + else: + limit = 100 + else: + limit = int(limit) + sickbeard.HISTORY_LIMIT = limit + + sickbeard.save_config() compact = [] data = self.history.get(limit)