mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-03 18:03:37 +00:00
4c682db8e1
Use timezones to check unaired status during show update/adding. Allow parse_date_time to accept timezone objects and parsed time tuples. Add country code fallback for network name (timezone).
593 lines
No EOL
26 KiB
Cheetah
593 lines
No EOL
26 KiB
Cheetah
#import sickbeard
|
|
#import datetime
|
|
#import re
|
|
#from sickbeard import subtitles, sbdatetime, network_timezones
|
|
#import sickbeard.helpers
|
|
#from sickbeard.common import *
|
|
#from sickbeard.helpers import anon_url
|
|
#from lib import subliminal
|
|
##
|
|
#set global $title = $show.name
|
|
#set global $topmenu = 'home'
|
|
#set $exceptions_string = ', '.join($show.exceptions)
|
|
#set global $page_body_attr = 'display-show'
|
|
##
|
|
#import os.path, os
|
|
#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?v=$sbPID"></script>
|
|
|
|
<input type="hidden" id="sbRoot" value="$sbRoot">
|
|
|
|
<script type="text/javascript" src="$sbRoot/js/displayShow.js?v=$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/plotTooltip.js?v=$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/sceneExceptionsTooltip.js?v=$sbPID"></script>
|
|
#if $sickbeard.USE_IMDB_INFO
|
|
<script type="text/javascript" src="$sbRoot/js/ratingTooltip.js?v=$sbPID"></script>
|
|
#end if
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpSearch.js?v=$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpSubtitles.js?v=$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/lib/jquery.collapser.min.js?v=$sbPID"></script>
|
|
<script type="text/javascript" charset="utf-8">
|
|
<!--
|
|
\$(document).ready(function(){
|
|
#set $fuzzydate = 'airdate'
|
|
#if $sickbeard.FUZZY_DATING
|
|
fuzzyMoment({
|
|
containerClass: '.${fuzzydate}',
|
|
dateHasTime: !1,
|
|
dateFormat: '${sickbeard.DATE_PRESET}',
|
|
timeFormat: '${sickbeard.TIME_PRESET}',
|
|
trimZero: #echo ('!1', '!0')[$sickbeard.TRIM_ZERO]#
|
|
});
|
|
#end if
|
|
#raw
|
|
$('.addQTip').each(function () {
|
|
$(this).css({'cursor':'help', 'text-shadow':'0px 0px 0.5px #666'});
|
|
$(this).qtip({
|
|
show: {solo:true},
|
|
position: {viewport:$(window), my:'left center', adjust:{ y: -10, x: 2 }},
|
|
style: {classes:'qtip-rounded qtip-shadow qtip-maxwidth'}
|
|
});
|
|
});
|
|
#end raw
|
|
#if $sickbeard.USE_IMDB_INFO
|
|
\$.fn.generateStars = function() {
|
|
return this.each(function(i,e){\$(e).html(\$('<span/>').width(\$(e).text()*12));});
|
|
};
|
|
\$('.imdbstars').generateStars();
|
|
#end if
|
|
TVShowList = [${tvshow_id_csv}]
|
|
});
|
|
//-->
|
|
</script>
|
|
|
|
<div class="displayshow-wrapper reg all">
|
|
|
|
<div class="background-container">
|
|
<div style="" class="background"></div>
|
|
</div>
|
|
|
|
<div class="pull-left form-inline">
|
|
Change show:
|
|
#set $displayshowlist = []
|
|
#set $cur_sel = 0
|
|
#for $curShowList in $sortedShowLists
|
|
#set $curShowType = $curShowList[0]
|
|
#set $curShowList = $curShowList[1]
|
|
#if 1 < len($sortedShowLists)
|
|
#set void = $displayshowlist.append('\t\t\t<optgroup label="%s">' % $curShowType)
|
|
#end if
|
|
#for $curShow in $curShowList
|
|
#set void = $displayshowlist.append('\t\t\t<option value="%s"%s>%s</option>' % ($curShow.indexerid, ('', ' selected="selected"')[$curShow == $show], $curShow.name))
|
|
#end for
|
|
#if 1 < len($sortedShowLists)
|
|
#set void = $displayshowlist.append('\t\t\t</optgroup>')
|
|
#end if
|
|
#end for
|
|
##
|
|
<div class="navShow"><img id="prevShow" src="$sbRoot/images/prev.png" alt="<<" title="$prev_title" class="addQTip" /></div>
|
|
<select id="pickShow" class="form-control form-control-inline input-sm">
|
|
#echo '\n'.join($displayshowlist)#
|
|
</select>
|
|
<div class="navShow"><img id="nextShow" src="$sbRoot/images/next.png" alt=">>" title="$next_title" class="addQTip" /></div>
|
|
</div>
|
|
|
|
<div class="clearfix" style="margin-bottom:15px"></div>
|
|
|
|
#if $show_message
|
|
<div class="alert alert-info">
|
|
$show_message
|
|
</div>
|
|
|
|
#end if
|
|
<div class="display-show-container">
|
|
<div id="posterCol" class="hidden-xs">
|
|
<a href="$sbRoot/showPoster/?show=$show.indexerid&which=poster" rel="dialog" title="View poster for $show.name">
|
|
<img src="$sbRoot/showPoster/?show=$show.indexerid&which=poster_thumb" class="tvshowImg" alt="" />
|
|
</a>
|
|
</div>
|
|
|
|
<div id="showCol" class="display-details">
|
|
#if int($show.paused)
|
|
<div class="paused paused-highlight">
|
|
<i class="sgicon-pause paused-outline"></i>
|
|
</div>
|
|
#end if
|
|
<div id="details-wrapper">
|
|
<div id="details-right">
|
|
#if 0 < len($seasonResults)
|
|
##There is a special/season_0?##
|
|
#set $season_special = (0, 1)[0 == int($seasonResults[-1]['season'])]
|
|
##
|
|
#if not $sickbeard.DISPLAY_SHOW_SPECIALS and $season_special
|
|
$seasonResults.pop(-1)
|
|
#end if
|
|
<div>
|
|
#if $season_special
|
|
<span class="details-title">Specials</span>
|
|
<span class="details-info">#if sickbeard.DISPLAY_SHOW_SPECIALS#<a href="#season-0">View</a><span style="margin:0 10px">-</span>#end if#<a class="inner" href="$sbRoot/toggleDisplayShowSpecials/?show=$show.indexerid">#echo ('Show', 'Hide')[sickbeard.DISPLAY_SHOW_SPECIALS]#</a></span>
|
|
#end if
|
|
</div>
|
|
#set $many_seasons = 12 < len($seasonResults)
|
|
<div class="details-seasons">
|
|
<span class="details-title#echo ('', ' combo-seasons')[$many_seasons]#">Season</span>
|
|
<span class="details-info">
|
|
#if $many_seasons
|
|
<select id="seasonJump" class="form-control form-control-inline input-sm">
|
|
<option value="jump">Jump to season</option>
|
|
#for $seasonNum in $seasonResults
|
|
#if 0 == int($seasonNum['season'])
|
|
#continue
|
|
#end if
|
|
<option value="#season-$seasonNum['season']">Season $seasonNum['season']</option>
|
|
#end for
|
|
</select>
|
|
#else:
|
|
#for $seasonNum in $seasonResults
|
|
#if 0 == int($seasonNum['season'])
|
|
#continue
|
|
#end if
|
|
<a href="#season-$seasonNum['season']">$seasonNum['season']</a>
|
|
#end for
|
|
#end if
|
|
</span>
|
|
</div>
|
|
#end if
|
|
</div>
|
|
|
|
<div id="details-top">
|
|
<div id="showtitle" data-showname="$show.name">
|
|
<h2 class="title" id="scene_exception_$show.indexerid"><span>$show.name</span></h2>
|
|
#set $genres_done = False
|
|
#if $sickbeard.USE_IMDB_INFO and 'genres' in $show.imdb_info and '' != $show.imdb_info['genres']
|
|
#for $imdbgenre in $show.imdb_info['genres'].split('|')
|
|
#set $genres_done = True
|
|
<span class="label"><a href="<%= anon_url('http://www.imdb.com/search/title?at=0&genres=', imdbgenre.lower().replace('-','_'),'&sort=moviemeter,asc&title_type=tv_series') %>" target="_blank" title="View other popular $imdbgenre shows on imdb.com">$imdbgenre.replace('Sci-Fi','Science-Fiction')</a></span>
|
|
#end for
|
|
#end if
|
|
#if not $genres_done and $show.genre
|
|
#for $genre in $show.genre[1:-1].split('|')
|
|
#set $genres_done = True
|
|
<span class="label">$genre</span>
|
|
#end for#
|
|
#end if
|
|
#if not $genres_done
|
|
<span class="label">No genres</span>
|
|
#end if
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="details-wrapper">
|
|
<div id="details-right">
|
|
<div>
|
|
<span class="details-title">Indexers</span>
|
|
<span class="details-info">
|
|
#set $_show = $show
|
|
#if $sickbeard.USE_IMDB_INFO and $show.imdbid
|
|
<a class="service" href="<%= anon_url('http://www.imdb.com/title/', _show.imdbid) %>" rel="noreferrer" onclick="window.open(this.href, '_blank'); return false;" title="Show IMDb info in new tab"><img alt="[imdb]" height="16" width="16" src="$sbRoot/images/imdb.png" /></a>
|
|
#end if
|
|
<a class="service" href="<%= anon_url(sickbeard.indexerApi(_show.indexer).config['show_url'], _show.indexerid) %>" onclick="window.open(this.href, '_blank'); return false;" title="Show $sickbeard.indexerApi($show.indexer).name info in new tab"><img alt="$sickbeard.indexerApi($show.indexer).name" height="16" width="16" src="$sbRoot/images/$sickbeard.indexerApi($show.indexer).config['icon']" /></a>
|
|
#if $xem_numbering or $xem_absolute_numbering
|
|
<a class="service" href="<%= anon_url('http://thexem.de/search?q=', _show.name) %>" rel="noreferrer" onclick="window.open(this.href, '_blank'); return false;" title="Show XEM info in new tab"><img alt="[xem]" height="16" width="16" src="$sbRoot/images/xem.png" /></a>
|
|
#end if
|
|
</span>
|
|
</div>
|
|
|
|
#set $startyear, $flags, $runtime = (None, False, None)
|
|
#if $sickbeard.USE_IMDB_INFO and $show.imdbid
|
|
#if 'year' in $show.imdb_info
|
|
#set $startyear = $show.imdb_info['year']
|
|
#end if
|
|
#set $flags = 'country_codes' in $show.imdb_info and '' != $show.imdb_info['country_codes']
|
|
#if 'runtimes' in $show.imdb_info
|
|
#set $runtime = $show.imdb_info['runtimes']
|
|
#end if
|
|
#end if
|
|
#if None is $startyear and $show.startyear
|
|
#set $startyear = $show.startyear
|
|
#end if
|
|
#if None is $runtime and $show.runtime
|
|
#set $runtime = $show.runtime
|
|
#end if
|
|
#if None is not $startyear or $flags
|
|
<div>
|
|
<span class="details-title">Premiered</span>
|
|
<span class="details-info">
|
|
<span class="space-right">#echo ($startyear, 'Unknown')[None is $startyear]#</span>
|
|
#if $flags
|
|
#for $country in $show.imdb_info['country_codes'].split('|')
|
|
<img class="flag space-right" src="$sbRoot/images/flags/${$country}.png" width="16" height="11" />
|
|
#end for
|
|
#end if
|
|
</span>
|
|
</div>
|
|
#end if
|
|
|
|
#if $show.airs
|
|
#set $showairs = '%s%s' % ($show.airs.replace('y', 'y,'),
|
|
('', ' <span class="red-text" style="font-weight:bold">(invalid timeformat)</span>')[not $network_timezones.test_timeformat($show.airs)])
|
|
<div>
|
|
<span class="details-title">Airs</span>
|
|
<span class="details-info">$showairs</span>
|
|
</div>
|
|
#end if
|
|
|
|
#if $show.network
|
|
<div>
|
|
<span class="details-title">Network</span>
|
|
<span class="details-info">$show.network</span>
|
|
</div>
|
|
#end if
|
|
#if None is not $runtime
|
|
<div>
|
|
<span class="details-title">Runtime</span>
|
|
<span class="details-info">$runtime minutes</span>
|
|
</div>
|
|
#end if
|
|
#if '' != $show.status
|
|
<div>
|
|
<span class="details-title">Status</span>
|
|
<span class="details-info">$show.status</span>
|
|
</div>
|
|
#end if
|
|
|
|
#if $sickbeard.USE_IMDB_INFO and 'rating' in $show.imdb_info
|
|
<div>
|
|
<span class="details-title">IMDb rating</span>
|
|
<span class="details-info">
|
|
#if '' != $show.imdb_info['votes']
|
|
#set $rating_tip = '%s of 10 stars<br />%s votes' % (str($show.imdb_info['rating']), str($show.imdb_info['votes']))
|
|
<span class="imdbstars" qtip-content="$rating_tip">$show.imdb_info['rating']</span>
|
|
#else
|
|
<span>No votes available</span>
|
|
#end if
|
|
</span>
|
|
</div>
|
|
#end if
|
|
|
|
#set $anyQualities, $bestQualities = $Quality.splitQuality(int($show.quality))
|
|
#if $show.quality in $qualityPresets
|
|
<div>
|
|
<span class="details-title">Quality</span>
|
|
<span class="details-info">
|
|
<span class="quality $qualityPresetStrings[$show.quality]">$qualityPresetStrings[$show.quality]</span>
|
|
</span>
|
|
</div>
|
|
#else:
|
|
#if $anyQualities
|
|
<div>
|
|
<span class="details-title">Initial</span>
|
|
<span class="details-info">
|
|
#echo ', '.join([$Quality.qualityStrings[$x] for $x in sorted($anyQualities)])#
|
|
</span>
|
|
</div>
|
|
#end if
|
|
#if $bestQualities
|
|
<div>
|
|
<span class="details-title">Upgrade to</span>
|
|
<span class="details-info">
|
|
#echo ', '.join([$Quality.qualityStrings[$x] for $x in sorted($bestQualities)])#
|
|
</span>
|
|
</div>
|
|
#end if
|
|
#end if
|
|
</div>
|
|
|
|
<div id="details-left">
|
|
<div class="details-plot#echo ('', ' no-plot')['' == $show.overview]#">
|
|
#echo ('No plot overview available', $show.overview)['' != $show.overview]#
|
|
</div>
|
|
|
|
<div id="details-bottom">
|
|
<span class="label addQTip" title="Info language, $show.lang"><img src="$sbRoot/images/flags/${show.lang}.png" width="16" height="11" alt="" style="margin-top:-1px" /></span>
|
|
<span class="label addQTip" title="Location#echo (' no longer exists" style="background-color:#8f1515"', '"')[$showLoc[1]]#>$showLoc[0]</span>
|
|
<span class="label addQTip" title="Size">$sickbeard.helpers.human(sickbeard.helpers.get_size($showLoc[0]))</span>
|
|
#set $filecount = sum([$c for $k, $c in $epCounts['videos'].items()])
|
|
<span class="label addQTip" title="Videos">$filecount file$sickbeard.helpers.maybe_plural($filecount)</span>
|
|
#if $show.paused
|
|
<span class="label label-paused">Paused</span>
|
|
#end if
|
|
#if ($anyQualities + $bestQualities) and int($show.archive_firstmatch)
|
|
<span class="label">End upgrade on first match</span>
|
|
#end if
|
|
#if $show.exceptions
|
|
<span class="label addQTip" title="$exceptions_string.replace(', ', '<br />')">Scene names</span>
|
|
#end if
|
|
#if $show.rls_ignore_words
|
|
<span class="label addQTip" title="#echo $show.rls_ignore_words.replace(',', '<br />')#">Ignored words</span>
|
|
#end if
|
|
#if $show.rls_require_words
|
|
<span class="label addQTip" title="#echo $show.rls_require_words.replace(',', '<br />')#">Required words</span>
|
|
#end if
|
|
#if $show.flatten_folders or $sickbeard.NAMING_FORCE_FOLDERS
|
|
<span class="label">Flat folders</span>
|
|
#end if
|
|
#if int($show.air_by_date)
|
|
<span class="label">Air by date</span>
|
|
#end if
|
|
#if int($show.dvdorder)
|
|
<span class="label">DVD order</span>
|
|
#end if
|
|
#if int($show.scene)
|
|
<span class="label">Scene numbering</span>
|
|
#end if
|
|
#if $sickbeard.USE_SUBTITLES and int($show.subtitles)
|
|
<span class="label">Subtitles</span>
|
|
#end if
|
|
#if int($show.is_sports)
|
|
<span class="label">Sports</span>
|
|
#end if
|
|
#if int($show.is_anime)
|
|
<span class="label">Anime</span>
|
|
#end if
|
|
#if $bwl and $bwl.whitelist
|
|
<span class="label addQTip" title="#echo ', '.join($bwl.whitelist).replace(',', '<br />')#">Wanted group$sickbeard.helpers.maybe_plural(len($bwl.whitelist))</span>
|
|
#end if
|
|
#if $bwl and $bwl.blacklist
|
|
<span class="label addQTip" title="#echo ', '.join($bwl.blacklist).replace(',', '<br />')#">Unwanted group$sickbeard.helpers.maybe_plural(len($bwl.blacklist))</span>
|
|
#end if
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="clearfix"></div>
|
|
|
|
<div class="pull-left">
|
|
<p style="margin-bottom:5px">Change selected episodes to</p>
|
|
<select id="statusSelect" class="form-control form-control-inline input-sm">
|
|
#for $curStatus in [$WANTED, $SKIPPED, $ARCHIVED, $IGNORED, $FAILED] + sorted($Quality.DOWNLOADED)
|
|
#if $DOWNLOADED == $curStatus
|
|
#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 btn-inline" type="button" id="changeStatus" value="Go">
|
|
</div>
|
|
|
|
<div class="pull-right clearfix" id="checkboxControls">
|
|
<div style="padding-bottom:5px">
|
|
<label for="wanted"><span class="wanted"><input type="checkbox" id="wanted" checked="checked"> Wanted: <b>$epCounts[$Overview.WANTED]</b></span></label>
|
|
<label for="qual"><span class="qual"><input type="checkbox" id="qual" checked="checked"> Low quality: <b>$epCounts[$Overview.QUAL]</b></span></label>
|
|
<label for="good"><span class="good"><input type="checkbox" id="good" checked="checked"> Downloaded: <b>$epCounts[$Overview.GOOD]</b></span></label>
|
|
<label for="skipped"><span class="skipped"><input type="checkbox" id="skipped" checked="checked"> Skipped: <b>$epCounts[$Overview.SKIPPED]</b></span></label>
|
|
<label for="snatched"><span class="snatched"><input type="checkbox" id="snatched" checked="checked"> Snatched: <b>$epCounts[$Overview.SNATCHED]</b></span></label>
|
|
</div>
|
|
|
|
<div class="pull-right" >
|
|
<button class="btn btn-xs seriesCheck">Select filtered episodes</button>
|
|
<button class="btn btn-xs clearAll">Clear all</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="clearfix"></div>
|
|
#set $curSeason = -1
|
|
#set $odd = 0
|
|
#set $scene, $scene_anime = (False, False)
|
|
#if not $show.air_by_date and not $show.is_sports and not $show.is_anime and $show.is_scene
|
|
#set $scene = True
|
|
#elif not $show.air_by_date and not $show.is_sports and $show.is_anime and $show.is_scene
|
|
#set $scene_anime = True
|
|
#end if
|
|
##
|
|
#if 0 == len($sqlResults)
|
|
<div style="margin-top:50px">
|
|
<h3>Episodes do not exist for this show at the associated indexer
|
|
<a class="service" href="<%= anon_url(sickbeard.indexerApi(_show.indexer).config['show_url'], _show.indexerid) %>" onclick="window.open(this.href, '_blank'); return false;" title="Show $sickbeard.indexerApi($show.indexer).name info in new tab">$sickbeard.indexerApi($show.indexer).name</a>
|
|
</h3>
|
|
</div>
|
|
#else:
|
|
#set $network_timezone = $network_timezones.get_network_timezone($show.network)
|
|
#set $network_time = $network_timezones.parse_time($show.airs)
|
|
#for $epResult in $sqlResults
|
|
#set $epStr = '%sx%s' % ($epResult['season'], $epResult['episode'])
|
|
#if not $epStr in $epCats or (0 == int($epResult['season']) and not $sickbeard.DISPLAY_SHOW_SPECIALS)
|
|
#continue
|
|
#end if
|
|
##
|
|
#if $curSeason != int($epResult['season'])
|
|
#if 0 <= $curSeason
|
|
</tbody>
|
|
</table>
|
|
#end if
|
|
|
|
<table class="sickbeardTable" cellspacing="0" border="0" cellpadding="0">
|
|
<tr id="season-$epResult['season']">
|
|
<th class="row-seasonheader" colspan="13">
|
|
|
|
<button id="showseason-$epResult['season']" type="button" class="btn btn-default pull-right#echo '%s%s' % (('', ' display-season')[int($epResult['season']) in $display_seasons], ('', ' latest-season')[$latest_season == int($epResult['season'])])#" data-toggle="collapse" data-target="#collapseSeason-$epResult['season']">Show episodes<span class="sgicon-arrowdown" style="margin-left:4px"></span></button>
|
|
#set $videos = 'none' if $epResult['season'] not in $epCounts['videos'] else $epCounts['videos'][$epResult['season']]
|
|
#set $archived = False if $epResult['season'] not in $epCounts['archived'] else $epCounts['archived'][$epResult['season']]
|
|
<h3><a name="season-$epResult['season']"></a>#if 0 == int($epResult['season']) then 'Specials' else 'Season ' + str($epResult['season'])
|
|
<span class="season-status"><b>[</b> <span class="footerhighlight">$videos</span> / <span class="footerhighlight">$epCounts['totals'][$epResult['season']]</span><span class="archived-count">#echo ('', ' with <span class="footerhighlight">%s</span> archived' % $archived)[0 < $archived]#</span> <b>]</b></span>
|
|
</h3>
|
|
</th>
|
|
</tr>
|
|
|
|
<tbody id="collapseSeason-$epResult['season']" class="collapse#echo '%s%s' % (('', ' display-season')[int($epResult['season']) in $display_seasons], ('', ' latest-season')[$latest_season == int($epResult['season'])])#">
|
|
|
|
<tr id="season-$epResult['season']-cols" class="seasoncols">
|
|
<th class="col-checkbox"><input type="checkbox" class="seasonCheck" id="$epResult['season']"></th>
|
|
<th class="col-metadata">NFO</th>
|
|
<th class="col-metadata">TBN</th>
|
|
<th class="col-ep">Episode</th>
|
|
#if $show.is_anime
|
|
<th class="col-ep">Absolute</th>
|
|
#end if
|
|
#if $scene
|
|
<th class="col-ep">Scene</th>
|
|
#end if
|
|
#if $scene_anime
|
|
<th class="col-ep">Scene absolute</th>
|
|
#end if
|
|
<th class="col-name">Name</th>
|
|
<th class="col-airdate">Airdate</th>
|
|
#if $sickbeard.USE_SUBTITLES and $show.subtitles
|
|
<th class="col-subtitles">Subtitles</th>
|
|
#end if
|
|
<th class="col-status">Status</th>
|
|
<th class="col-search">Search</th>
|
|
</tr>
|
|
#set $curSeason = int($epResult['season'])
|
|
#end if
|
|
|
|
#set $epLoc = $epResult['location']
|
|
#set never_aired = 0 < $curSeason and 1 == int($epResult['airdate'])
|
|
|
|
<tr class="#echo ($Overview.overviewStrings[$epCats[$epStr]], 'airdate-never')[$never_aired]##echo ('', ' archived')[ARCHIVED == int($epResult['status'])]# season-$curSeason seasonstyle">
|
|
|
|
<td class="col-checkbox">
|
|
#if $UNAIRED != int($epResult['status']) and not $never_aired
|
|
<input type="checkbox" class="epCheck" id="#echo $epStr#" name="#echo $epStr#">
|
|
#end if
|
|
</td>
|
|
|
|
<td align="center"><img src="$sbRoot/images/#if int($epResult['hasnfo']) then 'nfo.gif" alt="Yes" title="Yes' else 'nfo-no.gif" alt="No" title="No'#" width="23" height="11" /></td>
|
|
|
|
<td align="center"><img src="$sbRoot/images/#if int($epResult['hastbn']) then 'tbn.gif" alt="Yes" title="Yes' else 'tbn-no.gif" alt="No" title="No'#" width="23" height="11" /></td>
|
|
|
|
<td align="center">
|
|
#if $epLoc and $show._location and $epLoc.lower().startswith($show._location.lower())
|
|
#set $epLoc = $epLoc[len($show._location)+1:]
|
|
#elif $epLoc and (not $epLoc.lower().startswith($show._location.lower()) or not $show._location)
|
|
#set $epLoc = $epLoc
|
|
#end if
|
|
|
|
#if '' != $epLoc and None != $epLoc
|
|
<span title="$epLoc - <strong>$sickbeard.helpers.human($epResult['file_size'])</strong>" class="addQTip">$epResult["episode"]</span>
|
|
#else
|
|
$epResult['episode']
|
|
#end if
|
|
</td>
|
|
|
|
#if $show.is_anime
|
|
<td align="center">$epResult['absolute_number']</td>
|
|
#end if
|
|
|
|
#if $scene
|
|
#set $dfltSeas, $dfltEpis = (0, 0) if ($epResult['season'], $epResult['episode']) not in $xem_numbering else $xem_numbering[($epResult['season'], $epResult['episode'])]
|
|
<td align="center">
|
|
<input type="text" placeholder="#echo '%sx%s' % ($dfltSeas, $dfltEpis)#" size="6" maxlength="8"
|
|
class="sceneSeasonXEpisode form-control input-scene" data-for-season="$epResult['season']" data-for-episode="$epResult['episode']"
|
|
id="#echo 'sceneSeasonXEpisode_%s_%s_%s' % ($show.indexerid, $epResult['season'], $epResult['episode'])#"
|
|
title="Change the value here if scene numbering differs from the indexer episode numbering"
|
|
#if ($epResult['season'], $epResult['episode']) in $scene_numbering
|
|
#set $scSeas, $scEpis = $scene_numbering[($epResult['season'], $epResult['episode'])]
|
|
value="#echo '%sx%s' % ($scSeas, $scEpis)#"
|
|
#else
|
|
value=""
|
|
#end if
|
|
style="padding:0; text-align:center; max-width:60px">
|
|
</td>
|
|
#elif $scene_anime
|
|
#set $dfltAbsolute = 0 if $epResult['absolute_number'] not in $xem_absolute_numbering else $xem_absolute_numbering[$epResult['absolute_number']]
|
|
<td align="center">
|
|
<input type="text" placeholder="$dfltAbsolute" size="6" maxlength="8"
|
|
class="sceneAbsolute form-control input-scene" data-for-absolute="$epResult['absolute_number']"
|
|
id="#echo 'sceneAbsolute_%s_%s' % ($show.indexerid, $epResult['absolute_number'])#"
|
|
title="Change the value here if scene absolute numbering differs from the indexer absolute numbering"
|
|
#if $epResult['absolute_number'] in $scene_absolute_numbering
|
|
value="$scene_absolute_numbering[$epResult['absolute_number']]"
|
|
#else
|
|
value=""
|
|
#end if
|
|
style="padding:0; text-align:center; max-width:60px" />
|
|
</td>
|
|
#end if
|
|
|
|
<td class="col-name">
|
|
<img src="$sbRoot/images/info32.png" width="16" height="16" alt="" class="plotInfo#echo '%s" />' %\
|
|
('None', ('" id="plot_info_%s_%s_%s' % ($show.indexerid, $epResult['season'], $epResult['episode'])))[None is not $epResult['description'] and '' != $epResult['description']]#
|
|
<%= '<em class="tba grey-text">TBA</em>' if not epResult['name'] or 'TBA' == epResult['name'] else epResult['name'] %>
|
|
</td>
|
|
|
|
<td class="col-airdate">
|
|
<span class="${fuzzydate}">#if 1 == int($epResult['airdate']) then 'never' else $sbdatetime.sbdatetime.sbfdate($sbdatetime.sbdatetime.convert_to_setting($network_timezones.parse_date_time($epResult['airdate'], $network_time, $network_timezone)))#</span>
|
|
</td>
|
|
|
|
#if $sickbeard.USE_SUBTITLES and $show.subtitles
|
|
<td class="col-subtitles" align="center">
|
|
#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 Quality.NONE != $curQuality
|
|
<td class="col-status">$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="col-status">$statusStrings[$curStatus]</td>
|
|
#end if
|
|
|
|
<td class="col-search">
|
|
#if 0 != int($epResult['season'])
|
|
#if (int($epResult['status']) in $Quality.SNATCHED or int($epResult['status']) in $Quality.DOWNLOADED) and $sickbeard.USE_FAILED_DOWNLOADS
|
|
<a class="epRetry" id="#echo $epStr#" name="#echo $epStr#" href="retryEpisode?show=$show.indexerid&season=$epResult['season']&episode=$epResult['episode']"><img src="$sbRoot/images/search16.png" height="16" alt="retry" title="Retry download" /></a>
|
|
#else:
|
|
<a class="epSearch" id="#echo $epStr#" name="#echo $epStr#" href="searchEpisode?show=$show.indexerid&season=$epResult['season']&episode=$epResult['episode']"><img src="$sbRoot/images/search16.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
|
|
</tbody>
|
|
</table>
|
|
#end if
|
|
|
|
<script type="text/javascript" charset="utf-8">
|
|
#raw
|
|
$(document).ready(function(){
|
|
$('.details-plot').collapser({
|
|
mode: 'lines',
|
|
truncate: 10,
|
|
showText: '<span class="pull-right moreless"><i class="sgicon-arrowdown" style="margin-right:2px"></i>more</span>',
|
|
hideText: '<span class="pull-right moreless"><i class="sgicon-arrowup" style="margin-right:2px"></i>less</span>',
|
|
showClass: 'show-class'
|
|
});
|
|
|
|
$('button[data-target*="collapseSeason-"]').each(function(k,v){
|
|
var tbl = $($(this).attr('data-target')),
|
|
btn = $('#' + $(this).attr('id'));
|
|
tbl.on('hide.bs.collapse', function () { btn.html('Show episodes<span class="sgicon-arrowdown" style="margin-left:4px"></span>'); })
|
|
tbl.on('show.bs.collapse', function () { btn.html('Hide episodes<span class="sgicon-arrowup" style="margin-left:4px"></span>'); })
|
|
});
|
|
#end raw
|
|
});
|
|
</script>
|
|
</div>
|
|
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl') |