2023-01-12 01:04:47 +00:00
#import re
#import sickgear
#from sickgear import TVInfoAPI , indexermapper , network_timezones
#from sickgear . common import Overview , qualityPresets , qualityPresetStrings , \
Quality, statusStrings, WANTED, SKIPPED, ARCHIVED, IGNORED, FAILED, DOWNLOADED
#from sickgear . helpers import anon_url , get_size , human , maybe_plural , generate_word_str
#from sickgear . indexers . indexer_config import TVINFO_TVDB , TVINFO_IMDB
#from six import iteritems
<% def sg_var(varname, default=False): return getattr(sickgear, varname, default) %> #slurp #
<% def sg_str(varname, default=''): return getattr(sickgear, varname, default) %> #slurp #
##
#set global $ title = getattr( $ show_obj , 'unique_name', $ show_obj . name )
#set global $ topmenu = ' home '
#set $ exceptions_string = ' , ' . join ( $ show_obj . exceptions )
#set $ css = $ getVar ( ' css ' , ' reg ' )
#set $ has_art = $ getVar ( ' has_art ' , None )
#set $ restart = ' Restart SickGear for new features on this page '
#set $ show_message = ( $ show_message , $ restart ) [ None is $ has_art ]
#set global $ page_body_attr = ' display-show " class= " ' + $ css
#set theme_suffix = ( ' ' , ' -dark ' ) [ ' dark ' == $ sg_str ( ' THEME_NAME ' , ' dark ' ) ]
##
#import os . path , os , re
#set global $ inc_top_glide = True
#set global $ inc_ofi = True
#include $ os . path . join ( $ sg_str ( ' PROG_DIR ' ) , ' gui/slick/interfaces/default/inc_top.tmpl ' )
<script type="text/javascript" src=" $ sbRoot /js/cast.js?v= $ sbPID "></script>
<input type="hidden" id="sbRoot" value=" $ sbRoot ">
<script>
<!--
var config = {
hasArt: #echo ( ' !0 ' , ' !1 ' ) [ not $ has_art ] # ,
TVShowList: ${ tvshow_id_csv } ,
useIMDbInfo: #echo ( ' !1 ' , ' !0 ' ) [ $ sg_var ( ' USE_IMDB_INFO ' ) ]
}
\$.SickGear.config = {
useFuzzy: #echo ( ' !1 ' , ' !0 ' ) [ $ sg_var ( ' FUZZY_DATING ' ) ] # #if $ sg_var ( ' FUZZY_DATING ' ) # ,
dateFormat: ' $ sg_str ('DATE_PRESET', '%x')',
timeFormat: ' $ sg_str ('TIME_PRESET', '%I:%M %p')',
fuzzyTrimZero: #echo ( ' !1 ' , ' !0 ' ) [ $ sg_var ( ' TRIM_ZERO ' ) ] # #end if# ,
glideStartAt: ' #echo $ sg_var ( ' DISPLAY_SHOW_GLIDE ' , { } ) . get ( $ show_obj . tvid_prodid , { } ) . get ( ' start_at ' , ' ' ) # ',
glideSlideTime: #echo $ sg_var ( ' DISPLAY_SHOW_GLIDE_SLIDETIME ' ) #
}
//-->
</script>
<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 $ sg_var ( ' 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.bookmarkscroll.js?v= $ sbPID "></script>
<script type="text/javascript" src=" $ sbRoot /js/lib/jquery.collapser.min.js?v= $ sbPID "></script>
<script src=" $ sbRoot /js/lib/select2.full.min.js"></script>
<link href=" $ sbRoot /css/lib/select2.css" rel="stylesheet">
<style>
.bfr{position:absolute;left:-999px;top:-999px}.bfr img,.spinner,.spinner2,img.queued,img.search,img.success,img.upgrade{display:inline-block;width:16px;height:16px}.spinner{background:url( ${ sbRoot } /images/loading16 ${ theme_suffix } .gif) no-repeat 0 0}.spinner2{background:url( ${ sbRoot } /images/loading16-red.gif) no-repeat 0 0}img.queued{background:url( ${ sbRoot } /images/queued.png) no-repeat 0 0}img.search{background:url( ${ sbRoot } /images/search16.png) no-repeat 0 0}img.success{background:url( ${ sbRoot } /images/down-success.png) no-repeat 0 0}img.upgrade{background:url( ${ sbRoot } /images/down-upgrade.png) no-repeat 0 0}
.images i{margin-right:6px;margin-top:5px}.hide{display:none}
.tvshowImg{border:1px solid transparent;min-width:226px;min-hieght:332px}.spinner2{margin-top:3px !important}
.select2-results__group{color: #eee ; background - color : rgb ( 51 , 51 , 51 ) }
.select2-results__options .select2-results__option{color: #222; background-color: #ddd }
.select2-results__options .select2-results__option .ended{color: #888}
2023-02-09 23:28:00 +00:00
.select2-container .ended .label{background-color: #888; padding: 1px 4px; margin-right: 2px; line-height: 2; color: #ddd ! important }
.select2-results__option--selected span{color:rgb(143, 21, 21) !important}
2023-01-12 01:04:47 +00:00
.select2-container--default .select2-results > .select2-results__options{max-height: 300px}
#select 2 - pickShow - results . select2 - results__option ,
#select 2 - pickShow - results . select2 - results__group { padding - top : 2 px ! important ; padding - bottom : 2 px ! important }
#select 2 - pickShow - results . select2 - results__option - - highlighted . select2 - results__option - - selectable . ended { color : white }
</style>
<div class="bfr"><img src=" $ sbRoot /images/loading16 ${ theme_suffix } .gif"><img src=" $ sbRoot /images/loading16-red.gif"><img src=" $ sbRoot /images/queued.png"><img src=" $ sbRoot /images/search16.png"><img src=" $ sbRoot /images/no16.png"><img src=" $ sbRoot /images/yes16.png"><img src=" $ sbRoot /images/down-success.png"><img src=" $ sbRoot /images/down-upgrade.png"></div>
<div id="background-container">
#if $ has_art
<ul>
#for $ k , ( $ image , $ rating ) in enumerate ( $ fanart )
<li class=" #echo ' ' . join ( ( x for x in ( { 10 : ' group ' , 20 : ' fave ' , 30 : ' avoid ' } . get ( $ rating , ' ' ) , ( ' ' , ' background first-load ' ) [ $ start_image == $ k ] ) if x ) ) # " style="background-image:url( $ sbRoot /show-poster/?tvid_prodid= $ show_obj . tvid_prodid &which=fanart_ $ image )"></li>
#end for
</ul>
#end if
</div>
<div class="displayshow-wrapper">
<div id="change-show" class="pull-left form-inline">
Change show:
#set $ displayshowlist = [ ]
#set $ cur_sel = 0
#for $ cur_showlist in $ sortedShowLists
#set $ cur_showtype = $ cur_showlist [ 0 ]
#set $ cur_showlist = $ cur_showlist [ 1 ]
#if 1 < len ( $ sortedShowLists )
#set void = $ displayshowlist . append ( ' \t \t \t <optgroup label= " %s " > ' % $ cur_showtype )
#end if
#for $ cur_show_obj in $ cur_showlist
#set $ show_ended = ' ' != $ cur_show_obj . status and $ cur_show_obj . status in [ ' ended ' , ' Ended ' , ' Canceled ' ]
#set void = $ displayshowlist . append ( ' \t \t \t <option %s value= " %s " %s > %s </option> ' % ( ( ' ' , ' class= " ended " ' ) [ $ show_ended ] , $ cur_show_obj . tvid_prodid , ( ' ' , ' selected= " selected " ' ) [ $ cur_show_obj == $ show_obj ] , getattr ( $ cur_show_obj , ' unique_name ' , $ cur_show_obj . name ) ) )
#end for
#if 1 < len ( $ sortedShowLists )
#set void = $ displayshowlist . append ( ' \t \t \t </optgroup> ' )
#end if
#end for
##
<div id="prevShow" class="navShow addQTip" title=" $ prev_title "> </div>
<select id="pickShow" class="form-control form-control-inline input-sm">
#echo ' \n ' . join ( $ displayshowlist ) #
</select>
<div id="nextShow" class="navShow addQTip" title=" $ next_title "> </div>
</div>
<div class="clearfix" style="margin-bottom:15px"></div>
#if $ show_message
2023-04-22 22:22:11 +00:00
<div class="alert alert-info"> $ show_message </div>
2023-01-12 01:04:47 +00:00
#end if
<div class="display-show-container">
<div id="posterCol" class="hidden-xs">
<a href=" $ sbRoot /show-poster/?tvid_prodid= $ show_obj . tvid_prodid &which=poster" rel="dialog">
<img src=" $ sbRoot /show-poster/?tvid_prodid= $ show_obj . tvid_prodid &which=poster_thumb" title="View poster for $ show_obj . name " class="tvshowImg addQTip" alt="">
</a>
</div>
<div id="showCol">
<div class="details-wrapper">
<div class="details-right top">
#if 0 < len ( $ seasons )
#set $ show_ended = ' ' != $ show_obj . status and $ show_obj . status in [ ' ended ' , ' Ended ' , ' Canceled ' ]
<div>
#if $ getVar ( ' has_special ' , 0 == $ seasons [ - 1 ] [ 0 ] )
<span class="details-title">Specials</span>
<span class="details-info"> #if $ sg_var ( ' DISPLAY_SHOW_SPECIALS ' ) # <a href=" #season - 0 " >View</a><span style= " margin : 0 7 px " >-</span> # end if #<a class="inner" href=" $ sbRoot /toggle-specials-view-show/?tvid_prodid= $ show_obj . tvid_prodid "> #echo ( ' Show ' , ' Hide ' ) [ $ sg_var ( ' DISPLAY_SHOW_SPECIALS ' ) ] # </a></span>
#end if
</div>
#set $ many_seasons = 12 < len ( $ seasons )
<div class="details-seasons">
<span class="details-title #echo ( ' ' , ' combo-seasons ' ) [ $ many_seasons ] # ">Season</span>
<span class="details-info">
#set $ season_list = [ s [ 0 ] for s in $ seasons ]
#if $ many_seasons
<select id="seasonJump" class="form-control form-control-inline input-sm">
<option value="jump">Jump to season</option>
#for $ number in $ season_list
#if 0 != $ number
<option value=" #season - $ number " >Season $number</option>
#end if
#end for
</select>
#else
#for $ number in $ season_list
#if 0 != $ number
<a href=" #season - $ number " >$number</a>
#end if
#end for
#end if
</span>
</div>
#end if
</div>
<style>
#showtitle . label { float : left ; margin : 0 4 px 3 px 0 ; padding : 6 px 4 px 5 px }
#showtitle : after { display : block ; content : " . " ; height : 0 ; clear : both ; visibility : hidden }
</style>
<div id="details-top">
<div id="showtitle" data-showname=" $ show_obj . name ">
<h2 class="title" id="scene_exception_ $ show_obj . tvid_prodid "><span> $ show_obj . name </span> #echo ( ' ' , ' <em id= " title-status " > (ended)</em> ' ) [ $ show_ended ] # </h2>
#set $ genres_done = False
#if $ sg_var ( ' USE_IMDB_INFO ' ) and ' genres ' in $ show_obj . imdb_info and ' ' != $ show_obj . imdb_info [ ' genres ' ]
2023-03-09 02:13:52 +00:00
#for $ imdbgenre in $ show_obj . imdb_info [ ' genres ' ] . split ( ' | ' )
2023-01-12 01:04:47 +00:00
#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" class="addQTip"> $ imdbgenre . replace ('Sci-Fi','Science-Fiction')</a></span>
#end for
#end if
#if not $ genres_done and $ show_obj . genre
#for $ genre in $ show_obj . genre . split ( ' | ' )
#set $ genres_done = True
2023-03-09 02:13:52 +00:00
#if $ TVINFO_TVDB == $ show_obj . tvid
#set $ genre = ' <a href= " %s " target= " _blank " title= " View other popular %s shows on thetvdb.com " class= " addQTip " > %s </a> ' % ( anon_url ( ' https://thetvdb.com/genres/ ' , $ genre ) , $ genre , $ genre )
#end if
<span class="label"> $ genre </span>
2023-01-12 01:04:47 +00:00
#end for#
#end if
#if not $ genres_done
<span class="label">No genres</span>
#end if
</div>
</div>
</div>
<div class="details-wrapper">
<div class="details-right">
#if int ( $ show_obj . paused )
<div class="paused-holder">
<div class="paused paused-highlight">
<i class="sgicon-pause paused-outline"></i>
</div>
</div>
#end if
<div>
<span class="details-title">Links</span>
<span class="details-info">
<style>
.main span{border-bottom:1px solid #0a0}
</style>
#set $ tvdb_id = None
#for $ src_id , $ src_name in iteritems ( $ TVInfoAPI ( ) . all_sources )
#if $ TVInfoAPI ( $ src_id ) . config . get ( ' defunct ' ) and $ src_id != $ show_obj . tvid
#continue
#end if
#if $ src_id in $ show_obj . ids and $ show_obj . ids [ $ src_id ] . get ( ' id ' , 0 ) > 0 and $ indexermapper . MapStatus . NOT_FOUND != $ show_obj . ids [ $ src_id ] [ ' status ' ]
#if $ TVINFO_TVDB == $ src_id
#set $ tvdb_id = $ show_obj . ids [ $ src_id ] [ ' id ' ]
#end if
#if $ TVINFO_IMDB == $ src_id and not $ sg_var ( ' USE_IMDB_INFO ' )
#continue
#end if
#if not $ TVInfoAPI ( $ src_id ) . config . get ( ' defunct ' )
<a class="service addQTip #if $ show_obj . tvid == $ src_id # main #end if# " href=" $ anon_url ( $ TVInfoAPI ( $ src_id ).config['show_url'] % $ show_obj . ids [ $ src_id ]['id'])" rel="noreferrer" onclick="window.open(this.href, '_blank'); return !1;" title="View $ src_name info in new tab">
#else #
<a class="service addQTip" href=" $ sbRoot /home/edit-show?tvid_prodid= $ show_obj . tvid_prodid #core - component - group3 " title= " Edit related show IDs " >
#end if#
<span><img alt=" $ src_name " height="16" width="16" src=" $ sbRoot /images/ $ TVInfoAPI ( $ src_id ).config['icon']" /></span>
</a>
#end if
#end for
#if $ has_art and $ tvdb_id
<a class="service addQTip" href=" $ anon_url ('https://fanart.tv/series/', $ tvdb_id )" rel="noreferrer" onclick="window.open(this.href, '_blank'); return !1;" title="View Fanart.tv info in new tab">
<img alt="Fanart.tv" height="16" width="16" src=" $ sbRoot /images/fanart.png" />
</a>
#end if
#if $ xem_numbering or $ xem_absolute_numbering
<a class="service addQTip" href=" $ anon_url ('http://thexem.info/search?q=', $ show_obj . name )" rel="noreferrer" onclick="window.open(this.href, '_blank'); return !1;" title="View 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 $ sg_var ( ' USE_IMDB_INFO ' ) and $ show_obj . imdbid
#if ' year ' in $ show_obj . imdb_info
#set $ startyear = $ show_obj . imdb_info [ ' year ' ] or None
#end if
#set $ flags = ' country_codes ' in $ show_obj . imdb_info and ' ' != $ show_obj . imdb_info [ ' country_codes ' ]
#if ' runtimes ' in $ show_obj . imdb_info
#set $ runtime = $ show_obj . imdb_info [ ' runtimes ' ] or 0
#set $ episode_count = $ show_obj . imdb_info [ ' episode_count ' ] or 0
## test if average mini-series runtime is reasonable before using it,
## apply only to a runtime > 60 minutes, and assume 9.x minutes is the minimum (e.g. robot chicken)
#if $ show_obj . imdb_info [ ' is_mini_series ' ] and 1 < $ episode_count \
and $ runtime and 90 < $ runtime :
#set $ average_runtime = $ runtime / $ episode_count
#if 9 < $ average_runtime :
#set $ runtime = ' %s (av %s ?) ' % ( $ runtime , int ( $ average_runtime ) )
#end if
#end if
#end if
#end if
#if None is $ startyear and $ show_obj . startyear
#set $ startyear = $ show_obj . startyear
#end if
#if None is $ runtime and $ show_obj . runtime
#set $ runtime = $ show_obj . runtime
#end if
#if $ 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_obj . imdb_info [ ' country_codes ' ] . split ( ' | ' )
<img class="flag space-right" src=" $ sbRoot /images/flags/ ${ $ country . lower ( ) } .png" width="16" height="11" />
#end for
#end if
</span>
</div>
#end if
#if $ show_obj . airs
#set $ showairs = ' %s %s ' % ( $ re . sub ( r ' (?:s|nes|rs|ur)?day ' , ' ' , $ re . sub ( r ' (y)[^ \ w]+ ' , r ' \ 1, ' , $ show_obj . airs ) ) ,
2023-04-22 22:22:11 +00:00
('', ' <span class="red-text" style="font-weight:bold">(time unknown)</span>')[not $ network_timezones . test_timeformat ( $ show_obj . airs )])
2023-01-12 01:04:47 +00:00
#set $ showairs = $ showairs . replace ( ' Sat, Sun ' , ' Sat - Sun ' ) . replace ( ' Mon, Tue, Wed, Thu, Fri ' , ' Mon - Fri ' ) . replace ( ' Mon, Tue, Wed, Thu ' , ' Mon - Thu ' ) . replace ( ' Tue, Wed, Thu ' , ' Tue - Thu ' )
<div>
<span class="details-title">Air #echo ( ' s ' , ' ed ' ) [ $ show_ended ] # </span>
<span class="details-info"> $ showairs </span>
</div>
#end if
#if $ show_obj . network
<div>
<span class="details-title">Network</span>
<span class="details-info"> $ show_obj . network </span>
</div>
#end if
#if None is not $ runtime
<div>
<span class="details-title">Runtime</span>
<span class="details-info"> $ runtime mins.</span>
</div>
#end if
#if $ show_obj . status
<div>
<span class="details-title">Status</span>
<span class="details-info"> $ show_obj . status </span>
</div>
#end if
#if $ sg_var ( ' USE_IMDB_INFO ' ) and ' rating ' in $ show_obj . imdb_info
<div>
<span class="details-title">IMDb rating</span>
<span class="details-info">
#if $ show_obj . imdb_info [ ' votes ' ]
#set $ rating_tip = ' %s of 10 stars<br /> %s votes ' % ( str ( $ show_obj . imdb_info [ ' rating ' ] ) , str ( $ show_obj . imdb_info [ ' votes ' ] ) )
<span class="imdbstars" qtip-content=" $ rating_tip "> $ show_obj . imdb_info ['rating']</span>
#else
<span>No votes available</span>
#end if
</span>
</div>
#end if
2023-02-13 21:00:11 +00:00
#set $ anyQualities , $ bestQualities = $ Quality . split_quality ( int ( $ show_obj . quality ) )
2023-01-12 01:04:47 +00:00
#if $ show_obj . quality in $ qualityPresets
<div>
<span class="details-title">Quality</span>
<span class="details-info">
<span class="quality $ qualityPresetStrings [ $ show_obj . quality ]"> $ qualityPresetStrings [ $ show_obj . quality ]</span>
</span>
</div>
#else
#if $ anyQualities
<div>
<span class="details-title">Qualities</span>
<span class="details-info">
#echo ' , ' . join ( [ $ Quality . get_quality_ui ( $ 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 . get_quality_ui ( $ x ) for $ x in sorted ( $ bestQualities ) ] ) #
</span>
</div>
#end if
#end if
</div>
<div id="details-left">
#set $ has_overview = ' ' != $ show_obj . overview
#set $ ep_tally = ( ' ' , ' (<span class= " hint " > %s episodes</span>) ' % $ ep_counts [ ' eps_all ' ] ) [ 0 < $ ep_counts [ ' eps_all ' ] ]
<div class=" #echo ( ' no ' , ' details ' ) [ $ has_overview ] # -plot">
#set $ cast_list = $ show_obj . cast_list
#if $ cast_list
<%
def param(visible=True, rid=None, cache_person=None, cache_char=None, person=None, role=None, tvid_prodid=None, thumb=None, oid=None, pid=None):
"""
make the url param list
"""
if cache_char or role:
oid = ('oid=%s' % oid, '')[not visible or None is oid or str(rid) == str(oid)]
return ('imagecache/character?', '')[not cache_char] + '&'.join([kv for kv in ('rid=%s' % rid, 'tvid_prodid=%s' % (cache_char or role).tvid_prodid, ('', 'thumb=%s' % thumb)[not role and None is not thumb], ('person_id=%s' % pid, '')[not pid], ('prefer_person=1', '')[not pid], oid) if kv])
if cache_person:
oid = ('oid=%s' % oid, '')[not visible or None is oid or str(rid) == str(oid)]
return 'imagecache/person?' + '&'.join([kv for kv in ('pid=%s' % rid, ('', 'thumb=%s' % thumb)[None is not thumb], oid) if kv])
if person:
oid = ('oid=%s' % person.id, '')[not visible or str(person.ref_id()) == str(person.id)]
return '&'.join([kv for kv in ('rid=%s' % person.ref_id(), oid) if kv])
return 'param not implemented properly'
%>
#set $ cast = { ' 1st ' : [ ] , ' 2nd ' : [ ] }
#for $ cur_cast in $ cast_list
#set $ cast [ ( ' 1st ' , ' 2nd ' ) [ not $ cur_cast . name ] ] + = [ $ cur_cast ]
#end for
<div class="contain-glide">
<span class="cast-holder glide--swipeable">
<div class="cast-panel glide__track" data-glide-el="track">
<ul class="glide__slides">
#for $ cur_cast in $ cast [ ' 1st ' ] + $ cast [ ' 2nd ' ]
2023-09-06 08:37:45 +00:00
#set $ by_people = [ ] if not $ cur_cast . person else [ $ cur_person . name or ' unknown name ' for $ cur_person in $ cur_cast . person ]
2023-01-12 01:04:47 +00:00
#set $ by_people = ' , ' . join ( $ by_people if 2 > len ( $ by_people ) else $ by_people [ 0 : - 1 ] + [ ' and ' + $ by_people [ - 1 ] ] )
#set $ caption = ' ' . join ( ( [ ] if not $ cur_cast . name else [ $ cur_cast . name ] ) + ( [ ] if not $ by_people else [ ' by ' , $ by_people ] ) ) . replace ( ' " ' , ' " ' )
<li class="cast body glide__slide" data-rid=" $ next ( $ iter ( $ cur_cast . person )).ref_id()">
<a class="thumb" href=" $ sbRoot / $ param (rid= $ cur_cast . ref_id (), cache_char= $ show_obj , thumb=0, oid= $ cur_cast . id )" #if $ caption # data-caption=" $ caption " #end if# rel="glide"><img class="cast-bg" style="display:none" height="150" src=" $ sbRoot / $ param (False, rid= $ cur_cast . id , cache_char= $ show_obj )" #if $ cur_cast . name # alt="" #end if# ></a>
<div class="links" style="display:none">
#if $ cur_cast . name
#set $ name = ( $ cur_cast . name , ' themself ' ) [ $ cur_cast . name == ( ( ' ' , $ cur_cast . person [ 0 ] . name ) [ 1 == len ( $ cur_cast . person ) ] ) ]
<div class="role"> #if not $ cur_cast . id # $ cur_cast . name #else # <a href=" $ sbRoot /home/role? $ param (rid= $ cur_cast . ref_id (), role= $ show_obj , oid= $ cur_cast . id )"> $ name </a> #end if# </div>
#else
<div class="role">unknown name</div>
#end if
#set $ p_count = len ( $ cur_cast . person )
#for $ p_num , $ cur_person in enumerate ( $ cur_cast . person , 1 )
<div class="person"> #if not $ cur_cast . id # $ cur_person . name #else # <a href=" $ sbRoot /home/person? $ param (person= $ cur_person )"> $ cur_person . name </a> #end if# #if $ p_num < $ p_count # <span>, </span> #end if# </div>
#end for
</div>
</li>
#end for
</ul>
</div>
<div class="glide-arrows" data-glide-el="controls" style="display:none">
<button class="glide-prev" data-glide-dir="<"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24"><path d="M0 12l10.975 11 2.848-2.828-6.176-6.176H24v-3.992H7.646l6.176-6.176L10.975 1 0 12z" /></svg></button>
<button class="glide-next" data-glide-dir=">"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24"><path d="M13.025 1l-2.847 2.828 6.176 6.176h-16.354v3.992h16.354l-6.176 6.176 2.847 2.828 10.975-11z" /></svg></button>
</div>
<button id="pin-glide" class="one addQTip boldest" style="display:none" title="10s, 6s, 3s, then II to save position"><i class="sgicon-pause one"></i><i class="two">10</i><i class="three">6</i><i class="four">3</i></button>
</span>
</div><!-- contain-glide -->
<span id="about-hide"><br><br></span>
<span id="about-show" class="hide">
#else
<span id="about-show">
#end if
$ ep_tally
#if $ has_overview
$ show_obj . overview
#else
#echo ( ' ' , ' <br><br> ' ) [ any ( $ ep_tally ) ]
#if $ show_ended
#if $ varExists ( ' force_update ' )
A <a href=" $ sbRoot / $ force_update " title="Trigger force full update">force full update</a> may return a plot overview for this ended show
#else
Restart SickGear to get a new link here for this ended show
#end if
#else
No plot overview available
#end if
#end if
</span>
</div>
<div id="details-bottom">
<span class="label addQTip" title="Info language, $ show_obj . lang "><img src=" $ sbRoot /images/flags/ ${ show_obj . 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 id="data-size" class="label" style="cursor:help"> $ human ( $ get_size ( $ showLoc [0]))</span>
#set $ filecount = sum ( [ $ c for $ k , $ c in $ ep_counts [ ' videos ' ] . items ( ) ] )
#set $ to_prune = $ show_obj . prune - $ filecount
#set $ keep_or_prune = ( ' ' , ' ( %s ) ' % ( ' %s to prune ' % abs ( $ to_prune ) , ' keep %s ' % $ show_obj . prune ) [ 0 < = $ to_prune ] ) [ bool ( $ show_obj . prune ) ]
<span class="label addQTip" title="Videos"> #echo ' %s file %s %s ' % ( ( ' No ' , $ filecount ) [ 0 < $ filecount ] , $ maybe_plural ( $ filecount ) , $ keep_or_prune ) # </span>
#if $ show_obj . paused
<span class="label label-paused">Paused</span>
#end if
#if ( $ anyQualities + $ bestQualities ) and int ( $ show_obj . upgrade_once )
<span class="label">Upgrade once</span>
#end if
#if $ show_obj . exceptions
<span class="label addQTip" title=" $ exceptions_string . replace (', ', '<br />')">Scene names</span>
#end if
#if $ show_obj . rls_ignore_words
<span class="label addQTip" title=" #echo $ generate_word_str ( $ show_obj . rls_ignore_words , $ show_obj . rls_ignore_words_regex , join_chr = ' <br /> ' ) # ">Ignored words</span>
#end if
#if $ show_obj . rls_require_words
<span class="label addQTip" title=" #echo $ generate_word_str ( $ show_obj . rls_require_words , $ show_obj . rls_require_words_regex , join_chr = ' <br /> ' ) # ">Required words</span>
#end if
#if $ show_obj . rls_global_exclude_ignore
<span class="label addQTip" title=" #echo $ generate_word_str ( $ show_obj . rls_global_exclude_ignore , join_chr = ' <br /> ' ) # ">Excluded global ignored words</span>
#end if
#if $ show_obj . rls_global_exclude_require
<span class="label addQTip" title=" #echo $ generate_word_str ( $ show_obj . rls_global_exclude_require , join_chr = ' <br /> ' ) # ">Excluded global required words</span>
#end if
#if $ show_obj . flatten_folders or $ sg_var ( ' NAMING_FORCE_FOLDERS ' )
<span class="label">Flat folders</span>
#end if
#if int ( $ show_obj . air_by_date )
<span class="label">Air by date</span>
#end if
#if int ( $ show_obj . dvdorder )
<span class="label">DVD order</span>
#end if
#if int ( $ show_obj . scene )
<span class="label">Scene numbering</span>
#end if
#if $ sg_var ( ' USE_SUBTITLES ' ) and int ( $ show_obj . subtitles )
<span class="label">Subtitles</span>
#end if
#if int ( $ show_obj . is_sports )
<span class="label">Sports</span>
#end if
#if int ( $ show_obj . is_anime )
<span class="label">Anime</span>
#end if
#if $ anigroups and $ anigroups . allowlist
<span class="label addQTip" title=" #echo ' , ' . join ( $ anigroups . allowlist ) . replace ( ' , ' , ' <br /> ' ) # ">Wanted group $ maybe_plural (len( $ anigroups . allowlist ))</span>
#end if
#if $ anigroups and $ anigroups . blocklist
<span class="label addQTip" title=" #echo ' , ' . join ( $ anigroups . blocklist ) . replace ( ' , ' , ' <br /> ' ) # ">Unwanted group $ maybe_plural (len( $ anigroups . blocklist ))</span>
#end if
</div>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
<div id="change-status" class="pull-left">
<p style="margin-bottom:5px">Change selected episodes to</p>
<select id="statusSelect" class="form-control form-control-inline input-sm showlist-select">
#for $ curStatus in [ $ WANTED , $ SKIPPED , $ IGNORED , $ FAILED ]
<option value=" $ curStatus "> $ statusStrings [ $ curStatus ]</option>
#end for
<optgroup label="Downloaded">
#for $ curStatus in sorted ( $ Quality . DOWNLOADED )
#if $ DOWNLOADED != $ curStatus
<option value=" $ curStatus "> $ re . sub (r'Downloaded\s*\(([^\)]+)\)', r'\1', $ statusStrings [ $ curStatus ].replace('SD DVD', 'SD DVD/BR/BD'))</option>
#end if
#end for
<option value=" $ DOWNLOADED ">with archived quality</option>
</optgroup>
<optgroup label="Archived with">
<option value=" $ ARCHIVED ">downloaded quality</option>
<option value="- $ ARCHIVED ">default ( $ min_initial )</option>
</optgroup>
</select>
<input type="hidden" id="tvid-prodid" value=" $ show_obj . tvid_prodid ">
<input class="btn btn-inline" type="button" id="changeStatus" value="Go">
</div>
<div class="pull-right clearfix" id="checkboxControls">
<div style="padding-bottom:5px" class="addQTip" title="Filter Episodes">
<label for="good"><span class="good"><input type="checkbox" id="good" checked="checked"> Downloaded: <b> $ ep_counts [ $ Overview . GOOD ]</b></span></label>
<label for="snatched"><span class="snatched"><input type="checkbox" id="snatched" checked="checked"> Snatched: <b> $ ep_counts [ $ Overview . SNATCHED ]</b></span></label>
<label for="wanted"><span class="wanted"><input type="checkbox" id="wanted" checked="checked"> Wanted: <b> $ ep_counts [ $ Overview . WANTED ]</b></span></label>
<label for="qual"><span class="qual"><input type="checkbox" id="qual" checked="checked"> Low Quality: <b> $ ep_counts [ $ Overview . QUAL ]</b></span></label>
<label for="skipped"><span class="skipped"><input type="checkbox" id="skipped" checked="checked"> Skipped: <b> $ ep_counts [ $ Overview . SKIPPED ]</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>
#if not len ( $ seasons )
<div id="no-episode-data">
<h3>No episode details at TV info source
<a class="service" href=" $ anon_url ( $ TVInfoAPI ( $ show_obj . tvid ).config['show_url'] % $ show_obj . prodid )" onclick="window.open(this.href, '_blank'); return !1;" title="View $ TVInfoAPI ( $ show_obj . tvid ).name info in new tab"> $ TVInfoAPI ( $ show_obj . tvid ).name</a>
</h3>
</div>
#else
#set $ working_season = - 1
#set $ odd = 0
#set $ scene , $ scene_anime = ( False , False )
#if not $ show_obj . air_by_date and not $ show_obj . is_sports and not $ show_obj . is_anime and $ show_obj . is_scene
#set $ scene = True
#elif not $ show_obj . air_by_date and not $ show_obj . is_sports and $ show_obj . is_anime and $ show_obj . is_scene
#set $ scene_anime = True
#end if
#for $ season , $ episodes , $ has_season_exceptions in $ seasons
#for $ ep in $ episodes
#if None is not $ ep
#set $ ep_str = ' %s x %s ' % ( $ season , $ ep [ ' episode ' ] )
#if $ ep_str not in $ ep_cats or ( 0 == $ season and not $ sg_var ( ' DISPLAY_SHOW_SPECIALS ' ) )
#continue
#end if
#end if
#if $ working_season != $ season
#if 0 < = $ working_season
</tbody>
</table>
#end if
#set $ working_season = $ season
#set $ human_season = ( ' Season %s ' % $ season , ' Specials ' ) [ 0 == $ season ]
#if $ has_season_exceptions
#set $ human_season + = ' <b class= " season-mark-exception " >*</b> '
#end if
## one off variable migration, on next version apply... (s/$getVar('display_seasons', [])/[]/),
<table class="sickbeardTable #echo ' %s %s %s ' % ( ( ' ' , ' season-min ' ) [ $ season in $ getVar ( ' season_min ' , $ getVar ( ' display_seasons ' , [ ] ) ) ] , ( ' ' , ' latest-season ' ) [ $ latest_season == $ season ] , ( ' ' , ' open ' ) [ $ season in $ getVar ( ' other_seasons ' , [ ] ) ] ) # ">
<thead>
<tr>
<th class="row-seasonheader" colspan="13">
#if None is $ has_art # <span class="red-text pull-right">Restart SickGear to reveal new options here</span>
#elif not ( 1 == $ lowest_season and 1 == $ latest_season and $ latest_season > = $ highest_season )
<button id="showseason- $ season " type="button" class="btn btn-default pull-right"><span class="onshow">Show $ human_season . lower ()<i class="sgicon-arrowdown"></i></span><span class="onhide">Hide $ human_season . lower ()<i class="sgicon-arrowup"></i></span></button>
<button type="button" class="btn btn-default pull-right allseasons"><span class="onshow">Show all</span><span class="onhide">Hide most</span><i class="icon-glyph"></i></button>
<span class="images pull-right hide"><i class="spinner"></i></span>
#end if
#set $ videos = $ ep_counts [ ' videos ' ] . get ( $ season , ' 0 ' )
#set $ season_stats = $ ep_counts [ ' status ' ] . get ( $ season , { } )
#set $ snatched = $ season_stats . get ( $ Overview . SNATCHED , None )
#set $ wanted = $ season_stats . get ( $ Overview . WANTED , None )
#set $ qual = $ season_stats . get ( $ Overview . QUAL , None )
#set $ good = $ season_stats . get ( $ Overview . GOOD , ' 0 ' )
#set $ archived = False if $ season not in $ ep_counts [ ' archived ' ] else $ ep_counts [ ' archived ' ] [ $ season ]
<h3 id="season- $ show_obj . tvid_prodid - $ season "><span class="title"> $ human_season </span><a id="season- $ season " name="season- $ season "></a>
#if None is not $ has_art
<span class="season-status"><span class="good status-badge"> D: <strong> $ good </strong> </span> #if snatched # <span class="snatched status-badge"> S: <strong> $ snatched </strong> </span> #end if# #if $ wanted # <span class="wanted status-badge"> W: <strong> $ wanted </strong> </span> #end if# #if $ qual # <span class="qual status-badge"> LQ: <strong> $ qual </strong> </span> #end if# of <span class="footerhighlight"> $ ep_counts ['totals'][ $ season ]</span> #if 0 < $ archived # with <span class="footerhighlight"> $ archived </span> archived #end if# #if int ( $ videos ) # #echo ( ' with ' , ' and ' ) [ 0 < $ archived ] # <span class="footerhighlight"> $ videos </span> file $ maybe_plural ( $ videos ) #end if# </span>
#end if
</h3>
</th>
</tr>
#set $ attr_title_ep = ( ' ' , ' (Anime # )')[ $ show_obj . is_anime ]
<tr id="season- $ season -cols" class="seasoncols collapse tablesorter-headerRow">
<th class="col-checkbox tablesorter-no-sort"><input type="checkbox" class="seasonCheck" id=" $ season "></th>
<th class="col-metadata tablesorter-no-sort">Meta</th>
<th class="col-ep tablesorter-ep-num"><span title="Ep # $ attr_title_ep "><span class="hdr-text"> #</span></span></th> #if $ scene or $ scene_anime
<th class="col-ep tablesorter-ep-scene" style="padding-right:18px"><span class="hdr-text">Scene #if $ scene_anime # absolute #end if# </span></th> #end if#
<th class="col-name"><span class="hdr-text">Name</span></th>
<th class="col-airdate tablesorter-airdate"><span class="hdr-text">Air Date</span></th> #if $ sg_var ( ' USE_SUBTITLES ' ) and $ show_obj . subtitles
<th class="col-subtitles tablesorter-no-sort">Subtitles</th> #end if
<th class="col-status"><span class="hdr-text">Status</span></th>
<th class="col-search tablesorter-no-sort">Search</th>
</tr>
</thead>
<tbody class="collapse">
#end if
#if None is $ ep
</tbody>
#continue
#end if
#set global $ episode = $ ep
#include $ os . path . join ( $ sg_str ( ' PROG_DIR ' ) , ' gui/slick/interfaces/default/inc_displayShow.tmpl ' )
#end for
#end for
</tbody>
</table>
#end if
</div>
#if None is not $ has_art
#include $ os . path . join ( $ sg_str ( ' PROG_DIR ' ) , ' gui/slick/interfaces/default/inc_livepanel.tmpl ' )
#end if
#include $ os . path . join ( $ sg_str ( ' PROG_DIR ' ) , ' gui/slick/interfaces/default/inc_bottom.tmpl ' )