From b1d5dc2a0e5333dee5240e868801ba62ac0dbbaf Mon Sep 17 00:00:00 2001 From: InfiniteStash <117855276+InfiniteStash@users.noreply.github.com> Date: Thu, 31 Oct 2024 01:55:58 +0100 Subject: [PATCH] Fix scraping stash-box performers with null birthdates (#5428) --- graphql/stash-box/query.graphql | 9 +-- .../stashbox/graphql/generated_client.go | 80 +++---------------- pkg/scraper/stashbox/stash_box.go | 22 ++++- 3 files changed, 30 insertions(+), 81 deletions(-) diff --git a/graphql/stash-box/query.graphql b/graphql/stash-box/query.graphql index 75dbc9797..a8a6b8f9c 100644 --- a/graphql/stash-box/query.graphql +++ b/graphql/stash-box/query.graphql @@ -30,11 +30,6 @@ fragment TagFragment on Tag { id } -fragment FuzzyDateFragment on FuzzyDate { - date - accuracy -} - fragment MeasurementsFragment on Measurements { band_size cup_size @@ -60,9 +55,7 @@ fragment PerformerFragment on Performer { images { ...ImageFragment } - birthdate { - ...FuzzyDateFragment - } + birth_date ethnicity country eye_color diff --git a/pkg/scraper/stashbox/graphql/generated_client.go b/pkg/scraper/stashbox/graphql/generated_client.go index 9b9340239..b6363dc56 100644 --- a/pkg/scraper/stashbox/graphql/generated_client.go +++ b/pkg/scraper/stashbox/graphql/generated_client.go @@ -139,24 +139,6 @@ func (t *TagFragment) GetID() string { return t.ID } -type FuzzyDateFragment struct { - Date string "json:\"date\" graphql:\"date\"" - Accuracy DateAccuracyEnum "json:\"accuracy\" graphql:\"accuracy\"" -} - -func (t *FuzzyDateFragment) GetDate() string { - if t == nil { - t = &FuzzyDateFragment{} - } - return t.Date -} -func (t *FuzzyDateFragment) GetAccuracy() *DateAccuracyEnum { - if t == nil { - t = &FuzzyDateFragment{} - } - return &t.Accuracy -} - type MeasurementsFragment struct { BandSize *int "json:\"band_size,omitempty\" graphql:\"band_size\"" CupSize *string "json:\"cup_size,omitempty\" graphql:\"cup_size\"" @@ -216,7 +198,7 @@ type PerformerFragment struct { MergedIds []string "json:\"merged_ids\" graphql:\"merged_ids\"" Urls []*URLFragment "json:\"urls\" graphql:\"urls\"" Images []*ImageFragment "json:\"images\" graphql:\"images\"" - Birthdate *FuzzyDateFragment "json:\"birthdate,omitempty\" graphql:\"birthdate\"" + BirthDate *string "json:\"birth_date,omitempty\" graphql:\"birth_date\"" Ethnicity *EthnicityEnum "json:\"ethnicity,omitempty\" graphql:\"ethnicity\"" Country *string "json:\"country,omitempty\" graphql:\"country\"" EyeColor *EyeColorEnum "json:\"eye_color,omitempty\" graphql:\"eye_color\"" @@ -278,11 +260,11 @@ func (t *PerformerFragment) GetImages() []*ImageFragment { } return t.Images } -func (t *PerformerFragment) GetBirthdate() *FuzzyDateFragment { +func (t *PerformerFragment) GetBirthDate() *string { if t == nil { t = &PerformerFragment{} } - return t.Birthdate + return t.BirthDate } func (t *PerformerFragment) GetEthnicity() *EthnicityEnum { if t == nil { @@ -877,9 +859,7 @@ fragment PerformerFragment on Performer { images { ... ImageFragment } - birthdate { - ... FuzzyDateFragment - } + birth_date ethnicity country eye_color @@ -898,10 +878,6 @@ fragment PerformerFragment on Performer { ... BodyModificationFragment } } -fragment FuzzyDateFragment on FuzzyDate { - date - accuracy -} fragment MeasurementsFragment on Measurements { band_size cup_size @@ -1015,9 +991,7 @@ fragment PerformerFragment on Performer { images { ... ImageFragment } - birthdate { - ... FuzzyDateFragment - } + birth_date ethnicity country eye_color @@ -1036,10 +1010,6 @@ fragment PerformerFragment on Performer { ... BodyModificationFragment } } -fragment FuzzyDateFragment on FuzzyDate { - date - accuracy -} fragment MeasurementsFragment on Measurements { band_size cup_size @@ -1153,9 +1123,7 @@ fragment PerformerFragment on Performer { images { ... ImageFragment } - birthdate { - ... FuzzyDateFragment - } + birth_date ethnicity country eye_color @@ -1174,10 +1142,6 @@ fragment PerformerFragment on Performer { ... BodyModificationFragment } } -fragment FuzzyDateFragment on FuzzyDate { - date - accuracy -} fragment MeasurementsFragment on Measurements { band_size cup_size @@ -1291,9 +1255,7 @@ fragment PerformerFragment on Performer { images { ... ImageFragment } - birthdate { - ... FuzzyDateFragment - } + birth_date ethnicity country eye_color @@ -1312,10 +1274,6 @@ fragment PerformerFragment on Performer { ... BodyModificationFragment } } -fragment FuzzyDateFragment on FuzzyDate { - date - accuracy -} fragment MeasurementsFragment on Measurements { band_size cup_size @@ -1368,9 +1326,7 @@ fragment PerformerFragment on Performer { images { ... ImageFragment } - birthdate { - ... FuzzyDateFragment - } + birth_date ethnicity country eye_color @@ -1399,10 +1355,6 @@ fragment ImageFragment on Image { width height } -fragment FuzzyDateFragment on FuzzyDate { - date - accuracy -} fragment MeasurementsFragment on Measurements { band_size cup_size @@ -1450,9 +1402,7 @@ fragment PerformerFragment on Performer { images { ... ImageFragment } - birthdate { - ... FuzzyDateFragment - } + birth_date ethnicity country eye_color @@ -1481,10 +1431,6 @@ fragment ImageFragment on Image { width height } -fragment FuzzyDateFragment on FuzzyDate { - date - accuracy -} fragment MeasurementsFragment on Measurements { band_size cup_size @@ -1593,9 +1539,7 @@ fragment PerformerFragment on Performer { images { ... ImageFragment } - birthdate { - ... FuzzyDateFragment - } + birth_date ethnicity country eye_color @@ -1614,10 +1558,6 @@ fragment PerformerFragment on Performer { ... BodyModificationFragment } } -fragment FuzzyDateFragment on FuzzyDate { - date - accuracy -} fragment MeasurementsFragment on Measurements { band_size cup_size diff --git a/pkg/scraper/stashbox/stash_box.go b/pkg/scraper/stashbox/stash_box.go index 44fd59b69..670ec9598 100644 --- a/pkg/scraper/stashbox/stash_box.go +++ b/pkg/scraper/stashbox/stash_box.go @@ -648,9 +648,8 @@ func performerFragmentToScrapedPerformer(p graphql.PerformerFragment) *models.Sc sp.Height = &hs } - if p.Birthdate != nil { - b := p.Birthdate.Date - sp.Birthdate = &b + if p.BirthDate != nil { + sp.Birthdate = padFuzzyDate(p.BirthDate) } if p.Gender != nil { @@ -1356,3 +1355,20 @@ func (c *Client) submitDraft(ctx context.Context, query string, input interface{ return err } + +func padFuzzyDate(date *string) *string { + if date == nil { + return nil + } + + var paddedDate string + switch len(*date) { + case 10: + paddedDate = *date + case 7: + paddedDate = fmt.Sprintf("%s-01", *date) + case 4: + paddedDate = fmt.Sprintf("%s-01-01", *date) + } + return &paddedDate +}