Add parser support for 3-letter month (#500)

This commit is contained in:
WithoutPants 2020-04-26 16:29:53 +10:00 committed by GitHub
parent 5e84c0922d
commit 309f7047b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 4 deletions

View File

@ -7,6 +7,7 @@ import (
"regexp"
"strconv"
"strings"
"time"
"github.com/stashapp/stash/pkg/models"
@ -98,6 +99,7 @@ func initParserFields() {
ret["yyyy"] = newParserField("yyyy", `\d{4}`, true)
ret["yy"] = newParserField("yy", `\d{2}`, true)
ret["mm"] = newParserField("mm", `\d{2}`, true)
ret["mmm"] = newParserField("mmm", `\w{3}`, true)
ret["dd"] = newParserField("dd", `\d{2}`, true)
ret["yyyymmdd"] = newFullDateParserField("yyyymmdd", `\d{8}`)
ret["yymmdd"] = newFullDateParserField("yymmdd", `\d{6}`)
@ -290,6 +292,20 @@ func (h *sceneHolder) setDate(field *parserField, value string) {
}
}
func mmmToMonth(mmm string) string {
format := "02-Jan-2006"
dateStr := "01-" + mmm + "-2000"
t, err := time.Parse(format, dateStr)
if err != nil {
return ""
}
// expect month in two-digit format
format = "01-02-2006"
return t.Format(format)[0:2]
}
func (h *sceneHolder) setField(field parserField, value interface{}) {
if field.isFullDateField {
h.setDate(&field, value.(string))
@ -328,18 +344,16 @@ func (h *sceneHolder) setField(field parserField, value interface{}) {
h.tags = append(h.tags, value.(string))
case "yyyy":
h.yyyy = value.(string)
break
case "yy":
v := value.(string)
v = "20" + v
h.yyyy = v
break
case "mmm":
h.mm = mmmToMonth(value.(string))
case "mm":
h.mm = value.(string)
break
case "dd":
h.dd = value.(string)
break
}
}

View File

@ -27,6 +27,7 @@ export class ParserField {
static YYYY = new ParserField("yyyy", "Year");
static YY = new ParserField("yy", "Year (20YY)");
static MM = new ParserField("mm", "Two digit month");
static MMM = new ParserField("mmm", "Three letter month (eg Jan)");
static DD = new ParserField("dd", "Two digit date");
static YYYYMMDD = new ParserField("yyyymmdd");
static YYMMDD = new ParserField("yymmdd");
@ -48,6 +49,7 @@ export class ParserField {
ParserField.YYYY,
ParserField.YY,
ParserField.MM,
ParserField.MMM,
ParserField.DD,
ParserField.YYYYMMDD,
ParserField.YYMMDD,