dvr: report error if a recordings file is missing.
This commit is contained in:
parent
60371b07f8
commit
efee88c8a2
5 changed files with 45 additions and 21 deletions
|
@ -303,7 +303,7 @@ dvr_entry_t *dvr_entry_find_by_event_fuzzy(epg_broadcast_t *e);
|
|||
|
||||
dvr_entry_t *dvr_entry_find_by_episode(epg_broadcast_t *e);
|
||||
|
||||
off_t dvr_get_filesize(dvr_entry_t *de);
|
||||
int64_t dvr_get_filesize(dvr_entry_t *de);
|
||||
|
||||
dvr_entry_t *dvr_entry_cancel(dvr_entry_t *de);
|
||||
|
||||
|
|
|
@ -68,6 +68,8 @@ dvr_entry_status(dvr_entry_t *de)
|
|||
}
|
||||
|
||||
case DVR_COMPLETED:
|
||||
if(dvr_get_filesize(de) == -1)
|
||||
return "File Missing";
|
||||
if(de->de_last_error)
|
||||
return streaming_code2txt(de->de_last_error);
|
||||
else
|
||||
|
@ -97,7 +99,7 @@ dvr_entry_schedstatus(dvr_entry_t *de)
|
|||
else
|
||||
return "recording";
|
||||
case DVR_COMPLETED:
|
||||
if(de->de_last_error)
|
||||
if(de->de_last_error || dvr_get_filesize(de) == -1)
|
||||
return "completedError";
|
||||
else
|
||||
return "completed";
|
||||
|
@ -1375,16 +1377,16 @@ dvr_query_sort(dvr_query_result_t *dqr)
|
|||
/**
|
||||
*
|
||||
*/
|
||||
off_t
|
||||
int64_t
|
||||
dvr_get_filesize(dvr_entry_t *de)
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
if(de->de_filename == NULL)
|
||||
return 0;
|
||||
return -1;
|
||||
|
||||
if(stat(de->de_filename, &st) != 0)
|
||||
return 0;
|
||||
return -1;
|
||||
|
||||
return st.st_size;
|
||||
}
|
||||
|
|
|
@ -579,7 +579,9 @@ htsp_build_dvrentry(dvr_entry_t *de, const char *method)
|
|||
break;
|
||||
case DVR_COMPLETED:
|
||||
s = "completed";
|
||||
if(de->de_last_error)
|
||||
if(dvr_get_filesize(de) == -1)
|
||||
error = "File missing";
|
||||
else if(de->de_last_error)
|
||||
error = streaming_code2txt(de->de_last_error);
|
||||
break;
|
||||
case DVR_MISSED_TIME:
|
||||
|
|
|
@ -1348,7 +1348,7 @@ extjs_dvrlist(http_connection_t *hc, const char *remain, void *opaque,
|
|||
dvr_entry_t *de;
|
||||
int start = 0, end, limit, i;
|
||||
const char *s;
|
||||
off_t fsize;
|
||||
int64_t fsize = 0;
|
||||
char buf[100];
|
||||
|
||||
if((s = http_arg_get(&hc->hc_req_args, "start")) != NULL)
|
||||
|
@ -1418,16 +1418,14 @@ extjs_dvrlist(http_connection_t *hc, const char *remain, void *opaque,
|
|||
|
||||
if(de->de_sched_state == DVR_COMPLETED) {
|
||||
fsize = dvr_get_filesize(de);
|
||||
if(fsize > 0) {
|
||||
char url[100];
|
||||
htsmsg_add_s64(m, "filesize", fsize);
|
||||
|
||||
snprintf(url, sizeof(url), "dvrfile/%d", de->de_id);
|
||||
htsmsg_add_str(m, "url", url);
|
||||
if (fsize > 0) {
|
||||
char url[100];
|
||||
htsmsg_add_s64(m, "filesize", fsize);
|
||||
snprintf(url, sizeof(url), "dvrfile/%d", de->de_id);
|
||||
htsmsg_add_str(m, "url", url);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
htsmsg_add_msg(array, NULL, m);
|
||||
}
|
||||
|
||||
|
@ -1446,7 +1444,7 @@ extjs_dvrlist(http_connection_t *hc, const char *remain, void *opaque,
|
|||
static int is_dvr_entry_finished(dvr_entry_t *entry)
|
||||
{
|
||||
dvr_entry_sched_state_t state = entry->de_sched_state;
|
||||
return state == DVR_COMPLETED;
|
||||
return state == DVR_COMPLETED && !entry->de_last_error && dvr_get_filesize(entry) != -1;
|
||||
}
|
||||
|
||||
static int is_dvr_entry_upcoming(dvr_entry_t *entry)
|
||||
|
@ -1458,8 +1456,11 @@ static int is_dvr_entry_upcoming(dvr_entry_t *entry)
|
|||
|
||||
static int is_dvr_entry_failed(dvr_entry_t *entry)
|
||||
{
|
||||
dvr_entry_sched_state_t state = entry->de_sched_state;
|
||||
return state == DVR_MISSED_TIME || state == DVR_NOSTATE;
|
||||
if (is_dvr_entry_finished(entry))
|
||||
return 0;
|
||||
if (is_dvr_entry_upcoming(entry))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
@ -182,6 +182,13 @@ tvheadend.dvrschedule = function(title, iconCls, dvrStore) {
|
|||
}
|
||||
}
|
||||
|
||||
function renderSize(value)
|
||||
{
|
||||
if (value == null)
|
||||
return '';
|
||||
return parseInt(value / 1000000) + ' MB';
|
||||
}
|
||||
|
||||
function renderPri(value) {
|
||||
return tvheadend.dvrprio.getById(value).data.name;
|
||||
}
|
||||
|
@ -201,11 +208,12 @@ tvheadend.dvrschedule = function(title, iconCls, dvrStore) {
|
|||
id : 'pri',
|
||||
header : "Priority",
|
||||
dataIndex : 'pri',
|
||||
renderer : renderPri
|
||||
renderer : renderPri,
|
||||
hidden : iconCls != 'clock',
|
||||
}, {
|
||||
width : 100,
|
||||
id : 'start',
|
||||
header : "Start",
|
||||
header : iconCls == 'clock' ? "Start" : "Date/Time",
|
||||
dataIndex : 'start',
|
||||
renderer : renderDate
|
||||
}, {
|
||||
|
@ -221,6 +229,13 @@ tvheadend.dvrschedule = function(title, iconCls, dvrStore) {
|
|||
header : "Duration",
|
||||
dataIndex : 'duration',
|
||||
renderer : renderDuration
|
||||
}, {
|
||||
width : 100,
|
||||
id : 'filesize',
|
||||
header : "Filesize",
|
||||
dataIndex : 'filesize',
|
||||
renderer : renderSize,
|
||||
hidden : iconCls != 'television'
|
||||
}, {
|
||||
width : 250,
|
||||
id : 'channel',
|
||||
|
@ -244,12 +259,14 @@ tvheadend.dvrschedule = function(title, iconCls, dvrStore) {
|
|||
return value;
|
||||
}
|
||||
},
|
||||
dataIndex : 'config_name'
|
||||
dataIndex : 'config_name',
|
||||
hidden: iconCls != 'clock'
|
||||
}, {
|
||||
width : 200,
|
||||
id : 'status',
|
||||
header : "Status",
|
||||
dataIndex : 'status'
|
||||
dataIndex : 'status',
|
||||
hidden: iconCls != 'exclamation'
|
||||
} ]);
|
||||
|
||||
function addEntry() {
|
||||
|
@ -608,6 +625,8 @@ tvheadend.dvr = function() {
|
|||
name : 'status'
|
||||
}, {
|
||||
name : 'schedstate'
|
||||
}, {
|
||||
name : 'error'
|
||||
}, {
|
||||
name : 'creator'
|
||||
}, {
|
||||
|
|
Loading…
Add table
Reference in a new issue