SickGear/gui/slick/interfaces/default/config_postProcessing.tmpl
JackDandy f3310e29f2 Change improve security.
Change improve security with DNS rebinding prevention, set "Allowed browser hostnames" at config/General/Web Interface.
Change improve security with cross-site request forgery (xsrf) protection on web forms.
Change improve security by sending header flag httponly with cookies
Change improve security by sending header flag secure with SSL cookies
Change improve test for creating self-signed SSL cert.
Change force restart when switching SSL on/off.
Change enable Tornado serve_traceback feature.
Change PEP8 tweaks.
2018-04-02 19:24:50 +01:00

1268 lines
48 KiB
Cheetah

#import sickbeard
#from sickbeard.common import *
#from sickbeard.helpers import anon_url
#from sickbeard import config
#from sickbeard import metadata
#from sickbeard.metadata.generic import GenericMetadata
#from sickbeard import naming
##
#set global $title = 'Config - Post Processing'
#set global $header = 'Post Processing'
#set global $sbPath = '../..'
#set global $topmenu = 'config'
##
#import os.path
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_top.tmpl')
<script type="text/javascript" src="$sbRoot/js/configPostProcessing.js?v=$sbPID"></script>
<script type="text/javascript" src="$sbRoot/js/config.js?v=$sbPID"></script>
#if $varExists('header')
<h1 class="header">$header</h1>
#else
<h1 class="title">$title</h1>
#end if
##
#set $checked = 'checked="checked"'
#set $selected = 'selected="selected" class="selected"'
<div id="config" class="pp">
<div id="config-content" class="linefix">
<form id="configForm" action="savePostProcessing" method="post">
$xsrf_form_html
<div id="config-components">
<ul>
<li><a href="#core-component-group1">Post-Processing</a></li>
<li><a href="#core-component-group2">Episode Naming</a></li>
<li><a href="#core-component-group3">Metadata</a></li>
</ul>
<div id="core-component-group1">
<div class="component-group">
<div class="component-group-desc">
<h3>Post-Processing</h3>
<p>SickGear options to process completed downloads.</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="tv_download_dir">
<span class="component-title">Completed TV downloads
<p class="red-text" style="line-height:20px;margin:0"><em class="boldest">must not</em> be the folder where downloading files are created</p>
</span>
<span class="component-desc">
<input type="text" name="tv_download_dir" id="tv_download_dir" value="$sickbeard.TV_DOWNLOAD_DIR" class="form-control input-sm input350">
<div class="pull-left">
<p class="note">folder where download clients save <b><em class="boldest">completed</em></b> downloads.&nbsp;
<b>note:</b> only use if not using SABnzbd post processing <em>or</em> if SABnzbd is on a different PC to SickGear</p>
</div>
</span>
</label>
</div>
<div class="field-pair">
<label for="process_method">
<span class="component-title">Process episode method</span>
<span class="component-desc">
<select name="process_method" id="process_method" class="form-control input-sm">
#set $process_method_text = {'copy': 'Copy', 'move': 'Move', 'hardlink': 'Hard Link', 'symlink' : 'Symbolic Link'}
#for $curAction in ('copy', 'move', 'hardlink', 'symlink'):
#set $process_method = ('', $selected)[$sickbeard.PROCESS_METHOD == $curAction]
<option value="$curAction" $process_method>$process_method_text[$curAction]</option>
#end for
</select>
<span>...&nbsp;completed downloads to under a parent TV folder</span>
</span>
</label>
</div>
<div class="field-pair">
<label for="process_automatically">
<span class="component-title">Scan and post process</span>
<span class="component-desc">
<input type="checkbox" name="process_automatically" id="process_automatically" #if $sickbeard.PROCESS_AUTOMATICALLY == True then $checked else ''#>
<p>files in the <em>completed TV downloads</em> folder</p>
<p class="clear-left note"><b>note:</b> do not enable with external post processing scripts like sabToSickbeard for SABnzbd, or NZBMedia for NZBGET</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="autopostprocesser_frequency">
<span class="component-title">Run post process every</span>
<span class="component-desc">
<input type="text" name="autopostprocesser_frequency" id="autopostprocesser_frequency" value="$sickbeard.AUTOPOSTPROCESSER_FREQUENCY" class="form-control input-sm input75">
<p>minutes to check for new files to process (e.g. 10)</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="postpone_if_sync_files">
<span class="component-title">Postpone post processing</span>
<span class="component-desc">
<input type="checkbox" name="postpone_if_sync_files" id="postpone_if_sync_files" #if $sickbeard.POSTPONE_IF_SYNC_FILES == True then $checked else ''#>
<p>if <b class="grey-text">!sync</b> files are present in the <em>completed TV downloads</em> folder</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="extra_scripts">
<span class="component-title">Extra scripts</span>
<span class="component-desc">
<input type="text" name="extra_scripts" id="extra_scripts" value="<%='|'.join(sickbeard.EXTRA_SCRIPTS)%>" class="form-control input-sm input350">
<img src="$sbRoot/images/legend16.png" width="16" height="16" alt="[Toggle Key]" id="show_extra_params" title="Toggle info for script arguments">
<div class="clear-left">
<p class="note">scripts are called after built-in post processing.
&nbsp;<b>note:</b> use <b class="grey-text boldest">|</b> to separate additional extra scripts
(e.g. <span class="grey-text">inside_SG_root_folder.sh|/other/path/to/script.py</span>)</p>
<div id="extra_params" style="display: none">
<table class="Key" style="width:auto">
<thead>
<tr>
<th class="text-center">Arg</th>
<th>Description</th>
<th style="width:5%"></th>
<th class="text-center">Arg</th>
<th>Description</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="5">These arguments are passed to every script</th>
</tr>
</tfoot>
<tbody>
<tr><td class="text-center"><span class="grey-text">1</span></td><td>final full episode file path</td>
<td>&nbsp;</td><td class="text-center"><span class="grey-text">4</span></td><td>season number</td></tr>
<tr class="even"><td class="text-center"><span class="grey-text">2</span></td><td>original episode file name</td>
<td>&nbsp;</td><td class="text-center"><span class="grey-text">5</span></td><td style="padding-right:1.5em !important">episode number</td></tr>
<tr><td class="text-center"><span class="grey-text">3</span></td><td>show id</td>
<td>&nbsp;</td><td class="text-center"><span class="grey-text">6</span></td><td>episode air date</td></tr>
</tbody>
</table>
</div>
</div>
</span>
</label>
</div>
<input type="submit" class="btn config_submitter" value="Save Changes"><br />
</fieldset>
</div>
<div class="component-group">
<div class="component-group-desc">
<h3>File Handling</h3>
<p>More file processing controls.</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="unpack">
<span class="component-title">Unpack downloads</span>
<span class="component-desc">
<input id="unpack" type="checkbox" name="unpack" #if $sickbeard.UNPACK == True then $checked else ''#>
<p>unrar TV releases in the <em>completed TV downloads</em> folder</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="skip_removed_files">
<span class="component-title">Status of removed episodes</span>
<span class="component-desc">
<select name="skip_removed_files" id="skip_removed_files" class="form-control form-control-inline input-sm">
#set $opt_selected = ($sickbeard.SKIP_REMOVED_FILES, $IGNORED)[not $sickbeard.SKIP_REMOVED_FILES]
#for $cur_status in [1, $SKIPPED, $ARCHIVED, $IGNORED]:
#set $opt_text = ('Will Be Untouched', 'Set ' + $statusStrings[$cur_status] + ('', ' (default)')[$IGNORED == $cur_status])[1 != $cur_status]
<option value="$cur_status"#echo ('', ' ' + $selected)[$cur_status == $opt_selected]#>$opt_text</option>
#end for
</select>
<span><strong><em>untouched</em></strong> may mean SickGear also misses renames</span>
</span>
</label>
</div>
<div class="field-pair">
<label for="move_associated_files">
<span class="component-title">Move associated files</span>
<span class="component-desc">
<input type="checkbox" name="move_associated_files" id="move_associated_files" #if $sickbeard.MOVE_ASSOCIATED_FILES == True then $checked else ''#>
<p>move srr/srt/sfv/etc files with the episode when processed</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="nfo_rename">
<span class="component-title">Rename .nfo file</span>
<span class="component-desc">
<input type="checkbox" name="nfo_rename" id="nfo_rename" #if $sickbeard.NFO_RENAME == True then $checked else ''#>
<p>rename the original .nfo file to .nfo-orig to avoid conflicts</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="rename_episodes">
<span class="component-title">Rename episodes</span>
<span class="component-desc">
<input type="checkbox" name="rename_episodes" id="rename_episodes" #if $sickbeard.RENAME_EPISODES == True then $checked else ''#>
<p>rename episodes using the Episode Naming settings</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="airdate_episodes">
<span class="component-title">Change file date</span>
<span class="component-desc">
<input type="checkbox" name="airdate_episodes" id="airdate_episodes" #if $sickbeard.AIRDATE_EPISODES == True then $checked else ''#>
<p>set last modified filedate to the date that the episode aired</p>
<p class="note"><b>note:</b> some systems may ignore this feature.</p>
</span>
</label>
</div>
<input type="submit" class="btn config_submitter" value="Save Changes"><br />
</fieldset>
</div>
<div class="component-group">
<div class="component-group-desc">
<h3>Failed Downloads</h3>
<p>SickGear can attempt a different release if a download is found to fail</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair" style="padding-bottom:0">
<label for="use_failed_downloads" style="margin-bottom:0">
<span class="component-title">Enable</span>
<span class="component-desc">
<input id="use_failed_downloads" type="checkbox" class="enabler" name="use_failed_downloads" #if $sickbeard.USE_FAILED_DOWNLOADS == True then $checked else ''#>
<p>failed download handling</p>
</span>
</label>
</div>
<div id="content_use_failed_downloads">
<div class="field-pair" style="padding-top:0">
<span class="component-desc">
<ul id="failed-guide">
<li class="title note">SABnzbd setup guide</li>
<li class="action note">menu "Switches"&nbsp;... [disable] "<em class="boldest">Abort jobs that cannot be completed</em>"</li>
<li class="action note">menu "Switches"&nbsp;... [disable] "<em class="boldest">Post-Process Only Verified Jobs</em>"</li>
<li class="action note">menu "Special"&nbsp;... [enable] "<em class="boldest">empty_postproc</em>"</li>
</ul>
</span>
</div>
<div class="field-pair">
<label for="delete_failed">
<span class="component-title">Delete failed downloads</span>
<span class="component-desc">
<input id="delete_failed" type="checkbox" name="delete_failed" #if $sickbeard.DELETE_FAILED == True then $checked else ''#>
<p>delete left over files from a failed download<br />
</span>
</label>
</div>
</div>
<input type="submit" class="btn config_submitter" value="Save Changes"><br />
</fieldset>
</div>
</div><!-- /component-group1 //-->
<% ######################################################################################### %>
<% ######################################################################################### %>
<% ## TAB 2 ## %>
<% ######################################################################################### %>
<% ######################################################################################### %>
<% ########################### %>
<% ## Start of Regular Show ## %>
<% ########################### %>
<div id="core-component-group2" class="component-group">
<div class="component-group-desc">
<h3>Episode Naming</h3>
<p>Regular episode naming.</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="name_presets">
<span class="component-title">Name pattern</span>
<span class="component-desc">
<select id="name_presets" class="form-control input-sm">
#set is_custom = True
#for $cur_preset in $naming.name_presets:
#set $tmp = $naming.test_name($cur_preset, anime_type=3)
#if $sickbeard.NAMING_PATTERN == $cur_preset:
#set is_custom = False
#end if
<option id="$cur_preset" #if $sickbeard.NAMING_PATTERN == $cur_preset then $selected else ''#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_PATTERN" #if $is_custom then $selected else ''#>Custom...</option>
</select>
</span>
</label>
</div>
<div id="naming_custom">
<div class="field-pair" style="padding-top: 0;">
<label for="naming_pattern">
<span class="component-title"></span>
<span class="component-desc">
<input type="text" name="naming_pattern" id="naming_pattern" value="$sickbeard.NAMING_PATTERN" class="form-control input-sm input350 custom-pattern">
<img src="$sbRoot/images/legend16.png" width="16" height="16" alt="[Toggle Key]" id="show_naming_key" title="Toggle Naming Legend">
</span>
</label>
</div>
<div id="naming_key" style="display: none;">
<table class="Key">
<thead>
<tr>
<th class="align-right">Meaning</th>
<th>Pattern</th>
<th width="60%">Result</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="3">Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)</th>
</tr>
</tfoot>
<tbody>
<tr>
<td class="align-right"><b>Show Name:</b></td>
<td>%SN</td>
<td>Show Name</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%S.N</td>
<td>Show.Name</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%S_N</td>
<td>Show_Name</td>
</tr>
<tr class="even">
<td class="align-right"><b>Season Number:</b></td>
<td>%S</td>
<td>2</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%0S</td>
<td>02</td>
</tr>
<tr class="even">
<td class="align-right"><b>XEM Season Number:</b></td>
<td>%XMS</td>
<td>2</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%0XMS</td>
<td>02</td>
</tr>
<tr class="even">
<td class="align-right"><b>Episode Number:</b></td>
<td>%E</td>
<td>3</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%0E</td>
<td>03</td>
</tr>
<tr class="even">
<td class="align-right"><b>XEM Episode Number:</b></td>
<td>%XME</td>
<td>3</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%0XME</td>
<td>03</td>
</tr>
<tr class="even">
<td class="align-right"><b>Episode Name:</b></td>
<td>%EN</td>
<td>Episode Name</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%E.N</td>
<td>Episode.Name</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%E_N</td>
<td>Episode_Name</td>
</tr>
<tr>
<td class="align-right"><b>Quality:</b></td>
<td>%QN</td>
<td>720p BluRay</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%Q.N</td>
<td>720p.BluRay</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%Q_N</td>
<td>720p_BluRay</td>
</tr>
<tr class="even">
<td class="align-right"><i class="sgicon-info" title="Multi-EP style is ignored"></i> <b>Release Name:</b></td>
<td>%RN</td>
<td>Show.Name.S02E03.HDTV.XviD-RLSGROUP</td>
</tr>
<tr>
<td class="align-right"><i class="sgicon-info" title="'SickGear' is used in place of RLSGROUP if it could not be properly detected"></i> <b>Release Group:</b></td>
<td>-%RG</td>
<td>RLSGROUP</td>
</tr>
<tr class="even">
<td class="align-right"><i class="sgicon-info" title="If episode is proper/repack add 'proper' to name."></i> <b>Release Type:</b></td>
<td>%RT</td>
<td>PROPER</td>
</tr>
</tbody>
</table>
<br />
</div>
</div>
<div class="field-pair">
<label for="naming_multi_ep">
<span class="component-title">Multi episode style</span>
<span class="component-desc">
<select id="naming_multi_ep" name="naming_multi_ep" class="form-control input-sm">
#for $cur_multi_ep in sorted($multiEpStrings.items(), key=lambda x: x[1]):
<option value="$cur_multi_ep[0]" #if $sickbeard.NAMING_MULTI_EP == $cur_multi_ep[0] then $selected else ''#>$cur_multi_ep[1]</option>
#end for
</select>
</span>
</label>
</div>
<div class="field-pair">
<label for="naming_strip_year">
<span class="component-title">Strip show year</span>
<span class="component-desc">
<input type="checkbox" id="naming_strip_year" name="naming_strip_year" #if $sickbeard.NAMING_STRIP_YEAR then $checked else ''#/>
<p>when renaming files, remove years that are inside parentheses #if True then 'e.g. "(%s)"' % str(time.strftime('%Y')) else ''#</p>
</span>
</label>
</div>
</fieldset>
<fieldset class="component-group-list">
<div id="naming_example_div">
<div class="component-group-desc episode-sample">
<h3>Single episode sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_example">&nbsp;</span>
</div>
<br />
</div>
<div id="naming_example_multi_div">
<div class="component-group-desc episode-sample">
<h3>Multi episode sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_example_multi">&nbsp;</span>
</div>
<br />
</div>
</fieldset>
<% ########################## %>
<% ## End of Regular Show ## %>
<% ## ## %>
<% ## Start of Air-by-Date ## %>
<% ########################## %>
<div class="component-group-desc">
<p>Air-by-date episode naming.</p>
</div>
<div class="field-pair right">
<label for="naming_custom_abd">
<span class="component-title">Custom air-by-date</span>
<span class="component-desc">
<input type="checkbox" class="enabler" id="naming_custom_abd" name="naming_custom_abd" #if $sickbeard.NAMING_CUSTOM_ABD then $checked else ''#/>
<p>name air-by-date shows differently than regular shows</p>
</span>
</label>
</div>
<div id="content_naming_custom_abd">
<fieldset class="component-group-list">
<div class="field-pair right">
<label for="name_abd_presets">
<span class="component-title">Air-by-date name pattern</span>
<span class="component-desc">
<select id="name_abd_presets" class="form-control input-sm">
#set is_abd_custom = True
#for $cur_preset in $naming.name_abd_presets:
#set $tmp = $naming.test_name($cur_preset)
#if $sickbeard.NAMING_ABD_PATTERN == $cur_preset:
#set is_abd_custom = False
#end if
<option id="$cur_preset" #if $sickbeard.NAMING_ABD_PATTERN == $cur_preset then $selected else ''#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_ABD_PATTERN" #if $is_abd_custom then $selected else ''#>Custom...</option>
</select>
</span>
</label>
<div id="naming_abd_custom">
<div class="field-pair">
<label for="naming_abd_pattern">
<span class="component-title"></span>
<span class="component-desc">
<input type="text" name="naming_abd_pattern" id="naming_abd_pattern" value="$sickbeard.NAMING_ABD_PATTERN" class="form-control input-sm input350 custom-pattern">
<img src="$sbRoot/images/legend16.png" width="16" height="16" alt="[Toggle Key]" id="show_naming_abd_key" title="Toggle ABD Naming Legend">
</span>
</label>
</div>
<div id="naming_abd_key" style="display: none;">
<table class="Key">
<thead>
<tr>
<th class="align-right">Meaning</th>
<th>Pattern</th>
<th width="60%">Result</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="3">Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)</th>
</tr>
</tfoot>
<tbody>
<tr>
<td class="align-right"><b>Show Name:</b></td>
<td>%SN</td>
<td>Show Name</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%S.N</td>
<td>Show.Name</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%S_N</td>
<td>Show_Name</td>
</tr>
<tr class="even">
<td class="align-right"><b>Regular Air Date:</b></td>
<td>%AD</td>
<td>2010 03 09</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%A.D</td>
<td>2010.03.09</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%A_D</td>
<td>2010_03_09</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%A-D</td>
<td>2010-03-09</td>
</tr>
<tr class="even">
<td class="align-right"><b>Episode Name:</b></td>
<td>%EN</td>
<td>Episode Name</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%E.N</td>
<td>Episode.Name</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%E_N</td>
<td>Episode_Name</td>
</tr>
<tr>
<td class="align-right"><b>Quality:</b></td>
<td>%QN</td>
<td>720p BluRay</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%Q.N</td>
<td>720p.BluRay</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%Q_N</td>
<td>720p_BluRay</td>
</tr>
<tr class="even">
<td class="align-right"><b>Year:</b></td>
<td>%Y</td>
<td>2010</td>
</tr>
<tr>
<td class="align-right"><b>Month:</b></td>
<td>%M</td>
<td>3</td>
</tr>
<tr class="even">
<td class="align-right">&nbsp;</td>
<td>%0M</td>
<td>03</td>
</tr>
<tr>
<td class="align-right"><b>Day:</b></td>
<td>%D</td>
<td>9</td>
</tr>
<tr class="even">
<td class="align-right">&nbsp;</td>
<td>%0D</td>
<td>09</td>
</tr>
<tr>
<td class="align-right"><i class="sgicon-info" title="Multi-episode style is ignored"></i> <b>Release Name:</b></td>
<td>%RN</td>
<td>Show.Name.2010.03.09.HDTV.XviD-RLSGROUP</td>
</tr>
<tr class="even">
<td class="align-right"><i class="sgicon-info" title="if RLSGROUP is not detected, 'SickGear' is used"></i> <b>Release Group:</b></td>
<td>-%RG</td>
<td>RLSGROUP</td>
</tr>
<tr>
<td class="align-right"><i class="sgicon-info" title="Add 'proper' to name if episode is a proper or repack"></i> <b>Release Type:</b></td>
<td>%RT</td>
<td>PROPER</td>
</tr>
</tbody>
</table>
<br />
</div>
</div><!-- /naming_abd_custom -->
</div>
</fieldset>
<fieldset class="component-group-list">
<div class="component-group-list">
<div id="naming_abd_example_div">
<div class="component-group-desc episode-sample">
<h3>Air-by-date sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_abd_example">&nbsp;</span>
</div>
<br />
</div>
</div>
</fieldset>
<div class="field-pair right">
<input type="submit" class="btn config_submitter" value="Save Changes"><br />
</div>
</div><!-- /naming_abd_different -->
<% ######################## %>
<% ## End of Air-by-Date ## %>
<% ## ## %>
<% ## Start of Sports ## %>
<% ######################## %>
<div class="component-group-desc">
<p>Sport episode naming.</p>
</div>
<div class="field-pair right">
<label for="naming_custom_sports">
<span class="component-title">Custom sports</span>
<span class="component-desc">
<input type="checkbox" class="enabler" id="naming_custom_sports" name="naming_custom_sports" #if $sickbeard.NAMING_CUSTOM_SPORTS then $checked else ''#/>
<p>name sports shows differently than regular shows</p>
</span>
</label>
</div>
<div id="content_naming_custom_sports">
<fieldset class="component-group-list">
<div class="field-pair right">
<label for="name_sports_presets">
<span class="component-title">Sports name pattern</span>
<span class="component-desc">
<select id="name_sports_presets" class="form-control input-sm">
#set is_sports_custom = True
#for $cur_preset in $naming.name_sports_presets:
#set $tmp = $naming.test_name($cur_preset)
#if $sickbeard.NAMING_SPORTS_PATTERN == $cur_preset:
#set is_sports_custom = False
#end if
<option id="$cur_preset" #if $sickbeard.NAMING_SPORTS_PATTERN == $cur_preset then $selected else ''#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_SPORTS_PATTERN" #if $is_sports_custom then $selected else ''#>Custom...</option>
</select>
</span>
</label>
<div id="naming_sports_custom">
<div class="field-pair">
<label for="naming_sports_pattern">
<span class="component-title"></span>
<span class="component-desc">
<input type="text" name="naming_sports_pattern" id="naming_sports_pattern" value="$sickbeard.NAMING_SPORTS_PATTERN" class="form-control input-sm input350 custom-pattern">
<img src="$sbRoot/images/legend16.png" width="16" height="16" alt="[Toggle Key]" id="show_naming_sports_key" title="Toggle Sports Naming Legend">
</span>
</label>
</div>
<div id="naming_sports_key" style="display: none;">
<table class="Key">
<thead>
<tr>
<th class="align-right">Meaning</th>
<th>Pattern</th>
<th width="60%">Result</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="3">Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)</th>
</tr>
</tfoot>
<tbody>
<tr>
<td class="align-right"><b>Show Name:</b></td>
<td>%SN</td>
<td>Show Name</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%S.N</td>
<td>Show.Name</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%S_N</td>
<td>Show_Name</td>
</tr>
<tr class="even">
<td class="align-right"><b>Sports Air Date:</b></td>
<td>%AD</td>
<td>9 Mar 2011</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%A.D</td>
<td>9.Mar.2011</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%A_D</td>
<td>9_Mar_2011</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%A-D</td>
<td>9-Mar-2011</td>
</tr>
<tr class="even">
<td class="align-right"><b>Episode Name:</b></td>
<td>%EN</td>
<td>Episode Name</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%E.N</td>
<td>Episode.Name</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%E_N</td>
<td>Episode_Name</td>
</tr>
<tr>
<td class="align-right"><b>Quality:</b></td>
<td>%QN</td>
<td>720p BluRay</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%Q.N</td>
<td>720p.BluRay</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%Q_N</td>
<td>720p_BluRay</td>
</tr>
<tr class="even">
<td class="align-right"><b>Year:</b></td>
<td>%Y</td>
<td>2010</td>
</tr>
<tr>
<td class="align-right"><b>Month:</b></td>
<td>%M</td>
<td>3</td>
</tr>
<tr class="even">
<td class="align-right">&nbsp;</td>
<td>%0M</td>
<td>03</td>
</tr>
<tr>
<td class="align-right"><b>Day:</b></td>
<td>%D</td>
<td>9</td>
</tr>
<tr class="even">
<td class="align-right">&nbsp;</td>
<td>%0D</td>
<td>09</td>
</tr>
<tr>
<td class="align-right"><i class="sgicon-info" title="Multi-episode style is ignored"></i> <b>Release Name:</b></td>
<td>%RN</td>
<td>Show.Name.9th.Mar.2011.HDTV.XviD-RLSGROUP</td>
</tr>
<tr class="even">
<td class="align-right"><i class="sgicon-info" title="If RLSGROUP is not detected, 'SickGear' is used"></i> <b>Release Group:</b></td>
<td>-%RG</td>
<td>RLSGROUP</td>
</tr>
<tr>
<td class="align-right"><i class="sgicon-info" title="Add 'proper' to name if episode is a proper or repack"></i> <b>Release Type:</b></td>
<td>%RT</td>
<td>PROPER</td>
</tr>
</tbody>
</table>
<br />
</div>
</div><!-- /naming_sports_custom -->
</div>
</fieldset>
<fieldset class="component-group-list">
<div class="component-group-list">
<div id="naming_sports_example_div">
<div class="component-group-desc episode-sample">
<h3>Sports sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_sports_example">&nbsp;</span>
</div>
<br />
</div>
</div>
</fieldset>
<div class="field-pair right">
<input type="submit" class="btn config_submitter" value="Save Changes"><br />
</div>
</div><!-- /naming_sports_different -->
<% #################### %>
<% ## End of Sports ## %>
<% ## ## %>
<% ## Start of Anime ## %>
<% #################### %>
<div class="component-group-desc">
<p>Anime episode naming.</p>
</div>
<!-- naming_anime_custom -->
<div class="field-pair right">
<label for="naming_custom_anime">
<span class="component-title">Custom anime</span>
<span class="component-desc">
<input type="checkbox" class="enabler" id="naming_custom_anime" name="naming_custom_anime" #if $sickbeard.NAMING_CUSTOM_ANIME then $checked else ''#/>
<p>name anime shows differently than regular shows</p>
</span>
</label>
</div>
<div id="content_naming_custom_anime">
<fieldset class="component-group-list">
<div class="field-pair right">
<label for="name_anime_presets">
<span class="component-title">Anime name pattern</span>
<span class="component-desc">
<select id="name_anime_presets" class="form-control input-sm">
#set is_anime_custom = True
#for $cur_preset in $naming.name_anime_presets:
#set $tmp = $naming.test_name($cur_preset)
#if $sickbeard.NAMING_ANIME_PATTERN == $cur_preset:
#set is_anime_custom = False
#end if
<option id="$cur_preset" #if $sickbeard.NAMING_ANIME_PATTERN == $cur_preset then $selected else ''#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_ANIME_PATTERN" #if $is_anime_custom then $selected else ''#>Custom...</option>
</select>
</span>
</label>
<div id="naming_anime_custom">
<div class="field-pair">
<label for="naming_anime_pattern">
<span class="component-title"></span>
<span class="component-desc">
<input type="text" name="naming_anime_pattern" id="naming_anime_pattern" value="$sickbeard.NAMING_ANIME_PATTERN" class="form-control input-sm input350 custom-pattern">
<img src="$sbRoot/images/legend16.png" width="16" height="16" alt="[Toggle Key]" id="show_naming_anime_key" title="Toggle Anime Naming Legend">
</span>
</label>
</div>
<div id="naming_anime_key" style="display: none;">
<table class="Key">
<thead>
<tr>
<th class="align-right">Meaning</th>
<th>Pattern</th>
<th width="60%">Result</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="3">Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)</th>
</tr>
</tfoot>
<tbody>
<tr>
<td class="align-right"><b>Show Name:</b></td>
<td>%SN</td>
<td>Show Name</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%S.N</td>
<td>Show.Name</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%S_N</td>
<td>Show_Name</td>
</tr>
<tr class="even">
<td class="align-right"><b>Season Number:</b></td>
<td>%S</td>
<td>2</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%0S</td>
<td>02</td>
</tr>
<tr class="even">
<td class="align-right"><b>XEM Season Number:</b></td>
<td>%XMS</td>
<td>2</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%0XMS</td>
<td>02</td>
</tr>
<tr class="even">
<td class="align-right"><b>Episode Number:</b></td>
<td>%E</td>
<td>3</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%0E</td>
<td>03</td>
</tr>
<tr class="even">
<td class="align-right"><b>XEM Episode Number:</b></td>
<td>%XME</td>
<td>3</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%0XME</td>
<td>03</td>
</tr>
<tr class="even">
<td class="align-right"><b>Episode Name:</b></td>
<td>%EN</td>
<td>Episode Name</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%E.N</td>
<td>Episode.Name</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%E_N</td>
<td>Episode_Name</td>
</tr>
<tr>
<td class="align-right"><b>Quality:</b></td>
<td>%QN</td>
<td>720p BluRay</td>
</tr>
<tr class="even">
<td>&nbsp;</td>
<td>%Q.N</td>
<td>720p.BluRay</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>%Q_N</td>
<td>720p_BluRay</td>
</tr>
<tr class="even">
<td class="align-right"><i class="sgicon-info" title="Multi-episode style is ignored"></i> <b>Release Name:</b></td>
<td>%RN</td>
<td>Show.Name.S02E03.HDTV.XviD-RLSGROUP</td>
</tr>
<tr>
<td class="align-right"><i class="sgicon-info" title="If RLSGROUP is not detected, 'SickGear' is used"></i> <b>Release Group:</b></td>
<td>[%RG]</td>
<td>RLSGROUP</td>
</tr>
<tr class="even">
<td class="align-right"><i class="sgicon-info" title="Add 'proper' to name if episode is a proper or repack"></i> <b>Release Type:</b></td>
<td>%RT</td>
<td>PROPER</td>
</tr>
<tr class="even">
<td class="align-right"><b>Version:</b></td>
<td>%V</td>
<td>2</td>
</tr>
</tbody>
</table>
<br />
</div>
</div><!-- /naming_anime_custom -->
<div class="field-pair">
<label for="naming_anime_multi_ep">
<span class="component-title">Multi episode style</span>
<span class="component-desc">
<select id="naming_anime_multi_ep" name="naming_anime_multi_ep" class="form-control input-sm">
#for $cur_multi_ep in sorted($multiEpStrings.items(), key=lambda x: x[1]):
<option value="$cur_multi_ep[0]" #if $sickbeard.NAMING_ANIME_MULTI_EP == $cur_multi_ep[0] then $selected else ''#>$cur_multi_ep[1]</option>
#end for
</select>
</span>
</label>
</div>
</div>
</fieldset>
<fieldset class="component-group-list">
<div id="naming_example_anime_div">
<div class="component-group-desc episode-sample">
<h3>Single anime sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_example_anime">&nbsp;</span>
</div>
<br />
</div>
<div id="naming_example_multi_anime_div">
<div class="component-group-desc episode-sample">
<h3>Multi anime sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_example_multi_anime">&nbsp;</span>
</div>
<br />
</div>
</fieldset>
<fieldset class="component-group-list right">
<div class="field-pair">
<label for="naming_anime">
<span class="component-title">Add absolute numbering</span>
<span class="component-desc">
<input type="radio" name="naming_anime" id="naming_anime" value="1" #if $sickbeard.NAMING_ANIME == 1 then $checked else ''#/>
<p>add the absolute number to the season/episode format</p>
<p class="note">(eg. S15E45 - 310 vs S15E45)</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="naming_anime_only">
<span class="component-title">Only absolute numbering</span>
<span class="component-desc">
<input type="radio" name="naming_anime" id="naming_anime_only" value="2" #if $sickbeard.NAMING_ANIME == 2 then $checked else ''#/>
<p>replace season/episode format with absolute numbering</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="naming_anime_none">
<span class="component-title">No absolute numbering</span>
<span class="component-desc">
<input type="radio" name="naming_anime" id="naming_anime_none" value="3" #if $sickbeard.NAMING_ANIME == 3 then $checked else ''#/>
<p>do <b>not</b> include absolute numbering</p>
</span>
</label>
</div>
</fieldset>
<div class="field-pair right">
<input type="submit" class="btn config_submitter" value="Save Changes"><br />
</div>
</div><!-- /naming_anime_different -->
<div></div>
</div><!-- /component-group2 //-->
<% ######################################################################################### %>
<% ######################################################################################### %>
<% ## TAB 3 ## %>
<% ######################################################################################### %>
<% ######################################################################################### %>
<div id="core-component-group3" class="component-group">
<div class="component-group-desc">
<h3>Metadata</h3>
<p>These are files associated to a TV show in the form of images and text that, where supported, enhance the viewing experience.</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label>
<span class="component-title">Metadata target</span>
<span class="component-desc">
#set $m_dict = $metadata.get_metadata_generator_dict()
<select id="metadataType" class="form-control input-sm">
#for ($cur_name, $cur_generator) in sorted($m_dict.items()):
<option value="$cur_generator.get_id()">$cur_name</option>
#end for
</select>
<span>multiple targets can be configured in turn</span>
</span>
</label>
</div>
<div class="field-pair">
<span>Choose data files to create with the following toggle options...</span>
</div>
<div class="field-pair">
#for ($cur_name, $cur_generator) in $m_dict.items():
#set $cur_metadata_inst = $sickbeard.metadata_provider_dict[$cur_generator.name]
#set $cur_id = $cur_generator.get_id()
<div class="metadataDiv" id="$cur_id">
<div class="metadata_options_wrapper">
<h4>Create:</h4>
<div class="metadata_options">
<label for="${cur_id}_show_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_show_metadata" #if $cur_metadata_inst.show_metadata then $checked else ''#/>&nbsp;Show Metadata</label>
<label for="${cur_id}_episode_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_episode_metadata" #if $cur_metadata_inst.episode_metadata then $checked else ''#/>&nbsp;Episode Metadata</label>
<label for="${cur_id}_fanart"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_fanart" #if $cur_metadata_inst.fanart then $checked else ''#/>&nbsp;Show Fanart</label>
<label for="${cur_id}_poster"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_poster" #if $cur_metadata_inst.poster then $checked else ''#/>&nbsp;Show Poster</label>
<label for="${cur_id}_banner"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_banner" #if $cur_metadata_inst.banner then $checked else ''#/>&nbsp;Show Banner</label>
<label for="${cur_id}_episode_thumbnails"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_episode_thumbnails" #if $cur_metadata_inst.episode_thumbnails then $checked else ''#/>&nbsp;Episode Thumbnails</label>
<label for="${cur_id}_season_posters"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_season_posters" #if $cur_metadata_inst.season_posters then $checked else ''#/>&nbsp;Season Posters</label>
<label for="${cur_id}_season_banners"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_season_banners" #if $cur_metadata_inst.season_banners then $checked else ''#/>&nbsp;Season Banners</label>
<label for="${cur_id}_season_all_poster"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_season_all_poster" #if $cur_metadata_inst.season_all_poster then $checked else ''#/>&nbsp;Season All Poster</label>
<label for="${cur_id}_season_all_banner"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_season_all_banner" #if $cur_metadata_inst.season_all_banner then $checked else ''#/>&nbsp;Season All Banner</label>
</div>
</div>
<div class="metadata_example_wrapper">
<h4>Results:</h4>
<div class="metadata_example">
<label for="${cur_id}_show_metadata"><span id="${cur_id}_eg_show_metadata">$cur_metadata_inst.eg_show_metadata</span></label>
<label for="${cur_id}_episode_metadata"><span id="${cur_id}_eg_episode_metadata">$cur_metadata_inst.eg_episode_metadata</span></label>
<label for="${cur_id}_fanart"><span id="${cur_id}_eg_fanart">$cur_metadata_inst.eg_fanart</span></label>
<label for="${cur_id}_poster"><span id="${cur_id}_eg_poster">$cur_metadata_inst.eg_poster</span></label>
<label for="${cur_id}_banner"><span id="${cur_id}_eg_banner">$cur_metadata_inst.eg_banner</span></label>
<label for="${cur_id}_episode_thumbnails"><span id="${cur_id}_eg_episode_thumbnails">$cur_metadata_inst.eg_episode_thumbnails</span></label>
<label for="${cur_id}_season_posters"><span id="${cur_id}_eg_season_posters">$cur_metadata_inst.eg_season_posters</span></label>
<label for="${cur_id}_season_banners"><span id="${cur_id}_eg_season_banners">$cur_metadata_inst.eg_season_banners</span></label>
<label for="${cur_id}_season_all_poster"><span id="${cur_id}_eg_season_all_poster">$cur_metadata_inst.eg_season_all_poster</span></label>
<label for="${cur_id}_season_all_banner"><span id="${cur_id}_eg_season_all_banner">$cur_metadata_inst.eg_season_all_banner</span></label>
</div>
</div>
<input type="hidden" name="${cur_id}_data" id="${cur_id}_data" value="$cur_metadata_inst.get_config()">
</div>
#end for
<div class="clearfix"></div><br />
<input type="submit" class="btn config_submitter" value="Save Changes"><br />
</fieldset>
</div><!-- /component-group3 //-->
<br />
<h6 class="pull-right"><b>All non-absolute folder locations are relative to <span class="path">$sickbeard.DATA_DIR</span></b> </h6>
<input type="submit" class="btn pull-left config_submitter button" value="Save Changes">
</form>
</div>
</div>
<div class="clearfix"></div>
<script type="text/javascript" charset="utf-8">
<!--
jQuery('#config-components').tabs();
jQuery('#tv_download_dir').fileBrowser({ title: 'Select completed TV downloads directory' });
//-->
</script>
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl')