2011-06-22 23:36:30 +00:00
|
|
|
#!/mod/bin/jimsh
|
|
|
|
|
|
|
|
package require cgi
|
2012-05-21 20:23:41 +00:00
|
|
|
source /mod/webif/lib/setup
|
2015-10-14 20:43:49 +00:00
|
|
|
require pretty_size progressbar plugin
|
2011-06-22 23:36:30 +00:00
|
|
|
|
2013-02-09 22:46:15 +00:00
|
|
|
httpheader
|
2011-06-22 23:36:30 +00:00
|
|
|
|
2013-02-09 22:46:15 +00:00
|
|
|
set file [cgi_get file]
|
|
|
|
set type [cgi_get type]
|
2011-06-22 23:36:30 +00:00
|
|
|
|
2013-02-09 22:46:15 +00:00
|
|
|
if {$file == 0} exit
|
2011-06-22 23:36:30 +00:00
|
|
|
|
2014-03-03 14:00:46 +00:00
|
|
|
set sz [pretty_size [file size $file]]
|
2011-06-22 23:36:30 +00:00
|
|
|
|
2021-02-16 00:49:28 +00:00
|
|
|
set flags {}
|
|
|
|
set url ""
|
|
|
|
|
|
|
|
# assumption: the type is only ts if fetch has already been checked
|
2011-06-22 23:36:30 +00:00
|
|
|
if {$type eq "ts"} {
|
2012-05-21 20:23:41 +00:00
|
|
|
require epg.class ts.class
|
2011-06-22 23:36:30 +00:00
|
|
|
|
2021-02-16 00:49:28 +00:00
|
|
|
set ts [ts fetch $file 1]
|
2011-06-22 23:36:30 +00:00
|
|
|
|
2015-11-06 18:50:27 +00:00
|
|
|
# Causes other series information to be automatically populated
|
|
|
|
set epname [$ts episode_name]
|
|
|
|
set series [$ts series_name]
|
2015-11-18 23:46:47 +00:00
|
|
|
set tvdb [$ts get tvdb_series]
|
2015-11-06 18:50:27 +00:00
|
|
|
set idata [$ts get tvdb_data]
|
|
|
|
|
2011-06-22 23:36:30 +00:00
|
|
|
puts "
|
|
|
|
<table class=keyval>
|
|
|
|
<tr>
|
|
|
|
<th>Title</th>
|
2013-03-11 23:00:41 +00:00
|
|
|
<td class=va>
|
|
|
|
"
|
|
|
|
if {[file exists "[file rootname $file].thm"]} {
|
2017-01-03 19:04:58 +00:00
|
|
|
puts "<img class=\"bmp va\"
|
|
|
|
src=\"/browse/bmp.jim?file=[cgi_quote_url $file]\">"
|
2015-11-06 18:50:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if {[dict exists $idata thumb]} {
|
|
|
|
puts "
|
|
|
|
<img class=\"rollimg va\"
|
|
|
|
src=\"[tvdb bannerurl $idata(thumb)]\">
|
|
|
|
<div id=rollimg class=hidden></div>
|
|
|
|
"
|
2013-03-11 23:00:41 +00:00
|
|
|
}
|
|
|
|
puts "[$ts get title]</td>
|
2011-06-22 23:36:30 +00:00
|
|
|
</tr><tr>
|
|
|
|
<th>Synopsis</th>
|
|
|
|
<td>[$ts get synopsis]</td>
|
|
|
|
</tr><tr>
|
2015-03-09 22:19:12 +00:00
|
|
|
<th>Episode</th>
|
2011-06-27 19:57:32 +00:00
|
|
|
"
|
2015-11-18 23:46:47 +00:00
|
|
|
puts "<td>[$ts epstr] - $epname (<i>$series</i>)"
|
|
|
|
if {[llength $tvdb]} {
|
|
|
|
puts "<button class=tvdbchoose>Change</button>"
|
2015-03-09 22:19:12 +00:00
|
|
|
}
|
2015-11-18 23:46:47 +00:00
|
|
|
puts "</td>
|
2015-03-09 22:19:12 +00:00
|
|
|
</tr><tr>
|
|
|
|
"
|
2015-11-18 23:46:47 +00:00
|
|
|
if {[llength $tvdb] && [llength $idata]} {
|
|
|
|
puts "</tr><tr><th>TheTVDB</th><td class=va>"
|
|
|
|
set sid [$tvdb get seriesid]
|
|
|
|
puts "<a target=_blank href=[\
|
|
|
|
tvdb seriesurl $sid]>View on
|
|
|
|
<img class=va height=20 src=/img/tvdb-sm.png></a>"
|
|
|
|
if {[[settings] tvdb_debug]} {
|
|
|
|
puts " | "
|
|
|
|
puts "<a href=/db/index.jim?db=$sid.db target=_blank>
|
|
|
|
<span class=footnote>View database($sid)</span></a>"
|
|
|
|
}
|
|
|
|
puts "
|
|
|
|
<br>
|
2015-11-06 18:50:27 +00:00
|
|
|
<img class=collapser id=xtvdb x=tvdb_extra
|
|
|
|
class=va src=/img/tree/plusonly.png>
|
|
|
|
Found episode using [$ts get tvdb_method]
|
2015-10-12 21:14:34 +00:00
|
|
|
<div id=tvdb_extra class=hidden>
|
2015-11-06 18:50:27 +00:00
|
|
|
<div class=blood>
|
|
|
|
$idata(overview)
|
|
|
|
</div>
|
|
|
|
"
|
|
|
|
if {[[settings] tvdb_debug]} {
|
|
|
|
puts "
|
|
|
|
<div class=bluefootnote>
|
2015-11-18 23:46:47 +00:00
|
|
|
[$tvdb get _phrases]
|
2015-11-06 18:50:27 +00:00
|
|
|
</div>
|
|
|
|
<div class=footnote>
|
2015-11-18 23:46:47 +00:00
|
|
|
[lrange [$tvdb get _smatches] 0 8]
|
2015-11-06 18:50:27 +00:00
|
|
|
</div>
|
|
|
|
"
|
|
|
|
}
|
|
|
|
puts "
|
2015-10-12 21:14:34 +00:00
|
|
|
</div>
|
|
|
|
</td></tr>"
|
2015-03-09 22:19:12 +00:00
|
|
|
}
|
2011-06-27 19:57:32 +00:00
|
|
|
|
|
|
|
if {[$ts flag "Guidance"] > 0} {
|
|
|
|
puts "
|
|
|
|
<th>Guidance</th>
|
|
|
|
<td><img class=va
|
2015-06-15 17:33:32 +00:00
|
|
|
src=/img/Guidance_purple.png height=21>
|
2015-01-05 21:59:36 +00:00
|
|
|
[$ts get guidance]
|
|
|
|
</td>
|
|
|
|
</tr><tr>
|
|
|
|
"
|
|
|
|
}
|
|
|
|
if {[$ts flag "GGuidance"] > 0} {
|
|
|
|
puts "
|
|
|
|
<th>General Guidance</th>
|
|
|
|
<td><img class=va
|
|
|
|
src=/img/Guidance_blue.png height=21>
|
2011-06-27 19:57:32 +00:00
|
|
|
[$ts get guidance]
|
|
|
|
</td>
|
|
|
|
</tr><tr>
|
|
|
|
"
|
|
|
|
}
|
|
|
|
|
|
|
|
puts "
|
2011-06-22 23:36:30 +00:00
|
|
|
<th>Definition</th>
|
|
|
|
<td>
|
|
|
|
"
|
2016-01-31 19:58:12 +00:00
|
|
|
if {[$ts flag Radio]} {
|
|
|
|
puts "<img class=va src=/img/radio.png height=21>"
|
2011-06-22 23:36:30 +00:00
|
|
|
} else {
|
2016-01-31 19:58:12 +00:00
|
|
|
if {[$ts get definition] eq "HD"} {
|
|
|
|
puts "<img class=va src=/images/172_1_00_HD.png height=21>"
|
|
|
|
} else {
|
|
|
|
puts "<img class=va src=/images/172_1_26_SD.png height=21>"
|
|
|
|
}
|
2011-06-22 23:36:30 +00:00
|
|
|
}
|
|
|
|
puts "</td>
|
|
|
|
</tr><tr>
|
|
|
|
<th>Channel</th>
|
|
|
|
<td>[epg channelicon [$ts get channel_name] 50 "vertical-align: middle"]
|
|
|
|
[$ts get channel_num] - [$ts get channel_name]</td>
|
2018-01-28 11:38:28 +00:00
|
|
|
</tr>
|
|
|
|
"
|
|
|
|
lassign [$ts genre_info] txt img
|
|
|
|
puts "
|
|
|
|
<tr>
|
|
|
|
<th>Genre</th>
|
|
|
|
<td><img src=\"$img\">$txt ([$ts genrenib])</td>
|
2011-06-22 23:36:30 +00:00
|
|
|
</tr><tr>
|
|
|
|
<th>Start Time</th>
|
|
|
|
<td>"
|
|
|
|
puts [clock format [$ts get start] -format "%c %Z"]
|
2011-12-27 18:43:40 +00:00
|
|
|
puts "<font class=also>(Scheduled: [
|
|
|
|
clock format [$ts get schedstart] -format "%c %Z"])</font>"
|
2011-06-22 23:36:30 +00:00
|
|
|
puts "</td>
|
|
|
|
</tr><tr>
|
|
|
|
<th>End Time</th>
|
|
|
|
<td>"
|
|
|
|
puts [clock format [$ts get end] -format "%c %Z"]
|
2011-12-27 18:43:40 +00:00
|
|
|
puts "<font class=also>(Scheduled: [clock format \
|
|
|
|
[expr [$ts get schedstart] + [$ts get scheddur]] \
|
|
|
|
-format "%c %Z"])</font>"
|
2011-06-22 23:36:30 +00:00
|
|
|
puts "</td>
|
|
|
|
</tr><tr>
|
|
|
|
<th>Duration</th>
|
2011-12-27 18:43:40 +00:00
|
|
|
<td>[$ts duration] minute(s).
|
|
|
|
<font class=also>(Scheduled: [expr [$ts get scheddur] / 60])
|
|
|
|
</font></td>
|
2015-01-28 00:08:09 +00:00
|
|
|
</tr><tr>
|
|
|
|
<th>Status</th>
|
|
|
|
<td>[$ts get status]</td>
|
2014-06-03 22:33:24 +00:00
|
|
|
</tr><tr>
|
|
|
|
<th>Resumes</th>
|
2014-06-05 21:10:01 +00:00
|
|
|
<td>[expr [$ts get resume] / 60] minutes into recording.
|
2014-06-03 22:33:24 +00:00
|
|
|
[progressbar $([$ts get resume] * 100 / [$ts duration 1])]
|
|
|
|
</td>
|
2011-06-22 23:36:30 +00:00
|
|
|
</tr><tr>
|
|
|
|
<th>Size</th>
|
|
|
|
<td>$sz</td>
|
2011-10-11 19:51:58 +00:00
|
|
|
"
|
2012-01-22 19:47:47 +00:00
|
|
|
lassign [$ts dlnaloc] url
|
|
|
|
if {$url ne ""} {
|
2011-11-03 23:43:17 +00:00
|
|
|
puts "</tr><tr><th>DLNA URL</th>
|
|
|
|
<td><a href=\"$url\">$url</a></td>"
|
2011-10-11 19:51:58 +00:00
|
|
|
}
|
|
|
|
puts "
|
2012-08-04 00:29:57 +00:00
|
|
|
</tr><tr>
|
|
|
|
<th>Files</th>
|
|
|
|
<td>
|
|
|
|
"
|
|
|
|
|
|
|
|
set fileset [$ts fileset]
|
2015-10-12 21:14:34 +00:00
|
|
|
puts -nonewline "<img class=collapser x=fileset id=xfileset class=va
|
|
|
|
src=/img/tree/plusonly.png>"
|
2012-08-04 00:29:57 +00:00
|
|
|
puts -nonewline "[llength $fileset] file"
|
|
|
|
if {[llength $fileset] != 1} { puts -nonewline "s" }
|
|
|
|
puts -nonewline " in set."
|
|
|
|
puts "<div id=fileset class=hidden><ul>"
|
|
|
|
foreach f $fileset {
|
|
|
|
puts "<li>[file tail $f] ([pretty_size [file size $f]])</li>"
|
|
|
|
}
|
|
|
|
puts "</ul></div>"
|
|
|
|
|
2015-10-14 20:43:49 +00:00
|
|
|
puts "</td></tr>"
|
|
|
|
|
|
|
|
eval_plugins browsetsfile
|
|
|
|
|
|
|
|
puts "<tr>
|
2011-06-22 23:36:30 +00:00
|
|
|
<th>Flags</th>
|
2021-02-16 00:49:28 +00:00
|
|
|
<td>[set flags [$ts get flags]]</td>
|
2015-10-14 20:43:49 +00:00
|
|
|
</tr>
|
2011-11-03 23:43:17 +00:00
|
|
|
"
|
2015-10-14 20:43:49 +00:00
|
|
|
|
2011-11-03 23:43:17 +00:00
|
|
|
if {[$ts get bookmarks]} {
|
2015-10-14 20:43:49 +00:00
|
|
|
puts "
|
|
|
|
<tr>
|
|
|
|
<th>Bookmarks</th>
|
|
|
|
<td>[$ts get bookmarks] @ [join [lmap i [$ts bookmarks 1] {
|
|
|
|
clock format $i -format "%T"
|
|
|
|
}] ", "]
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
"
|
2011-11-03 23:43:17 +00:00
|
|
|
}
|
|
|
|
|
2016-02-21 00:22:34 +00:00
|
|
|
puts "<div class=hidden id=file>$file</div>"
|
2015-11-18 23:46:47 +00:00
|
|
|
puts {
|
2016-02-21 00:22:34 +00:00
|
|
|
<script type=text/javascript>
|
|
|
|
var file = $('#file').text();
|
2015-11-18 23:46:47 +00:00
|
|
|
$('button').button();
|
|
|
|
$('.tvdbchoose').on('click', function() {
|
|
|
|
window.location.href = '/browse/tvdb/episode.jim?file=' +
|
|
|
|
encodeURIComponent(file);
|
|
|
|
});
|
2015-10-12 21:14:34 +00:00
|
|
|
$('.collapser').on('click', function() {
|
|
|
|
target = $(this).attr('x');
|
|
|
|
var $icon = $(this);
|
|
|
|
$('#' + target).slideToggle('slow', function() {
|
|
|
|
if ($(this).is(':visible'))
|
|
|
|
$icon.attr('src', '/img/tree/minustop.png');
|
2012-08-04 00:29:57 +00:00
|
|
|
else
|
2015-10-12 21:14:34 +00:00
|
|
|
$icon.attr('src', '/img/tree/plusonly.png');
|
|
|
|
|
2012-08-04 00:29:57 +00:00
|
|
|
});
|
|
|
|
});
|
2015-11-06 18:50:27 +00:00
|
|
|
$('img.rollimg').hover(
|
|
|
|
function() {
|
|
|
|
var img = this, $img = $(img), offset = $img.offset;
|
|
|
|
|
|
|
|
$('#rollimg').css({
|
|
|
|
top: offset.top,
|
|
|
|
left: offset.left
|
|
|
|
})
|
|
|
|
.append($img.clone().removeClass('rollimg'))
|
|
|
|
.removeClass('hidden');
|
|
|
|
},
|
|
|
|
function() {
|
|
|
|
$('#rollimg').empty().addClass('hidden');
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2012-08-04 00:29:57 +00:00
|
|
|
</script>
|
2015-10-14 20:43:49 +00:00
|
|
|
}
|
2011-06-22 23:36:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# Otherwise, for a general file.
|
|
|
|
|
2021-02-16 00:49:28 +00:00
|
|
|
if {$type ne "ts"} {
|
|
|
|
puts "
|
2011-06-22 23:36:30 +00:00
|
|
|
<table class=keyval>
|
|
|
|
<tr>
|
|
|
|
<th>File</th>
|
|
|
|
<td>$file</td>
|
|
|
|
</tr><tr>
|
|
|
|
<th>Size</th>
|
|
|
|
<td>$sz</td>
|
2021-02-16 00:49:28 +00:00
|
|
|
</tr>"
|
|
|
|
}
|
|
|
|
|
|
|
|
set hasffmpeg 0
|
|
|
|
if {$type ne "ts" || ("ODEncrypted" ni $flags && $url eq "") } {
|
|
|
|
puts "<tr>
|
2011-06-22 23:36:30 +00:00
|
|
|
<th>Info</th>
|
|
|
|
<td class=pre id=ffmpeg>
|
2017-01-15 15:27:02 +00:00
|
|
|
<img src=/img/spin.gif><i>Loading...</i>
|
2011-06-22 23:36:30 +00:00
|
|
|
</td>
|
2021-02-16 00:49:28 +00:00
|
|
|
</tr>"
|
|
|
|
set hasffmpeg 1
|
2021-04-13 12:58:20 +00:00
|
|
|
} elseif {$type eq "ts" && $url ne ""} {
|
2021-04-17 01:55:33 +00:00
|
|
|
puts [format {
|
|
|
|
<script type="text/javascript">
|
|
|
|
$('#playDL').attr('href','%s').enable();
|
|
|
|
</script> } $url]
|
2021-02-16 00:49:28 +00:00
|
|
|
}
|
|
|
|
puts "
|
|
|
|
</table>
|
|
|
|
"
|
2011-06-22 23:36:30 +00:00
|
|
|
|
2021-02-16 00:49:28 +00:00
|
|
|
if {$hasffmpeg} {
|
|
|
|
set url "/browse/ffmpeg.jim?file=[cgi_quote_url $file]"
|
2021-04-17 01:55:33 +00:00
|
|
|
puts [format {
|
|
|
|
<script type="text/javascript">
|
|
|
|
var url = "%s";
|
|
|
|
$('#ffmpeg').load(url, function() { $('#play, #playDL').enable(); }); }
|
|
|
|
</script> } $url]
|
2021-02-16 00:49:28 +00:00
|
|
|
}
|