mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-03 18:03:37 +00:00
de01fa1e37
Added scene exceptions feature, hover over the show name with your mouse to see ALL scene exceceptions currently set for the show.
350 lines
18 KiB
Cheetah
350 lines
18 KiB
Cheetah
#import sickbeard
|
|
#from sickbeard import subtitles, sbdatetime, network_timezones
|
|
#import sickbeard.helpers
|
|
#from sickbeard.common import *
|
|
#from lib import subliminal
|
|
#import os.path, os
|
|
#import datetime
|
|
#set global $title=$show.name
|
|
##set global $header = '<a></a>' %
|
|
#set global $topmenu="manageShows"#
|
|
#set $exceptions_string = " | ".join($show.exceptions)
|
|
#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl")
|
|
|
|
<script type="text/javascript" src="$sbRoot/js/lib/jquery.bookmarkscroll.js?$sbPID"></script>
|
|
|
|
|
|
#if $show_message:
|
|
<div id="show_message" class="ui-corner-all">$show_message</div><br />
|
|
#end if
|
|
|
|
<input type="hidden" id="sbRoot" value="$sbRoot" />
|
|
|
|
<script type="text/javascript" src="$sbRoot/js/displayShow.js?$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/plotTooltip.js?$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/sceneExceptionsTooltip.js?$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpSearch.js?$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpSubtitles.js?$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpRetry.js?$sbPID"></script>
|
|
|
|
<div class="navShows">
|
|
</br>
|
|
<div class="align-left"><b>Change Show:</b>
|
|
<div class="navShow"><img id="prevShow" src="$sbRoot/images/prev.gif" alt="<<" title="Prev Show" /></div>
|
|
<select id="pickShow">
|
|
#for $curShowList in $sortedShowLists:
|
|
#set $curShowType = $curShowList[0]
|
|
#set $curShowList = $curShowList[1]
|
|
|
|
#if len($sortedShowLists) > 1:
|
|
<optgroup label="$curShowType">
|
|
#end if
|
|
#for $curShow in $curShowList:
|
|
<option value="$curShow.indexerid" #if $curShow == $show then "selected=\"selected\"" else ""#>$curShow.name</option>
|
|
#end for
|
|
#if len($sortedShowLists) > 1:
|
|
</optgroup>
|
|
#end if
|
|
#end for
|
|
</select>
|
|
<div class="navShow"><img id="nextShow" src="$sbRoot/images/next.gif" alt=">>" title="Next Show" /></div>
|
|
</div></div>
|
|
|
|
<div class="tvshowImg"><a href="$sbRoot/showPoster/?show=$show.indexerid&which=poster" rel="dialog" title="$show.name"><img src="$sbRoot/showPoster/?show=$show.indexerid&which=poster_thumb" class="posterThumb" alt=""/></a>
|
|
</div>
|
|
|
|
<div class="showInfo">
|
|
<h1 class="title" id="scene_exception_$show.indexerid"><a>$show.name</a></h1>
|
|
<span class="headerInfo" style="color: #b7b7b7; line-height: 16px;">
|
|
#if not $show.imdbid
|
|
($show.startyear) - $show.runtime min
|
|
#if $show.genre:
|
|
- $show.genre[1:-1].replace('|',' | ')
|
|
#end if
|
|
<span class="tvshowLink" style="vertical-align: text-top">
|
|
<a href="$sickbeard.indexerApi($show.indexer).config["show_url"]$show.indexerid" onclick="window.open(this.href, '_blank'); return false;" title="$sickbeard.indexerApi($show.indexer).config["show_url"]$show.indexerid"><img alt="$sickbeard.indexerApi($show.indexer).name" height="16" width="16" src="$sbRoot/images/$sickbeard.indexerApi($show.indexer).config["icon"] "style="margin-top: -1px;"/></a>
|
|
</span>
|
|
#else
|
|
#if 'country_codes' in $show.imdb_info:
|
|
#for $country in $show.imdb_info['country_codes'].split('|')
|
|
<img src="$sbRoot/images/flags/${$country}.png" width="16" height="11" style="margin-top: 3px; margin-left: 3px" />
|
|
#end for
|
|
#end if
|
|
#if 'year' in $show.imdb_info:
|
|
($show.imdb_info['year']) - $show.imdb_info['runtimes'] min - $show.imdb_info['genres'].replace('|',' | ')
|
|
#end if
|
|
<span class="tvshowLink" style="vertical-align: text-top">
|
|
<a href="http://www.imdb.com/title/$show.imdbid" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="http://www.imdb.com/title/$show.imdbid"><img alt="[imdb]" height="16" width="16" src="$sbRoot/images/imdb.png" style="margin-top: -1px;"/>
|
|
<a href="$sickbeard.indexerApi($show.indexer).config["show_url"]$show.indexerid" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="$sickbeard.indexerApi($show.indexer).config["show_url"]$show.indexerid"><img alt="$sickbeard.indexerApi($show.indexer).name" height="16" width="16" src="$sbRoot/images/$sickbeard.indexerApi($show.indexer).config["icon"] "style="margin-top: -1px;"/></a>
|
|
</span>
|
|
#end if
|
|
</span>
|
|
#if $seasonResults:
|
|
##There is a special/season_0?##
|
|
#if int($seasonResults[-1]["season"]) == 0:
|
|
#set $season_special = 1
|
|
#else:
|
|
#set $season_special = 0
|
|
#end if
|
|
|
|
#if not $sickbeard.DISPLAY_SHOW_SPECIALS and $season_special:
|
|
$seasonResults.pop(-1)
|
|
#end if
|
|
|
|
<div class="seasonList">
|
|
<span>
|
|
#if (len($seasonResults) > 14):
|
|
<select id="seasonJump">
|
|
<option value="jump">Jump to Season</option>
|
|
#for $seasonNum in $seasonResults:
|
|
<option value="#season-$seasonNum["season"]">#if int($seasonNum["season"]) == 0 then "Specials" else "Season " + str($seasonNum["season"])#</option>
|
|
#end for
|
|
</select>
|
|
#else:
|
|
<b>Season:</b>
|
|
#for $seasonNum in $seasonResults:
|
|
#if int($seasonNum["season"]) == 0:
|
|
<a href="#season-$seasonNum["season"]">Specials</a>
|
|
#else:
|
|
<a href="#season-$seasonNum["season"]">${str($seasonNum["season"])}</a>
|
|
#end if
|
|
#if $seasonNum != $seasonResults[-1]:
|
|
<span class="separator">|</span>
|
|
#end if
|
|
#end for
|
|
#end if
|
|
</span>
|
|
|
|
<span class="float-right">
|
|
#if $season_special:
|
|
<b>Display Specials:</b>
|
|
#if sickbeard.DISPLAY_SHOW_SPECIALS:
|
|
<a class="inner" href="$sbRoot/toggleDisplayShowSpecials/?show=$show.indexerid">Hide</a>
|
|
#else:
|
|
<a class="inner" href="$sbRoot/toggleDisplayShowSpecials/?show=$show.indexerid">Show</a>
|
|
#end if
|
|
#end if
|
|
</span>
|
|
</div>
|
|
#end if
|
|
<div id="summary" class="align-left">
|
|
<table class="infoTable" cellspacing="1" border="0" cellpadding="0">
|
|
<tr>
|
|
<td width="75%">
|
|
<table>
|
|
#if $show.network and $show.airs:
|
|
<tr><td class="showLegend">Originally Airs: </td><td>$show.airs #if not $network_timezones.test_timeformat($show.airs) then " <font color='#FF0000'><b>(invalid Timeformat)</b></font> " else ""# on $show.network</td></tr>
|
|
#else if $show.network:
|
|
<tr><td class="showLegend">Originally Airs: </td><td>$show.network</td></tr>
|
|
#else if $show.airs:
|
|
<tr><td class="showLegend">Originally Airs: </td><td>>$show.airs #if not $network_timezones.test_timeformat($show.airs) then " <font color='#FF0000'><b>(invalid Timeformat)</b></font> " else ""#</td></tr>
|
|
#end if
|
|
<tr><td class="showLegend">Status: </td><td>$show.status</td></tr>
|
|
#if $showLoc[1]:
|
|
<tr><td class="showLegend">Location: </td><td>$showLoc[0]</td></tr>
|
|
#else:
|
|
<tr><td class="showLegend"><span style="color: red;">Location: </span></td><td><span style="color: red;">$showLoc[0]</span> (dir is missing)</td></tr>
|
|
#end if
|
|
#set $anyQualities, $bestQualities = $Quality.splitQuality(int($show.quality))
|
|
<tr><td class="showLegend">Quality: </td><td>
|
|
#if $show.quality in $qualityPresets:
|
|
<span class="quality $qualityPresetStrings[$show.quality]">$qualityPresetStrings[$show.quality]</span>
|
|
#else:
|
|
#if $anyQualities:
|
|
<i>Initial:</i> <b><%=", ".join([Quality.qualityStrings[x] for x in sorted(anyQualities)])%></b> #if $bestQualities then " </br> " else ""#
|
|
#end if
|
|
#if $bestQualities:
|
|
<i>Replace with:</i> <b><%=", ".join([Quality.qualityStrings[x] for x in sorted(bestQualities)])%></b>
|
|
#end if
|
|
#end if
|
|
|
|
<tr><td class="showLegend">Scene Name:</td><td>#if $show.exceptions then $exceptions_string else $show.name#</td></tr>
|
|
</td></tr>
|
|
</table>
|
|
<td style="float: right;">
|
|
<table>
|
|
<tr><td class="showLegend">Info Language:</td><td><img src="$sbRoot/images/flags/${show.lang}.png" width="16" height="11" alt="$show.lang" title="$show.lang" /></td></tr>
|
|
#if $sickbeard.USE_SUBTITLES
|
|
<tr><td class="showLegend">Subtitles: </td><td><img src="$sbRoot/images/#if int($show.subtitles) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
#end if
|
|
<tr><td class="showLegend">Flat Folders: </td><td><img src="$sbRoot/images/#if $show.flatten_folders == 1 or $sickbeard.NAMING_FORCE_FOLDERS then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
<tr><td class="showLegend">Paused: </td><td><img src="$sbRoot/images/#if int($show.paused) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
<tr><td class="showLegend">Air-by-Date: </td><td><img src="$sbRoot/images/#if int($show.air_by_date) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
<tr><td class="showLegend">Sports: </td><td><img src="$sbRoot/images/#if int($show.is_sports) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
<tr><td class="showLegend">Anime: </td><td><img src="$sbRoot/images/#if int($show.is_anime) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
<tr><td class="showLegend">DVD Order: </td><td><img src="$sbRoot/images/#if int($show.dvdorder) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
#if $anyQualities + $bestQualities
|
|
<tr><td class="showLegend">Archive First Match: </td><td><img src="$sbRoot/images/#if int($show.archive_firstmatch) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
#end if
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
#set $curSeason = -1
|
|
#set $odd = 0
|
|
|
|
<div style="clear:both;" class="clearfix"></div>
|
|
|
|
<div class="float-left">
|
|
Change selected episodes to
|
|
<select id="statusSelect">
|
|
#for $curStatus in [$WANTED, $SKIPPED, $ARCHIVED, $IGNORED, $FAILED] + sorted($Quality.DOWNLOADED):
|
|
#if $curStatus == $DOWNLOADED:
|
|
#continue
|
|
#end if
|
|
<option value="$curStatus">$statusStrings[$curStatus]</option>
|
|
#end for
|
|
</select>
|
|
<input type="hidden" id="showID" value="$show.indexerid" />
|
|
<input type="hidden" id="indexer" value="$show.indexer" />
|
|
<input class="btn" type="button" id="changeStatus" value="Go" />
|
|
</div>
|
|
|
|
<div class="float-right clearfix" id="checkboxControls" style="margin-top: 3px;">
|
|
<div style="padding-bottom: 3px;">
|
|
<label for="wanted"><span class="wanted">Wanted: <b>$epCounts[$Overview.WANTED]</b> <input type="checkbox" id="wanted" checked="checked" /></span></label>
|
|
<label for="qual"><span class="qual">Low Quality: <b>$epCounts[$Overview.QUAL]</b> <input type="checkbox" id="qual" checked="checked" /></span></label>
|
|
<label for="good"><span class="good">Downloaded: <b>$epCounts[$Overview.GOOD]</b> <input type="checkbox" id="good" checked="checked" /></span></label>
|
|
<label for="skipped"><span class="skipped">Skipped: <b>$epCounts[$Overview.SKIPPED]</b> <input type="checkbox" id="skipped" checked="checked" /></span></label>
|
|
</div>
|
|
<div class="pull-right">
|
|
<button class="btn btn-mini seriesCheck" style="line-height: 8px;"><a>Select Filtered Episodes</a></button>
|
|
<button class="btn btn-mini clearAll" style="line-height: 8px;"><a>Clear All</a></button>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
|
|
<table class="sickbeardTable" cellspacing="1" border="0" cellpadding="0">
|
|
|
|
#for $epResult in $sqlResults:
|
|
#if not $sickbeard.DISPLAY_SHOW_SPECIALS and int($epResult["season"]) == 0:
|
|
#continue
|
|
#end if
|
|
|
|
#if (epResult["season"], epResult["episode"]) in $xem_numbering:
|
|
#set ($dfltSeas, $dfltEpis, $dfltAbsolute) = $xem_numbering[(epResult["season"], epResult["episode"])]
|
|
#elif $xem_numbering and (epResult["season"], epResult["episode"]) not in $xem_numbering:
|
|
#set ($dfltSeas, $dfltEpis, $dfltAbsolute) = (0,0,0)
|
|
#else:
|
|
#set ($dfltSeas, $dfltEpis, $dfltAbsolute) = (epResult["season"], epResult["episode"], epResult["absolute_number"])
|
|
#end if
|
|
|
|
#if (epResult["season"], epResult["episode"]) in $scene_numbering:
|
|
#set ($scSeas, $scEpis, $scAbsolute) = $scene_numbering[(epResult["season"], epResult["episode"])]
|
|
#set $dfltEpNumbering = False
|
|
#else
|
|
#set ($scSeas, $scEpis, $scAbsolute) = ($dfltSeas, $dfltEpis, $dfltAbsolute)
|
|
#set $dfltEpNumbering = True
|
|
#end if
|
|
|
|
#if int($epResult["season"]) != $curSeason:
|
|
<tr><td colspan="11" style="height: 0px; padding:0; margin:0;"><a name="season-$epResult["season"]"></a></td></tr>
|
|
<tr class="seasonheader" id="season-$epResult["season"]" >
|
|
<td colspan="11">
|
|
<h2>#if int($epResult["season"]) == 0 then "Specials" else "Season "+str($epResult["season"])#</h2>
|
|
</td>
|
|
</tr>
|
|
<tr id="season-$epResult["season"]-cols"><th width="1%"><input type="checkbox" class="seasonCheck" id="$epResult["season"]" /></th><th>NFO</th><th>TBN</th><th>Episode</th><th class="nowrap">Scene #</th><th class="nowrap">Absolute #</th><th>Name</th><th class="nowrap">Airdate</th><th>Filename</th>#if $sickbeard.USE_SUBTITLES and $show.subtitles then "<th>Subtitles</th>" else ""#<th>Status</th><th>Search</th></tr>
|
|
#set $curSeason = int($epResult["season"])
|
|
#end if
|
|
|
|
#set $epStr = str($epResult["season"]) + "x" + str($epResult["episode"])
|
|
#set $epLoc = $epResult["location"]
|
|
<tr class="$Overview.overviewStrings[$epCats[$epStr]] season-$curSeason">
|
|
<td width="1%">
|
|
#if int($epResult["status"]) != $UNAIRED
|
|
<input type="checkbox" class="epCheck" id="<%=str(epResult["season"])+'x'+str(epResult["episode"])%>" name="<%=str(epResult["season"]) +"x"+str(epResult["episode"]) %>" />
|
|
#end if
|
|
</td>
|
|
<td align="center"><img src="$sbRoot/images/#if $epResult["hasnfo"] == 1 then "nfo.gif\" alt=\"Y" else "nfo-no.gif\" alt=\"N"#" width="23" height="11" /></td>
|
|
<td align="center"><img src="$sbRoot/images/#if $epResult["hastbn"] == 1 then "tbn.gif\" alt=\"Y" else "tbn-no.gif\" alt=\"N"#" width="23" height="11" /></td>
|
|
<td align="center">$epResult["episode"]</td>
|
|
<td align="center">
|
|
#if not $show.air_by_date and not $show.is_sports
|
|
<input type="text" placeholder="<%=str(dfltSeas) + 'x' + str(dfltEpis)%>" size="6" maxlength="8"
|
|
class="sceneSeasonXEpisode" data-for-season="$epResult["season"]" data-for-episode="$epResult["episode"]"
|
|
id="sceneSeasonXEpisode_$show.indexerid<%="_"+str(epResult["season"])+"_"+str(epResult["episode"])%>"
|
|
title="Change the value here if scene numbering differs from the indexer episode numbering"
|
|
#if $dfltEpNumbering:
|
|
value=""
|
|
#else
|
|
value="<%=str(scSeas) + 'x' + str(scEpis)%>"
|
|
#end if
|
|
style="padding: 0; text-align: center; max-width: 60px;"
|
|
/>
|
|
#else
|
|
-
|
|
#end if
|
|
</td>
|
|
<td align="center">
|
|
#if not $show.air_by_date and not $show.is_sports
|
|
<input type="text" placeholder="<%=str(dfltAbsolute)%>" size="6" maxlength="8"
|
|
class="sceneAbsolute" data-for-season="$epResult["season"]" data-for-episode="$epResult["episode"]"
|
|
id="sceneAbsolute_$show.indexerid<%="_"+str(epResult["season"])+"_"+str(epResult["episode"])%>"
|
|
title="Change the value here if scene absolute numbering differs from the indexer absolute numbering"
|
|
#if $dfltEpNumbering:
|
|
value=""
|
|
#else
|
|
value="<%=str(scAbsolute)%>"
|
|
#end if
|
|
style="padding: 0; text-align: center; max-width: 60px;"
|
|
/>
|
|
#else
|
|
-
|
|
#end if
|
|
</td>
|
|
<td class="title">
|
|
#if $epResult["description"] != "" and $epResult["description"] != None:
|
|
<img style="padding-top: 3px;" src="$sbRoot/images/info32.png" width="16" height="16" class="plotInfo" alt="" id="plot_info_$show.indexerid<%="_"+str(epResult["season"])+"_"+str(epResult["episode"])%>" />
|
|
#end if
|
|
$epResult["name"]
|
|
</td>
|
|
<td align="center" class="nowrap">#if int($epResult["airdate"]) == 1 then "never" else $sbdatetime.sbdatetime.sbfdate($network_timezones.parse_date_time($epResult["airdate"],$show.airs,$show.network))#</td>
|
|
<td class="filename"><small>
|
|
#if $epLoc and $show._location and $epLoc.lower().startswith($show._location.lower()):
|
|
#set $epLoc = os.path.basename($epLoc[len($show._location)+1:])
|
|
#elif $epLoc and (not $epLoc.lower().startswith($show._location.lower()) or not $show._location):
|
|
#set $epLoc = os.path.basename($epLoc)
|
|
#end if
|
|
$epLoc
|
|
</small>
|
|
</td>
|
|
#if $sickbeard.USE_SUBTITLES and $show.subtitles:
|
|
<td id="subtitles_column" class="subtitles_column" align="left">
|
|
#if $epResult["subtitles"]:
|
|
#for $sub_lang in subliminal.language.language_list($epResult["subtitles"].split(',')):
|
|
#if sub_lang.alpha2 != ""
|
|
<img src="$sbRoot/images/flags/${sub_lang.alpha2}.png" width="16" height="11" alt="${sub_lang}" />
|
|
#end if
|
|
#end for
|
|
#end if
|
|
</td>
|
|
#end if
|
|
#set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($epResult["status"]))
|
|
#if $curQuality != Quality.NONE:
|
|
<td class="status_column">$statusStrings[$curStatus] <span class="quality $Quality.qualityStrings[$curQuality].replace("720p","HD720p").replace("1080p","HD1080p").replace("RawHD TV", "RawHD").replace("HD TV", "HD720p")">$Quality.qualityStrings[$curQuality]</span></td>
|
|
#else:
|
|
<td class="status_column">$statusStrings[$curStatus]</td>
|
|
#end if
|
|
<td class="search">
|
|
#if int($epResult["season"]) != 0:
|
|
#if ( int($epResult["status"]) in $Quality.SNATCHED or int($epResult["status"]) in $Quality.DOWNLOADED ) and $sickbeard.USE_FAILED_DOWNLOADS:
|
|
<a class="epRetry" href="retryEpisode?show=$show.indexerid&season=$epResult["season"]&episode=$epResult["episode"]"><img src="$sbRoot/images/search32.png" height="16" alt="retry" title="Retry Download" /></a>
|
|
#else:
|
|
<a class="epSearch" href="searchEpisode?show=$show.indexerid&season=$epResult["season"]&episode=$epResult["episode"]"><img src="$sbRoot/images/search32.png" width="16" height="16" alt="search" title="Manual Search" /></a>
|
|
#end if
|
|
#end if
|
|
#if $sickbeard.USE_SUBTITLES and $show.subtitles and len(set(str($epResult["subtitles"]).split(',')).intersection(set($subtitles.wantedLanguages()))) < len($subtitles.wantedLanguages()) and $epResult["location"]
|
|
<a class="epSubtitlesSearch" href="searchEpisodeSubtitles?show=$show.indexerid&season=$epResult["season"]&episode=$epResult["episode"]"><img src="$sbRoot/images/closed_captioning.png" height="16" alt="search subtitles" title="Search Subtitles" /></a>
|
|
#end if
|
|
</td>
|
|
</tr>
|
|
|
|
#end for
|
|
</table>
|
|
|
|
#include $os.path.join($sickbeard.PROG_DIR,"gui/slick/interfaces/default/inc_bottom.tmpl")
|