2023-01-12 01:04:47 +00:00
#import sickgear
#import re
#from sickgear import WEB_ROOT , THEME_NAME
#from sickgear . common import *
#from sickgear . helpers import anon_url , try_float
2023-05-30 21:28:56 +00:00
#from lib . tvinfo_base import RoleTypes
2023-01-12 01:04:47 +00:00
#from _23 import quote
<% def sg_var(varname, default=False): return getattr(sickgear, varname, default) %> #slurp #
<% def sg_str(varname, default=''): return getattr(sickgear, varname, default) %> #slurp #
##
#set $ mode = $ kwargs and $ kwargs . get ( ' mode ' , ' ' )
#set $ use_network = $ kwargs . get ( ' use_networks ' , False )
#set $ use_returning = ' returning ' == mode
2023-05-30 21:28:56 +00:00
#set $ use_filter = $ kwargs and $ kwargs . get ( ' use_filter ' , True ) and not $ p_ref
2023-01-12 01:04:47 +00:00
#set $ use_ratings = $ kwargs and $ kwargs . get ( ' use_ratings ' , True )
2023-03-09 02:13:52 +00:00
#set $ use_votes = $ kwargs and $ kwargs . get ( ' use_votes ' , True )
#set $ term_vote = $ kwargs and $ kwargs . get ( ' term_vote ' , ' Votes ' )
2023-01-12 01:04:47 +00:00
##
#set global $ title = ' Browse %s Shows ' % $ browse_type
#set global $ header = ' Browse Shows '
#set global $ sbPath = ' .. '
#set global $ topmenu = ' home '
#set global $ page_body_attr = ' browse-list " class= " %s %s ' % ( $ browse_type . lower ( ) , ( ' ' , ' no-votes ' ) [ not $ use_votes ] )
#set sg_root = $ getVar ( ' sbRoot ' , WEB_ROOT )
##
#import os . path
2024-06-16 21:27:15 +00:00
#set global $ inc_ofi = True
2023-01-12 01:04:47 +00:00
#include $ os . path . join ( $ sg_str ( ' PROG_DIR ' ) , ' gui/slick/interfaces/default/inc_top.tmpl ' )
2024-06-16 21:27:15 +00:00
<script type="text/javascript" src=" $ sbRoot /js/cast.js?v= $ sbPID "></script>
2023-01-12 01:04:47 +00:00
<script>
var config = {
homeSearchFocus: #echo [ ' !1 ' , ' !0 ' ] [ $ sg_var ( ' HOME_SEARCH_FOCUS ' , True ) ] # ,
};
</script>
<script type="text/javascript" src=" $ sg_root /js/plotTooltip.js?v= $ sbPID "></script>
<script type="text/javascript" charset="utf-8">
<!--
#raw
var addQTip = (function(){
$(this).css('cursor', 'help');
$(this).qtip({
show: {solo:true},
2024-06-19 14:04:04 +00:00
// Change qTip to manual hide when it contains many roles to scroll
hide: {event:(5 < $(this).closest('div.show-card').attr('data-nroles')) ? 'unfocus' : 'mouseleave'},
events: { // Callback events
render: function(event, api) {
// Grab the tooltip element from the API
var tooltip = api.elements.tooltip
tooltip.bind('tooltipshow', function(event, api) {
var showcardEl = $(api.target).closest('div.show-card')
if ('1' === showcardEl.attr('data-ajax')) { // do a one time fetch
var qtipEl = $(this).find('.qtip-content'),
premiereEl = qtipEl.find('.premiere'),
genreEl = qtipEl.find('.genre'),
overviewEl = qtipEl.find('.overview'),
oldestEl = $(' #oldest ' ),
newestEl = $(' #newest ' );
// Set initial text
overviewEl.html('Fetching overview...');
$.getJSON($.SickGear.Root + '/add-shows/tvm-get-showinfo', {
tvid_prodid: showcardEl.attr('data-id'),
oldest_dt: $(' #oldest ' ).attr( ' data - oldest - dt ' ),
newest_dt: $(' #newest ' ).attr( ' data - newest - dt ' ),
},
function (data) {
if (undefined !== data.overview) {
showcardEl.attr('data-ajax', '0'); // mark one time fetch as completed
if (undefined !== data.oldest) {
oldestEl.attr('data-oldest-dt', data.oldest_dt)
oldestEl.html(data.oldest);
} else if (undefined !== data.newest) {
newestEl.attr('data-newest-dt', data.newest_dt)
newestEl.html(data.newest);
}
var premiere = '';
if (data.str_premiered.length) {
showcardEl.attr('data-premiered', data.ord_premiered);
premiere = "<span style='font-weight:bold;font-size:0.9em;color: #888'><em>First air" + (data.started_past ? 'ed' : 's') + ": " + data.str_premiered + "</em></span>";
}
if (data.genres) {
genreEl.css('display', 'block');
genreEl.find('em').html(data.genres);
}
overviewEl.html(data.overview);
if (data.network.length) {
premiere += "<span style='display:block;clear:both;font-weight:bold;font-size:0.9em;color: #888'><em>On: " + data.network + "</em></span>";
}
premiereEl.html(premiere);
} else {
overviewEl.html('Failed to fetch TVmaze overview' );
}
}
)
}
})
}
},
2023-01-12 01:04:47 +00:00
position: {viewport:$(window), my:'left center', adjust:{y: -10,x: 2 }},
style: {tip: {corner:true, method:'polygon'}, classes:'qtip-rounded qtip-bootstrap qtip-shadow ui-tooltip-sb'}
});
}),
llUpdate = (function(){
$.ll.handleScroll();
});
2024-06-17 02:32:37 +00:00
$('.nav').on('mouseover', function() {$('.service, .browse-image').qtip('hide')})
2023-01-12 01:04:47 +00:00
savePrefs = (function(){
var showsort = [], showfilter = [];
$(' #showsort ' ).find( ' . selected ' ).each(function(n, item) {
showsort[n] = item.value;
});
$(' #showfilter ' ).find( ' . selected ' ).each(function(n, item) {
showfilter[n] = item.value;
});
$.getJSON($.SickGear.Root + '/add-shows/browse-mru', {
browse_type: ' #end raw# $ browse_type #raw # ',
showsort: showsort.join(','), showfilter: showfilter.join(',')
});
});
2024-06-16 21:27:15 +00:00
$(function() {
2023-01-12 01:04:47 +00:00
// initialise combos for dirty page refreshes
$(' #showsort ' ).val( ' # end raw # $ saved_showsort_view #raw # ');
$.iso = $(' #container ' ).isotope( {
itemSelector: '.show-card',
sortBy: ' #end raw# #if $ reset_showsort_sortby # by_order #else # $ saved_showsort_sortby #end if# #raw # ',
sortAscending: ' #end raw# #if $ is_showsort_desc # desc #else # asc #end if# #raw # ',
layoutMode: 'masonry',
masonry: {
columnWidth: 188,
isFitWidth: !0,
gutter: 12
},
getSortData: {
premiered: '[data-premiered] parseInt',
name: function( itemElem ) {
var name = $( itemElem ).attr('data-name') || '';
#end raw
#if not $ sg_var ( ' SORT_ARTICLE ' )
name = name.replace(/^(?:(?:A(?!\s+to)n?)|The)\s(\w)/i, '$1');
#end if
return name.toLowerCase();
},
#if $ use_returning
#raw
returning: function( itemElem ) {
return $( itemElem ).attr('data-returning') || '';
},
#end raw
#end if
#if $ use_ratings
rating: '[data-rating] parseFloat',
#end if
#if $ use_votes
votes: '[data-votes] parseInt',
#end if
order: '[data-order] parseInt',
}
});
#raw
$(' #showsort ' ).on( ' change ' , function() {
var elValue = this.value, sortCriteria = elValue.replace('by_', ''), el$ = $(' #container ' ), shuffle = !1;
switch (sortCriteria) {
case 'asc':
case 'desc':
sortCriteria = 'direction';
break;
#end raw
case 'order':
case 'premiered':
#if $ use_returning
case 'returning':
#end if
#if $ use_votes
case 'votes':
#end if
break;
#if $ use_ratings
#if $ use_votes
case 'rating_votes':
sortCriteria = ['rating', 'votes'];
#end if
case 'rating':
shuffle = !0;
break;
#end if
default:
sortCriteria = 'name'
break;
}
#raw
var option$, showSort = $(' #showsort option ' );
if('direction' === sortCriteria){
option$ = showSort.filter('option[value="asc"].selected, option[value="desc"].selected');
option$.removeClass('selected').removeAttr('selected').html(option$.text().replace(/^>\s/i, ''));
option$ = showSort.filter($('option[value="' + elValue + '"]'));
option$.addClass('selected').attr('selected', !0).html('> ' + option$.text());
savePrefs();
el$.one('layoutComplete', llUpdate);
el$.isotope({
sortAscending: 'asc' === elValue,
sortBy: showSort.filter($('option[value^="by_"][class*="selected"]')).val().replace('by_', '')
});
} else if(0 == elValue.indexOf('by_')){
option$ = showSort.filter($('option[value^="by_"][class*="selected"]'));
option$.removeClass('selected').removeAttr('selected').html(option$.text().replace(/^>\s/i, ''));
option$ = showSort.filter($('option[value="' + elValue + '"]'));
option$.addClass('selected').attr('selected', !0).html('> ' + option$.text());
savePrefs();
if (!shuffle){
el$.one('layoutComplete', llUpdate);
el$.isotope({sortBy: sortCriteria});
} else {
// shuffle rating_votes where it can already be sorted by ratings which leaves it nothing to do.
function t(sortCriteria, lastPhase){
return function(){
var el$ = $(' #container ' );
if (!lastPhase){
lastPhase = !0;
el$.isotope({sortBy: sortCriteria});
} else {
el$.off('layoutComplete');
el$.isotope('layout');
llUpdate();
}
}
}
el$.on('layoutComplete', t(sortCriteria, !1));
el$.isotope({sortBy: 'random'});
}
} else {
option$ = showSort.filter($('option[value^="*"].selected, #showsort option [ value ^ = " . " ] . selected ' ));
option$.removeClass('selected').removeAttr('selected').html(option$.text().replace(/^>\s/i, ''));
option$ = showSort.filter($('option[value="' + elValue + '"]'));
option$.addClass('selected').attr('selected', !0).html('> ' + option$.text());
savePrefs();
var showCards = $('.show-card'), filter = elValue;
if('.hide' === filter){
showCards.filter($('.hide')).removeClass('hide').addClass('to-hide');
filter = '.to-hide';
} else {
showCards.filter($('.to-hide')).removeClass('to-hide').addClass('hide');
}
var el$ = $(' #container ' );
el$.off('layoutComplete');
el$.on('revealComplete', llUpdate);
el$.on('hideComplete', llUpdate);
el$.isotope({ filter: filter });
}
});
$(' #container ' ).on( ' click ' , ' . show - toggle - hide ' , function(event) {
var that = $(this);
event.preventDefault();
$.getJSON(this.href, function(data){
if(data.success){
var showCards = $('.show-card'), thisCard = $(that).parents('div[class*="show-card "]'),
numShows = showCards.length, numHidden, showSort = $(' #showsort option ' ), filter = ' to - hide ' ;
if(thisCard.hasClass(filter)){
title = 'Hide';
thisCard.removeClass(filter);
} else {
filter = 'hide';
title = 'Unhide';
thisCard.addClass(filter);
}
numHidden = showCards.filter($('.' + filter)).length;
that.attr('title', title);
showSort.filter($('option[value=".hide"]')).text('Hidden (' + numHidden + ')');
showSort.filter($('option[value="*"]')).text('All (' + (0 == numHidden ? '' : (numShows - numHidden) + '/') + numShows + ')');
var el$ = $(' #container ' )
el$.on('layoutComplete', llUpdate);
el$.isotope();
}
});
});
$(' #showfilter ' ).on( ' change ' , function() {
var filterValue = this.value;
if (-1 == filterValue.indexOf('trakt') && -1 == filterValue.indexOf('imdb') && -1 == filterValue.indexOf('mc_')
2023-03-09 02:13:52 +00:00
&& -1 == filterValue.indexOf('tmdb_') && -1 == filterValue.indexOf('tvc_')
&& -1 == filterValue.indexOf('tvm_')
2023-01-12 01:04:47 +00:00
&& -1 == filterValue.indexOf('ne_') && -1 == filterValue.indexOf('_ne')
&& -1 == filterValue.indexOf('default')) {
var el$ = $(' #container ' )
el$.on('layoutComplete', llUpdate);
el$.isotope({ filter: filterValue });
} else {
if (-1 !== filterValue.indexOf('more_imdb')){
filterValue = $(' #showfilter ' ).find( ' option : not ( [ value = " more_imdb " ] ) . selected ' ).val() + ' & more = 1 ' ;
}
else if (-1 !== filterValue.indexOf('more_ne')){
filterValue = $(' #showfilter ' ).find( ' option : not ( [ value ^ = " more_ " ] ) . selected ' ).val() + ' ? more = 1 ' ;
}
#end raw
location = ' $ sg_root /add-shows/' + filterValue;
#raw
}
});
2024-06-19 14:04:04 +00:00
$('.service, a.browse-image').each(addQTip);
2023-01-12 01:04:47 +00:00
if (config.homeSearchFocus) {
$(' #search _show_name ' ).focus();
}
llUpdate = (function(){
$.ll.handleScroll();
});
$(' #search _show_name ' ).on( ' input ' , function() {
var obj = $(' #container ' );
obj.one('layoutComplete', llUpdate);
obj.isotope({
filter: function () {
var reSearch = RegExp($(' #search _show_name ' ).val(), ' i ' );
return reSearch.test($(this).attr('data-name')) #end raw# #slurp #
#if $ use_network #
|| reSearch.test(\$(this).attr('data-network')) #end if# ;
#raw
}
});
});
$('.resetshows').click(function() {
var input = $(' #search _show_name ' );
if ('' !== input.val()){
input.val('').trigger('input').change();
if (config.homeSearchFocus)
input.focus();
}
});
2024-06-16 21:27:15 +00:00
objectFitImages();
2024-06-17 02:32:37 +00:00
$(' #person . person - bg ' ).each(function(i, oImage) {
2024-06-16 21:27:15 +00:00
removeImageBackground(oImage);
scaleImage(oImage);
});
2023-01-12 01:04:47 +00:00
});
#end raw
//-->
</script>
<style>
#set theme_suffix = ( ' ' , ' -dark ' ) [ ' dark ' == $ getVar ( ' sbThemeName ' , THEME_NAME ) ]
.bfr{position:absolute;left:-999px;top:-999px}.bfr img{width:16px;height:16px}.spinner{display:inline-block;width:16px;height:16px;background:url( ${ sg_root } /images/loading16 ${ theme_suffix } .gif) no-repeat 0 0}
2024-06-19 14:04:04 +00:00
#person { min - height : 130 px ; height : auto ; width : 215 px ; margin : auto ; display : block }
.main-image{margin:15px auto}
.person-bg{height:300px; width:215px; display:block; background-color: #181818 !important; border:1px solid #181818; object-fit: contain; font-family: 'object-fit: contain;'; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; background:url(/images/poster-person.jpg) center center no-repeat}
.person-bg{margin:0 auto !important}
2023-01-12 01:04:47 +00:00
</style>
<div class="bfr"><img src=" $ sg_root /images/loading16 ${ theme_suffix } .gif" /></div>
#if $ varExists ( ' header ' )
#set $ heading = ( ' header ' , $ header )
#else
#set $ heading = ( ' title ' , $ title )
#end if
<h1 style="margin-bottom:0" class="grey-text #echo ' %s " > %s ' % $ heading # </h1>
#if $ all_shows or ( $ kwargs and $ kwargs . get ( ' show_header ' ) )
<div class="pull-right" style="margin-top:-35px">
<select id="showsort" class="form-control form-control-inline input-sm">
#set $ num_all = len ( $ all_shows )
#set $ selected = ' class= " selected " selected= " selected " '
<optgroup label="View">
<option value="*" #if ' * ' in $ saved_showsort_view # $ selected >> #else # > #end if# All ( #echo ( ' ' , ' %s / ' % ( $ num_all - $ num_hidden ) ) [ 0 < $ num_hidden ] # $ num_all )</option>
<option value=".notinlibrary" #if ' .notinlibrary ' in $ saved_showsort_view # $ selected >> #else # > #end if# Not In Library ( #echo $ num_all - $ num_inlibrary # )</option>
<option value=".inlibrary" #if ' .inlibrary ' in $ saved_showsort_view # $ selected >> #else # > #end if# In Library ( $ num_inlibrary )</option>
#if ' Ani ' not in $ browse_type
<option value=".hide" #if ' .hide ' in $ saved_showsort_view # $ selected >> #else # > #end if# Hidden ( $ num_hidden )</option>
#end if
</optgroup>
<optgroup label="Sort order">
<option value="asc" #if not $ is_showsort_desc # $ selected >> #else # > #end if# Asc</option>
<option value="desc" #if $ is_showsort_desc # $ selected >> #else # > #end if# Desc</option>
</optgroup>
<optgroup label="Sort by">
<option value="by_name" #if ' by_name ' in $ saved_showsort_sortby and not $ reset_showsort_sortby # $ selected >> #else # > #end if# Name</option>
2023-03-09 02:13:52 +00:00
## omit for TVMaze as original order == First Aired
#if ' TVmaze ' not in $ browse_type
2023-01-12 01:04:47 +00:00
<option value="by_order" #if ' by_order ' in $ saved_showsort_sortby or $ reset_showsort_sortby # $ selected >> #else # > #end if# Original</option>
2023-03-09 02:13:52 +00:00
#end if
2023-01-12 01:04:47 +00:00
<option value="by_premiered" #if ' by_premiered ' in $ saved_showsort_sortby and not $ reset_showsort_sortby # $ selected >> #else # > #end if# First aired</option>
#if $ use_returning
<option value="by_returning" #if ' by_returning ' in $ saved_showsort_sortby and not $ reset_showsort_sortby # $ selected >> #else # > #end if# Returning</option>
#end if
#if $ use_votes
2023-03-09 02:13:52 +00:00
<option value="by_votes" #if ' by_votes ' in $ saved_showsort_sortby # $ selected >> #else # > #end if# $ term_vote </option>
2023-01-12 01:04:47 +00:00
#end if
#if $ use_ratings
<option value="by_rating" #if ' by_rating ' in $ saved_showsort_sortby # $ selected >> #else # > #end if# % Rating</option>
#end if
#if $ use_ratings and $ use_votes
2024-06-19 14:04:04 +00:00
<option value="by_rating_votes" #if ' by_rating_votes ' in $ saved_showsort_sortby # $ selected >> #else # > #end if# % Rating > $ term_vote </option>
2023-01-12 01:04:47 +00:00
#end if
</optgroup>
</select>
2023-03-09 02:13:52 +00:00
#if ' Ani ' not in $ browse_type and $ use_filter
2023-01-12 01:04:47 +00:00
<select id="showfilter" class="form-control form-control-inline input-sm">
#set $ selected = ' class= " selected " selected= " selected " '
#if ' Trakt ' == $ browse_type
<optgroup label="Trakt">
<option value="trakt_anticipated" #echo ( ' ' , selected ) [ ' anticipated ' == $ mode ] # >Anticipating</option>
2023-03-09 02:13:52 +00:00
<option value="trakt_newseasons" #echo ( ' ' , selected ) [ ' returning ' == $ mode ] # >New Seasons</option>
2023-01-12 01:04:47 +00:00
<option value="trakt_newshows" #echo ( ' ' , selected ) [ ' newshows ' == $ mode ] # >New Shows</option>
<option value="trakt_popular" #echo ( ' ' , selected ) [ ' popular ' == $ mode ] # >Popular</option>
<option value="trakt_trending" #echo ( ' ' , selected ) [ ' trending ' == $ mode ] # >Trending</option>
</optgroup>
<optgroup label="Trakt last month">
<option value="trakt_watched" #echo ( ' ' , selected ) [ ' watched ' == $ mode ] # >Most Watched</option>
<option value="trakt_played" #echo ( ' ' , selected ) [ ' played ' == $ mode ] # >Most Played</option>
<option value="trakt_collected" #echo ( ' ' , selected ) [ ' collected ' == $ mode ] # >Most Collected</option>
</optgroup>
<optgroup label="Trakt last 12 months">
<option value="trakt_watched?period=year" #echo ( ' ' , selected ) [ ' watched-year ' == $ mode ] # >Most Watched</option>
<option value="trakt_played?period=year" #echo ( ' ' , selected ) [ ' played-year ' == $ mode ] # >Most Played</option>
<option value="trakt_collected?period=year" #echo ( ' ' , selected ) [ ' collected-year ' == $ mode ] # >Most Collected</option>
</optgroup>
#if any ( $ sg_var ( ' TRAKT_ACCOUNTS ' , [ ] ) )
<optgroup label="Trakt recommended">
#for $ account in $ sg_var ( ' TRAKT_ACCOUNTS ' )
#if $ sg_var ( ' TRAKT_ACCOUNTS ' ) . get ( $ account ) . active and $ sg_var ( ' TRAKT_ACCOUNTS ' ) . get ( $ account ) . name
<option value="trakt_recommended?account= $ account " #echo ( ' ' , selected ) [ ( ' recommended- %s ' % $ account ) == $ mode ] # >for $ sg_var ('TRAKT_ACCOUNTS').get( $ account ).name</option>
#end if
#end for
#else
<optgroup label="To get recommended">
<option value="trakt_recommended?action=add">Enable Trakt here</option>
#end if
</optgroup>
#if any ( $ sg_var ( ' TRAKT_ACCOUNTS ' , [ ] ) )
<optgroup label="Trakt watchlisted">
#for $ account in $ sg_var ( ' TRAKT_ACCOUNTS ' )
#if $ sg_var ( ' TRAKT_ACCOUNTS ' ) . get ( $ account ) . active and $ sg_var ( ' TRAKT_ACCOUNTS ' ) . get ( $ account ) . name
<option value="trakt_watchlist?account= $ account " #echo ( ' ' , selected ) [ ( ' watchlist- %s ' % $ account ) == $ mode ] # >for $ sg_var ('TRAKT_ACCOUNTS').get( $ account ).name</option>
#end if
#end for
#else
<optgroup label="To get watchlisted">
<option value="trakt_watchlist?action=add">Enable Trakt here</option>
#end if
</optgroup>
#elif ' IMDb ' == $ browse_type
#set $ periods = $ kwargs and $ kwargs . get ( ' periods ' )
#if $ periods
<optgroup label="IMDb Popular">
#for $ i , $ p in enumerate ( $ periods )
#set $ period = ' %s , %s ' % ( $ p [ 0 ] , $ p [ 1 ] )
<option value="popular_imdb?period= $ period " #echo ( ' ' , selected ) [ ( ' popular- %s ' % $ period ) in $ mode ] # > #echo ' %s - %s ' % ( ( $ p [ 1 ] , ' Current ' ) [ not $ i ] , $ p [ 0 ] ) # </option>
#end for
<option value="more_imdb" #echo ( ' ' , selected + ' disabled ' ) [ mode . endswith ( ' more ' ) ] # >... list more</option>
</optgroup>
#end if
#if not hasattr ( $ sickgear , ' IMDB_ACCOUNTS ' ) # <optgroup label="Restart SickGear to reveal"><option>new options after restart</option></optgroup> #else #
<optgroup label="IMDb Watchlists">
#if any ( $ sg_var ( ' IMDB_ACCOUNTS ' , [ ] ) )
#for $ i , $ v in $ enumerate ( $ sg_var ( ' IMDB_ACCOUNTS ' ) )
#if not $ i % 2
#set $ id = $ v
#elif not $ v . startswith ( ' (Off) ' )
<option value="watchlist-imdb?account= $ id " #echo ( ' ' , selected ) [ ( ' watchlist- %s ' % $ id ) == $ mode ] # > #echo ' %s %s ' % ( $ v , ( ' \' s ' , ' ' ) [ ' your ' == $ v . replace ( ' (Off) ' , ' ' ) . lower ( ) ] ) # list</option>
#end if
#end for
#end if
<option value="watchlist-imdb?action=add"><< Add lists >></option>
</optgroup>
#end if
#elif ' Metacritic ' == $ browse_type
<optgroup label="Metacritic">
<option value="mc_newseries" #echo ( ' ' , selected ) [ ' newseries ' == $ mode ] # >New seasons</option>
2023-09-19 11:56:14 +00:00
<option value="mc_explore" #echo ( ' ' , selected ) [ ' explore ' == $ mode ] # >Explore</option>
<option value="mc_popular" #echo ( ' ' , selected ) [ ' popular ' == $ mode ] # >Popular</option>
<option value="mc_metascore" #echo ( ' ' , selected ) [ ' metascore ' == $ mode ] # >By metascore</option>
<option value="mc_userscore" #echo ( ' ' , selected ) [ ' userscore ' == $ mode ] # >By userscore</option>
#if $ kwargs and $ kwargs . get ( ' more ' )
<option value="mc_ #echo $ mode # ?more=1" #echo ( ' ' , selected + ' disabled ' ) [ mode . endswith ( ' more ' ) ] # >... list more</option>
2023-01-12 01:04:47 +00:00
#end if
</optgroup>
2023-03-09 02:13:52 +00:00
#elif ' TMDB ' == $ browse_type
<optgroup label="TMDB">
<option value="tmdb_upcoming" #echo ( ' ' , selected ) [ ' upcoming ' == $ mode ] # >Upcoming</option>
<option value="tmdb_popular" #echo ( ' ' , selected ) [ ' popular ' == $ mode ] # >Popular</option>
<option value="tmdb_toprated" #echo ( ' ' , selected ) [ ' toprated ' == $ mode ] # >Top rated</option>
<option value="tmdb_trending_today" #echo ( ' ' , selected ) [ ' trending_today ' == $ mode ] # >Trending today</option>
<option value="tmdb_trending_week" #echo ( ' ' , selected ) [ ' trending_week ' == $ mode ] # >Trending this week</option>
</optgroup>
2023-01-12 01:04:47 +00:00
#elif ' TVCalendar ' == $ browse_type
<optgroup label="TVCalendar">
#for $ page in $ kwargs . get ( ' pages ' ) or [ ]
<option value=" $ page [0]" #echo ( ' ' , selected ) [ $ mode in $ page [ 0 ] and ( $ kwargs and $ kwargs . get ( ' page ' , ' n/a ' ) in $ page [ 0 ] or $ kwargs and not $ kwargs . get ( ' page ' ) and ' this ' in $ page [ 1 ] ) ] # > $ page [1]</option>
#end for
<option value="tvc_latest" #echo ( ' ' , selected ) [ ' latest ' == $ mode ] # >Latest additions</option>
</optgroup>
#elif ' TVmaze ' == $ browse_type
<optgroup label="TVmaze">
<option value="tvm_premieres" #echo ( ' ' , selected ) [ ' premieres ' == $ mode ] # >Premieres</option>
<option value="tvm_returning" #echo ( ' ' , selected ) [ ' returning ' == $ mode ] # >Returning</option>
</optgroup>
#elif ' Nextepisode ' == $ browse_type
<optgroup label="Nextepisode">
<option value="ne_newpop" #echo ( ' ' , selected ) [ ' newpop ' == $ mode ] # >Popular premiered</option>
<option value="ne_newtop" #echo ( ' ' , selected ) [ ' newtop ' == $ mode ] # >Top rated premiered</option>
2024-03-03 22:29:22 +00:00
<option value="ne_upcoming" #echo ( ' ' , selected ) [ ' upcoming ' == $ mode ] # >Upcoming S01</option>
<option value="ne_upcoming2" #echo ( ' ' , selected ) [ ' upcoming2 ' == $ mode ] # >Upcoming S02</option>
2023-01-12 01:04:47 +00:00
<option value="ne_trending" #echo ( ' ' , selected ) [ ' trending ' == $ mode ] # >Trending</option>
<option value="more_ne" #echo ( ' ' , selected + ' disabled ' ) [ mode . endswith ( ' more ' ) ] # >... list more</option>
</optgroup>
#end if
</select>
#end if
</div>
<div class="pull-right" style="clear:right">
<input id="search_show_name" class="search form-control form-control-inline input-sm input200" type="search" placeholder="Filter Show Name #if $ use_network # /Network #end if# ">
<button type="button" class="resetshows btn btn-inline">Reset Filter</button>
</div>
2024-06-16 16:05:11 +00:00
2023-01-12 01:04:47 +00:00
<h4 style="float:left;margin:0 0 0 2px"> $ browse_title </h4>
#if $ kwargs and $ kwargs . get ( ' oldest ' )
<div class="grey-text" style="clear:left;margin-left:2px;font-size:0.85em">
2024-06-19 14:04:04 +00:00
First aired from <span id="oldest" data-oldest-dt=" $ kwargs . get ('oldest_dt', '')"> $ kwargs ['oldest']</span> until <span id="newest" data-newest-dt=" $ kwargs . get ('newest_dt', '')"> $ kwargs ['newest']</span>
2023-01-12 01:04:47 +00:00
</div>
#end if
2024-06-16 16:05:11 +00:00
#if $ p_ref
2024-06-17 02:32:37 +00:00
<div id="person">
<div id="person-content" class="main-image">
<a class="thumb" href=" $ sbRoot /imagecache/person?pid= $ p_ref &thumb=1" rel="dialog"><img class="person-bg" src=" $ sbRoot /imagecache/person?pid= $ p_ref &thumb=0"></a>
</div>
2024-06-16 16:05:11 +00:00
</div>
#end if
2023-01-12 01:04:47 +00:00
#end if
<div id="container">
#if $ all_shows
#set $ poster_id = 0
#for $ this_show in $ all_shows
#set $ poster_id + = 1
#set $ title_html = $ this_show [ ' title ' ] . replace ( ' " ' , ' " ' ) . replace ( " ' " , ' & # 39;')
2023-03-09 02:13:52 +00:00
#if ' returning ' == $ mode
2023-01-12 01:04:47 +00:00
#set $ overview = ' %s : %s ' % (
2023-03-09 02:13:52 +00:00
'Season %s' % $ this_show ['episode_season'],
2024-06-19 14:04:04 +00:00
$ this_show [('episode_overview', 'overview')['No overview yet' == $ this_show ['episode_overview']]])
2023-01-12 01:04:47 +00:00
#else
#set $ overview = $ this_show [ ' overview ' ]
#end if
#set $ show_id = $ this_show . get ( ' show_id ' )
#set $ known = ( ' not ' , ' ' ) [ bool ( $ this_show . get ( ' indb ' ) ) ]
#set $ hide = ( ' ' , ' %s hide ' % ( ' ' , ' to- ' ) [ ' .hide ' in $ saved_showsort_view ] ) [ bool ( $ this_show . get ( ' hide ' ) ) ]
2023-03-09 02:13:52 +00:00
#if $ use_ratings :
#set $ data_rating = $ try_float ( $ this_show [ ' rating ' ] )
#end if
2024-06-19 14:04:04 +00:00
<div class="show-card ${ hide } ${ known } inlibrary" data-name=" #echo re . sub ( r ' ([ \' \ " ]) ' , r ' ' , $ this_show [ ' title ' ] ) # " data-id=" $ show_id " data-ajax=" $ this_show . get ('overview_ajax', '0')" data-nroles=" #echo len ( $ this_show . get ( ' p_chars ' , [ ] ) ) # " #if $ use_ratings # data-rating=" $ data_rating " #end if# #if $ use_votes # data-votes=" $ this_show ['votes']" #end if# data-premiered=" $ this_show ['ord_premiered']" #if $ use_returning # data-returning=" $ this_show ['ord_returning']" #end if# data-order=" $ this_show ['order']" #if $ use_network # data-network=" $ this_show ['network']" #end if# >
2023-01-12 01:04:47 +00:00
<div class="show-card-inner">
<div class="browse-image">
<a class="browse-image" href="<%= anon_url(this_show['url_src_db']) %>" target="_blank"
2024-06-16 21:27:15 +00:00
title="<span style='color: #226baa'> $ re . sub (r'(?m)\s+\((?:19|20)\d\d\)\s*$', '', $ title_html )</span>
2023-01-12 01:04:47 +00:00
2024-06-19 14:04:04 +00:00
<div class='genre' style='display: #echo ( ' none ' , ' block ' ) [ bool ( $ this_show [ ' genres ' ] ) ] # ;font-weight:bold'>(<em> $ this_show ['genres']</em>)</div>
2023-03-09 02:13:52 +00:00
#if $ kwargs and $ use_returning # <span style='display:block;clear:both;font-weight:bold;font-size:0.9em;color: #888'><em>Season $ this_show ['episode_season'] return #echo ( ' s ' , ' ed ' ) [ $ this_show [ ' return_past ' ] ] # $ this_show ['str_returning']</em></span> #end if#
2023-01-12 01:04:47 +00:00
#if $ this_show . get ( ' country ' ) or $ this_show . get ( ' language ' )
<p style='line-height:15px;margin-bottom:2px'>
#if $ this_show . get ( ' country ' )
<span style='font-size:0.9em;color: #888'><em>Country: #if not $ this_show . get ( ' country_img ' ) # $ this_show . get ('country').upper() #else # <img style='margin:0 0 2px 4px;width:16px;height:11px;vertical-align:middle' title=' ${ this_show [ ' country ' ] } ' src=' $ sbRoot /images/flags/ ${ $ this_show [ ' country ' ] . lower ( ) } .png' width='16' height='11'> #end if# </em></span>
#end if
#if $ this_show . get ( ' language ' )
<span style='font-size:0.9em;color: #888 #if $ this_show . get ( ' country ' ) # ;padding-left:6px #end if# '><em>Language: #if not $ this_show . get ( ' language_img ' ) # $ this_show . get ('language') #else # <img style='margin:0 0 2px 4px;width:16px;height:11px;vertical-align:middle' title=' ${ this_show [ ' language ' ] } ' src=' $ sbRoot /images/flags/ ${ $ this_show [ ' language ' ] . lower ( ) } .png' width='16' height='11'> #end if# </em></span>
#end if
</p>
2024-06-16 21:27:15 +00:00
#end if
#if $ this_show . get ( ' p_chars ' )
2024-06-19 14:04:04 +00:00
<p style='overflow-y:auto;max-height:152px'>
2024-06-16 21:27:15 +00:00
#for $ char in $ this_show [ ' p_chars ' ]
2024-06-26 22:59:43 +00:00
<span style='display:block;clear:both;font-weight:bold;font-size:0.9em;color: #393'>as $ char [0] #if $ RoleTypes . ActorMain != $ char [ 1 ] # ( $ char [2] #if $ char [ 3 ] # / $ char [3] eps #end if# ) #end if# </span>
2024-06-16 21:27:15 +00:00
#end for
</p>
2023-01-12 01:04:47 +00:00
#end if
2024-06-19 14:04:04 +00:00
<p class='overview' style='margin:0 0 2px'> $ overview </p>
<p class='premiere'> #if $ this_show [ ' str_premiered ' ] # <span style='font-weight:bold;font-size:0.9em;color: #888'><em> #if ' Trakt ' == $ browse_type and $ kwargs and ' returning ' == $ mode # Air #else # First air #end if# #echo ( ' s ' , ' ed ' ) [ $ this_show [ ' started_past ' ] ] # : $ this_show ['str_premiered']</em></span> #end if#
2023-01-12 01:04:47 +00:00
#if $ this_show . get ( ' ended_str ' ) # - <span style='font-weight:bold;font-size:0.9em;color: #888'><em>Ended: $ this_show ['ended_str']</em></span> #end if#
#if $ this_show . get ( ' network ' ) # <span style='display:block;clear:both;font-weight:bold;font-size:0.9em;color: #888'><em>On: $ this_show ['network']</em></span> #end if#
</p>
<span style='float:right'>Click for more at <span class='boldest'> $ browse_type </span></span>">
#if ' poster ' in $ this_show [ ' images ' ]
#set $ image = $ this_show [ ' images ' ] [ ' poster ' ] [ ' thumb ' ]
<img id="poster- $ poster_id " alt="" class="browse-image" data-original=" #if $ image and ' http ' != $ image [ : 4 ] # $ sg_root / #end if# $ image " />
<span id="loading-poster- $ poster_id " class="lazy-loading-image"><i class="spinner"></i></span>
#else
<span> </span>
#end if
</a>
</div>
<div class="show-title">
#echo ( ( re . sub ( r ' ^((?:A(?! \ s+to)n?)|The) \ s( \ w) ' , r ' <span class= " article " > \ 1</span> \ 2 ' , $ this_show [ ' title ' ] ) , $ this_show [ ' title ' ] ) [ $ sg_var ( ' SORT_ARTICLE ' ) ] , ' <span> </span> ' ) [ ' ' == $ this_show [ ' title ' ] ] #
</div>
#if ' Ani ' not in $ browse_type
<a class="show-toggle-hide" href=" $ sg_root /add-shows/show-toggle-hide?ids= $ show_id " title=" #echo ( ' H ' , ' Unh ' ) [ any ( $ hide ) ] # ide"><i class="sgicon-delete"></i></a>
#end if
<div class="clearfix">
#if $ use_ratings or $ use_votes
2023-03-09 02:13:52 +00:00
<p> #if $ use_ratings # <span class="rating"> $ this_show ['rating'] #if $ re . search ( r ' ^ \ d+( \ . \ d+)?$ ' , ( str ( $ this_show [ ' rating ' ] ) ) ) # %</span> #end if# #end if# #if $ use_votes # <i class="heart icon-glyph"></i><i> $ this_show ['votes'] $ term_vote . lower ()</i> #end if# </p> #slurp #
2024-06-19 14:04:04 +00:00
#else
<p> </p>
2023-01-12 01:04:47 +00:00
#end if
#if ' url_tvdb ' in $ this_show and $ this_show [ ' url_tvdb ' ]
<a class="service" href="<%= anon_url(this_show['url_tvdb']) %>" onclick="window.open(this.href, '_blank'); return false;"
title="View <span class='boldest'>tvdb</span> detail for <span style='color: rgb(66, 139, 202)'> $ title_html </span>">
<i><img style="margin-top:5px" alt="tvdb" height="16" width="16" src=" $ sg_root /images/ $ sickgear . TVInfoAPI ( $ sickgear . indexers . indexer_config . TVINFO_TVDB ).config['icon']" /></i></a>
#end if
<div class="browse-add-show-holder">
#if bool ( $ this_show . get ( ' indb ' ) )
<p style="line-height:1.5;padding:2px 5px 3px" title=" #echo ' %s added ' % $ this_show . get ( ' indb ' ) # ">In library</p>
#else
<a href=" $ sg_root /add-shows/info- ${ browse_type . lower ( ) } ?ids= ${ this_show [ ' show_id ' ] } &show_name= ${ quote ( $ this_show [ ' title ' ] . encode ( " utf-8 " ) ) } " class="btn btn-xs">Add Show</a>
#end if
</div>
</div>
</div>
<div class="ui-progressbar ui-widget ui-widget-content ui-corner-all">
2023-03-09 02:13:52 +00:00
#set $ state = ' progress- %s 0 " title= " %s " ' % ( ( ' 2 ' , ' Upcoming ' ) , ( ' 8 ' , ' Started ' ) ) [ $ this_show [ ' started_past ' ] ]
2023-01-12 01:04:47 +00:00
<div style="width:102%" class="ui-progressbar-value ui-widget-header ui-corner-left ui-corner-right $ state ></div>
</div>
</div>
#end for
</div>
#if $ kwargs and $ kwargs . get ( ' footnote ' )
<div style="clear:both">
$ kwargs ['footnote']
</div>
#end if
#else
<div class="show-card" style="width:100%; margin-top:20px; padding:20px">
<p class="red-text">
#if $ kwargs and $ kwargs . get ( ' error_msg ' )
$ kwargs ['error_msg']
#else
$ browse_type did not return results, this can happen from time to time.
<br><br>This view should auto refresh every 10 mins.
<script type="text/javascript" charset="utf-8">
<!--
window.setInterval('location.reload(true)', 600000); // Refresh every 10 minutes
//-->
</script>
#end if
</p>
</div>
</div>
#end if
<script type="text/javascript" src=" $ sg_root /js/lazyload/lazyload.min.js?v= $ sbPID "></script>
<script type="text/javascript" src=" $ sg_root /js/inc_bottom.js?v= $ sbPID "></script>
#if ' library ' in $ saved_showsort_view or ' hide ' in $ saved_showsort_view
<script type="text/javascript" charset="utf-8">
<!--
\$(document).ready(function(){
#if ' library ' in $ saved_showsort_view
// restore inlibrary/notinlibrary
\$('.show-card').filter(\$('.to-hide')).removeClass('to-hide').addClass('hide');
var filter = ' #echo ' . %s inlibrary ' % ( ' ' , ' not ' ) [ ' not ' in $ saved_showsort_view ] # ';
#else
// restore hidden
\$('.show-card').filter(\$('.hide')).removeClass('hide').addClass('to-hide');
var filter = '.hide';
#end if
#raw
var dev = !1
$.iso.one('revealComplete', function(){llUpdate(); dev && console.log('revealed')});
$.iso.one('layoutComplete', function(){llUpdate(); dev && console.log('layout')});
$.iso.one('arrangeComplete', function(){llUpdate(); dev && console.log('arranged')});
$.iso.one('hideComplete', function(){llUpdate(); dev && console.log('hidden')});
$.iso.isotope({ filter: filter });
$.iso.isotope('layout');
#end raw
});
//-->
</script>
#end if
#include $ os . path . join ( $ sg_str ( ' PROG_DIR ' ) , ' gui/slick/interfaces/default/inc_bottom.tmpl ' )