mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-03 18:03:37 +00:00
aa69cfb07c
Split downloaded and snatched Use > instead of != in sql statement (speed improvement) Today's Next Episode removes correctly if today's date is snatched or downloaded (fix) Progressbar percentage calculated in python (speed improvement) Episode totals corrected (fix)
370 lines
No EOL
12 KiB
Cheetah
370 lines
No EOL
12 KiB
Cheetah
#import sickbeard
|
|
#import datetime
|
|
#from sickbeard.common import *
|
|
#from sickbeard import db, sbdatetime, network_timezones
|
|
|
|
#set global $title="Home"
|
|
#set global $header="Show List"
|
|
|
|
#set global $sbPath = ".."
|
|
|
|
#set global $topmenu="home"#
|
|
#import os.path
|
|
#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl")
|
|
|
|
#set $myDB = $db.DBConnection()
|
|
#set $today = str($datetime.date.today().toordinal())
|
|
#set $layout = $sickbeard.HOME_LAYOUT
|
|
|
|
#set status_quality = '(' + ','.join([str(x) for x in $Quality.SNATCHED + $Quality.SNATCHED_PROPER]) + ')'
|
|
#set status_download = '(' + ','.join([str(x) for x in $Quality.DOWNLOADED + [$ARCHIVED]]) + ')'
|
|
|
|
#set $sql_statement = 'SELECT showid, '
|
|
|
|
#set $sql_statement += '(SELECT COUNT(*) FROM tv_episodes WHERE showid=tv_eps.showid AND season > 0 AND episode > 0 AND airdate > 1 AND status IN ' + $status_quality + ') AS ep_snatched, '
|
|
#set $sql_statement += '(SELECT COUNT(*) FROM tv_episodes WHERE showid=tv_eps.showid AND season > 0 AND episode > 0 AND airdate > 1 AND status IN ' + $status_download + ') AS ep_downloaded, '
|
|
|
|
#set $sql_statement += '(SELECT COUNT(*) FROM tv_episodes WHERE showid=tv_eps.showid AND season > 0 AND episode > 0 AND airdate > 1 '
|
|
#set $sql_statement += ' AND ((airdate <= ' + $today + ' AND (status = ' + str($SKIPPED) + ' OR status = ' + str($WANTED) + ')) '
|
|
#set $sql_statement += ' OR (status IN ' + status_quality + ') OR (status IN ' + status_download + '))) AS ep_total, '
|
|
|
|
#set $sql_statement += ' (SELECT airdate FROM tv_episodes WHERE showid=tv_eps.showid AND airdate >= ' + $today + ' AND (status = ' + str($UNAIRED) + ' OR status = ' + str($WANTED) + ') ORDER BY airdate ASC LIMIT 1) AS ep_airs_next '
|
|
#set $sql_statement += ' FROM tv_episodes tv_eps GROUP BY showid'
|
|
|
|
#set $sql_result = $myDB.select($sql_statement)
|
|
|
|
#set $show_stat = {}
|
|
#set $max_download_count = 1000
|
|
|
|
#for $cur_result in $sql_result:
|
|
#set $show_stat[$cur_result['showid']] = $cur_result
|
|
#if $cur_result['ep_total'] > $max_download_count:
|
|
#set $max_download_count = $cur_result['ep_total']
|
|
#end if
|
|
#end for
|
|
|
|
#set $max_download_count = $max_download_count * 100
|
|
|
|
<style type="text/css">
|
|
.sort_data {display:none}
|
|
</style>
|
|
|
|
<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');
|
|
else
|
|
#if not $sickbeard.SORT_ARTICLE:
|
|
return (s || '').replace(/^(The|A|An)\s/i,'');
|
|
#else:
|
|
return (s || '');
|
|
#end if
|
|
},
|
|
type: 'text'
|
|
});
|
|
|
|
\$.tablesorter.addParser({
|
|
id: 'cDate',
|
|
is: function(s) {
|
|
return false;
|
|
},
|
|
format: function(s) {
|
|
return s;
|
|
},
|
|
type: 'numeric'
|
|
});
|
|
|
|
|
|
\$.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: 'eps',
|
|
is: function(s) {
|
|
return false;
|
|
},
|
|
format: function(s) {
|
|
match = s.match(/^(.*)/);
|
|
|
|
if (match == null || match[1] == "?")
|
|
return -10;
|
|
|
|
var nums = match[1].split(" / ");
|
|
if (nums[0].indexOf("+") != -1) {
|
|
var num_parts = nums[0].split("+");
|
|
nums[0] = num_parts[0];
|
|
}
|
|
|
|
nums[0] = parseInt(nums[0])
|
|
nums[1] = parseInt(nums[1])
|
|
|
|
if (nums[0] === 0)
|
|
return nums[1];
|
|
|
|
var finalNum = parseInt($max_download_count*nums[0]/nums[1]);
|
|
if (finalNum > 0)
|
|
finalNum += nums[0];
|
|
|
|
return finalNum;
|
|
},
|
|
type: 'numeric'
|
|
});
|
|
|
|
\$(document).ready(function(){
|
|
|
|
\$("img#network").on('error', function(){
|
|
\$(this).parent().text(\$(this).attr('alt'));
|
|
\$(this).remove();
|
|
});
|
|
|
|
\$("#showListTableShows:has(tbody tr)").tablesorter({
|
|
|
|
sortList: [[6,1],[2,0]],
|
|
textExtraction: {
|
|
0: function(node) { return \$(node).find("span").text().toLowerCase(); },
|
|
#if ( $layout != 'simple'):
|
|
3: function(node) { return \$(node).find("img").attr("alt"); },
|
|
#end if
|
|
4: function(node) { return \$(node).find("span").text(); },
|
|
6: function(node) { return \$(node).find("img").attr("alt"); }
|
|
},
|
|
widgets: ['saveSort', 'zebra'],
|
|
headers: {
|
|
0: { sorter: 'cDate' },
|
|
2: { sorter: 'loadingNames' },
|
|
3: { sorter: 'network' },
|
|
4: { sorter: 'quality' },
|
|
5: { sorter: 'eps' },
|
|
}
|
|
});
|
|
|
|
\$("#showListTableAnime:has(tbody tr)").tablesorter({
|
|
|
|
sortList: [[6,1],[2,0]],
|
|
textExtraction: {
|
|
0: function(node) { return \$(node).find("span").text().toLowerCase(); },
|
|
#if ( $layout != 'simple'):
|
|
3: function(node) { return \$(node).find("img").attr("alt"); },
|
|
#end if
|
|
4: function(node) { return \$(node).find("span").text(); },
|
|
6: function(node) { return \$(node).find("img").attr("alt"); }
|
|
},
|
|
widgets: ['saveSort', 'zebra'],
|
|
headers: {
|
|
0: { sorter: 'cDate' },
|
|
2: { sorter: 'loadingNames' },
|
|
3: { sorter: 'network' },
|
|
4: { sorter: 'quality' },
|
|
5: { sorter: 'eps' },
|
|
}
|
|
});
|
|
|
|
#set $fuzzydate = 'airdate'
|
|
#if $sickbeard.FUZZY_DATING:
|
|
fuzzyMoment({
|
|
containerClass : '.${fuzzydate}',
|
|
dateHasTime : false,
|
|
dateFormat : '${sickbeard.DATE_PRESET}',
|
|
timeFormat : '${sickbeard.TIME_PRESET}',
|
|
trimZero : #if $sickbeard.TRIM_ZERO then "true" else "false"#
|
|
});
|
|
#end if
|
|
|
|
});
|
|
|
|
//-->
|
|
</script>
|
|
|
|
#if $varExists('header')
|
|
<h1 class="header">$header</h1>
|
|
#else
|
|
<h1 class="title">$title</h1>
|
|
#end if
|
|
|
|
<div id="HomeLayout" style="float: right; margin-top: -25px;">
|
|
<span><b>Layout:</b>
|
|
<a class="inner" href="$sbRoot/setHomeLayout/?layout=poster" style="font-size: 12px;">Poster</a> ·
|
|
<a class="inner" href="$sbRoot/setHomeLayout/?layout=banner" style="font-size: 12px;">Banner</a> ·
|
|
<a class="inner" href="$sbRoot/setHomeLayout/?layout=simple" style="font-size: 12px;">Simple</a>
|
|
</span>
|
|
</div>
|
|
|
|
#for $curShowlist in $showlists:
|
|
#set $curListType = $curShowlist[0]
|
|
#set $myShowList = $list($curShowlist[1])
|
|
#if $curListType == "Anime":
|
|
<h2>Anime List</h2>
|
|
#end if
|
|
|
|
<table id="showListTable$curListType" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0">
|
|
|
|
<thead><tr><th class="nowrap">Next Ep</th>#if $layout=="poster" then "<th>Poster</th>" else "<th style='display: none;'></th>"#<th>$curListType</th><th>Network</th><th>Quality</th><th>Downloads</th><th>Active</th><th>Status</th></tr></thead>
|
|
<tfoot>
|
|
<tr>
|
|
<th rowspan="1" colspan="1" align="center"><a href="$sbRoot/home/addShows/">  Add Show</a></th>
|
|
<th rowspan="1" colspan="7"></th>
|
|
</tr>
|
|
</tfoot>
|
|
<tbody>
|
|
|
|
#for $curLoadingShow in $sickbeard.showQueueScheduler.action.loadingShowList:
|
|
|
|
#if $curLoadingShow.show != None and $curLoadingShow.show in $sickbeard.showList:
|
|
#continue
|
|
#end if
|
|
|
|
<tr>
|
|
<td align="center">(loading)</td>
|
|
<td></td>
|
|
<td>
|
|
#if $curLoadingShow.show == None:
|
|
Loading... ($curLoadingShow.show_name)
|
|
#else:
|
|
<a href="displayShow?show=$curLoadingShow.show.indexerid">$curLoadingShow.show.name</a>
|
|
#end if
|
|
</td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
#end for
|
|
|
|
$myShowList.sort(lambda x, y: cmp(x.name, y.name))
|
|
#for $curShow in $myShowList:
|
|
|
|
#set $cur_airs_next = ''
|
|
#set $cur_snatched = 0
|
|
#set $cur_downloaded = 0
|
|
#set $cur_total = 0
|
|
#set $download_stat_tip = ''
|
|
|
|
#if $curShow.indexerid in $show_stat:
|
|
#set $cur_airs_next = $show_stat[$curShow.indexerid]['ep_airs_next']
|
|
|
|
#set $cur_snatched = $show_stat[$curShow.indexerid]['ep_snatched']
|
|
#if not $cur_snatched:
|
|
#set $cur_snatched = 0
|
|
#end if
|
|
|
|
#set $cur_downloaded = $show_stat[$curShow.indexerid]['ep_downloaded']
|
|
#if not $cur_downloaded:
|
|
#set $cur_downloaded = 0
|
|
#end if
|
|
|
|
#set $cur_total = $show_stat[$curShow.indexerid]['ep_total']
|
|
#if not $cur_total:
|
|
#set $cur_total = 0
|
|
#end if
|
|
#end if
|
|
|
|
#if $cur_total != 0:
|
|
#set $download_stat = str($cur_downloaded)
|
|
#set $download_stat_tip = "Downloaded: " + str($cur_downloaded)
|
|
#if $cur_snatched > 0:
|
|
#set $download_stat = download_stat + "+" + str($cur_snatched)
|
|
#set $download_stat_tip = download_stat_tip + "
" + "Snatched: " + str($cur_snatched)
|
|
#end if
|
|
#set $download_stat = download_stat + " / " + str($cur_total)
|
|
#set $download_stat_tip = download_stat_tip + "
" + "Total: " + str($cur_total)
|
|
#else
|
|
#set $download_stat = '?'
|
|
#set $download_stat_tip = "no data"
|
|
#end if
|
|
|
|
#set $nom = $cur_downloaded
|
|
#set $den = $cur_total
|
|
#if $den == 0:
|
|
#set $den = 1
|
|
#end if
|
|
|
|
#set $progressbar_percent = $nom * 100 / $den
|
|
|
|
#set $which_thumb = $layout+"_thumb"
|
|
|
|
<tr>
|
|
#if $cur_airs_next:
|
|
#set $ldatetime = $network_timezones.parse_date_time($cur_airs_next,$curShow.airs,$curShow.network)
|
|
<td align="center" class="nowrap" style="color: #555555;font-weight:bold;"><div class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdate($ldatetime)</div><span class="sort_data">$time.mktime($ldatetime.timetuple())</span> </td>
|
|
#else:
|
|
<td align="center" class="nowrap" style="color: #555555;font-weight:bold;"></td>
|
|
#end if
|
|
#if $layout == 'poster':
|
|
<td>
|
|
<div class="imgHomeWrapper $layout">
|
|
<a href="$sbRoot/showPoster/?show=$curShow.indexerid&which=$layout" rel="dialog" title="$curShow.name">
|
|
<img src="$sbRoot/showPoster/?show=$curShow.indexerid&which=$which_thumb" class="$layout" alt="$curShow.indexerid"/>
|
|
</a>
|
|
</div>
|
|
</td>
|
|
<td class="tvShow"><a href="$sbRoot/home/displayShow?show=$curShow.indexerid">$curShow.name</a></td>
|
|
#else if $layout == 'banner':
|
|
<td style="display: none;"/>
|
|
<td>
|
|
<span style="display: none;">$curShow.name</span>
|
|
<div class="imgHomeWrapper imgHomeWrapperRounded $layout">
|
|
<a href="$sbRoot/home/displayShow?show=$curShow.indexerid">
|
|
<img src="$sbRoot/showPoster/?show=$curShow.indexerid&which=$which_thumb" class="$layout" alt="$curShow.indexerid" title="$curShow.name"/>
|
|
</div>
|
|
</td>
|
|
#else if $layout == 'simple':
|
|
<td style="display: none;"/>
|
|
<td class="tvShow"><a href="$sbRoot/home/displayShow?show=$curShow.indexerid">$curShow.name</a></td>
|
|
#end if
|
|
<!--<td align="center">$curShow.network</td>//-->
|
|
<td align="center" style="color: #555555;font-weight:bold;">
|
|
#if $layout != 'simple':
|
|
#if $curShow.network:
|
|
<img id="network" width="44.8" height="22.4" src="$sbRoot/images/network/${curShow.network.lower()}.png" alt="$curShow.network" title="$curShow.network" />
|
|
#else:
|
|
<img id="network" width="44.8" height="22.4" src="$sbRoot/images/network/nonetwork.png" alt="No Network" title="No Network" />
|
|
#end if
|
|
#else:
|
|
$curShow.network
|
|
#end if
|
|
</td>
|
|
|
|
#if $curShow.quality in $qualityPresets:
|
|
<td align="center"><span class="quality $qualityPresetStrings[$curShow.quality]">$qualityPresetStrings[$curShow.quality]</span></td>
|
|
#else:
|
|
<td align="center"><span class="quality Custom">Custom</span></td>
|
|
#end if
|
|
<td align="center"><span style="display: none;">$download_stat</span><div id="progressbar$curShow.indexerid" style="position:relative;"></div>
|
|
<script type="text/javascript">
|
|
<!--
|
|
\$(function() {
|
|
\$("\#progressbar$curShow.indexerid").progressbar({
|
|
value: $progressbar_percent
|
|
});
|
|
\$("\#progressbar$curShow.indexerid").append("<div class='progressbarText' title='$download_stat_tip'>$download_stat</div>")
|
|
});
|
|
//-->
|
|
</script>
|
|
</td>
|
|
<td align="center"><img src="$sbRoot/images/#if int($curShow.paused) == 0 and $curShow.status != "Ended" then "yes16.png\" alt=\"Y\"" else "no16.png\" alt=\"N\""# width="16" height="16" /></td>
|
|
<td align="center" style="color: #555555; font-weight: bold;">$curShow.status</td>
|
|
</tr>
|
|
|
|
|
|
#end for
|
|
</tbody>
|
|
</table>
|
|
#end for
|
|
|
|
#include $os.path.join($sickbeard.PROG_DIR,"gui/slick/interfaces/default/inc_bottom.tmpl") |