]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Option do add subtitle (from EPG) to recording filename and add episode number before... 297/head
authorDamian Gołda <Damian.Golda@gmail.com>
Tue, 8 Oct 2013 11:39:36 +0000 (13:39 +0200)
committerDamian Gołda <Damian.Golda@gmail.com>
Tue, 8 Oct 2013 11:41:30 +0000 (13:41 +0200)
src/dvr/dvr.h
src/dvr/dvr_db.c
src/webui/extjs.c
src/webui/static/app/dvr.js

index 59d285ccfb382046993529a717e9305ee9ec88df..3f946d633ba2320d3c42402ead1ccfced24bcfad 100644 (file)
@@ -66,6 +66,8 @@ extern struct dvr_entry_list dvrentries;
 #define DVR_CLEAN_TITLE                0x100
 #define DVR_TAG_FILES           0x200
 #define DVR_SKIP_COMMERCIALS    0x400
+#define DVR_SUBTITLE_IN_TITLE  0x800
+#define DVR_EPISODE_BEFORE_DATE        0x1000
 
 typedef enum {
   DVR_PRIO_IMPORTANT,
index fd54d3a046c37c896e208c2a738aa1fbe748cd03..09eccffff6950377391e1b5daac8e1265cc65078 100644 (file)
@@ -181,6 +181,22 @@ dvr_make_title(char *output, size_t outlen, dvr_entry_t *de)
   snprintf(output + strlen(output), outlen - strlen(output),
           "%s", lang_str_get(de->de_title, NULL));
 
+  if(cfg->dvr_flags & DVR_EPISODE_BEFORE_DATE) {
+    if(cfg->dvr_flags & DVR_EPISODE_IN_TITLE) {
+      if(de->de_bcast && de->de_bcast->episode)
+        epg_episode_number_format(de->de_bcast->episode,
+                                  output + strlen(output),
+                                  outlen - strlen(output),
+                                  ".", "S%02d", NULL, "E%02d", NULL);
+    }
+  }
+
+  if(cfg->dvr_flags & DVR_SUBTITLE_IN_TITLE) {
+    if(de->de_bcast && de->de_bcast->episode && de->de_bcast->episode->subtitle)
+      snprintf(output + strlen(output), outlen - strlen(output),
+           ".%s", lang_str_get(de->de_bcast->episode->subtitle, NULL));
+  }
+
   localtime_r(&de->de_start, &tm);
   
   if(cfg->dvr_flags & DVR_DATE_IN_TITLE) {
@@ -193,12 +209,14 @@ dvr_make_title(char *output, size_t outlen, dvr_entry_t *de)
     snprintf(output + strlen(output), outlen - strlen(output), ".%s", buf);
   }
 
-  if(cfg->dvr_flags & DVR_EPISODE_IN_TITLE) {
-    if(de->de_bcast && de->de_bcast->episode)  
-      epg_episode_number_format(de->de_bcast->episode,
-                                output + strlen(output),
-                                outlen - strlen(output),
-                                ".", "S%02d", NULL, "E%02d", NULL);
+  if(!(cfg->dvr_flags & DVR_EPISODE_BEFORE_DATE)) {
+    if(cfg->dvr_flags & DVR_EPISODE_IN_TITLE) {
+      if(de->de_bcast && de->de_bcast->episode)
+        epg_episode_number_format(de->de_bcast->episode,
+                                  output + strlen(output),
+                                  outlen - strlen(output),
+                                  ".", "S%02d", NULL, "E%02d", NULL);
+    }
   }
 
   if(cfg->dvr_flags & DVR_CLEAN_TITLE) {
@@ -1121,7 +1139,13 @@ dvr_init(void)
       if(!htsmsg_get_u32(m, "skip-commercials", &u32) && !u32)
         cfg->dvr_flags &= ~DVR_SKIP_COMMERCIALS;
 
-      tvh_str_set(&cfg->dvr_postproc, htsmsg_get_str(m, "postproc"));
+      if(!htsmsg_get_u32(m, "subtitle-in-title", &u32) && u32)
+        cfg->dvr_flags |= DVR_SUBTITLE_IN_TITLE;
+
+      if(!htsmsg_get_u32(m, "episode-before-date", &u32) && u32)
+        cfg->dvr_flags |= DVR_EPISODE_BEFORE_DATE;
+
+               tvh_str_set(&cfg->dvr_postproc, htsmsg_get_str(m, "postproc"));
     }
 
     htsmsg_destroy(l);
@@ -1287,6 +1311,8 @@ dvr_save(dvr_config_t *cfg)
   htsmsg_add_u32(m, "clean-title", !!(cfg->dvr_flags & DVR_CLEAN_TITLE));
   htsmsg_add_u32(m, "tag-files", !!(cfg->dvr_flags & DVR_TAG_FILES));
   htsmsg_add_u32(m, "skip-commercials", !!(cfg->dvr_flags & DVR_SKIP_COMMERCIALS));
+  htsmsg_add_u32(m, "subtitle-in-title", !!(cfg->dvr_flags & DVR_SUBTITLE_IN_TITLE));
+  htsmsg_add_u32(m, "episode-before-date", !!(cfg->dvr_flags & DVR_EPISODE_BEFORE_DATE));
   if(cfg->dvr_postproc != NULL)
     htsmsg_add_str(m, "postproc", cfg->dvr_postproc);
 
index 6ff9fbb81ceda262542dd5f454dd29c0fdf56af7..7a359dcb6d53356ea7dffb25e0dca5d6639640bb 100644 (file)
@@ -1306,6 +1306,8 @@ extjs_dvr(http_connection_t *hc, const char *remain, void *opaque)
     htsmsg_add_u32(r, "cleanTitle", !!(cfg->dvr_flags & DVR_CLEAN_TITLE));
     htsmsg_add_u32(r, "tagFiles", !!(cfg->dvr_flags & DVR_TAG_FILES));
     htsmsg_add_u32(r, "commSkip", !!(cfg->dvr_flags & DVR_SKIP_COMMERCIALS));
+    htsmsg_add_u32(r, "subtitleInTitle", !!(cfg->dvr_flags & DVR_SUBTITLE_IN_TITLE));
+    htsmsg_add_u32(r, "episodeBeforeDate", !!(cfg->dvr_flags & DVR_EPISODE_BEFORE_DATE));
 
     out = json_single_record(r, "dvrSettings");
 
@@ -1358,6 +1360,10 @@ extjs_dvr(http_connection_t *hc, const char *remain, void *opaque)
       flags |= DVR_TAG_FILES;
     if(http_arg_get(&hc->hc_req_args, "commSkip") != NULL)
       flags |= DVR_SKIP_COMMERCIALS;
+    if(http_arg_get(&hc->hc_req_args, "subtitleInTitle") != NULL)
+      flags |= DVR_SUBTITLE_IN_TITLE;
+    if(http_arg_get(&hc->hc_req_args, "episodeBeforeDate") != NULL)
+      flags |= DVR_EPISODE_BEFORE_DATE;
 
 
     dvr_flags_set(cfg,flags);
index 02021eb3b8b91daa6112fa4628144e491b60575d..851f28aa338499a72fd390db021d406d72cd38bc 100644 (file)
@@ -729,7 +729,7 @@ tvheadend.dvrsettings = function() {
        }, [ 'storage', 'postproc', 'retention', 'dayDirs', 'channelDirs',
                'channelInTitle', 'container', 'dateInTitle', 'timeInTitle',
                'preExtraTime', 'postExtraTime', 'whitespaceInTitle', 'titleDirs',
-               'episodeInTitle', 'cleanTitle', 'tagFiles', 'commSkip' ]);
+               'episodeInTitle', 'cleanTitle', 'tagFiles', 'commSkip', 'subtitleInTitle', 'episodeBeforeDate']);
 
        var confcombo = new Ext.form.ComboBox({
                store : tvheadend.configNames,
@@ -822,6 +822,12 @@ tvheadend.dvrsettings = function() {
                }), new Ext.form.Checkbox({
                        fieldLabel : 'Skip commercials',
                        name : 'commSkip'
+               }), new Ext.form.Checkbox({
+                       fieldLabel : 'Include subtitle in filename',
+                       name : 'subtitleInTitle'
+               }), new Ext.form.Checkbox({
+                       fieldLabel : 'Put episode in filename before date and time',
+                       name : 'episodeBeforeDate'
                }), {
                        width : 300,
                        fieldLabel : 'Post-processor command',