mirror of
https://github.com/moparisthebest/SickRage
synced 2024-11-11 03:45:01 -05:00
0d9fbc1ad7
This version of SickBeard uses both TVDB and TVRage to search and gather it's series data from allowing you to now have access to and download shows that you couldn't before because of being locked into only what TheTVDB had to offer. Also this edition is based off the code we used in our XEM editon so it does come with scene numbering support as well as all the other features our XEM edition has to offer. Please before using this with your existing database (sickbeard.db) please make a backup copy of it and delete any other database files such as cache.db and failed.db if present, we HIGHLY recommend starting out with no database files at all to make this a fresh start but the choice is at your own risk! Enjoy!
355 lines
16 KiB
Cheetah
355 lines
16 KiB
Cheetah
#import sickbeard
|
|
#import datetime
|
|
#from sickbeard.common import *
|
|
#from sickbeard import sbdatetime
|
|
|
|
#set global $title="Coming Episodes"
|
|
#set global $header="Coming Episodes"
|
|
|
|
#set global $sbPath=".."
|
|
|
|
#set global $topmenu="comingEpisodes"
|
|
#import os.path
|
|
#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl")
|
|
#set $sort = $sickbeard.COMING_EPS_SORT
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpSearch.js?$sbPID"></script>
|
|
#if $varExists('header')
|
|
<h1 class="header">$header</h1>
|
|
#else
|
|
<h1 class="title">$title</h1>
|
|
#end if
|
|
|
|
<style type="text/css">
|
|
.sort_data {display:none}
|
|
</style>
|
|
|
|
<div class="h2footer align-right">
|
|
<b>Key:</b>
|
|
<span class="listing_overdue">Missed</span>
|
|
<span class="listing_current">Current</span>
|
|
<span class="listing_default">Future</span>
|
|
<span class="listing_toofar">Distant</span>
|
|
<a class="btn btn-mini btn-inverse forceBacklog" href="webcal://$sbHost:$sbHttpPort/calendar">
|
|
<i class="icon-calendar icon-white"></i>Subscribe</a>
|
|
<!-- <span class="listing_unknown">Unknown</span> //-->
|
|
</div>
|
|
|
|
#if $layout == 'list':
|
|
<!-- start list view //-->
|
|
<script type="text/javascript" src="$sbRoot/js/plotTooltip.js?$sbPID"></script>
|
|
<script type="text/javascript" charset="utf-8">
|
|
<!--
|
|
\$.tablesorter.addParser({
|
|
id: 'loadingNames',
|
|
is: function(s) {
|
|
return false;
|
|
},
|
|
format: function(s) {
|
|
if (s.indexOf('Loading...') == 0)
|
|
return s.replace('Loading...','000');
|
|
#if not $sickbeard.SORT_ARTICLE:
|
|
return (s || '').replace(/^(The|A|An)\s/i,'');
|
|
#else:
|
|
return (s || '');
|
|
#end if
|
|
},
|
|
type: 'text'
|
|
});
|
|
\$.tablesorter.addParser({
|
|
id: 'quality',
|
|
is: function(s) {
|
|
return false;
|
|
},
|
|
format: function(s) {
|
|
return s.replace('hd1080p',5).replace('hd720p',4).replace('hd',3).replace('sd',2).replace('any',1).replace('best',0).replace('custom',7);
|
|
},
|
|
type: 'numeric'
|
|
});
|
|
\$.tablesorter.addParser({
|
|
id: 'cDate',
|
|
is: function(s) {
|
|
return false;
|
|
},
|
|
format: function(s) {
|
|
return s;
|
|
},
|
|
type: 'numeric'
|
|
});
|
|
|
|
\$(document).ready(function(){
|
|
|
|
#set $sort_codes = {'date': 0, 'show': 1, 'network': 4}
|
|
#if $sort not in $sort_codes:
|
|
$sort = 'date'
|
|
#end if
|
|
sortList = [[$sort_codes[$sort],0]];
|
|
|
|
\$("#showListTable:has(tbody tr)").tablesorter({
|
|
widgets: ['stickyHeaders'],
|
|
sortList: sortList,
|
|
textExtraction: {
|
|
0: function(node) { return \$(node).find("span").text().toLowerCase(); },
|
|
4: function(node) { return \$(node).find("img").attr("alt"); },
|
|
5: function(node) { return \$(node).find("span").text().toLowerCase(); }
|
|
},
|
|
headers: {
|
|
0: { sorter: 'cDate' },
|
|
1: { sorter: 'loadingNames' },
|
|
2: { sorter: false },
|
|
3: { sorter: false },
|
|
4: { sorter: 'loadingNames' },
|
|
5: { sorter: 'quality' },
|
|
6: { sorter: false },
|
|
7: { sorter: false },
|
|
8: { sorter: false }
|
|
}
|
|
});
|
|
|
|
\$('#sbRoot').ajaxEpSearch();
|
|
|
|
});
|
|
//-->
|
|
</script>
|
|
|
|
#set $show_div = "listing_default"
|
|
|
|
<input type="hidden" id="sbRoot" value="$sbRoot" />
|
|
|
|
<table id="showListTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0">
|
|
<thead><tr><th>Airdate</th><th>Show</th><th class="nowrap">Next Ep</th><th>Next Ep Name</th><th>Network</th><th>Quality</th><th>IMDb</th><th>tvDB</th><th>Search</th></tr></thead>
|
|
<tbody>
|
|
|
|
#for $cur_result in $sql_results:
|
|
|
|
#if int($cur_result["paused"]) and not $sickbeard.COMING_EPS_DISPLAY_PAUSED:
|
|
#continue
|
|
#end if
|
|
|
|
#set $cur_ep_airdate = $cur_result["localtime"].date()
|
|
#set $cur_ep_enddate = $cur_result["localtime"] + datetime.timedelta(minutes=$cur_result["runtime"])
|
|
#if $cur_ep_enddate < $today:
|
|
#set $show_div = "listing_overdue"
|
|
#elif $cur_ep_airdate >= $next_week.date():
|
|
#set $show_div = "listing_toofar"
|
|
#elif $cur_ep_airdate >= $today.date() and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
#set $show_div = "listing_current"
|
|
#else:
|
|
#set $show_div = "listing_default"
|
|
#end if
|
|
#end if
|
|
|
|
<!-- start $cur_result["show_name"] //-->
|
|
<tr class="$show_div">
|
|
<td align="center" class="nowrap">$sbdatetime.sbdatetime.sbfdatetime($cur_result["localtime"]).decode($sickbeard.SYS_ENCODING)<span class="sort_data">$time.mktime($cur_result["localtime"].timetuple())</span></td>
|
|
<td class="tvShow"><a href="$sbRoot/home/displayShow?show=${cur_result["showid"]}">$cur_result["show_name"]</a>
|
|
#if int($cur_result["paused"]):
|
|
<span class="pause">[paused]</span>
|
|
#end if
|
|
</td>
|
|
<td class="nowrap" align="center" style="color: #555555; font-size: 16px;"><b><%="%02ix%02i" % (int(cur_result["season"]), int(cur_result["episode"])) %></b></td>
|
|
<td>
|
|
#if $cur_result["description"] != "" and $cur_result["description"] != None:
|
|
<img alt="" src="$sbRoot/images/info32.png" height="16" width="16" class="plotInfo" id="plot_info_<%=str(cur_result["showid"])+"_"+str(cur_result["season"])+"_"+str(cur_result["episode"])%>" style="padding-top: 6px;"/>
|
|
#end if
|
|
$cur_result["name"]
|
|
</td>
|
|
<td align="center">$cur_result["network"]</td>
|
|
<td align="center">
|
|
#if int($cur_result["quality"]) in $qualityPresets:
|
|
<span class="quality $qualityPresetStrings[int($cur_result["quality"])]">$qualityPresetStrings[int($cur_result["quality"])]</span>
|
|
#else:
|
|
<span class="quality Custom">Custom</span>
|
|
#end if
|
|
</td>
|
|
<td align="center">
|
|
#if $cur_result["imdb_id"]:
|
|
<a href="http://www.imdb.com/title/${cur_result["imdb_id"]}" onclick="window.open(this.href, '_blank'); return false;" title="http://www.imdb.com/title/${cur_result["imdb_id"]}"><img alt="[imdb]" height="16" width="16" src="$sbRoot/images/imdb.png" />
|
|
#end if
|
|
</td>
|
|
<td align="center"><a href="http://thetvdb.com/?tab=series&id=${cur_result["showid"]}" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="http://thetvdb.com/?tab=series&id=${cur_result["showid"]}"><img alt="[tvdb]" height="16" width="16" src="$sbRoot/images/thetvdb16.png" /></a></td>
|
|
<td align="center">
|
|
<a href="$sbRoot/home/searchEpisode?show=${cur_result["showid"]}&season=$cur_result["season"]&episode=$cur_result["episode"]" title="Manual Search" id="forceUpdate-${cur_result["showid"]}" class="forceUpdate epSearch"><img alt="[search]" height="16" width="16" src="$sbRoot/images/search32.png" id="forceUpdateImage-${cur_result["showid"]}" /></a>
|
|
</td>
|
|
</tr>
|
|
<!-- end $cur_result["show_name"] //-->
|
|
#end for
|
|
</tbody>
|
|
</table>
|
|
<!-- end list view //-->
|
|
#else:
|
|
<!-- start non list view //-->
|
|
<script type="text/javascript" charset="utf-8">
|
|
<!--
|
|
\$(document).ready(function(){
|
|
\$('#sbRoot').ajaxEpSearch({'size': 16, 'loadingImage': 'loading16.gif'});
|
|
\$(".ep_summary").hide();
|
|
\$(".ep_summaryTrigger").click(function() {
|
|
\$(this).next(".ep_summary").slideToggle('normal', function() {
|
|
\$(this).prev(".ep_summaryTrigger").attr('src', function(i, src) {
|
|
return \$(this).next(".ep_summary").is(':visible') ? src.replace('plus','minus') : src.replace('minus','plus');
|
|
});
|
|
});
|
|
});
|
|
});
|
|
//-->
|
|
</script>
|
|
|
|
#set $cur_segment = None
|
|
#set $too_late_header = False
|
|
#set $missed_header = False
|
|
#set $today_header = False
|
|
#set $show_div = "ep_listing listing_default"
|
|
|
|
#if $sort == "show":
|
|
<br/><br/>
|
|
#end if
|
|
|
|
#for $cur_result in $sql_results:
|
|
<!-- start $cur_result["show_name"] //-->
|
|
|
|
#if int($cur_result["paused"]) and not $sickbeard.COMING_EPS_DISPLAY_PAUSED:
|
|
#continue
|
|
#end if
|
|
|
|
#if $sort == "network":
|
|
#if $cur_result["network"] and $cur_segment != $cur_result["network"]:
|
|
<h1 class="network">$cur_result["network"]</h1>
|
|
#set $cur_segment = $cur_result["network"]
|
|
#end if
|
|
#set $cur_ep_airdate = $cur_result["localtime"].date()
|
|
#set $cur_ep_enddate = $cur_result["localtime"] + datetime.timedelta(minutes=$cur_result["runtime"])
|
|
#if $cur_ep_enddate < $today:
|
|
#set $show_div = "ep_listing listing_overdue"
|
|
#elif $cur_ep_airdate >= $next_week.date():
|
|
#set $show_div = "ep_listing listing_toofar"
|
|
#elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
#set $show_div = "ep_listing listing_current"
|
|
#else:
|
|
#set $show_div = "ep_listing listing_default"
|
|
#end if
|
|
#end if
|
|
#elif $sort == "date":
|
|
#set $cur_ep_airdate = $cur_result["localtime"].date()
|
|
#set $cur_ep_enddate = $cur_result["localtime"] + datetime.timedelta(minutes=$cur_result["runtime"])
|
|
#if $cur_segment != $cur_ep_airdate:
|
|
#if $cur_ep_enddate < $today and $cur_ep_airdate != $today.date() and not $missed_header:
|
|
<br /><h1 class="day">Missed</h1>
|
|
#set $missed_header = True
|
|
#elif $cur_ep_airdate >= $next_week.date() and not $too_late_header:
|
|
<br /><h1 class="day">Later</h1>
|
|
#set $too_late_header = True
|
|
#elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
<br /><h1 class="day">$datetime.date.fromordinal($cur_ep_airdate.toordinal).strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize() <span style="font-size: 12px;">[today]</span></h1>
|
|
#set $today_header = True
|
|
#else:
|
|
<br /><h1 class="day">$datetime.date.fromordinal($cur_ep_airdate.toordinal).strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize()</h1>
|
|
#end if
|
|
#end if
|
|
#set $cur_segment = $cur_ep_airdate
|
|
#end if
|
|
#if $cur_ep_airdate == $today.date() and not $today_header:
|
|
<br /><h1 class="day">$datetime.date.fromordinal($cur_ep_airdate.toordinal).strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize() <span style="font-size: 12px;">[today]</span></h1>
|
|
#set $today_header = True
|
|
#end if
|
|
#if $cur_ep_enddate < $today:
|
|
#set $show_div = "ep_listing listing_overdue"
|
|
#elif $cur_ep_airdate >= $next_week.date():
|
|
#set $show_div = "ep_listing listing_toofar"
|
|
#elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
#set $show_div = "ep_listing listing_current"
|
|
#else:
|
|
#set $show_div = "ep_listing listing_default"
|
|
#end if
|
|
#end if
|
|
#elif $sort == "show":
|
|
#set $cur_ep_airdate = $cur_result["localtime"].date()
|
|
#set $cur_ep_enddate = $cur_result["localtime"] + datetime.timedelta(minutes=$cur_result["runtime"])
|
|
#if $cur_ep_enddate < $today:
|
|
#set $show_div = "ep_listing listing_overdue"
|
|
#elif $cur_ep_airdate >= $next_week.date():
|
|
#set $show_div = "ep_listing listing_toofar"
|
|
#elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
#set $show_div = "ep_listing listing_current"
|
|
#else:
|
|
#set $show_div = "ep_listing listing_default"
|
|
#end if
|
|
#end if
|
|
#end if
|
|
|
|
<div class="$show_div" id="listing_${cur_result["showid"]}">
|
|
<div class="tvshowDiv">
|
|
<table width="100%" border="0" cellpadding="0" cellspacing="0">
|
|
<tr>
|
|
<th #if $layout == 'banner' then "class=\"nobg\"" else "rowspan=\"2\""# style="background-color: #efefef;" valign="top">
|
|
<a href="$sbRoot/home/displayShow?show=${cur_result["showid"]}"><img alt="" class="#if $layout == 'banner' then "bannerThumb" else "posterThumb"#" src="$sbRoot/showPoster/?show=${cur_result["showid"]}&which=#if $layout == 'poster' then "poster_thumb" else $layout#" /></a>
|
|
</th>
|
|
#if $layout == 'banner':
|
|
</tr>
|
|
<tr>
|
|
#end if
|
|
<td class="next_episode">
|
|
<div class="clearfix">
|
|
<h2 class="tvshowTitle"><a href="$sbRoot/home/displayShow?show=${cur_result["showid"]}">$cur_result["show_name"]
|
|
#if int($cur_result["paused"]):
|
|
<span class="pause">[paused]</span>
|
|
#end if
|
|
</a></h2>
|
|
<span class="tvshowTitleIcons">
|
|
#if $cur_result["imdb_id"]:
|
|
<a href="http://www.imdb.com/title/${cur_result["imdb_id"]}" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="http://www.imdb.com/title/${cur_result["imdb_id"]}"><img alt="[imdb]" height="16" width="16" src="$sbRoot/images/imdb.png" />
|
|
#end if
|
|
<a href="http://thetvdb.com/?tab=series&id=${cur_result["showid"]}" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="http://thetvdb.com/?tab=series&id=${cur_result["showid"]}"><img alt="[tvdb]" height="16" width="16" src="$sbRoot/images/thetvdb16.png" /></a>
|
|
<span><a href="$sbRoot/home/searchEpisode?show=${cur_result["showid"]}&season=$cur_result["season"]&episode=$cur_result["episode"]" title="Manual Search" id="forceUpdate-${cur_result["showid"]}" class="epSearch forceUpdate"><img alt="[search]" height="16" width="16" src="$sbRoot/images/search32.png" id="forceUpdateImage-${cur_result["showid"]}" /></a></span>
|
|
</span>
|
|
</div>
|
|
<span class="title">Next Episode:</span> <span><%=str(cur_result["season"])+"x"+"%02i" % int(cur_result["episode"]) %> - $cur_result["name"] ($sbdatetime.sbdatetime.fromtimestamp($time.mktime($cur_result["localtime"].timetuple())).sbfdate().decode($sickbeard.SYS_ENCODING))</span>
|
|
<div class="clearfix">
|
|
<span class="title">Airs:</span> <span>$sbdatetime.sbdatetime.fromtimestamp($time.mktime($cur_result["localtime"].timetuple())).sbftime().decode($sickbeard.SYS_ENCODING) on $cur_result["network"]</span>
|
|
</div>
|
|
<div class="clearfix">
|
|
<span class="title">Quality:</span>
|
|
#if int($cur_result["quality"]) in $qualityPresets:
|
|
<span class="quality $qualityPresetStrings[int($cur_result["quality"])]">$qualityPresetStrings[int($cur_result["quality"])]</span>
|
|
#else:
|
|
<span class="quality Custom">Custom</span>
|
|
#end if
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">
|
|
<div>
|
|
#if $cur_result["description"] == '':
|
|
<span class="title">Plot:</span>
|
|
<img class="ep_summaryTrigger" src="$sbRoot/images/plus.png" height="16" width="16" alt="" title="Toggle Summary" /><div class="ep_summary">[There is no summary added for this episode]</div>
|
|
#else:
|
|
<span class="title">Plot:</span>
|
|
<img class="ep_summaryTrigger" src="$sbRoot/images/plus.png" height="16" width="16" alt="" title="Toggle Summary" /><div class="ep_summary">$cur_result["description"]</div>
|
|
#end if
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- end $cur_result["show_name"] //-->
|
|
#end for
|
|
|
|
|
|
<!-- end non list view //-->
|
|
#end if
|
|
|
|
<script type="text/javascript" charset="utf-8">
|
|
<!--
|
|
window.setInterval( "location.reload(true)", 600000); // Refresh every 10 minutes
|
|
//-->
|
|
</script>
|
|
|
|
#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_bottom.tmpl")
|