From 309f7047b03f56227e6b6f04628969341c6dba77 Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Sun, 26 Apr 2020 16:29:53 +1000 Subject: [PATCH] Add parser support for 3-letter month (#500) --- pkg/manager/filename_parser.go | 22 +++++++++++++++---- .../SceneFilenameParser/ParserField.ts | 2 ++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/pkg/manager/filename_parser.go b/pkg/manager/filename_parser.go index 63efb300a..9ef98c2aa 100644 --- a/pkg/manager/filename_parser.go +++ b/pkg/manager/filename_parser.go @@ -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 } } diff --git a/ui/v2.5/src/components/SceneFilenameParser/ParserField.ts b/ui/v2.5/src/components/SceneFilenameParser/ParserField.ts index 6fd2d2982..0a7fc378e 100644 --- a/ui/v2.5/src/components/SceneFilenameParser/ParserField.ts +++ b/ui/v2.5/src/components/SceneFilenameParser/ParserField.ts @@ -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,