mirror of
https://github.com/moparisthebest/SickRage
synced 2024-11-17 23:05:11 -05:00
95d7d728e0
Re-write of New Show seearch function Re-write of Existing show search helper function for determining indexer/indexerid Massive code cleanup and more bugs found and fixed Indexer code fully modualized for future proofing
318 lines
16 KiB
Cheetah
318 lines
16 KiB
Cheetah
#import sickbeard
|
|
#from sickbeard import subtitles, sbdatetime, network_timezones
|
|
#import sickbeard.helpers
|
|
#from sickbeard.common import *
|
|
#from lib import subliminal
|
|
#import os.path, os
|
|
#import datetime
|
|
#set global $title=$show.name
|
|
##set global $header = '<a></a>' %
|
|
#set global $topmenu="manageShows"#
|
|
#set $exceptions_string = " | ".join($show.exceptions)
|
|
#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl")
|
|
|
|
<script type="text/javascript" src="$sbRoot/js/lib/jquery.bookmarkscroll.js?$sbPID"></script>
|
|
|
|
|
|
#if $show_message:
|
|
<div id="show_message" class="ui-corner-all">$show_message</div><br />
|
|
#end if
|
|
|
|
<input type="hidden" id="sbRoot" value="$sbRoot" />
|
|
|
|
<script type="text/javascript" src="$sbRoot/js/displayShow.js?$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/plotTooltip.js?$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpSearch.js?$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpSubtitles.js?$sbPID"></script>
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpRetry.js?$sbPID"></script>
|
|
|
|
<div class="navShows">
|
|
</br>
|
|
<div class="align-left"><b>Change Show:</b>
|
|
<div class="navShow"><img id="prevShow" src="$sbRoot/images/prev.gif" alt="<<" title="Prev Show" /></div>
|
|
<select id="pickShow">
|
|
#for $curShow in $sortedShowList:
|
|
<option value="$curShow.indexerid" #if $curShow == $show then "selected=\"selected\"" else ""#>$curShow.name</option>
|
|
#end for
|
|
</select>
|
|
<div class="navShow"><img id="nextShow" src="$sbRoot/images/next.gif" alt=">>" title="Next Show" /></div>
|
|
</div></div>
|
|
|
|
<div class="tvshowImg"><a href="$sbRoot/showPoster/?show=$show.indexerid&which=poster" rel="dialog" title="$show.name"><img src="$sbRoot/showPoster/?show=$show.indexerid&which=poster_thumb" class="posterThumb" alt=""/></a>
|
|
</div>
|
|
|
|
<div class="showInfo">
|
|
<h1 class="title"><a>$show.name</a></h1>
|
|
<span class="headerInfo" style="color: #b7b7b7; line-height: 16px;">
|
|
#if not $show.imdbid
|
|
($show.startyear) - $show.runtime min
|
|
#if $show.genre:
|
|
- $show.genre[1:-1].replace('|',' | ')
|
|
#end if
|
|
<span class="tvshowLink" style="vertical-align: text-top">
|
|
<a href="$sickbeard.indexerApi($show.indexer).config["show_url"]$show.indexerid" onclick="window.open(this.href, '_blank'); return false;" title="$sickbeard.indexerApi($show.indexer).config["show_url"]$show.indexerid"><img alt="$sickbeard.indexerApi($show.indexer).name" height="16" width="16" src="$sbRoot/images/$sickbeard.indexerApi($show.indexer).config["icon"] "style="margin-top: -1px;"/></a>
|
|
</span>
|
|
#else
|
|
<img src="$sbRoot/images/flags/${$show.imdb_info['country_codes']}.png" width="16" height="11" style="margin-top: 3px; margin-left: 3px" /> ($show.imdb_info['year']) - $show.imdb_info['runtimes'] min - $show.imdb_info['genres'].replace('|',' | ')
|
|
<span class="tvshowLink" style="vertical-align: text-top">
|
|
<a href="http://www.imdb.com/title/$show.imdbid" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="http://www.imdb.com/title/$show.imdbid"><img alt="[imdb]" height="16" width="16" src="$sbRoot/images/imdb.png" style="margin-top: -1px;"/>
|
|
<a href="$sickbeard.indexerApi($show.indexer).config["show_url"]$show.indexerid" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="$sickbeard.indexerApi($show.indexer).config["show_url"]$show.indexerid"><img alt="$sickbeard.indexerApi($show.indexer).name" height="16" width="16" src="$sbRoot/images/$sickbeard.indexerApi($show.indexer).config["icon"] "style="margin-top: -1px;"/></a>
|
|
</span>
|
|
#end if
|
|
</span>
|
|
#if $seasonResults:
|
|
##There is a special/season_0?##
|
|
#if int($seasonResults[-1]["season"]) == 0:
|
|
#set $season_special = 1
|
|
#else:
|
|
#set $season_special = 0
|
|
#end if
|
|
|
|
#if not $sickbeard.DISPLAY_SHOW_SPECIALS and $season_special:
|
|
$seasonResults.pop(-1)
|
|
#end if
|
|
|
|
<div class="seasonList">
|
|
<span>
|
|
#if (len($seasonResults) > 14):
|
|
<select id="seasonJump">
|
|
<option value="jump">Jump to Season</option>
|
|
#for $seasonNum in $seasonResults:
|
|
<option value="#season-$seasonNum["season"]">#if int($seasonNum["season"]) == 0 then "Specials" else "Season " + str($seasonNum["season"])#</option>
|
|
#end for
|
|
</select>
|
|
#else:
|
|
<b>Season:</b>
|
|
#for $seasonNum in $seasonResults:
|
|
#if int($seasonNum["season"]) == 0:
|
|
<a href="#season-$seasonNum["season"]">Specials</a>
|
|
#else:
|
|
<a href="#season-$seasonNum["season"]">${str($seasonNum["season"])}</a>
|
|
#end if
|
|
#if $seasonNum != $seasonResults[-1]:
|
|
<span class="separator">|</span>
|
|
#end if
|
|
#end for
|
|
#end if
|
|
</span>
|
|
|
|
<span class="float-right">
|
|
#if $season_special:
|
|
<b>Display Specials:</b>
|
|
#if sickbeard.DISPLAY_SHOW_SPECIALS:
|
|
<a class="inner" href="$sbRoot/toggleDisplayShowSpecials/?show=$show.indexerid">Hide</a>
|
|
#else:
|
|
<a class="inner" href="$sbRoot/toggleDisplayShowSpecials/?show=$show.indexerid">Show</a>
|
|
#end if
|
|
#end if
|
|
</span>
|
|
</div>
|
|
#end if
|
|
<div id="summary" class="align-left">
|
|
<table class="infoTable" cellspacing="1" border="0" cellpadding="0">
|
|
<tr>
|
|
<td width="75%">
|
|
<table>
|
|
#if $show.network and $show.airs:
|
|
<tr><td class="showLegend">Originally Airs: </td><td>$show.airs #if not $network_timezones.test_timeformat($show.airs) then " <font color='#FF0000'><b>(invalid Timeformat)</b></font> " else ""# on $show.network</td></tr>
|
|
#else if $show.network:
|
|
<tr><td class="showLegend">Originally Airs: </td><td>$show.network</td></tr>
|
|
#else if $show.airs:
|
|
<tr><td class="showLegend">Originally Airs: </td><td>>$show.airs #if not $network_timezones.test_timeformat($show.airs) then " <font color='#FF0000'><b>(invalid Timeformat)</b></font> " else ""#</td></tr>
|
|
#end if
|
|
<tr><td class="showLegend">Status: </td><td>$show.status</td></tr>
|
|
#if $showLoc[1]:
|
|
<tr><td class="showLegend">Location: </td><td>$showLoc[0]</td></tr>
|
|
#else:
|
|
<tr><td class="showLegend"><span style="color: red;">Location: </span></td><td><span style="color: red;">$showLoc[0]</span> (dir is missing)</td></tr>
|
|
#end if
|
|
#set $anyQualities, $bestQualities = $Quality.splitQuality(int($show.quality))
|
|
<tr><td class="showLegend">Quality: </td><td>
|
|
#if $show.quality in $qualityPresets:
|
|
<span class="quality $qualityPresetStrings[$show.quality]">$qualityPresetStrings[$show.quality]</span>
|
|
#else:
|
|
#if $anyQualities:
|
|
<i>Initial:</i> <b><%=", ".join([Quality.qualityStrings[x] for x in sorted(anyQualities)])%></b> #if $bestQualities then " </br> " else ""#
|
|
#end if
|
|
#if $bestQualities:
|
|
<i>Replace with:</i> <b><%=", ".join([Quality.qualityStrings[x] for x in sorted(bestQualities)])%></b>
|
|
#end if
|
|
#end if
|
|
|
|
<tr><td class="showLegend">Scene Name:</td><td>#if $show.exceptions then $exceptions_string else $show.name#</td></tr>
|
|
</td></tr>
|
|
</table>
|
|
<td style="float: right;">
|
|
<table>
|
|
<tr><td class="showLegend">Info Language:</td><td><img src="$sbRoot/images/flags/${show.lang}.png" width="16" height="11" alt="$show.lang" title="$show.lang" /></td></tr>
|
|
#if $sickbeard.USE_SUBTITLES
|
|
<tr><td class="showLegend">Subtitles: </td><td><img src="$sbRoot/images/#if int($show.subtitles) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
#end if
|
|
<tr><td class="showLegend">Flat Folders: </td><td><img src="$sbRoot/images/#if $show.flatten_folders == 1 or $sickbeard.NAMING_FORCE_FOLDERS then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
<tr><td class="showLegend">Paused: </td><td><img src="$sbRoot/images/#if int($show.paused) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
<tr><td class="showLegend">Air-by-Date: </td><td><img src="$sbRoot/images/#if int($show.air_by_date) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
<tr><td class="showLegend">DVD Order: </td><td><img src="$sbRoot/images/#if int($show.dvdorder) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
#if $bestQualities
|
|
<tr><td class="showLegend">Archive First Match: </td><td><img src="$sbRoot/images/#if int($show.archive_firstmatch) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
|
|
#end if
|
|
#if $all_scene_exceptions:
|
|
<tr>
|
|
<td class="showLegend">Alternate Scene Names:</td>
|
|
<td>
|
|
#for $one_exception in sorted($all_scene_exceptions)
|
|
$one_exception<br />
|
|
#end for
|
|
</td>
|
|
</tr>
|
|
#end if
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
#set $curSeason = -1
|
|
#set $odd = 0
|
|
|
|
<div style="clear:both;" class="clearfix"></div>
|
|
|
|
<div class="float-left">
|
|
Change selected episodes to
|
|
<select id="statusSelect">
|
|
#for $curStatus in [$WANTED, $SKIPPED, $ARCHIVED, $IGNORED, $FAILED] + sorted($Quality.DOWNLOADED):
|
|
#if $curStatus == $DOWNLOADED:
|
|
#continue
|
|
#end if
|
|
<option value="$curStatus">$statusStrings[$curStatus]</option>
|
|
#end for
|
|
</select>
|
|
<input type="hidden" id="showID" value="$show.indexerid" />
|
|
<input class="btn" type="button" id="changeStatus" value="Go" />
|
|
</div>
|
|
|
|
<div class="float-right clearfix" id="checkboxControls" style="margin-top: 3px;">
|
|
<div style="padding-bottom: 3px;">
|
|
<label for="wanted"><span class="wanted">Wanted: <b>$epCounts[$Overview.WANTED]</b> <input type="checkbox" id="wanted" checked="checked" /></span></label>
|
|
<label for="qual"><span class="qual">Low Quality: <b>$epCounts[$Overview.QUAL]</b> <input type="checkbox" id="qual" checked="checked" /></span></label>
|
|
<label for="good"><span class="good">Downloaded: <b>$epCounts[$Overview.GOOD]</b> <input type="checkbox" id="good" checked="checked" /></span></label>
|
|
<label for="skipped"><span class="skipped">Skipped: <b>$epCounts[$Overview.SKIPPED]</b> <input type="checkbox" id="skipped" checked="checked" /></span></label>
|
|
</div>
|
|
<div class="pull-right">
|
|
<button class="btn btn-mini seriesCheck" style="line-height: 8px;"><a>Select Filtered Episodes</a></button>
|
|
<button class="btn btn-mini clearAll" style="line-height: 8px;"><a>Clear All</a></button>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
|
|
<table class="sickbeardTable" cellspacing="1" border="0" cellpadding="0">
|
|
|
|
#for $epResult in $sqlResults:
|
|
#if not $sickbeard.DISPLAY_SHOW_SPECIALS and int($epResult["season"]) == 0:
|
|
#continue
|
|
#end if
|
|
|
|
#if int($epResult["season"]) != $curSeason:
|
|
<tr><td colspan="10" style="height: 0px; padding:0; margin:0;"><a name="season-$epResult["season"]"></a></td></tr>
|
|
<tr class="seasonheader" id="season-$epResult["season"]" >
|
|
<td colspan="10">
|
|
<h2>#if int($epResult["season"]) == 0 then "Specials" else "Season "+str($epResult["season"])#</h2>
|
|
</td>
|
|
</tr>
|
|
<tr id="season-$epResult["season"]-cols"><th width="1%"><input type="checkbox" class="seasonCheck" id="$epResult["season"]" /></th><th>NFO</th><th>TBN</th><th>Episode</th><th>Scene #</th><th>Name</th><th class="nowrap">Airdate</th><th>Filename</th>#if $sickbeard.USE_SUBTITLES and $show.subtitles then "<th>Subtitles</th>" else ""#<th>Status</th><th>Search</th></tr>
|
|
#set $curSeason = int($epResult["season"])
|
|
#end if
|
|
|
|
#set $epStr = str($epResult["season"]) + "x" + str($epResult["episode"])
|
|
#set $epLoc = $epResult["location"]
|
|
<tr class="$Overview.overviewStrings[$epCats[$epStr]] season-$curSeason">
|
|
<td width="1%">
|
|
#if int($epResult["status"]) != $UNAIRED
|
|
<input type="checkbox" class="epCheck" id="<%=str(epResult["season"])+'x'+str(epResult["episode"])%>" name="<%=str(epResult["season"]) +"x"+str(epResult["episode"]) %>" />
|
|
#end if
|
|
</td>
|
|
<td align="center"><img src="$sbRoot/images/#if $epResult["hasnfo"] == 1 then "nfo.gif\" alt=\"Y" else "nfo-no.gif\" alt=\"N"#" width="23" height="11" /></td>
|
|
<td align="center"><img src="$sbRoot/images/#if $epResult["hastbn"] == 1 then "tbn.gif\" alt=\"Y" else "tbn-no.gif\" alt=\"N"#" width="23" height="11" /></td>
|
|
<td align="center">$epResult["episode"]</td>
|
|
<td align="center">
|
|
#if int($show.air_by_date) != 1
|
|
#if (epResult["season"], epResult["episode"]) in $xem_numbering:
|
|
#set ($dfltSeas, $dfltEpis) = $xem_numbering[(epResult["season"], epResult["episode"])]
|
|
#else
|
|
#set ($dfltSeas, $dfltEpis) = (epResult["season"], epResult["episode"])
|
|
#end if
|
|
#if (epResult["season"], epResult["episode"]) in $scene_numbering:
|
|
#set ($scSeas, $scEpis) = $scene_numbering[(epResult["season"], epResult["episode"])]
|
|
#set $dfltEpNumbering = False
|
|
#else
|
|
#set ($scSeas, $scEpis) = ($dfltSeas, $dfltEpis)
|
|
#set $dfltEpNumbering = True
|
|
#end if
|
|
<input type="text" placeholder="<%=str(dfltSeas) + 'x' + str(dfltEpis)%>" size="6" maxlength="8"
|
|
class="sceneSeasonXEpisode" data-for-season="$epResult["season"]" data-for-episode="$epResult["episode"]"
|
|
id="sceneSeasonXEpisode_$show.indexerid<%="_"+str(epResult["season"])+"_"+str(epResult["episode"])%>"
|
|
title="Change the value here if scene numbering differs from the indexer episode numbering"
|
|
#if $dfltEpNumbering:
|
|
value=""
|
|
#else
|
|
value="<%=str(scSeas) + 'x' + str(scEpis)%>"
|
|
#end if
|
|
style="padding: 0; text-align: center; max-width: 60px;"
|
|
/>
|
|
#else
|
|
N/A
|
|
#end if
|
|
</td>
|
|
<td class="title">
|
|
#if $epResult["description"] != "" and $epResult["description"] != None:
|
|
<img style="padding-top: 3px;" src="$sbRoot/images/info32.png" width="16" height="16" class="plotInfo" alt="" id="plot_info_$show.indexerid<%="_"+str(epResult["season"])+"_"+str(epResult["episode"])%>" />
|
|
#end if
|
|
$epResult["name"]
|
|
</td>
|
|
<td align="center" class="nowrap">#if int($epResult["airdate"]) == 1 then "never" else $sbdatetime.sbdatetime.sbfdate($network_timezones.parse_date_time($epResult["airdate"],$show.airs,$show.network))#</td>
|
|
<td class="filename"><small>
|
|
#if $epLoc and $show._location and $epLoc.lower().startswith($show._location.lower()):
|
|
#set $epLoc = os.path.basename($epLoc[len($show._location)+1:])
|
|
#elif $epLoc and (not $epLoc.lower().startswith($show._location.lower()) or not $show._location):
|
|
#set $epLoc = os.path.basename($epLoc)
|
|
#end if
|
|
$epLoc
|
|
</small>
|
|
</td>
|
|
#if $sickbeard.USE_SUBTITLES and $show.subtitles:
|
|
<td id="subtitles_column" class="subtitles_column" align="left">
|
|
#if $epResult["subtitles"]:
|
|
#for $sub_lang in subliminal.language.language_list($epResult["subtitles"].split(',')):
|
|
#if sub_lang.alpha2 != ""
|
|
<img src="$sbRoot/images/flags/${sub_lang.alpha2}.png" width="16" height="11" alt="${sub_lang}" />
|
|
#end if
|
|
#end for
|
|
#end if
|
|
</td>
|
|
#end if
|
|
#set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($epResult["status"]))
|
|
#if $curQuality != Quality.NONE:
|
|
<td class="status_column">$statusStrings[$curStatus] <span class="quality $Quality.qualityStrings[$curQuality].replace("720p","HD720p").replace("1080p","HD1080p").replace("RawHD TV", "RawHD").replace("HD TV", "HD720p")">$Quality.qualityStrings[$curQuality]</span></td>
|
|
#else:
|
|
<td class="status_column">$statusStrings[$curStatus]</td>
|
|
#end if
|
|
<td class="search">
|
|
#if int($epResult["season"]) != 0:
|
|
#if ( int($epResult["status"]) in $Quality.SNATCHED or int($epResult["status"]) in $Quality.DOWNLOADED ) and $sickbeard.USE_FAILED_DOWNLOADS:
|
|
<a class="epRetry" href="retryEpisode?show=$show.indexerid&season=$epResult["season"]&episode=$epResult["episode"]"><img src="$sbRoot/images/search32.png" height="16" alt="retry" title="Retry Download" /></a>
|
|
#else:
|
|
<a class="epSearch" href="searchEpisode?show=$show.indexerid&season=$epResult["season"]&episode=$epResult["episode"]"><img src="$sbRoot/images/search32.png" width="16" height="16" alt="search" title="Manual Search" /></a>
|
|
#end if
|
|
#end if
|
|
#if $sickbeard.USE_SUBTITLES and $show.subtitles and len(set(str($epResult["subtitles"]).split(',')).intersection(set($subtitles.wantedLanguages()))) < len($subtitles.wantedLanguages()) and $epResult["location"]
|
|
<a class="epSubtitlesSearch" href="searchEpisodeSubtitles?show=$show.indexerid&season=$epResult["season"]&episode=$epResult["episode"]"><img src="$sbRoot/images/closed_captioning.png" height="16" alt="search subtitles" title="Search Subtitles" /></a>
|
|
#end if
|
|
</td>
|
|
</tr>
|
|
|
|
#end for
|
|
</table>
|
|
|
|
#include $os.path.join($sickbeard.PROG_DIR,"gui/slick/interfaces/default/inc_bottom.tmpl")
|