From 8121d950be82292e4a1135e391c07cb80ae314bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Thu, 11 Mar 2010 20:23:44 +0000 Subject: [PATCH] Add an option for replacing spaces in title with '-' for DVR recorded files Patch by: tuomaz --- src/dvr/dvr.h | 11 ++++++----- src/dvr/dvr_db.c | 6 +++++- src/dvr/dvr_rec.c | 6 +++++- src/webui/extjs.c | 3 +++ src/webui/static/app/dvr.js | 5 ++++- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index 2efe3c5d..6bb0e254 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -34,11 +34,12 @@ extern int dvr_extra_time_pre; extern int dvr_extra_time_post; extern struct dvr_entry_list dvrentries; -#define DVR_DIR_PER_DAY 0x1 -#define DVR_DIR_PER_CHANNEL 0x2 -#define DVR_CHANNEL_IN_TITLE 0x4 -#define DVR_DATE_IN_TITLE 0x8 -#define DVR_TIME_IN_TITLE 0x10 +#define DVR_DIR_PER_DAY 0x1 +#define DVR_DIR_PER_CHANNEL 0x2 +#define DVR_CHANNEL_IN_TITLE 0x4 +#define DVR_DATE_IN_TITLE 0x8 +#define DVR_TIME_IN_TITLE 0x10 +#define DVR_WHITESPACE_IN_TITLE 0x20 LIST_HEAD(dvr_rec_stream_list, dvr_rec_stream); diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index ac772812..be73ada5 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -557,7 +557,10 @@ dvr_init(void) if(!htsmsg_get_u32(m, "time-in-title", &u32) && u32) dvr_flags |= DVR_TIME_IN_TITLE; - + + if(!htsmsg_get_u32(m, "whitespace-in-title", &u32) && u32) + dvr_flags |= DVR_WHITESPACE_IN_TITLE; + tvh_str_set(&dvr_postproc, htsmsg_get_str(m, "postproc")); htsmsg_destroy(m); @@ -608,6 +611,7 @@ dvr_save(void) htsmsg_add_u32(m, "channel-in-title", !!(dvr_flags & DVR_CHANNEL_IN_TITLE)); htsmsg_add_u32(m, "date-in-title", !!(dvr_flags & DVR_DATE_IN_TITLE)); htsmsg_add_u32(m, "time-in-title", !!(dvr_flags & DVR_TIME_IN_TITLE)); + htsmsg_add_u32(m, "whitespace-in-title", !!(dvr_flags & DVR_WHITESPACE_IN_TITLE)); if(dvr_postproc != NULL) htsmsg_add_str(m, "postproc", dvr_postproc); diff --git a/src/dvr/dvr_rec.c b/src/dvr/dvr_rec.c index 708a8eaf..ac8a05f4 100644 --- a/src/dvr/dvr_rec.c +++ b/src/dvr/dvr_rec.c @@ -145,10 +145,14 @@ static void cleanupfilename(char *s) { int i, len = strlen(s); - for(i = 0; i < len; i++) + for(i = 0; i < len; i++) { if(s[i] == '/' || s[i] == ':' || s[i] == '\\' || s[i] == '<' || s[i] == '>' || s[i] == '|' || s[i] == '*' || s[i] == '?') s[i] = '-'; + + if((dvr_flags & DVR_WHITESPACE_IN_TITLE) && s[i] == ' ') + s[i] = '-'; + } } /** diff --git a/src/webui/extjs.c b/src/webui/extjs.c index 244664d3..20614e9a 100644 --- a/src/webui/extjs.c +++ b/src/webui/extjs.c @@ -807,6 +807,7 @@ extjs_dvr(http_connection_t *hc, const char *remain, void *opaque) htsmsg_add_u32(r, "channelInTitle", !!(dvr_flags & DVR_CHANNEL_IN_TITLE)); htsmsg_add_u32(r, "dateInTitle", !!(dvr_flags & DVR_DATE_IN_TITLE)); htsmsg_add_u32(r, "timeInTitle", !!(dvr_flags & DVR_TIME_IN_TITLE)); + htsmsg_add_u32(r, "whitespaceInTitle", !!(dvr_flags & DVR_WHITESPACE_IN_TITLE)); out = json_single_record(r, "dvrSettings"); @@ -837,6 +838,8 @@ extjs_dvr(http_connection_t *hc, const char *remain, void *opaque) flags |= DVR_DATE_IN_TITLE; if(http_arg_get(&hc->hc_req_args, "timeInTitle") != NULL) flags |= DVR_TIME_IN_TITLE; + if(http_arg_get(&hc->hc_req_args, "whitespaceInTitle") != NULL) + flags |= DVR_WHITESPACE_IN_TITLE; dvr_flags_set(flags); diff --git a/src/webui/static/app/dvr.js b/src/webui/static/app/dvr.js index 207c3b41..ad26f85f 100644 --- a/src/webui/static/app/dvr.js +++ b/src/webui/static/app/dvr.js @@ -456,7 +456,7 @@ tvheadend.dvrsettings = function() { }, ['storage','postproc','retention','dayDirs', 'channelDirs','channelInTitle', 'dateInTitle','timeInTitle', - 'preExtraTime', 'postExtraTime']); + 'preExtraTime', 'postExtraTime', 'whitespaceInTitle']); var confpanel = new Ext.FormPanel({ title:'Digital Video Recorder', @@ -503,6 +503,9 @@ tvheadend.dvrsettings = function() { }), new Ext.form.Checkbox({ fieldLabel: 'Include time in title', name: 'timeInTitle' + }), new Ext.form.Checkbox({ + fieldLabel: 'Replace whitespace in title with \'-\'', + name: 'whitespaceInTitle' }), { width: 300, fieldLabel: 'Post-processor command',