2023-01-12 01:04:47 +00:00
#import sickgear
#from sickgear . common import *
#from sickgear . helpers import anon_url
#from sickgear import config
#from sickgear import metadata
#from sickgear . metadata . generic import GenericMetadata
#from sickgear import naming
##
#set global $ title = ' Config - Media Process '
#set global $ header = ' Media Process '
#set global $ sbPath = ' ../.. '
#set global $ topmenu = ' config '
##
#import os . path
#include $ os . path . join ( $ sickgear . 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="save_post_processing" 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 where files are downloading in progress</p>
</span>
<span class="component-desc">
<input type="text" name="tv_download_dir" id="tv_download_dir" value=" $ sickgear . 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.
<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 ) [ $ sickgear . PROCESS_METHOD == $ curAction ]
<option value=" $ curAction " $ process_method > $ process_method_text [ $ curAction ]</option>
#end for
</select>
<span>... 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 $ sickgear . PROCESS_AUTOMATICALLY == True then $ checked else ' ' # >
<p>files in the <em>completed TV downloads</em> folder</p>
2023-04-16 00:31:51 +00:00
<p class="clear-left note"><b>note:</b> do not enable with external post processing scripts like sabTosickgear for SABnzbd, or NZBMedia for NZBGET unless you're an expert</p>
2023-01-12 01:04:47 +00:00
</span>
</label>
</div>
<div class="field-pair">
<label for="mediaprocess_interval">
<span class="component-title">Run media process every</span>
<span class="component-desc">
<input type="text" name="mediaprocess_interval" id="mediaprocess_interval" value=" $ sickgear . MEDIAPROCESS_INTERVAL " 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 $ sickgear . 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>
2023-04-16 00:31:51 +00:00
</label>
</div>
<div class="field-pair">
<label for="process_positive_log">
<span class="component-title">If no media to process</span>
<span class="component-desc">
<input type="checkbox" name="process_positive_log" id="process_positive_log" #if $ sickgear . PROCESS_POSITIVE_LOG then $ checked else ' ' # >
<p>use positive log message "<i class="grey-text">Success, no media to process.</i>"</p>
<p class="clear-left note">some setups require the old warning "<i class="grey-text">Failed! Did not process any files.</i>"</p>
</span>
2023-01-12 01:04:47 +00:00
</label>
</div>
#if False :
"""
<div class="field-pair">
<label for="sg_extra_scripts">
<span class="component-title">Extra scripts</span>
<span class="component-desc">
#set $ extra_scripts = ' | ' . join ( sickgear . EXTRA_SCRIPTS )
#if $ extra_scripts
<input type="text" name="extra_scripts" value=" $ extra_scripts " class="form-control input-sm input350">
<div class="clear-left">
<p class="note">2019 July: sickgear scripts are deprecated.
<span class="grey-text">Click image below for the parameters to update in each script, after editing, move each from the above field to below</span></p>
</div>
#else
<input type="hidden" name="extra_scripts" value="">
#end if
<input type="text" name="sg_extra_scripts" id="sg_extra_scripts" value="<%= '|'.join(sickgear.SG_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.
<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">Param</th>
<th>Description</th>
<th style="width:5%"></th>
<th class="text-center">Param</th>
<th>Description</th>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="5">These parameters are passed in order 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> </td><td class="text-center"><span class="grey-text">5</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> </td><td class="text-center"><span class="grey-text">6</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> #if $ extra_scripts # *<span class="grey-text">NEW</span>* #end if# source TV info id</td>
<td> </td><td class="text-center"><span class="grey-text">7</span></td><td>episode air date</td></tr>
<tr class="even"><td class="text-center"><span class="grey-text">4</span></td><td>production id (i.e show id)</td>
<td> </td><td class="text-center"><span class="grey-text"> </span></td><td> </td></tr>
</tbody>
</table>
</div>
</div>
</span>
</label>
</div>
"""
#end if
<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 $ sickgear . 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 = ( $ sickgear . SKIP_REMOVED_FILES , $ IGNORED ) [ not $ sickgear . 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 $ sickgear . 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 $ sickgear . 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 $ sickgear . 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 $ sickgear . 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 $ sickgear . 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">
<p class="note" style="margin-bottom:20px">failed download handling does not require a particular client</p>
<ul id="failed-guide">
<li class="title note">guidance specific for SABnzbd setup</li>
<li class="action note">menu "Switches" ... [disable] "<em class="boldest">Abort jobs that cannot be completed</em>"</li>
<li class="action note">menu "Switches" ... [disable] "<em class="boldest">Post-Process Only Verified Jobs</em>"</li>
<li class="action note">menu "Special" ... [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 $ sickgear . 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 $ sickgear . NAMING_PATTERN == $ cur_preset :
#set is_custom = False
#end if
<option id=" $ cur_preset " #if $ sickgear . NAMING_PATTERN == $ cur_preset then $ selected else ' ' # > $ os . path . join ( $ tmp ['dir'], $ tmp ['name'])</option>
#end for
<option id=" $ sickgear . 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=" $ sickgear . 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> </td>
<td>%S.N</td>
<td>Show.Name</td>
</tr>
<tr>
<td> </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> </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> </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> </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> </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> </td>
<td>%E.N</td>
<td>Episode.Name</td>
</tr>
<tr class="even">
<td> </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> </td>
<td>%Q.N</td>
<td>720p.BluRay</td>
</tr>
<tr>
<td> </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 $ sickgear . 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 $ sickgear . 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"> </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"> </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 $ sickgear . 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 $ sickgear . NAMING_ABD_PATTERN == $ cur_preset :
#set is_abd_custom = False
#end if
<option id=" $ cur_preset " #if $ sickgear . NAMING_ABD_PATTERN == $ cur_preset then $ selected else ' ' # > $ os . path . join ( $ tmp ['dir'], $ tmp ['name'])</option>
#end for
<option id=" $ sickgear . 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=" $ sickgear . 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> </td>
<td>%S.N</td>
<td>Show.Name</td>
</tr>
<tr>
<td> </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> </td>
<td>%A.D</td>
<td>2010.03.09</td>
</tr>
<tr class="even">
<td> </td>
<td>%A_D</td>
<td>2010_03_09</td>
</tr>
<tr>
<td> </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> </td>
<td>%E.N</td>
<td>Episode.Name</td>
</tr>
<tr class="even">
<td> </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> </td>
<td>%Q.N</td>
<td>720p.BluRay</td>
</tr>
<tr>
<td> </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"> </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"> </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"> </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 $ sickgear . 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 $ sickgear . NAMING_SPORTS_PATTERN == $ cur_preset :
#set is_sports_custom = False
#end if
<option id=" $ cur_preset " #if $ sickgear . NAMING_SPORTS_PATTERN == $ cur_preset then $ selected else ' ' # > $ os . path . join ( $ tmp ['dir'], $ tmp ['name'])</option>
#end for
<option id=" $ sickgear . 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=" $ sickgear . 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> </td>
<td>%S.N</td>
<td>Show.Name</td>
</tr>
<tr>
<td> </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> </td>
<td>%A.D</td>
<td>9.Mar.2011</td>
</tr>
<tr class="even">
<td> </td>
<td>%A_D</td>
<td>9_Mar_2011</td>
</tr>
<tr>
<td> </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> </td>
<td>%E.N</td>
<td>Episode.Name</td>
</tr>
<tr class="even">
<td> </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> </td>
<td>%Q.N</td>
<td>720p.BluRay</td>
</tr>
<tr>
<td> </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"> </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"> </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"> </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 $ sickgear . 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 $ sickgear . NAMING_ANIME_PATTERN == $ cur_preset :
#set is_anime_custom = False
#end if
<option id=" $ cur_preset " #if $ sickgear . NAMING_ANIME_PATTERN == $ cur_preset then $ selected else ' ' # > $ os . path . join ( $ tmp ['dir'], $ tmp ['name'])</option>
#end for
<option id=" $ sickgear . 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=" $ sickgear . 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> </td>
<td>%S.N</td>
<td>Show.Name</td>
</tr>
<tr>
<td> </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> </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> </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> </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> </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> </td>
<td>%E.N</td>
<td>Episode.Name</td>
</tr>
<tr class="even">
<td> </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> </td>
<td>%Q.N</td>
<td>720p.BluRay</td>
</tr>
<tr>
<td> </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 $ sickgear . 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"> </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"> </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 $ sickgear . 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 $ sickgear . 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 $ sickgear . 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 = $ sickgear . 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 ' ' # /> 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 ' ' # /> 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 ' ' # /> 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 ' ' # /> 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 ' ' # /> 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 ' ' # /> 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 ' ' # /> 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 ' ' # /> 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 ' ' # /> 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 ' ' # /> 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"> $ sickgear . 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 ( $ sickgear . PROG_DIR , ' gui/slick/interfaces/default/inc_bottom.tmpl ' )