From 1a332828e2c24b3c85717b8a9eb463e2fd7c07d2 Mon Sep 17 00:00:00 2001 From: pops64 Date: Fri, 17 Jan 2025 05:36:01 -0500 Subject: [PATCH 01/27] scraper: Fix for VRSpy Titles not being scraped (#1883) Title was no longer being found fixed. Also removed the VR Porn Scene suffix being applied to recent scenes --- pkg/scrape/vrspy.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/scrape/vrspy.go b/pkg/scrape/vrspy.go index b81baf52e..659d3a641 100644 --- a/pkg/scrape/vrspy.go +++ b/pkg/scrape/vrspy.go @@ -62,7 +62,8 @@ func VRSpy(wg *models.ScrapeWG, updateSite bool, knownScenes []string, out chan< sc.SceneID = scraperID + "-" + sc.SiteID - sc.Title = e.ChildText(`.video-content .header-container .video-title .section-header-container`) + sc.Title = strings.TrimSuffix(strings.TrimSuffix(e.ChildText(`div.video-title .section-header-container`), " Scene"), " - VR Porn") + sc.Synopsis = e.ChildText(`.video-description-container`) sc.Tags = e.ChildTexts(`.video-categories .chip`) From e98f7fee62ded16391cb503d3fae0cd975b37112 Mon Sep 17 00:00:00 2001 From: pops64 Date: Fri, 17 Jan 2025 05:41:35 -0500 Subject: [PATCH 02/27] scraper: Fix KinkVR scraper (#1875) * Final KinkVR working File names are dropped upon migration. Appears to have to good means for the future of guessing the filename. Do not need migration code. Due to the change in the URL all scenes are resraped on next update and all scraped data is replaced with its new format * Bug fix Bootstrap sites use a trailing slash. I remove this for internal logic and this is what is saved. But when comparing new scenes to what has been search the trailing slash caused this logic to never go true. * Spin off kinkvr completely After some digging it appears kinkvr was sold and not a website redesign by badoink. Now completly separates kinkvr from badoink * Favicon Update * Minor Code Clean up Missed some remnants of badoinks colab with kink. Also removed scraper for actor has no info for actor is on kink just links to other scenes --- pkg/models/model_external_reference.go | 2 - pkg/scrape/badoink.go | 9 +- pkg/scrape/kinkvr.go | 126 +++++++++++++++++++++++++ 3 files changed, 128 insertions(+), 9 deletions(-) create mode 100644 pkg/scrape/kinkvr.go diff --git a/pkg/models/model_external_reference.go b/pkg/models/model_external_reference.go index 314ef6651..e12ce8270 100644 --- a/pkg/models/model_external_reference.go +++ b/pkg/models/model_external_reference.go @@ -710,8 +710,6 @@ func (scrapeRules ActorScraperConfig) buildGenericActorScraperRules() { scrapeRules.GenericActorScrapingConfig["vrcosplayx scrape"] = siteDetails siteDetails.Domain = "18vr.com" scrapeRules.GenericActorScrapingConfig["18vr scrape"] = siteDetails - siteDetails.Domain = "kinkvr.com" - scrapeRules.GenericActorScrapingConfig["kinkvr scrape"] = siteDetails siteDetails = GenericScraperRuleSet{} siteDetails.Domain = "darkroomvr.com" diff --git a/pkg/scrape/badoink.go b/pkg/scrape/badoink.go index 6c18805bf..fde652299 100644 --- a/pkg/scrape/badoink.go +++ b/pkg/scrape/badoink.go @@ -26,8 +26,8 @@ func BadoinkSite(wg *models.ScrapeWG, updateSite bool, knownScenes []string, out defer wg.Done() logScrapeStart(scraperID, siteID) - sceneCollector := createCollector("badoinkvr.com", "babevr.com", "vrcosplayx.com", "18vr.com", "kinkvr.com") - siteCollector := createCollector("badoinkvr.com", "babevr.com", "vrcosplayx.com", "18vr.com", "kinkvr.com") + sceneCollector := createCollector("badoinkvr.com", "babevr.com", "vrcosplayx.com", "18vr.com") + siteCollector := createCollector("badoinkvr.com", "babevr.com", "vrcosplayx.com", "18vr.com") trailerCollector := cloneCollector(sceneCollector) commonDb, _ := models.GetCommonDB() @@ -283,14 +283,9 @@ func BabeVR(wg *models.ScrapeWG, updateSite bool, knownScenes []string, out chan return BadoinkSite(wg, updateSite, knownScenes, out, singleSceneURL, "babevr", "BabeVR", "https://babevr.com/vrpornvideos?order=newest", singeScrapeAdditionalInfo, limitScraping) } -func KinkVR(wg *models.ScrapeWG, updateSite bool, knownScenes []string, out chan<- models.ScrapedScene, singleSceneURL string, singeScrapeAdditionalInfo string, limitScraping bool) error { - return BadoinkSite(wg, updateSite, knownScenes, out, singleSceneURL, "kinkvr", "KinkVR", "https://kinkvr.com/bdsm-vr-videos?order=newest", singeScrapeAdditionalInfo, limitScraping) -} - func init() { registerScraper("badoinkvr", "BadoinkVR", "https://pbs.twimg.com/profile_images/618071358933610497/QaMV81nF_200x200.png", "badoinkvr.com", BadoinkVR) registerScraper("18vr", "18VR", "https://pbs.twimg.com/profile_images/989481761783545856/w-iKqgqV_200x200.jpg", "18vr.com", B18VR) registerScraper("vrcosplayx", "VRCosplayX", "https://pbs.twimg.com/profile_images/900675974039298049/ofMytpkQ_200x200.jpg", "vrcosplayx.com", VRCosplayX) registerScraper("babevr", "BabeVR", "https://babevr.com/icons/babevr/apple-touch-icon.png", "babevr.com", BabeVR) - registerScraper("kinkvr", "KinkVR", "https://kinkvr.com/icons/kinkvr/apple-touch-icon.png", "kinkvr.com", KinkVR) } diff --git a/pkg/scrape/kinkvr.go b/pkg/scrape/kinkvr.go new file mode 100644 index 000000000..2ea2dfc74 --- /dev/null +++ b/pkg/scrape/kinkvr.go @@ -0,0 +1,126 @@ +package scrape + +import ( + "strings" + + "github.com/gocolly/colly/v2" + "github.com/mozillazg/go-slugify" + "github.com/nleeper/goment" + "github.com/thoas/go-funk" + "github.com/xbapps/xbvr/pkg/models" +) + +func KinkVR(wg *models.ScrapeWG, updateSite bool, knownScenes []string, out chan<- models.ScrapedScene, singleSceneURL string, singeScrapeAdditionalInfo string, limitScraping bool) error { + defer wg.Done() + scraperID := "kinkvr" + siteID := "KinkVR" + logScrapeStart(scraperID, siteID) + + sceneCollector := createCollector("kinkvr.com") + siteCollector := createCollector("kinkvr.com") + + // These cookies are needed for age verification. + siteCollector.OnRequest(func(r *colly.Request) { + r.Headers.Set("Cookie", "agreedToDisclaimer=true") + }) + + sceneCollector.OnRequest(func(r *colly.Request) { + r.Headers.Set("Cookie", "agreedToDisclaimer=true") + }) + + sceneCollector.OnHTML(`html`, func(e *colly.HTMLElement) { + sc := models.ScrapedScene{} + sc.ScraperID = scraperID + sc.SceneType = "VR" + sc.Studio = "Badoink" + sc.Site = siteID + sc.SiteID = "" + sc.HomepageURL = e.Request.URL.String() + + // Cover Url + coverURL := e.ChildAttr("div#povVideoContainer dl8-video", "poster") + sc.Covers = append(sc.Covers, coverURL) + + // Gallery + e.ForEach(`div.owl-carousel div.item`, func(id int, e *colly.HTMLElement) { + sc.Gallery = append(sc.Gallery, e.ChildAttr("img", "src")) + }) + + // Incase we scrape a single scene use one of the gallery images for the cover + if singleSceneURL != "" { + sc.Covers = append(sc.Covers, sc.Gallery[0]) + } + + // Cast + sc.ActorDetails = make(map[string]models.ActorDetails) + e.ForEach(`table.video-description-list tbody`, func(id int, e *colly.HTMLElement) { + // Cast + e.ForEach(`tr:nth-child(1) a`, func(id int, e *colly.HTMLElement) { + if strings.TrimSpace(e.Text) != "" { + sc.Cast = append(sc.Cast, strings.TrimSpace(e.Text)) + sc.ActorDetails[strings.TrimSpace(e.Text)] = models.ActorDetails{ProfileUrl: e.Request.AbsoluteURL(e.Attr("href"))} + } + }) + + // Tags + e.ForEach(`tr:nth-child(2) a`, func(id int, e *colly.HTMLElement) { + tag := strings.TrimSpace(e.Text) + sc.Tags = append(sc.Tags, tag) + }) + + // Date + tmpDate, _ := goment.New(strings.TrimSpace(e.ChildText(`tr:nth-child(3) td:last-child`)), "MMMM DD, YYYY") + sc.Released = tmpDate.Format("YYYY-MM-DD") + }) + + // Synposis + sc.Synopsis = strings.TrimSpace(e.ChildText("div.accordion-body")) + + // Title + sc.Title = e.ChildText("h1.page-title") + + // Scene ID -- Uses the ending number of the video url instead of the ID used for the directory that the video link is stored in(Maintains backwards compatibility with old scenes) + tmpUrlStr, _ := strings.CutSuffix(e.Request.URL.String(), "/") + tmp := strings.Split(tmpUrlStr, "/") + siteIDstr := strings.Split(tmp[len(tmp)-1], "-") + sc.SiteID = siteIDstr[len(siteIDstr)-1] + + if sc.SiteID != "" { + sc.SceneID = slugify.Slugify(sc.Site) + "-" + sc.SiteID + + // save only if we got a SceneID + out <- sc + } + }) + + siteCollector.OnHTML(`a.page-link[aria-label="Next"]:not(.disabled)`, func(e *colly.HTMLElement) { + if !limitScraping { + pageURL := e.Request.AbsoluteURL(e.Attr("href")) + siteCollector.Visit(pageURL) + } + }) + + siteCollector.OnHTML(`div.video-grid-view a`, func(e *colly.HTMLElement) { + sceneURL := e.Request.AbsoluteURL(e.Attr("href")) + // If scene exist in database, there's no need to scrape + if !funk.ContainsString(knownScenes, sceneURL) { + sceneCollector.Visit(sceneURL) + } + }) + + if singleSceneURL != "" { + sceneCollector.Visit(singleSceneURL) + } else { + siteCollector.Visit("https://kinkvr.com/videos/page1") + } + + if updateSite { + updateSiteLastUpdate(scraperID) + } + logScrapeFinished(scraperID, siteID) + return nil +} + +func init() { + registerScraper("kinkvr", "KinkVR", "https://static.rlcontent.com/shared/KINK/skins/web-10/branding/favicon.png", "kinkvr.com", KinkVR) +} From b2993a1db6d750b219ee81948d251065d977664a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 11:47:56 +0100 Subject: [PATCH 03/27] fix(deps): update module golang.org/x/net to v0.33.0 [security] (#1882) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 10 ++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 25b8796bf..bc663f5dd 100644 --- a/go.mod +++ b/go.mod @@ -55,11 +55,11 @@ require ( github.com/tidwall/gjson v1.17.1 github.com/x-cray/logrus-prefixed-formatter v0.5.2 github.com/xo/dburl v0.23.2 - golang.org/x/crypto v0.25.0 - golang.org/x/net v0.27.0 + golang.org/x/crypto v0.31.0 + golang.org/x/net v0.33.0 golang.org/x/oauth2 v0.21.0 - golang.org/x/sys v0.22.0 - golang.org/x/text v0.16.0 + golang.org/x/sys v0.28.0 + golang.org/x/text v0.21.0 gopkg.in/gormigrate.v1 v1.6.0 willnorris.com/go/imageproxy v0.11.3-0.20240601234520-572ad2db78ed ) @@ -148,7 +148,7 @@ require ( github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect go.etcd.io/bbolt v1.3.7 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/term v0.22.0 // indirect + golang.org/x/term v0.27.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.34.1 // indirect gopkg.in/sourcemap.v1 v1.0.5 // indirect diff --git a/go.sum b/go.sum index 481364d64..6b0d2c64a 100644 --- a/go.sum +++ b/go.sum @@ -388,6 +388,8 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= @@ -421,6 +423,8 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.2.0/go.mod h1:Cwn6afJ8jrQwYMxQDTpISoXmXW9I6qF6vDeuuoX3Ibs= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= @@ -452,6 +456,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -462,6 +468,8 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -473,6 +481,8 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From 8192d871fdb946f9e19042339272e181aa12f85f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 11:48:29 +0100 Subject: [PATCH 04/27] chore(deps): update actions/checkout digest to 11bd719 (#1856) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/lint.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1d6b29bf1..fe905887e 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -23,7 +23,7 @@ jobs: node-version: '12' - name: Checkout code - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - name: Check code formatting using gofmt uses: Jerome1337/gofmt-action@v1.0.5 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5b7ad8db1..87e235ebf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: submodules: 'true' fetch-depth: 0 From ee90a38953fc77490bc149a519cc3f81dc606358 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 11:49:19 +0100 Subject: [PATCH 05/27] chore(deps): bump micromatch from 4.0.4 to 4.0.8 (#1838) Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.4 to 4.0.8. - [Release notes](https://github.com/micromatch/micromatch/releases) - [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/micromatch/compare/4.0.4...4.0.8) --- updated-dependencies: - dependency-name: micromatch dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/yarn.lock b/yarn.lock index 963867252..7a5600e50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2786,7 +2786,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: +braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -5827,20 +5827,12 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^4.0.2: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0: @@ -6473,7 +6465,7 @@ picocolors@^1.0.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.1: version "2.2.3" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== From 7a4628f92984cacd534a9723722155603c6634c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 11:50:03 +0100 Subject: [PATCH 06/27] chore(deps): bump http-proxy-middleware from 2.0.6 to 2.0.7 (#1871) Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.7. - [Release notes](https://github.com/chimurai/http-proxy-middleware/releases) - [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.7/CHANGELOG.md) - [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7) --- updated-dependencies: - dependency-name: http-proxy-middleware dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7a5600e50..7c76e7886 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2920,12 +2920,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335: - version "1.0.30001669" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz" - integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== - -caniuse-lite@^1.0.30001640: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001640: version "1.0.30001669" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz" integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== @@ -4995,9 +4990,9 @@ http-parser-js@>=0.5.1: integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz#915f236d92ae98ef48278a95dedf17e991936ec6" + integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" From 9eacf9b7248f2aa38ff31b89b34e3c49eb6689fe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 11:50:26 +0100 Subject: [PATCH 07/27] chore(deps): update dependency eslint to v8.57.1 (#1859) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 508c8f3c3..abd35fcdc 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@vue/eslint-config-standard": "8.0.1", "buffer": "6.0.3", "concurrently": "7.6.0", - "eslint": "8.57.0", + "eslint": "8.57.1", "eslint-plugin-import": "2.29.1", "eslint-plugin-n": "14.0.0", "eslint-plugin-promise": "6.4.0", diff --git a/yarn.lock b/yarn.lock index 7c76e7886..8d6b81cd0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1454,10 +1454,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== "@fortawesome/fontawesome-common-types@^0.2.36": version "0.2.36" @@ -1488,12 +1488,12 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" + "@humanwhocodes/object-schema" "^2.0.3" debug "^4.3.1" minimatch "^3.0.5" @@ -1502,10 +1502,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" - integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" @@ -4147,16 +4147,16 @@ eslint-webpack-plugin@^3.1.0: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@8.57.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== +eslint@8.57.1: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" "@ungap/structured-clone" "^1.2.0" From 18ddb58648ef18d6085fe237d39a0c02c636f96f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 11:51:19 +0100 Subject: [PATCH 08/27] chore(deps): update dependency eslint-plugin-n to v17 (#1793) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 89 ++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 77 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index abd35fcdc..6ab04f278 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "concurrently": "7.6.0", "eslint": "8.57.1", "eslint-plugin-import": "2.29.1", - "eslint-plugin-n": "14.0.0", + "eslint-plugin-n": "17.15.1", "eslint-plugin-promise": "6.4.0", "eslint-plugin-standard": "4.1.0", "eslint-plugin-vue": "9.27.0", diff --git a/yarn.lock b/yarn.lock index 8d6b81cd0..1fa97f244 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1420,6 +1420,13 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + dependencies: + eslint-visitor-keys "^3.4.3" + "@eslint-community/eslint-utils@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz#a831e6e468b4b2b5ae42bf658bea015bf10bc518" @@ -1434,6 +1441,11 @@ dependencies: eslint-visitor-keys "^3.3.0" +"@eslint-community/regexpp@^4.11.0": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + "@eslint-community/regexpp@^4.6.1": version "4.6.2" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" @@ -3925,6 +3937,13 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +eslint-compat-utils@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#7fc92b776d185a70c4070d03fd26fde3d59652e4" + integrity sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q== + dependencies: + semver "^7.5.4" + eslint-config-standard@^17.0.0: version "17.0.0" resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz#fd5b6cf1dcf6ba8d29f200c461de2e19069888cf" @@ -3970,6 +3989,15 @@ eslint-module-utils@^2.8.0: dependencies: debug "^3.2.7" +eslint-plugin-es-x@^7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#a207aa08da37a7923f2a9599e6d3eb73f3f92b74" + integrity sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ== + dependencies: + "@eslint-community/eslint-utils" "^4.1.2" + "@eslint-community/regexpp" "^4.11.0" + eslint-compat-utils "^0.5.1" + eslint-plugin-es@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz#f0822f0c18a535a97c3e714e89f88586a7641ec9" @@ -4020,18 +4048,19 @@ eslint-plugin-import@^2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-n@14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-14.0.0.tgz#aa7944f5b1fd69cf64ecb1ddd1a4762bb0f4f352" - integrity sha512-mNwplPLsbaKhHyA0fa/cy8j+oF6bF6l81hzBTWa6JOvPcMNAuIogk2ih6d9tYvWYzyUG+7ZFeChqbzdFpg2QrQ== +eslint-plugin-n@17.15.1: + version "17.15.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.15.1.tgz#2129bbc7b11466c3bfec57876a15aadfad3a83f2" + integrity sha512-KFw7x02hZZkBdbZEFQduRGH4VkIH4MW97ClsbAM4Y4E6KguBJWGfWG1P4HEIpZk2bkoWf0bojpnjNAhYQP8beA== dependencies: - eslint-plugin-es "^4.1.0" - eslint-utils "^3.0.0" - ignore "^5.1.1" - is-core-module "^2.3.0" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" + "@eslint-community/eslint-utils" "^4.4.1" + enhanced-resolve "^5.17.1" + eslint-plugin-es-x "^7.8.0" + get-tsconfig "^4.8.1" + globals "^15.11.0" + ignore "^5.3.2" + minimatch "^9.0.5" + semver "^7.6.3" eslint-plugin-n@^15.2.4: version "15.2.4" @@ -4682,6 +4711,13 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-tsconfig@^4.8.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" + integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== + dependencies: + resolve-pkg-maps "^1.0.0" + gl-preserve-state@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gl-preserve-state/-/gl-preserve-state-1.0.0.tgz#4ef710d62873f1470ed015c6546c37dacddd4198" @@ -4768,6 +4804,11 @@ globals@^13.24.0: dependencies: type-fest "^0.20.2" +globals@^15.11.0: + version "15.14.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f" + integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig== + globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -5048,6 +5089,11 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +ignore@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" @@ -5193,7 +5239,7 @@ is-core-module@^2.13.0: dependencies: has "^1.0.3" -is-core-module@^2.13.1, is-core-module@^2.3.0: +is-core-module@^2.13.1: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== @@ -5895,6 +5941,13 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" @@ -7088,6 +7141,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" @@ -7280,7 +7338,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -7292,6 +7350,11 @@ semver@^7.0.0, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7: dependencies: lru-cache "^6.0.0" +semver@^7.5.4, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + semver@^7.6.0: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" From f7540a45b4e841ba960aebb6d40fc6dd4b8fa95b Mon Sep 17 00:00:00 2001 From: pops64 Date: Fri, 17 Jan 2025 05:52:37 -0500 Subject: [PATCH 09/27] scraper: fix broken site icons for FuckPassVR and SexBabesVR (#1877) --- pkg/scrape/fuckpassvr.go | 2 +- pkg/scrape/sexbabesvr.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/scrape/fuckpassvr.go b/pkg/scrape/fuckpassvr.go index 34963bf86..fa42a6796 100644 --- a/pkg/scrape/fuckpassvr.go +++ b/pkg/scrape/fuckpassvr.go @@ -130,5 +130,5 @@ func FuckPassVR(wg *models.ScrapeWG, updateSite bool, knownScenes []string, out } func init() { - registerScraper("fuckpassvr-native", "FuckPassVR", "https://www.fuckpassvr.com/_nuxt/img/logo_bw.1fac7d1.png", "fuckpassvr.com", FuckPassVR) + registerScraper("fuckpassvr-native", "FuckPassVR", "https://www.fuckpassvr.com/favicon.png", "fuckpassvr.com", FuckPassVR) } diff --git a/pkg/scrape/sexbabesvr.go b/pkg/scrape/sexbabesvr.go index 864c7063f..1e353d851 100644 --- a/pkg/scrape/sexbabesvr.go +++ b/pkg/scrape/sexbabesvr.go @@ -141,5 +141,5 @@ func SexBabesVR(wg *models.ScrapeWG, updateSite bool, knownScenes []string, out } func init() { - registerScraper("sexbabesvr", "SexBabesVR", "https://sexbabesvr.com/assets/front/assets/logo.png", "sexbabesvr.com", SexBabesVR) + registerScraper("sexbabesvr", "SexBabesVR", "https://sexbabesvr.com/static/images/favicons/favicon-32x32.png", "sexbabesvr.com", SexBabesVR) } From 480e07faef0c8a7f1c757678126fd86ed279cc21 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 11:53:28 +0100 Subject: [PATCH 10/27] chore(deps): update dependency eslint to v9 (#1792) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 297 ++++++++++++++++++++++++++++----------------------- 2 files changed, 167 insertions(+), 132 deletions(-) diff --git a/package.json b/package.json index 6ab04f278..dffd1a0ab 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@vue/eslint-config-standard": "8.0.1", "buffer": "6.0.3", "concurrently": "7.6.0", - "eslint": "8.57.1", + "eslint": "9.18.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-n": "17.15.1", "eslint-plugin-promise": "6.4.0", diff --git a/yarn.lock b/yarn.lock index 1fa97f244..7992879f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1441,35 +1441,59 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.11.0": +"@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint-community/regexpp@^4.6.1": - version "4.6.2" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" - integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== +"@eslint/config-array@^0.19.0": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" + integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== + dependencies: + "@eslint/object-schema" "^2.1.5" + debug "^4.3.1" + minimatch "^3.1.2" -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint/core@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.10.0.tgz#23727063c21b335f752dbb3a16450f6f9cbc9091" + integrity sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" + integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" + espree "^10.0.1" + globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== +"@eslint/js@9.18.0": + version "9.18.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.18.0.tgz#3356f85d18ed3627ab107790b53caf7e1e3d1e84" + integrity sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA== + +"@eslint/object-schema@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" + integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== + +"@eslint/plugin-kit@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz#ee07372035539e7847ef834e3f5e7b79f09e3a81" + integrity sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A== + dependencies: + "@eslint/core" "^0.10.0" + levn "^0.4.1" "@fortawesome/fontawesome-common-types@^0.2.36": version "0.2.36" @@ -1500,24 +1524,33 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" @@ -1660,7 +1693,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -1753,6 +1786,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": version "4.17.19" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d" @@ -1799,6 +1837,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json-schema@^7.0.5": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" @@ -1886,11 +1929,6 @@ dependencies: "@types/node" "*" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - "@videojs/http-streaming@2.16.2": version "2.16.2" resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-2.16.2.tgz#a9be925b4e368a41dbd67d49c4f566715169b84b" @@ -2402,11 +2440,16 @@ acorn-walk@^8.0.0, acorn-walk@^8.0.2: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.0.4, acorn@^8.0.5, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.0.4, acorn@^8.0.5, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +acorn@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + address@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" @@ -3322,7 +3365,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3331,6 +3374,15 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-js@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" @@ -3620,13 +3672,6 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -4113,7 +4158,7 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1, eslint-scope@^7.2.2: +eslint-scope@^7.1.1: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== @@ -4121,6 +4166,14 @@ eslint-scope@^7.1.1, eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + eslint-utils@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -4155,16 +4208,16 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== - eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + eslint-webpack-plugin@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" @@ -4176,49 +4229,45 @@ eslint-webpack-plugin@^3.1.0: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@8.57.1: - version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== +eslint@9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.18.0.tgz#c95b24de1183e865de19f607fda6518b54827850" + integrity sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.10.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.18.0" + "@eslint/plugin-kit" "^0.2.5" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.4.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.6" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" esniff@^2.0.1: version "2.0.1" @@ -4230,6 +4279,15 @@ esniff@^2.0.1: event-emitter "^0.3.5" type "^2.7.2" +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== + dependencies: + acorn "^8.14.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.0" + espree@^9.3.1: version "9.3.2" resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" @@ -4239,24 +4297,6 @@ espree@^9.3.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" -espree@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.0.tgz#80869754b1c6560f32e3b6929194a3fe07c5b82f" - integrity sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -4269,10 +4309,10 @@ esquery@^1.4.0: dependencies: estraverse "^5.1.0" -esquery@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1" - integrity sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng== +esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -4465,12 +4505,12 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" fill-range@^7.1.1: version "7.1.1" @@ -4524,23 +4564,23 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" + flatted "^3.2.9" + keyv "^4.5.4" flat@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== +flatted@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" + integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== follow-redirects@^1.0.0: version "1.15.6" @@ -4790,13 +4830,6 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - dependencies: - type-fest "^0.20.2" - globals@^13.24.0: version "13.24.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" @@ -4804,6 +4837,11 @@ globals@^13.24.0: dependencies: type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + globals@^15.11.0: version "15.14.0" resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f" @@ -4840,11 +4878,6 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -5331,11 +5364,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" @@ -5533,6 +5561,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -5589,6 +5622,13 @@ keycode@^2.2.0: resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" integrity sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ= +keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -5927,7 +5967,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -7866,11 +7906,6 @@ terser@^5.26.0: commander "^2.20.0" source-map-support "~0.5.20" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" From 505172b1863bfe9c302203de94b637346e7e243d Mon Sep 17 00:00:00 2001 From: toshski <104477758+toshski@users.noreply.github.com> Date: Fri, 17 Jan 2025 23:55:14 +1300 Subject: [PATCH 11/27] feat: Restore bundles from URL (#1892) * Enable Bundle Restore from Url, eg from myfiles * Add Downloading log message --- pkg/tasks/content.go | 34 +++++++++++++- .../sections/OptionsSceneDataImportExport.vue | 44 ++++++++++++++++--- 2 files changed, 71 insertions(+), 7 deletions(-) diff --git a/pkg/tasks/content.go b/pkg/tasks/content.go index d9cdf4e64..e8a2a9a26 100644 --- a/pkg/tasks/content.go +++ b/pkg/tasks/content.go @@ -4,6 +4,8 @@ import ( "encoding/json" "errors" "fmt" + "io/ioutil" + "net/http" "os" "path/filepath" "strconv" @@ -93,6 +95,7 @@ type RequestRestore struct { InclActorActions bool `json:"inclActorActions"` InclConfig bool `json:"inclConfig"` ExtRefSubset string `json:"extRefSubset"` + BundleUrl string `json:"bundleUrl"` } func CleanTags() { @@ -812,6 +815,13 @@ func BackupBundle(inclAllSites bool, onlyIncludeOfficalSites bool, inclScenes bo } func RestoreBundle(request RequestRestore) { + tlog := log.WithField("task", "scrape") + if request.BundleUrl != "" { + tlog.Infof("Downloading data from %s", request.BundleUrl) + data, _ := downloadBundle(request.BundleUrl) + request.UploadData = data + } + if strings.Contains(request.UploadData, "\"bundleVersion\":\"1\"") { ImportBundle(request.UploadData) return @@ -820,8 +830,6 @@ func RestoreBundle(request RequestRestore) { models.CreateLock("scrape") defer models.RemoveLock("scrape") - tlog := log.WithField("task", "scrape") - var json = jsoniter.Config{ EscapeHTML: true, SortMapKeys: true, @@ -1733,3 +1741,25 @@ func UpdateSceneStatus(db *gorm.DB) { } } } + +func downloadBundle(url string) (string, error) { + // Get the response + resp, err := http.Get(url) + if err != nil { + return "", err + } + defer resp.Body.Close() + + // Check for a successful response + if resp.StatusCode != http.StatusOK { + return "", err + } + + // Read the response body + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", err + } + + return string(body), nil +} diff --git a/ui/src/views/options/sections/OptionsSceneDataImportExport.vue b/ui/src/views/options/sections/OptionsSceneDataImportExport.vue index df6836d24..03e05db3e 100644 --- a/ui/src/views/options/sections/OptionsSceneDataImportExport.vue +++ b/ui/src/views/options/sections/OptionsSceneDataImportExport.vue @@ -178,6 +178,11 @@
+ +

{{ fileBundleSource ? 'Import bundle from file' : 'Import bundle from url' }}

+
@@ -185,7 +190,7 @@
- @@ -200,6 +205,14 @@ + + + + + Import + + @@ -221,7 +234,7 @@ - + @@ -250,6 +263,9 @@ export default { includeActors: true, inclActorActions: true, overwrite: true, + fileBundleSource: true, + bundleUrl: '', + urlError: "", allSites: "true", onlyIncludeOfficalSites: false, currentPlaylist: '0', @@ -322,14 +338,21 @@ export default { }, methods: { restoreContent () { - if (this.uploadData !== '') { + if (this.uploadData !== '' || this.bundleUrl!='') { // put up a starting msg, as large files can cause it to appear to hang + let data = '{}' + let url='' + if (this.fileBundleSource) { + data=this.uploadData + }else{ + url=this.bundleUrl + } this.$store.state.messages.lastScrapeMessage = 'Starting restore' ky.post('/api/task/bundle/restore', { json: { allSites: this.allSites == "true", onlyIncludeOfficalSites: this.onlyIncludeOfficalSites, inclScenes: this.includeScenes, inclHistory: this.includeHistory, inclLinks: this.includeFileLinks, inclCuepoints: this.includeCuepoints, inclActions: this.includeActions, inclPlaylists: this.includePlaylists, inclActorAkas: this.includeActorAkas, inclTagGroups: this.includeTagGroups, - inclVolumes: this.includeVolumes, inclExtRefs: this.includeExternalReferences, inclSites: this.includeSites, inclActors: this.includeActors,inclActorActions: this.inclActorActions, - inclConfig: this.includeConfig, extRefSubset: this.extRefSubset, overwrite: this.overwrite, uploadData: this.uploadData } + inclVolumes: this.includeVolumes, inclExtRefs: this.includeExternalReferences, inclSites: this.includeSites, inclSqlCmds: this.includeSqlCommands, inclActors: this.includeActors,inclActorActions: this.inclActorActions, + inclConfig: this.includeConfig, extRefSubset: this.extRefSubset, overwrite: this.overwrite, uploadData: data, bundleUrl: url } }) this.file = null } @@ -364,6 +387,17 @@ export default { this.includeExternalReferences = !this.includeExternalReferences this.includeConfig=!this.includeConfig }, + validateUrl() { + // Simple URL validation regex + + try { + const decodedUrl = decodeURIComponent(this.bundleUrl); + const url = new URL(decodedUrl); + this.urlError = ''; +} catch (error) { + this.urlError = 'Please enter a valid URL.'; +} + }, } } From 8c42ef31fe7575318b0f53dce455c20e1e8802e7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 11:55:31 +0100 Subject: [PATCH 12/27] chore(deps): update dependency eslint-plugin-standard to v5 (#1794) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index dffd1a0ab..39bfcc0a9 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "eslint-plugin-import": "2.29.1", "eslint-plugin-n": "17.15.1", "eslint-plugin-promise": "6.4.0", - "eslint-plugin-standard": "4.1.0", + "eslint-plugin-standard": "5.0.0", "eslint-plugin-vue": "9.27.0", "less": "4.2.0", "less-loader": "12.2.0", diff --git a/yarn.lock b/yarn.lock index 7992879f8..8c6048627 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4131,10 +4131,10 @@ eslint-plugin-promise@^6.0.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== -eslint-plugin-standard@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz#0c3bf3a67e853f8bbbc580fb4945fbf16f41b7c5" - integrity sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ== +eslint-plugin-standard@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz#c43f6925d669f177db46f095ea30be95476b1ee4" + integrity sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg== eslint-plugin-vue@9.27.0: version "9.27.0" From ee3d66bfd0903d5ae05eb1523b64f5b4564002a1 Mon Sep 17 00:00:00 2001 From: Ikko Eltociear Ashimine Date: Fri, 17 Jan 2025 20:00:27 +0900 Subject: [PATCH 13/27] docs: update README.md (#1893) tempoarary -> temporary --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fe13a6a27..35404b635 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ esc - closes details pane |------------------------|--------------|------|-------------| | `--enableLocalStorage` | | boolean |Use local folder to store application data| | `--app_dir` | XBVR_APPDIR | String|path to the application directory| -| `--cache_dir` | XBVR_CACHEDIR | String|path to the tempoarary scraper cache directory| +| `--cache_dir` | XBVR_CACHEDIR | String|path to the temporary scraper cache directory| | `--imgproxy_dir` | XBVR_IMAGEPROXYDIR | String|path to the imageproxy directory| | `--search_dir` | XBVR_SEARCHDIR | String| path to the Search Index directory| | `--preview_dir` | XBVR_VIDEOPREVIEWDIR | String| path to the Scraper Cache directory| From b54e0dafc8165244e1e7953799d48928e6818a5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:02:24 +0100 Subject: [PATCH 14/27] chore(deps): bump nanoid from 3.3.4 to 3.3.8 (#1880) Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.4 to 3.3.8. - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/3.3.4...3.3.8) --- updated-dependencies: - dependency-name: nanoid dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8c6048627..8dc5d0c72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6078,9 +6078,9 @@ mz@^2.4.0: thenify-all "^1.0.0" nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== natural-compare@^1.4.0: version "1.4.0" From 9c950cf86ba366d96357a0789aa5986be2bc2623 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:03:47 +0100 Subject: [PATCH 15/27] chore(deps): update dependency less to v4.2.1 (#1903) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 39bfcc0a9..19f9da3a4 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "eslint-plugin-promise": "6.4.0", "eslint-plugin-standard": "5.0.0", "eslint-plugin-vue": "9.27.0", - "less": "4.2.0", + "less": "4.2.1", "less-loader": "12.2.0", "sass": "1.77.8", "sass-loader": "14.2.1", diff --git a/yarn.lock b/yarn.lock index 8dc5d0c72..13368361c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5664,10 +5664,10 @@ less-loader@12.2.0: resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-12.2.0.tgz#e1e94522f6abe9e064ef396c29a3151bc6c1b6cc" integrity sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg== -less@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" - integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== +less@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/less/-/less-4.2.1.tgz#fe4c9848525ab44614c0cf2c00abd8d031bb619a" + integrity sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg== dependencies: copy-anything "^2.0.1" parse-node-version "^1.0.1" From 1bcff559ad9942aa9ea1bd02637cee58d6077a0e Mon Sep 17 00:00:00 2001 From: toshski <104477758+toshski@users.noreply.github.com> Date: Sat, 18 Jan 2025 00:04:56 +1300 Subject: [PATCH 16/27] feat: Implement Heresphere needsMediaSource flag (#1890) * Implement the NeedsMediaSource HSP Field for trailers. * Remove debug message from log --- pkg/api/heresphere.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pkg/api/heresphere.go b/pkg/api/heresphere.go index 4037393b5..486cc0eb3 100644 --- a/pkg/api/heresphere.go +++ b/pkg/api/heresphere.go @@ -102,13 +102,14 @@ type HereSphereAlphaPackedSettings struct { } type HereSphereAuthRequest struct { - Username string `json:"username"` - Password string `json:"password"` - Rating *float64 `json:"rating"` - IsFavorite *bool `json:"isFavorite"` - Hsp *string `json:"hsp"` - Tags *[]HeresphereTag `json:"tags"` - DeleteFiles *bool `json:"deleteFile"` + Username string `json:"username"` + Password string `json:"password"` + Rating *float64 `json:"rating"` + IsFavorite *bool `json:"isFavorite"` + Hsp *string `json:"hsp"` + Tags *[]HeresphereTag `json:"tags"` + DeleteFiles *bool `json:"deleteFile"` + NeedsMediaSource optional.Bool `json:"needsMediaSource"` } var RequestBody []byte @@ -353,7 +354,7 @@ func (i HeresphereResource) getHeresphereScene(req *restful.Request, resp *restf videoLength = file.VideoDuration } - if len(videoFiles) == 0 && config.Config.Web.SceneTrailerlist { + if len(videoFiles) == 0 && config.Config.Web.SceneTrailerlist && requestData.NeedsMediaSource.OrElse(true) { switch scene.TrailerType { case "heresphere": heresphereScene := LoadHeresphereScene(scene.TrailerSource) From a3a8db44d7787fd154cb7b663bf885059f538444 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:05:54 +0100 Subject: [PATCH 17/27] fix(deps): update module github.com/mattn/go-sqlite3 to v1.14.24 (#1906) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index bc663f5dd..7dc3a09c1 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/lucasb-eyer/go-colorful v1.2.0 github.com/marcsauter/single v0.0.0-20201009143647-9f8d81240be2 github.com/markphelps/optional v0.11.0 - github.com/mattn/go-sqlite3 v1.14.22 + github.com/mattn/go-sqlite3 v1.14.24 github.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2 github.com/mholt/archiver v3.1.1+incompatible github.com/mozillazg/go-slugify v0.2.0 diff --git a/go.sum b/go.sum index 6b0d2c64a..decdc0f59 100644 --- a/go.sum +++ b/go.sum @@ -269,6 +269,8 @@ github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsO github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= +github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2 h1:YocNLcTBdEdvY3iDK6jfWXvEaM5OCKkjxPKoJRdB3Gg= github.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2/go.mod h1:76rfSfYPWj01Z85hUf/ituArm797mNKcvINh1OlsZKo= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= From b01308ca63ecde382961ccdfe13ae64c35d96aec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:06:43 +0100 Subject: [PATCH 18/27] chore(deps): update dependency eslint-plugin-promise to v6.6.0 (#1801) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 19f9da3a4..532ab391c 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "eslint": "9.18.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-n": "17.15.1", - "eslint-plugin-promise": "6.4.0", + "eslint-plugin-promise": "6.6.0", "eslint-plugin-standard": "5.0.0", "eslint-plugin-vue": "9.27.0", "less": "4.2.1", diff --git a/yarn.lock b/yarn.lock index 13368361c..25d218e09 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4121,10 +4121,10 @@ eslint-plugin-n@^15.2.4: resolve "^1.10.1" semver "^7.3.7" -eslint-plugin-promise@6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.4.0.tgz#54926d53c79541efe9cea6ac1d823a58bbed1106" - integrity sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw== +eslint-plugin-promise@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz#acd3fd7d55cead7a10f92cf698f36c0aafcd717a" + integrity sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ== eslint-plugin-promise@^6.0.0: version "6.0.0" From 34ae9f3e20ecba50f649d15ada316d094e22e159 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:06:59 +0100 Subject: [PATCH 19/27] chore(deps): bump express from 4.19.2 to 4.21.1 (#1857) Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.21.1. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/4.21.1/History.md) - [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.1) --- updated-dependencies: - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 175 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 126 insertions(+), 49 deletions(-) diff --git a/yarn.lock b/yarn.lock index 25d218e09..a34527379 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2793,10 +2793,10 @@ blueimp-gallery@^2.33.0: resolved "https://registry.yarnpkg.com/blueimp-gallery/-/blueimp-gallery-2.44.0.tgz#607908feb69897eef06e56f0d00d68e921498d45" integrity sha512-msLsEV/7hpOokS/MimNbbrIv1lFnNe/45HeLJUvHUfuJklbPRiodXYSBs0Ibwe05un5bFRryQmmzhUZBiFaZmg== -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" content-type "~1.0.5" @@ -2806,7 +2806,7 @@ body-parser@1.20.2: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.11.0" + qs "6.13.0" raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -2942,6 +2942,17 @@ call-bind@^1.0.4, call-bind@^1.0.5: get-intrinsic "^1.2.1" set-function-length "^1.1.1" +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -3287,10 +3298,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== copy-anything@^2.0.1: version "2.0.3" @@ -3598,6 +3609,15 @@ define-data-property@^1.0.1, define-data-property@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -3785,6 +3805,11 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -3900,6 +3925,18 @@ es-abstract@^1.22.1: unbox-primitive "^1.0.2" which-typed-array "^1.1.13" +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-module-lexer@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" @@ -4408,36 +4445,36 @@ execa@^5.0.0: strip-final-newline "^2.0.0" express@^4.17.3: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + version "4.21.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281" + integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.6.0" + cookie "0.7.1" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.2.0" + finalhandler "1.3.1" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.10" proxy-addr "~2.0.7" - qs "6.11.0" + qs "6.13.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.2" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -4519,13 +4556,13 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== dependencies: debug "2.6.9" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" on-finished "2.4.1" parseurl "~1.3.3" @@ -4726,6 +4763,17 @@ get-intrinsic@^1.2.2: has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -4912,6 +4960,13 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -5881,10 +5936,10 @@ memfs@^3.4.3: dependencies: fs-monkey "^1.0.3" -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-source-map@^1.1.0: version "1.1.0" @@ -6528,10 +6583,10 @@ path-parse@^1.0.6, path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== path-type@^4.0.0: version "4.0.0" @@ -6954,12 +7009,12 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: - side-channel "^1.0.4" + side-channel "^1.0.6" queue-microtask@^1.2.2: version "1.2.3" @@ -7402,10 +7457,10 @@ semver@^7.6.0: dependencies: lru-cache "^6.0.0" -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" depd "2.0.0" @@ -7448,15 +7503,15 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== dependencies: - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.18.0" + send "0.19.0" set-function-length@^1.1.1: version "1.1.1" @@ -7468,6 +7523,18 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -7532,6 +7599,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" From fe7fe347c247e3941471eeb051c27e41016a738a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:07:26 +0100 Subject: [PATCH 20/27] fix(deps): update dependency videojs-hotkeys to v0.2.30 (#1904) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 532ab391c..c3c85e43e 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "date-fns": "3.6.0", "ky": "0.30.0", "pretty-bytes": "6.1.1", - "videojs-hotkeys": "0.2.28", + "videojs-hotkeys": "0.2.30", "videojs-vr": "1.8.0", "vue": "2.7.16", "vue-debounce": "4.0.1", diff --git a/yarn.lock b/yarn.lock index a34527379..08632eb58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8321,10 +8321,10 @@ videojs-font@3.2.0: resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-3.2.0.tgz#212c9d3f4e4ec3fa7345167d64316add35e92232" integrity sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA== -videojs-hotkeys@0.2.28: - version "0.2.28" - resolved "https://registry.yarnpkg.com/videojs-hotkeys/-/videojs-hotkeys-0.2.28.tgz#73d7d7b43ff62b046e6b93a0ce71c6ed5fcac105" - integrity sha512-M8rlD5OSB3EDRdbS4MRNlGKFpA2sSIStmUPvy5zfl/NigzWaN6r4wnb32rEN0v97GiQwmUfXSmqrPNrXhiFQmQ== +videojs-hotkeys@0.2.30: + version "0.2.30" + resolved "https://registry.yarnpkg.com/videojs-hotkeys/-/videojs-hotkeys-0.2.30.tgz#23a663cd2eb81ba1f070456938f0349b4327760b" + integrity sha512-G8kEQZPapoWDoEajh2Nroy4bCN1qVEul5AuzZqBS7ZCG45K7hqTYKgf1+fmYvG8m8u84sZmVMUvSWZBjaFW66Q== videojs-vr@1.8.0: version "1.8.0" From 8504091e2f2e9017b649fd9d06c9c5a92648f343 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:11:13 +0100 Subject: [PATCH 21/27] fix(deps): update module github.com/blevesearch/bleve/v2 to v2.4.4 (#1905) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 12 ++++++------ go.sum | 12 ++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 7dc3a09c1..b55dbff14 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/anacrolix/ffprobe v1.1.0 github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de github.com/avast/retry-go/v4 v4.6.0 - github.com/blevesearch/bleve/v2 v2.4.1 + github.com/blevesearch/bleve/v2 v2.4.4 github.com/bregydoc/gtranslate v0.0.0-20200913051839-1bd07f6c1fc5 github.com/creasty/defaults v1.7.0 github.com/darwayne/go-timecode v1.1.0 @@ -65,8 +65,8 @@ require ( ) require ( - github.com/blevesearch/go-faiss v1.0.19 // indirect - github.com/blevesearch/zapx/v16 v16.1.4 // indirect + github.com/blevesearch/go-faiss v1.0.24 // indirect + github.com/blevesearch/zapx/v16 v16.1.9-0.20241217210638-a0519e7caf3b // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -78,12 +78,12 @@ require ( github.com/antchfx/xpath v1.1.10 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.12.0 // indirect - github.com/blevesearch/bleve_index_api v1.1.9 + github.com/blevesearch/bleve_index_api v1.1.12 github.com/blevesearch/geo v0.1.20 // indirect github.com/blevesearch/go-porterstemmer v1.0.3 // indirect github.com/blevesearch/gtreap v0.1.1 // indirect github.com/blevesearch/mmap-go v1.0.4 // indirect - github.com/blevesearch/scorch_segment_api/v2 v2.2.14 // indirect + github.com/blevesearch/scorch_segment_api/v2 v2.2.16 // indirect github.com/blevesearch/segment v0.9.1 // indirect github.com/blevesearch/snowballstem v0.9.0 // indirect github.com/blevesearch/upsidedown_store_api v1.0.2 // indirect @@ -92,7 +92,7 @@ require ( github.com/blevesearch/zapx/v12 v12.3.10 // indirect github.com/blevesearch/zapx/v13 v13.3.10 // indirect github.com/blevesearch/zapx/v14 v14.3.10 // indirect - github.com/blevesearch/zapx/v15 v15.3.13 // indirect + github.com/blevesearch/zapx/v15 v15.3.16 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/dsnet/compress v0.0.1 // indirect github.com/fcjr/aia-transport-go v1.2.2 diff --git a/go.sum b/go.sum index decdc0f59..e6944a773 100644 --- a/go.sum +++ b/go.sum @@ -40,12 +40,18 @@ github.com/bits-and-blooms/bitset v1.12.0 h1:U/q1fAF7xXRhFCrhROzIfffYnu+dlS38vCZ github.com/bits-and-blooms/bitset v1.12.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/blevesearch/bleve/v2 v2.4.1 h1:8QWqsifq693mN3h6cSigKqkKUsUfv5hu0FDgz/4bFuA= github.com/blevesearch/bleve/v2 v2.4.1/go.mod h1:Ezmvsouspi+uVwnDzjIsCeUIT0WuBKlicP5JZnExWzo= +github.com/blevesearch/bleve/v2 v2.4.4 h1:RwwLGjUm54SwyyykbrZs4vc1qjzYic4ZnAnY9TwNl60= +github.com/blevesearch/bleve/v2 v2.4.4/go.mod h1:fa2Eo6DP7JR+dMFpQe+WiZXINKSunh7WBtlDGbolKXk= github.com/blevesearch/bleve_index_api v1.1.9 h1:Cpq0Lp3As0Gfk3+PmcoNDRKeI50C5yuFNpj0YlN/bOE= github.com/blevesearch/bleve_index_api v1.1.9/go.mod h1:PbcwjIcRmjhGbkS/lJCpfgVSMROV6TRubGGAODaK1W8= +github.com/blevesearch/bleve_index_api v1.1.12 h1:P4bw9/G/5rulOF7SJ9l4FsDoo7UFJ+5kexNy1RXfegY= +github.com/blevesearch/bleve_index_api v1.1.12/go.mod h1:PbcwjIcRmjhGbkS/lJCpfgVSMROV6TRubGGAODaK1W8= github.com/blevesearch/geo v0.1.20 h1:paaSpu2Ewh/tn5DKn/FB5SzvH0EWupxHEIwbCk/QPqM= github.com/blevesearch/geo v0.1.20/go.mod h1:DVG2QjwHNMFmjo+ZgzrIq2sfCh6rIHzy9d9d0B59I6w= github.com/blevesearch/go-faiss v1.0.19 h1:UKoP8hS7DVsVSRRloNJb4qPfe2UQ99pP4D3oXd23g2A= github.com/blevesearch/go-faiss v1.0.19/go.mod h1:jrxHrbl42X/RnDPI+wBoZU8joxxuRwedrxqswQ3xfU8= +github.com/blevesearch/go-faiss v1.0.24 h1:K79IvKjoKHdi7FdiXEsAhxpMuns0x4fM0BO93bW5jLI= +github.com/blevesearch/go-faiss v1.0.24/go.mod h1:OMGQwOaRRYxrmeNdMrXJPvVx8gBnvE5RYrr0BahNnkk= github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo= github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M= github.com/blevesearch/gtreap v0.1.1 h1:2JWigFrzDMR+42WGIN/V2p0cUvn4UP3C4Q5nmaZGW8Y= @@ -54,6 +60,8 @@ github.com/blevesearch/mmap-go v1.0.4 h1:OVhDhT5B/M1HNPpYPBKIEJaD0F3Si+CrEKULGCD github.com/blevesearch/mmap-go v1.0.4/go.mod h1:EWmEAOmdAS9z/pi/+Toxu99DnsbhG1TIxUoRmJw/pSs= github.com/blevesearch/scorch_segment_api/v2 v2.2.14 h1:fgMLMpGWR7u2TdRm7XSZVWhPvMAcdYHh25Lq1fQ6Fjo= github.com/blevesearch/scorch_segment_api/v2 v2.2.14/go.mod h1:B7+a7vfpY4NsjuTkpv/eY7RZ91Xr90VaJzT2t7upZN8= +github.com/blevesearch/scorch_segment_api/v2 v2.2.16 h1:uGvKVvG7zvSxCwcm4/ehBa9cCEuZVE+/zvrSl57QUVY= +github.com/blevesearch/scorch_segment_api/v2 v2.2.16/go.mod h1:VF5oHVbIFTu+znY1v30GjSpT5+9YFs9dV2hjvuh34F0= github.com/blevesearch/segment v0.9.1 h1:+dThDy+Lvgj5JMxhmOVlgFfkUtZV2kw49xax4+jTfSU= github.com/blevesearch/segment v0.9.1/go.mod h1:zN21iLm7+GnBHWTao9I+Au/7MBiL8pPFtJBJTsk6kQw= github.com/blevesearch/snowballstem v0.9.0 h1:lMQ189YspGP6sXvZQ4WZ+MLawfV8wOmPoD/iWeNXm8s= @@ -72,8 +80,12 @@ github.com/blevesearch/zapx/v14 v14.3.10 h1:SG6xlsL+W6YjhX5N3aEiL/2tcWh3DO75Bnz7 github.com/blevesearch/zapx/v14 v14.3.10/go.mod h1:qqyuR0u230jN1yMmE4FIAuCxmahRQEOehF78m6oTgns= github.com/blevesearch/zapx/v15 v15.3.13 h1:6EkfaZiPlAxqXz0neniq35my6S48QI94W/wyhnpDHHQ= github.com/blevesearch/zapx/v15 v15.3.13/go.mod h1:Turk/TNRKj9es7ZpKK95PS7f6D44Y7fAFy8F4LXQtGg= +github.com/blevesearch/zapx/v15 v15.3.16 h1:Ct3rv7FUJPfPk99TI/OofdC+Kpb4IdyfdMH48sb+FmE= +github.com/blevesearch/zapx/v15 v15.3.16/go.mod h1:Turk/TNRKj9es7ZpKK95PS7f6D44Y7fAFy8F4LXQtGg= github.com/blevesearch/zapx/v16 v16.1.4 h1:TBQfG77g2UUXwfjOVcEtB9pXkg6JBmGXkeZKI67+TiA= github.com/blevesearch/zapx/v16 v16.1.4/go.mod h1:+Q+Z89Iv7ewhdX2jyE6Qs/RUnN4tZuokaQ0xvTaFmx8= +github.com/blevesearch/zapx/v16 v16.1.9-0.20241217210638-a0519e7caf3b h1:ju9Az5YgrzCeK3M1QwvZIpxYhChkXp7/L0RhDYsxXoE= +github.com/blevesearch/zapx/v16 v16.1.9-0.20241217210638-a0519e7caf3b/go.mod h1:BlrYNpOu4BvVRslmIG+rLtKhmjIaRhIbG8sb9scGTwI= github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2 h1:1B/+1BcRhOMG1KH/YhNIU8OppSWk5d/NGyfRla88CuY= github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= github.com/bregydoc/gtranslate v0.0.0-20200913051839-1bd07f6c1fc5 h1:fpVDaadW68V+6vqxJHU9jrW0/z1i2MQYJZyk9w2cjpw= From 5d2fb4a9f8fd9311a7e9e983c0aa7d514f69169d Mon Sep 17 00:00:00 2001 From: pops64 Date: Fri, 17 Jan 2025 08:10:23 -0500 Subject: [PATCH 22/27] fix: Move multiple sites to Custom List to allow for them to be used as alternative sites (#1876) * Draft PS-Porn migration to Custom Due to a URL change on SLR it is needed to update the URL. Chose to migrate it to a custom scraper in addition to fix the URL. Will remove the scraper from the List if no scenes have been found for the PS-Porn scraper * Testing * Working ready for PR Some final testing to due. Adds some sites that have mains available so users may set them to alts * Go Fmt * Clean Up * Improvments Migrates any MasterSiteIds to its new custom id. * Go Fmt * Add check for existing site In case user create a custom site due to a URL change on the parent site. We shouldn't also create our own entry. This will check to ensure it doesn't exists and will only add if the new id isn't present * Clean UP * More Clean Up * Optimization * Go Fmt --- pkg/config/scraper_list.go | 74 ++++++++++++++++++++++++++++++++++++ pkg/config/scrapers.json | 29 +------------- pkg/migrations/migrations.go | 12 ++++++ pkg/scrape/vrphub.go | 4 +- 4 files changed, 89 insertions(+), 30 deletions(-) diff --git a/pkg/config/scraper_list.go b/pkg/config/scraper_list.go index 29296522d..9bfc6a2cf 100644 --- a/pkg/config/scraper_list.go +++ b/pkg/config/scraper_list.go @@ -156,3 +156,77 @@ func SetSiteId(configList *[]ScraperConfig, customId string) { } } + +func MigrateFromOfficalToCustom(id string, url string, name string, company string, avatarUrl string, customId string, suffix string) error { + + db, _ := models.GetDB() + defer db.Close() + + var scenes []models.Scene + db.Where("scraper_id = ?", id).Find(&scenes) + + if len(scenes) != 0 { + common.Log.Infoln(name + ` Scenes found migration needed`) + + // Update scene data to reflect change + db.Model(&models.Scene{}).Where("scraper_id = ?", id).Update("needs_update", true) + + // Determine the new id from the URL using the same template as the scraper list code + tmp := strings.TrimRight(url, "/") + newId := strings.ToLower(tmp[strings.LastIndex(tmp, "/")+1:]) + `-` + customId + + var scraperConfig ScraperList + scraperConfig.Load() + + // Data taken from offical scraper list + scraper := ScraperConfig{URL: url, Name: name, Company: company, AvatarUrl: avatarUrl} + + // Update any alt sites that is using the old id to the new id + updateMasterSite := func(sites []ScraperConfig) { + for idx, site := range sites { + if site.MasterSiteId == id { + sites[idx].MasterSiteId = newId + } + } + } + + updateMasterSite(scraperConfig.CustomScrapers.SlrScrapers) + updateMasterSite(scraperConfig.CustomScrapers.PovrScrapers) + updateMasterSite(scraperConfig.CustomScrapers.VrpornScrapers) + updateMasterSite(scraperConfig.CustomScrapers.VrphubScrapers) + + // Append our scraper to the the Custom Scraper list unless its new id already exists + switch customId { + case "slr": + if CheckMatchingSite(scraper, scraperConfig.CustomScrapers.SlrScrapers) == false { + scraperConfig.CustomScrapers.SlrScrapers = append(scraperConfig.CustomScrapers.SlrScrapers, scraper) + } + case "povr": + if CheckMatchingSite(scraper, scraperConfig.CustomScrapers.PovrScrapers) == false { + scraperConfig.CustomScrapers.PovrScrapers = append(scraperConfig.CustomScrapers.PovrScrapers, scraper) + } + case "vrporn": + if CheckMatchingSite(scraper, scraperConfig.CustomScrapers.VrpornScrapers) == false { + scraperConfig.CustomScrapers.VrpornScrapers = append(scraperConfig.CustomScrapers.VrpornScrapers, scraper) + } + case "vrphub": + if CheckMatchingSite(scraper, scraperConfig.CustomScrapers.VrphubScrapers) == false { + scraperConfig.CustomScrapers.VrphubScrapers = append(scraperConfig.CustomScrapers.VrphubScrapers, scraper) + } + } + + // Save the new list file + fName := filepath.Join(common.AppDir, "scrapers.json") + list, _ := json.MarshalIndent(scraperConfig, "", " ") + os.WriteFile(fName, list, 0644) + + common.Log.Infoln(name + ` migration complete. Please restart XBVR and run ` + name + ` scraper to complete migration`) + + } else { + + common.Log.Infoln(`No ` + name + ` Scenes found no migration needed. Removing DB entry`) + + } + + return db.Delete(&models.Site{ID: id}).Error +} diff --git a/pkg/config/scrapers.json b/pkg/config/scrapers.json index 299dafce6..d7f34df48 100644 --- a/pkg/config/scrapers.json +++ b/pkg/config/scrapers.json @@ -175,12 +175,6 @@ "company": "", "avatar_url": "" }, - { - "url": "https://www.sexlikereal.com/studios/fuckpassvr", - "name": "FuckPassVR", - "company": "FuckPassVR", - "avatar_url": "https://cdn-vr.sexlikereal.com/images/studio_creatives/logotypes/1/352/logo_crop_1635153994.png" - }, { "url": "https://www.sexlikereal.com/studios/heathering", "name": "Heathering", @@ -319,12 +313,6 @@ "company": "POV Central", "avatar_url": "https://mcdn.vrporn.com/files/20191125091909/POVCentralLogo.jpg" }, - { - "url": "https://www.sexlikereal.com/studios/ps-porn", - "name": "PS-Porn", - "company": "Paula Shy", - "avatar_url": "https://mcdn.vrporn.com/files/20201221090642/PS-Porn-400x400.jpg" - }, { "url": "https://www.sexlikereal.com/studios/realhotvr", "name": "RealHotVR", @@ -502,21 +490,6 @@ "avatar_url": "https://mcdn.vrporn.com/files/20200421094123/vrclubz_logo_NEW-400x400_webwhite.png" } ], - "vrphub": [ - { - "id": "vrphub-vrhush", - "url": "https://vrphub.com/category/vr-hush", - "name": "VRHush", - "company": "VRHush", - "avatar_url": "https://cdn-nexpectation.secure.yourpornpartner.com/sites/vrh/favicon/apple-touch-icon-180x180.png" - }, - { - "id": "vrphub-stripzvr", - "url": "https://vrphub.com/category/stripzvr/", - "name": "StripzVR - VRP Hub", - "company": "StripzVR", - "avatar_url": "https://www.stripzvr.com/wp-content/uploads/2018/09/cropped-favicon-192x192.jpg" - } - ] + "vrphub": [] } } diff --git a/pkg/migrations/migrations.go b/pkg/migrations/migrations.go index c2b0ce823..639d4424a 100644 --- a/pkg/migrations/migrations.go +++ b/pkg/migrations/migrations.go @@ -2072,6 +2072,18 @@ func Migrate() { return nil }, }, + { + ID: "0081-Offical-Site-Removals-With-Main-Site-Aviable", + Migrate: func(tx *gorm.DB) error { + + err := config.MigrateFromOfficalToCustom("ps-porn", "https://www.sexlikereal.com/studios/ps-porn-vr", "PS-Porn", "Paula Shy", "https://mcdn.vrporn.com/files/20201221090642/PS-Porn-400x400.jpg", "slr", "(SLR)") + err = config.MigrateFromOfficalToCustom("fuckpassvr", "https://www.sexlikereal.com/studios/fuckpassvr", "FuckPassVR", "FuckPassVR", "https://cdn-vr.sexlikereal.com/images/studio_creatives/logotypes/1/352/logo_crop_1635153994.png", "slr", "(SLR)") + err = config.MigrateFromOfficalToCustom("vrphub-vrhush", "https://vrphub.com/category/vr-hush", "VRHush", "VRHush", "https://cdn-nexpectation.secure.yourpornpartner.com/sites/vrh/favicon/apple-touch-icon-180x180.png", "vrphub", "(VRP Hub)") + err = config.MigrateFromOfficalToCustom("vrphub-stripzvr", "https://vrphub.com/category/stripzvr/", "StripzVR - VRP Hub", "StripzVR", "https://www.stripzvr.com/wp-content/uploads/2018/09/cropped-favicon-192x192.jpg", "vrphub", "(VRP Hub)") + return err + + }, + }, }) if err := m.Migrate(); err != nil { diff --git a/pkg/scrape/vrphub.go b/pkg/scrape/vrphub.go index e461fbb7e..b140f04cf 100644 --- a/pkg/scrape/vrphub.go +++ b/pkg/scrape/vrphub.go @@ -273,9 +273,9 @@ func init() { scrapers.Load() for _, scraper := range scrapers.XbvrScrapers.VrphubScrapers { switch scraper.ID { - case "vrphub-vrhush": + case "vr-hush-vrphub": addVRPHubScraper(scraper.ID, scraper.Name, scraper.Company, scraper.AvatarUrl, false, scraper.URL, vrhushCallback) - case "vrphub-stripzvr": + case "stripzvr-vrphub": addVRPHubScraper(scraper.ID, scraper.Name, scraper.Company, scraper.AvatarUrl, false, scraper.URL, stripzvrCallback) } addVRPHubScraper(scraper.ID, scraper.Name, scraper.Company, scraper.AvatarUrl, false, scraper.URL, noop) From cae623271592780a8344da12786063f5525cf920 Mon Sep 17 00:00:00 2001 From: crwxaj <52156245+crwxaj@users.noreply.github.com> Date: Fri, 17 Jan 2025 15:40:16 +0100 Subject: [PATCH 23/27] change colon to semicolons in SLR filenames (#1909) Co-authored-by: crwxaj --- pkg/scrape/slrstudios.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/scrape/slrstudios.go b/pkg/scrape/slrstudios.go index 14688e981..e4a9e8f9c 100644 --- a/pkg/scrape/slrstudios.go +++ b/pkg/scrape/slrstudios.go @@ -470,7 +470,7 @@ func appendFilenames(sc *models.ScrapedScene, siteID string, filenameRegEx *rege for _, name := range encodings.Array() { resolutions = append(resolutions, "_"+name.String()+"p_") } - baseName := "SLR_" + strings.TrimSuffix(siteID, " (SLR)") + "_" + filenameRegEx.ReplaceAllString(sc.Title, "_") + baseName := "SLR_" + strings.TrimSuffix(siteID, " (SLR)") + "_" + filenameRegEx.ReplaceAllString(strings.ReplaceAll(sc.Title, ":", ";"), "_") switch videotype { case "360°": for i := range resolutions { @@ -490,7 +490,7 @@ func appendFilenames(sc *models.ScrapedScene, siteID string, filenameRegEx *rege } } else { resolutions := []string{"_6400p_", "_4096p_", "_4000p_", "_3840p_", "_3360p_", "_3160p_", "_3072p_", "_3000p_", "_2900p_", "_2880p_", "_2700p_", "_2650p_", "_2160p_", "_1920p_", "_1440p_", "_1080p_", "_original_"} - baseName := "SLR_" + strings.TrimSuffix(siteID, " (SLR)") + "_" + filenameRegEx.ReplaceAllString(sc.Title, "_") + baseName := "SLR_" + strings.TrimSuffix(siteID, " (SLR)") + "_" + filenameRegEx.ReplaceAllString(strings.ReplaceAll(sc.Title, ":", ";"), "_") switch videotype { case "360°": // Sadly can't determine if TB or MONO so have to add both for i := range resolutions { From 8d999871fa4fb767e26ee6cb41a9ed90bc87f690 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 15:48:14 +0100 Subject: [PATCH 24/27] fix(deps): update module github.com/rs/cors to v1.11.1 (#1908) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index b55dbff14..a14037bde 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/putdotio/go-putio v1.7.1 github.com/robertkrimen/otto v0.4.0 github.com/robfig/cron/v3 v3.0.1 - github.com/rs/cors v1.11.0 + github.com/rs/cors v1.11.1 github.com/sirupsen/logrus v1.9.3 github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 github.com/thoas/go-funk v0.9.3 diff --git a/go.sum b/go.sum index e6944a773..a70cedd03 100644 --- a/go.sum +++ b/go.sum @@ -344,6 +344,8 @@ github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDN github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxTvN8n+Kvkn6TrbMyxQiuvKdEwFdR9vI= From c7fe17f6af2cc5226a2e8d0935544bd539f09f0a Mon Sep 17 00:00:00 2001 From: toshski <104477758+toshski@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:51:07 +1300 Subject: [PATCH 25/27] feat: Additional stash match rules (#1886) * Allow Stash matching on Title/ReleaseDate/StudioCode * Fix comparing titles with and/& * Add migration to update actor config json file * Handle Studio not found * Update migrations.go --------- Co-authored-by: crwxaj <52156245+crwxaj@users.noreply.github.com> --- pkg/externalreference/stashdb.go | 159 ++++++++++++++++++------- pkg/migrations/migrations.go | 53 +++++++++ pkg/models/model_external_reference.go | 152 +++++++++++------------ pkg/scrape/stashdb.go | 24 ++-- 4 files changed, 261 insertions(+), 127 deletions(-) diff --git a/pkg/externalreference/stashdb.go b/pkg/externalreference/stashdb.go index ac1e7bc23..b49d365e9 100644 --- a/pkg/externalreference/stashdb.go +++ b/pkg/externalreference/stashdb.go @@ -52,13 +52,15 @@ func ApplySceneRules() { config := models.BuildActorScraperRules() for sitename, configSite := range config.StashSceneMatching { - if len(configSite.Rules) > 0 { - if configSite.StashId == "" { - var ext models.ExternalReference - ext.FindExternalId("stashdb studio", sitename) - configSite.StashId = ext.ExternalId + for _, stashRules := range configSite { + if len(stashRules.Rules) > 0 { + if stashRules.StashId == "" { + var ext models.ExternalReference + ext.FindExternalId("stashdb studio", sitename) + stashRules.StashId = ext.ExternalId + } + matchSceneOnRules(sitename, stashRules) } - matchSceneOnRules(sitename, config) } } @@ -136,22 +138,22 @@ func simplifyUrl(url string) string { } // if an unmatched scene has a trailing number try to match on the xbvr scene_id for that studio -func matchSceneOnRules(sitename string, config models.ActorScraperConfig) { +func matchSceneOnRules(sitename string, config models.StashSiteConfig) { db, _ := models.GetDB() defer db.Close() - if config.StashSceneMatching[sitename].StashId == "" { + if config.StashId == "" { var ext models.ExternalReference ext.FindExternalId("stashdb studios", sitename) - site := config.StashSceneMatching[sitename] + site := config site.StashId = ext.ExternalId - config.StashSceneMatching[sitename] = site + config = site } - log.Infof("Matching on rules for %s Stashdb Id: %s", sitename, config.StashSceneMatching[sitename].StashId) + log.Infof("Matching on rules for %s Stashdb Id: %s", sitename, config.StashId) var stashScenes []models.ExternalReference - stashId := config.StashSceneMatching[sitename].StashId + stashId := config.StashId if stashId == "" { return } @@ -167,50 +169,117 @@ func matchSceneOnRules(sitename string, config models.ActorScraperConfig) { var data models.StashScene json.Unmarshal([]byte(stashScene.ExternalData), &data) urlLoop: - for _, url := range data.URLs { - if url.Type == "STUDIO" { - for _, rule := range config.StashSceneMatching[sitename].Rules { // for each rule on this site - re := regexp.MustCompile(rule.StashRule) - match := re.FindStringSubmatch(url.URL) - if match != nil { - var extrefSite models.ExternalReference - db.Where("external_source = ? and external_id = ?", "stashdb studio", data.Studio.ID).Find(&extrefSite) - if extrefSite.ID != 0 { - var xbvrScene models.Scene - switch rule.XbvrField { - case "scene_id": - for _, scene := range xbrScenes { - if strings.HasSuffix(scene.SceneID, match[rule.StashMatchResultPosition]) { - xbvrScene = scene - break + for _, rule := range config.Rules { // for each rule on this site + var xbvrScene models.Scene + switch rule.StashRule { + case "", "url": + for _, url := range data.URLs { + if url.Type == "STUDIO" { + re := regexp.MustCompile(rule.StashRule) + match := re.FindStringSubmatch(url.URL) + if match != nil { + var extrefSite models.ExternalReference + db.Where("external_source = ? and external_id = ?", "stashdb studio", data.Studio.ID).Find(&extrefSite) + if extrefSite.ID != 0 { + switch rule.XbvrField { + case "scene_id": + for _, scene := range xbrScenes { + if strings.HasSuffix(scene.SceneID, match[rule.StashMatchResultPosition]) { + xbvrScene = scene + break + } } - } - case "scene_url": - for _, scene := range xbrScenes { - if strings.Contains(strings.ReplaceAll(strings.ReplaceAll(strings.ToLower(scene.SceneURL), "-", " "), "_", " "), strings.ReplaceAll(strings.ReplaceAll(strings.ToLower(match[rule.StashMatchResultPosition]), "-", " "), "_", " ")) { - xbvrScene = scene - break + case "scene_url": + for _, scene := range xbrScenes { + if strings.Contains(strings.ReplaceAll(strings.ReplaceAll(strings.ToLower(scene.SceneURL), "-", " "), "_", " "), strings.ReplaceAll(strings.ReplaceAll(strings.ToLower(match[rule.StashMatchResultPosition]), "-", " "), "_", " ")) { + xbvrScene = scene + break + } } + default: + log.Errorf("Unkown xbvr field %s", rule.XbvrField) } - default: - log.Errorf("Unkown xbvr field %s", rule.XbvrField) - } - - if xbvrScene.ID != 0 { - xbvrLink := models.ExternalReferenceLink{InternalTable: "scenes", InternalDbId: xbvrScene.ID, InternalNameId: xbvrScene.SceneID, - ExternalReferenceID: stashScene.ID, ExternalSource: stashScene.ExternalSource, ExternalId: stashScene.ExternalId, MatchType: 20} - stashScene.XbvrLinks = append(stashScene.XbvrLinks, xbvrLink) - stashScene.Save() - matchPerformerName(data, xbvrScene, 20) - break urlLoop } } } } + case "title/date": + for _, scene := range xbrScenes { + if simplystring(data.Title) == simplystring(scene.Title) && data.Date == scene.ReleaseDateText { + xbvrLink := models.ExternalReferenceLink{InternalTable: "scenes", InternalDbId: scene.ID, InternalNameId: scene.SceneID, + ExternalReferenceID: stashScene.ID, ExternalSource: stashScene.ExternalSource, ExternalId: stashScene.ExternalId, MatchType: 20} + stashScene.XbvrLinks = append(stashScene.XbvrLinks, xbvrLink) + stashScene.Save() + matchPerformerName(data, scene, 20) + break urlLoop + } + } + case "title": + var match models.Scene + matchCnt := 0 + for _, scene := range xbrScenes { + if simplystring(data.Title) == simplystring(scene.Title) { + match = scene + matchCnt += 1 + } + } + //check only one match + if matchCnt == 1 { + xbvrScene = match + break + } + case "studio_code": + matchCnt := 0 + for _, scene := range xbrScenes { + if data.Code != "" && strings.Contains(scene.SceneID, data.Code) { + xbvrScene = scene + matchCnt += 1 + } + } } + + if xbvrScene.ID != 0 { + xbvrLink := models.ExternalReferenceLink{InternalTable: "scenes", InternalDbId: xbvrScene.ID, InternalNameId: xbvrScene.SceneID, + ExternalReferenceID: stashScene.ID, ExternalSource: stashScene.ExternalSource, ExternalId: stashScene.ExternalId, MatchType: 20} + stashScene.XbvrLinks = append(stashScene.XbvrLinks, xbvrLink) + stashScene.Save() + matchPerformerName(data, xbvrScene, 20) + break urlLoop + } + } } +} +func simplystring(str string) string { + str = strings.TrimSpace(str) + str = strings.ReplaceAll(str, " and ", "&") + str = strings.ReplaceAll(str, " ", "") + str = strings.ReplaceAll(str, ".", "") + str = strings.ReplaceAll(str, ":", "") + str = strings.ReplaceAll(str, "!", "") + str = strings.ReplaceAll(str, "?", "") + str = strings.ReplaceAll(str, ";", "") + str = strings.ReplaceAll(str, ",", "") + str = strings.ReplaceAll(str, "#", "") + str = strings.ReplaceAll(str, "@", "") + str = strings.ReplaceAll(str, "$", "") + str = strings.ReplaceAll(str, "%", "") + str = strings.ReplaceAll(str, "*", "") + str = strings.ReplaceAll(str, "(", "") + str = strings.ReplaceAll(str, ")", "") + str = strings.ReplaceAll(str, "[", "") + str = strings.ReplaceAll(str, "]", "") + str = strings.ReplaceAll(str, "{", "") + str = strings.ReplaceAll(str, "}", "") + str = strings.ReplaceAll(str, "-", "") + str = strings.ReplaceAll(str, "_", "") + str = strings.ReplaceAll(str, "+", "") + str = strings.ReplaceAll(str, "=", "") + str = strings.ReplaceAll(str, "'", "") + str = strings.ReplaceAll(str, `""`, "") + str = strings.ReplaceAll(str, "`", "") + return strings.ToLower(str) } // checks if scenes that have a match, can match the scenes performers diff --git a/pkg/migrations/migrations.go b/pkg/migrations/migrations.go index 639d4424a..c6b7ddb64 100644 --- a/pkg/migrations/migrations.go +++ b/pkg/migrations/migrations.go @@ -2081,7 +2081,60 @@ func Migrate() { err = config.MigrateFromOfficalToCustom("vrphub-vrhush", "https://vrphub.com/category/vr-hush", "VRHush", "VRHush", "https://cdn-nexpectation.secure.yourpornpartner.com/sites/vrh/favicon/apple-touch-icon-180x180.png", "vrphub", "(VRP Hub)") err = config.MigrateFromOfficalToCustom("vrphub-stripzvr", "https://vrphub.com/category/stripzvr/", "StripzVR - VRP Hub", "StripzVR", "https://www.stripzvr.com/wp-content/uploads/2018/09/cropped-favicon-192x192.jpg", "vrphub", "(VRP Hub)") return err + }, + }, + { + ID: "0082-upgrade_actor_scraper_config", + Migrate: func(tx *gorm.DB) error { + type actorScraperConfig struct { + StashSceneMatching map[string]models.StashSiteConfig + GenericActorScrapingConfig map[string]models.GenericScraperRuleSet + } + fName := filepath.Join(common.AppDir, "actor_scraper_custom_config.json") + if _, err := os.Stat(fName); os.IsNotExist(err) { + return nil + } + + var newCustomScrapeRules models.ActorScraperConfig + b, err := os.ReadFile(fName) + if err != nil { + return err + } + // make a backup, just in case, but don't fail the upgrade if a copy cannot be made + bakName := filepath.Join(common.AppDir, "actor_scraper_custom_config.pre_0433.json") + if _, err := os.Stat(bakName); os.IsNotExist(err) { + err := os.WriteFile(bakName, b, 0644) + if err != nil { + common.Log.Warnf("Warning: unable to create backup copy of actor_scraper_custom_config.json %s, proceeding", err) + } + } + + e := json.Unmarshal(b, &newCustomScrapeRules) + if e == nil { + // if we can read the file with the new model, it has already been converted + common.Log.Info("Ignoring migration of actor_scraper_custom_config.json, already appears to have been done") + return nil + } + + var oldCustomScrapeRules actorScraperConfig + e = json.Unmarshal(b, &oldCustomScrapeRules) + if e != nil { + // can't read the old layout either ? + return e + } + + newCustomScrapeRules = models.ActorScraperConfig{} + newCustomScrapeRules.GenericActorScrapingConfig = oldCustomScrapeRules.GenericActorScrapingConfig + newCustomScrapeRules.StashSceneMatching = map[string][]models.StashSiteConfig{} + for key, _ := range oldCustomScrapeRules.StashSceneMatching { + newScraperCofig := oldCustomScrapeRules.StashSceneMatching[key] + newCustomScrapeRules.StashSceneMatching[key] = []models.StashSiteConfig{} + newCustomScrapeRules.StashSceneMatching[key] = append(newCustomScrapeRules.StashSceneMatching[key], newScraperCofig) + } + out, _ := json.MarshalIndent(newCustomScrapeRules, "", " ") + e = os.WriteFile(fName, out, 0644) + return e }, }, }) diff --git a/pkg/models/model_external_reference.go b/pkg/models/model_external_reference.go index e12ce8270..8efaf533d 100644 --- a/pkg/models/model_external_reference.go +++ b/pkg/models/model_external_reference.go @@ -49,7 +49,7 @@ type ExternalReferenceLink struct { } type ActorScraperConfig struct { - StashSceneMatching map[string]StashSiteConfig + StashSceneMatching map[string][]StashSiteConfig GenericActorScrapingConfig map[string]GenericScraperRuleSet } type GenericScraperRuleSet struct { @@ -308,7 +308,7 @@ func (o *ExternalReference) DetermineActorScraperBySiteId(siteId string) string func BuildActorScraperRules() ActorScraperConfig { var config ActorScraperConfig config.GenericActorScrapingConfig = make(map[string]GenericScraperRuleSet) - config.StashSceneMatching = map[string]StashSiteConfig{} + config.StashSceneMatching = map[string][]StashSiteConfig{} config.loadActorScraperRules() return config } @@ -1028,7 +1028,7 @@ func (scrapeRules ActorScraperConfig) getCustomRules() { if _, err := os.Stat(fName); os.IsNotExist(err) { // create a dummy template exampleConfig := ActorScraperConfig{ - StashSceneMatching: make(map[string]StashSiteConfig), + StashSceneMatching: make(map[string][]StashSiteConfig), GenericActorScrapingConfig: make(map[string]GenericScraperRuleSet), } @@ -1054,10 +1054,10 @@ func (scrapeRules ActorScraperConfig) getCustomRules() { XbvrField: "Enter xbvr field you are matching to, scene_url or scene_id", XbvrMatch: "Enter regex express to extract value from field to match on", XbvrMatchResultPosition: 0, - StashRule: "enter regex expression to extract watch to match from the stash url", + StashRule: "Enter rule name, ie title, title/date, studio_code or regex expression to extract value to match from the stash url", StashMatchResultPosition: 0, }} - exampleConfig.StashSceneMatching["siteid"] = stashMatch + exampleConfig.StashSceneMatching["siteid"] = []StashSiteConfig{stashMatch} out, _ := json.MarshalIndent(exampleConfig, "", " ") os.WriteFile(fName, out, 0644) @@ -1067,6 +1067,7 @@ func (scrapeRules ActorScraperConfig) getCustomRules() { var customScrapeRules ActorScraperConfig b, err := os.ReadFile(fName) if err != nil { + log.Infof("Error reading actor_scraper_custom_config %s", err.Error()) return } json.Unmarshal(b, &customScrapeRules) @@ -1084,110 +1085,109 @@ func (scrapeRules ActorScraperConfig) getSiteUrlMatchingRules() { var sites []Site // if the scene_url in xbvr and stash typically matches, then no special rules required - scrapeRules.StashSceneMatching["allvrporn-vrporn"] = StashSiteConfig{StashId: "44fd483b-85eb-4b22-b7f2-c92c1a50923a"} - scrapeRules.StashSceneMatching["bvr"] = StashSiteConfig{StashId: "1ffbd972-7d69-4ccb-b7da-c6342a9c3d70"} - scrapeRules.StashSceneMatching["cuties-vr"] = StashSiteConfig{StashId: "1e5240a8-29b3-41ed-ae28-fc9231eac449"} - scrapeRules.StashSceneMatching["czechvrintimacy"] = StashSiteConfig{StashId: "ddff31bc-e9d0-475e-9c5b-1cc151eda27b"} - scrapeRules.StashSceneMatching["darkroomvr"] = StashSiteConfig{StashId: "e57f0b82-a8d0-4904-a611-71e95f9b9248"} - scrapeRules.StashSceneMatching["ellielouisevr"] = StashSiteConfig{StashId: "47764349-fb49-42b9-8445-7fa4fb13f9e1"} - scrapeRules.StashSceneMatching["emilybloom"] = StashSiteConfig{StashId: "b359a2fe-dcf0-46e2-8ace-a684df52573e"} - scrapeRules.StashSceneMatching["herpovr"] = StashSiteConfig{StashId: "7d94a83d-2b0b-4076-9e4c-fd9dc6222b8a"} - scrapeRules.StashSceneMatching["jimmydraws"] = StashSiteConfig{StashId: "bf7b7b9a-b96a-401d-8412-ec3f52bcfb6c"} - scrapeRules.StashSceneMatching["kinkygirlsberlin"] = StashSiteConfig{StashId: "7d892a03-dfbe-4476-917d-4940be13fb24"} - scrapeRules.StashSceneMatching["lethalhardcorevr"] = StashSiteConfig{StashId: "3a9883f6-9642-4be1-9a65-d8d13eadbdf0"} - scrapeRules.StashSceneMatching["lustreality"] = StashSiteConfig{StashId: "f31021ba-f4c3-46eb-89c5-b114478d88d2"} - scrapeRules.StashSceneMatching["mongercash"] = StashSiteConfig{StashId: "96ee2435-0b0f-4fb4-8b53-8c929aa493bd"} - scrapeRules.StashSceneMatching["only3xvr"] = StashSiteConfig{StashId: "57391302-bac4-4f15-a64d-7cd9a9c152e0"} - scrapeRules.StashSceneMatching["povcentralvr"] = StashSiteConfig{StashId: "57391302-bac4-4f15-a64d-7cd9a9c152e0"} - scrapeRules.StashSceneMatching["realhotvr"] = StashSiteConfig{StashId: "cf3510db-5fe5-4212-b5da-da27b5352d1c"} - scrapeRules.StashSceneMatching["realitylovers"] = StashSiteConfig{StashId: "3463e72d-6af3-497f-b841-9119065d2916"} - scrapeRules.StashSceneMatching["sinsvr"] = StashSiteConfig{StashId: "805820d0-8fb2-4b04-8c0c-6e392842131b"} - scrapeRules.StashSceneMatching["squeeze-vr"] = StashSiteConfig{StashId: "b2d048da-9180-4e43-b41a-bdb4d265c8ec"} - scrapeRules.StashSceneMatching["swallowbay"] = StashSiteConfig{StashId: "17ff0143-3961-4d38-a80a-fe72407a274d"} - scrapeRules.StashSceneMatching["tonightsgirlfriend"] = StashSiteConfig{StashId: "69a66a95-15de-4b0a-9537-7f15b358392f"} - scrapeRules.StashSceneMatching["virtualrealamateur"] = StashSiteConfig{StashId: "cac0470b-7802-4946-b5ef-e101e166cdaf"} - scrapeRules.StashSceneMatching["virtualtaboo"] = StashSiteConfig{StashId: "1e6defb1-d3a4-4f0c-8616-acd5c343ca2b"} - scrapeRules.StashSceneMatching["virtualxporn"] = StashSiteConfig{StashId: "d55815ac-955f-45a0-a0fa-f6ad335e212d"} - scrapeRules.StashSceneMatching["vrallure"] = StashSiteConfig{StashId: "bb904923-c028-46b7-b269-49dfa54b5332"} - scrapeRules.StashSceneMatching["vrbangers"] = StashSiteConfig{StashId: "f8a826f6-89c2-4db0-a899-1229d11865b3"} - scrapeRules.StashSceneMatching["vrconk"] = StashSiteConfig{StashId: "b038d55c-1e94-41ff-938a-e6aafb0b1759"} - scrapeRules.StashSceneMatching["vrmansion-slr"] = StashSiteConfig{StashId: "a01012bc-42e9-4372-9c25-58f0f94e316b"} - scrapeRules.StashSceneMatching["vrsexygirlz"] = StashSiteConfig{StashId: "b346fe21-5d12-407f-9f50-837f067956d7"} - scrapeRules.StashSceneMatching["vrsolos"] = StashSiteConfig{StashId: "b2d048da-9180-4e43-b41a-bdb4d265c8ec"} - scrapeRules.StashSceneMatching["vrspy"] = StashSiteConfig{StashId: "513001ef-dff4-476d-840d-e22ef27e81ed"} - scrapeRules.StashSceneMatching["wankitnowvr"] = StashSiteConfig{StashId: "acb1ed8f-4967-4c5a-b16a-7025bdeb75c5"} - scrapeRules.StashSceneMatching["porncornvr"] = StashSiteConfig{StashId: "9ecb1d29-64e8-4336-9bd2-5dda53341e29"} - - scrapeRules.StashSceneMatching["wetvr"] = StashSiteConfig{StashId: "981887d6-da48-4dfc-88d1-7ed13a2754f2"} + scrapeRules.StashSceneMatching["allvrporn-vrporn"] = []StashSiteConfig{StashSiteConfig{StashId: "44fd483b-85eb-4b22-b7f2-c92c1a50923a"}} + scrapeRules.StashSceneMatching["bvr"] = []StashSiteConfig{StashSiteConfig{StashId: "1ffbd972-7d69-4ccb-b7da-c6342a9c3d70"}} + scrapeRules.StashSceneMatching["cuties-vr"] = []StashSiteConfig{StashSiteConfig{StashId: "1e5240a8-29b3-41ed-ae28-fc9231eac449"}} + scrapeRules.StashSceneMatching["czechvrintimacy"] = []StashSiteConfig{StashSiteConfig{StashId: "ddff31bc-e9d0-475e-9c5b-1cc151eda27b"}} + scrapeRules.StashSceneMatching["darkroomvr"] = []StashSiteConfig{StashSiteConfig{StashId: "e57f0b82-a8d0-4904-a611-71e95f9b9248"}} + scrapeRules.StashSceneMatching["ellielouisevr"] = []StashSiteConfig{StashSiteConfig{StashId: "47764349-fb49-42b9-8445-7fa4fb13f9e1"}} + scrapeRules.StashSceneMatching["emilybloom"] = []StashSiteConfig{StashSiteConfig{StashId: "b359a2fe-dcf0-46e2-8ace-a684df52573e"}} + scrapeRules.StashSceneMatching["herpovr"] = []StashSiteConfig{StashSiteConfig{StashId: "7d94a83d-2b0b-4076-9e4c-fd9dc6222b8a"}} + scrapeRules.StashSceneMatching["jimmydraws"] = []StashSiteConfig{StashSiteConfig{StashId: "bf7b7b9a-b96a-401d-8412-ec3f52bcfb6c"}} + scrapeRules.StashSceneMatching["kinkygirlsberlin"] = []StashSiteConfig{StashSiteConfig{StashId: "7d892a03-dfbe-4476-917d-4940be13fb24"}} + scrapeRules.StashSceneMatching["lethalhardcorevr"] = []StashSiteConfig{StashSiteConfig{StashId: "3a9883f6-9642-4be1-9a65-d8d13eadbdf0"}} + scrapeRules.StashSceneMatching["lustreality"] = []StashSiteConfig{StashSiteConfig{StashId: "f31021ba-f4c3-46eb-89c5-b114478d88d2"}} + scrapeRules.StashSceneMatching["mongercash"] = []StashSiteConfig{StashSiteConfig{StashId: "96ee2435-0b0f-4fb4-8b53-8c929aa493bd"}} + scrapeRules.StashSceneMatching["only3xvr"] = []StashSiteConfig{StashSiteConfig{StashId: "57391302-bac4-4f15-a64d-7cd9a9c152e0"}} + scrapeRules.StashSceneMatching["povcentralvr"] = []StashSiteConfig{StashSiteConfig{StashId: "57391302-bac4-4f15-a64d-7cd9a9c152e0"}} + scrapeRules.StashSceneMatching["realhotvr"] = []StashSiteConfig{StashSiteConfig{StashId: "cf3510db-5fe5-4212-b5da-da27b5352d1c"}} + scrapeRules.StashSceneMatching["realitylovers"] = []StashSiteConfig{StashSiteConfig{StashId: "3463e72d-6af3-497f-b841-9119065d2916"}} + scrapeRules.StashSceneMatching["sinsvr"] = []StashSiteConfig{StashSiteConfig{StashId: "805820d0-8fb2-4b04-8c0c-6e392842131b"}} + scrapeRules.StashSceneMatching["squeeze-vr"] = []StashSiteConfig{StashSiteConfig{StashId: "b2d048da-9180-4e43-b41a-bdb4d265c8ec"}} + scrapeRules.StashSceneMatching["swallowbay"] = []StashSiteConfig{StashSiteConfig{StashId: "17ff0143-3961-4d38-a80a-fe72407a274d"}} + scrapeRules.StashSceneMatching["tonightsgirlfriend"] = []StashSiteConfig{StashSiteConfig{StashId: "69a66a95-15de-4b0a-9537-7f15b358392f"}} + scrapeRules.StashSceneMatching["virtualrealamateur"] = []StashSiteConfig{StashSiteConfig{StashId: "cac0470b-7802-4946-b5ef-e101e166cdaf"}} + scrapeRules.StashSceneMatching["virtualtaboo"] = []StashSiteConfig{StashSiteConfig{StashId: "1e6defb1-d3a4-4f0c-8616-acd5c343ca2b"}} + scrapeRules.StashSceneMatching["virtualxporn"] = []StashSiteConfig{StashSiteConfig{StashId: "d55815ac-955f-45a0-a0fa-f6ad335e212d"}} + scrapeRules.StashSceneMatching["vrbangers"] = []StashSiteConfig{StashSiteConfig{StashId: "f8a826f6-89c2-4db0-a899-1229d11865b3"}} + scrapeRules.StashSceneMatching["vrconk"] = []StashSiteConfig{StashSiteConfig{StashId: "b038d55c-1e94-41ff-938a-e6aafb0b1759"}} + scrapeRules.StashSceneMatching["vrmansion-slr"] = []StashSiteConfig{StashSiteConfig{StashId: "a01012bc-42e9-4372-9c25-58f0f94e316b"}} + scrapeRules.StashSceneMatching["vrsexygirlz"] = []StashSiteConfig{StashSiteConfig{StashId: "b346fe21-5d12-407f-9f50-837f067956d7"}} + scrapeRules.StashSceneMatching["vrsolos"] = []StashSiteConfig{StashSiteConfig{StashId: "b2d048da-9180-4e43-b41a-bdb4d265c8ec"}} + scrapeRules.StashSceneMatching["vrspy"] = []StashSiteConfig{StashSiteConfig{StashId: "513001ef-dff4-476d-840d-e22ef27e81ed"}} + scrapeRules.StashSceneMatching["wankitnowvr"] = []StashSiteConfig{StashSiteConfig{StashId: "acb1ed8f-4967-4c5a-b16a-7025bdeb75c5"}} + scrapeRules.StashSceneMatching["porncornvr"] = []StashSiteConfig{StashSiteConfig{StashId: "9ecb1d29-64e8-4336-9bd2-5dda53341e29"}} + + scrapeRules.StashSceneMatching["wetvr"] = []StashSiteConfig{StashSiteConfig{StashId: "981887d6-da48-4dfc-88d1-7ed13a2754f2"}} // setup special rules to match scenes in xbvr and stashdb, rather than assuming scene_urls match - scrapeRules.StashSceneMatching["wankzvr"] = StashSiteConfig{ + scrapeRules.StashSceneMatching["wankzvr"] = []StashSiteConfig{StashSiteConfig{ StashId: "b04bca51-15ea-45ab-80f6-7b002fd4a02d", Rules: []SceneMatchRule{{XbvrField: "scene_id", XbvrMatch: `-\d+$`, XbvrMatchResultPosition: 0, StashRule: `(povr|wankzvr).com\/(.*)(-\d*?)\/?$`, StashMatchResultPosition: 3}}, - } - scrapeRules.StashSceneMatching["naughtyamericavr"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["naughtyamericavr"] = []StashSiteConfig{StashSiteConfig{ StashId: "049c167b-0cf3-4965-aae5-f5150122a928", ParentId: "2be8463b-0505-479e-a07d-5abc7a6edd54", TagIdFilter: "6458e5cf-4f65-400b-9067-582141e2a329", Rules: []SceneMatchRule{{XbvrField: "scene_id", XbvrMatch: `-\d+$`, XbvrMatchResultPosition: 0, StashRule: `(naughtyamerica).com\/(.*)(-\d*?)\/?$`, StashMatchResultPosition: 3}}, - } - scrapeRules.StashSceneMatching["povr-originals"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["povr-originals"] = []StashSiteConfig{StashSiteConfig{ StashId: "b95c0ee4-2e95-46cf-aa67-45c82bdcd5fc", Rules: []SceneMatchRule{{XbvrField: "scene_id", XbvrMatch: `-\d+$`, XbvrMatchResultPosition: 0, StashRule: `(povr|wankzvr).com\/(.*)(-\d*?)\/?$`, StashMatchResultPosition: 3}}, - } - scrapeRules.StashSceneMatching["brasilvr"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["brasilvr"] = []StashSiteConfig{StashSiteConfig{ StashId: "511e41c8-5063-48b8-a8d9-4e18852da338", Rules: []SceneMatchRule{{XbvrField: "scene_id", XbvrMatch: `-\d+$`, XbvrMatchResultPosition: 0, StashRule: `(brasilvr|povr|wankzvr).com\/(.*)(-\d*?)\/?$`, StashMatchResultPosition: 3}}, - } - scrapeRules.StashSceneMatching["milfvr"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["milfvr"] = []StashSiteConfig{StashSiteConfig{ StashId: "38382977-9f5e-42fb-875b-2f4dd1272b11", Rules: []SceneMatchRule{{XbvrField: "scene_id", XbvrMatch: `-\d+$`, XbvrMatchResultPosition: 0, StashRule: `(milfvr|povr|wankzvr).com\/(.*)(-\d*?)\/?$`, StashMatchResultPosition: 3}}, - } + }} - scrapeRules.StashSceneMatching["czechvr"] = StashSiteConfig{ + scrapeRules.StashSceneMatching["czechvr"] = []StashSiteConfig{StashSiteConfig{ StashId: "a9ed3948-5263-46f6-a3f0-e0dfc059ee73", Rules: []SceneMatchRule{{XbvrField: "scene_url", XbvrMatch: `(czechvrnetwork|czechvr|czechvrcasting|czechvrfetish|vrintimacy).com\/([^\/]+)\/?$`, XbvrMatchResultPosition: 2, StashRule: `(czechvrnetwork|czechvr|czechvrcasting|czechvrfetish|vrintimacy).com\/([^\/]+)\/?$`, StashMatchResultPosition: 2}}, - } - scrapeRules.StashSceneMatching["czechvrcasting"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["czechvrcasting"] = []StashSiteConfig{StashSiteConfig{ StashId: "2fa76fba-ccd7-457d-bc7c-ebc1b09e580b", Rules: []SceneMatchRule{{XbvrField: "scene_url", XbvrMatch: `(czechvrnetwork|czechvr|czechvrcasting|czechvrfetish|vrintimacy).com\/([^\/]+)\/?$`, XbvrMatchResultPosition: 2, StashRule: `(czechvrnetwork|czechvr|czechvrcasting|czechvrfetish|vrintimacy).com\/([^\/]+)\/?$`, StashMatchResultPosition: 2}}, - } - scrapeRules.StashSceneMatching["czechvrfetish"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["czechvrfetish"] = []StashSiteConfig{StashSiteConfig{ StashId: "19399096-7b83-4404-b960-f8f8c641a93e", Rules: []SceneMatchRule{{XbvrField: "scene_url", XbvrMatch: `(czechvrnetwork|czechvr|czechvrcasting|czechvrfetish|vrintimacy).com\/([^\/]+)\/?$`, XbvrMatchResultPosition: 2, StashRule: `(czechvrnetwork|czechvr|czechvrcasting|czechvrfetish|vrintimacy).com\/([^\/]+)\/?$`, StashMatchResultPosition: 2}}, - } - scrapeRules.StashSceneMatching["czechvrintimacy"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["czechvrintimacy"] = []StashSiteConfig{StashSiteConfig{ StashId: "ddff31bc-e9d0-475e-9c5b-1cc151eda27b", Rules: []SceneMatchRule{{XbvrField: "scene_url", XbvrMatch: `(czechvrnetwork|czechvr|czechvrcasting|czechvrfetish|vrintimacy).com\/([^\/]+)\/?$`, XbvrMatchResultPosition: 2, StashRule: `(czechvrnetwork|czechvr|czechvrcasting|czechvrfetish|vrintimacy).com\/([^\/]+)\/?$`, StashMatchResultPosition: 2}}, - } - scrapeRules.StashSceneMatching["tmwvrnet"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["tmwvrnet"] = []StashSiteConfig{StashSiteConfig{ StashId: "fd1a7f1d-9cc3-4d30-be0d-1c05b2a8b9c3", Rules: []SceneMatchRule{{XbvrField: "scene_url", XbvrMatch: `(teenmegaworld.net|tmwvrnet.com)(\/trailers)?\/([^\/]+)\/?$`, XbvrMatchResultPosition: 3, StashRule: `(teenmegaworld.net|tmwvrnet.com)(\/trailers)?\/([^\/]+)\/?$`, StashMatchResultPosition: 3}}, - } - scrapeRules.StashSceneMatching["virtualrealporn"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["virtualrealporn"] = []StashSiteConfig{StashSiteConfig{ StashId: "191ba106-00d3-4f01-8c57-0cf0e88a2a50", Rules: []SceneMatchRule{ {XbvrField: "scene_url", XbvrMatch: `virtualrealporn`, XbvrMatchResultPosition: 3, StashRule: `(\/[^\/]+)\/?$`, StashMatchResultPosition: 1}, {XbvrField: "scene_url", XbvrMatch: `virtualrealporn`, XbvrMatchResultPosition: 3, StashRule: `(\/[^\/]+)(-\d{3,10}?)\/?$`, StashMatchResultPosition: 1}, }, - } - scrapeRules.StashSceneMatching["realjamvr"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["realjamvr"] = []StashSiteConfig{StashSiteConfig{ StashId: "2059fbf9-94fe-4986-8565-2a7cc199636a", Rules: []SceneMatchRule{{XbvrField: "scene_url", XbvrMatch: `(realjamvr.com)(.*)\/(\d*-?)([^\/]+)\/?$`, XbvrMatchResultPosition: 4, StashRule: `(realjamvr.com)(.*)\/(\d*-?)([^\/]+)\/?$`, StashMatchResultPosition: 4}}, - } - scrapeRules.StashSceneMatching["vrhush"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["vrhush"] = []StashSiteConfig{StashSiteConfig{ StashId: "c85a3d13-c1b9-48d0-986e-3bfceaf0afe5", // ignores optional /vrh999_ from old urls Rules: []SceneMatchRule{{XbvrField: "scene_url", XbvrMatch: `\/([^\/]+)$`, XbvrMatchResultPosition: 4, StashRule: `\/((vrh\d+)_)?([^\/?]+)(?:\?.*)?$`, StashMatchResultPosition: 3}, // handle trailing query params {XbvrField: "scene_url", XbvrMatch: `\/([^\/]+)$`, XbvrMatchResultPosition: 4, StashRule: `\/((vrh\d+)_)?([^\/?]+)(?:_180.*)?$`, StashMatchResultPosition: 3}, // handle _180 suffix now gone from urls }, - } - scrapeRules.StashSceneMatching["sexbabesvr"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["sexbabesvr"] = []StashSiteConfig{StashSiteConfig{ StashId: "b80d419c-4a81-44c9-ae79-d9614dd30351", Rules: []SceneMatchRule{{XbvrField: "scene_url", XbvrMatch: `(sexbabesvr.com)(.*)\/([^\/]+)\/?$`, XbvrMatchResultPosition: 3, StashRule: `(sexbabesvr.com)(.*)\/([^\/]+)\/?$`, StashMatchResultPosition: 3}}, - } - scrapeRules.StashSceneMatching["lethalhardcorevr"] = StashSiteConfig{ + }} + scrapeRules.StashSceneMatching["lethalhardcorevr"] = []StashSiteConfig{StashSiteConfig{ StashId: "3a9883f6-9642-4be1-9a65-d8d13eadbdf0", Rules: []SceneMatchRule{{XbvrField: "scene_url", XbvrMatch: `(lethalhardcorevr.com).*\/(\d{6,8})\/.*`, XbvrMatchResultPosition: 2, StashRule: `(lethalhardcorevr.com).*\/(\d{6,8})\/.*`, StashMatchResultPosition: 2}}, - } + }} commonDb.Where(&Site{IsEnabled: true}).Order("id").Find(&sites) for _, site := range sites { @@ -1196,17 +1196,19 @@ func (scrapeRules ActorScraperConfig) getSiteUrlMatchingRules() { siteConfig := scrapeRules.StashSceneMatching[site.ID] extRefLink := ExternalReferenceLink{} extRefLink.Find("stashdb studio", site.ID) - siteConfig.StashId = extRefLink.ExternalId - siteConfig.Rules = append(siteConfig.Rules, SceneMatchRule{XbvrField: "scene_id", XbvrMatch: `-\d+$`, XbvrMatchResultPosition: 0, StashRule: `(sexlikereal).com\/[^0-9]*(-\d*)`, StashMatchResultPosition: 2}) + siteConfig = []StashSiteConfig{StashSiteConfig{}} + siteConfig[0].StashId = extRefLink.ExternalId + siteConfig[0].Rules = append(siteConfig[0].Rules, SceneMatchRule{XbvrField: "scene_id", XbvrMatch: `-\d+$`, XbvrMatchResultPosition: 0, StashRule: `(sexlikereal).com\/[^0-9]*(-\d*)`, StashMatchResultPosition: 2}) scrapeRules.StashSceneMatching[site.ID] = siteConfig } if strings.HasSuffix(site.Name, "POVR)") { siteConfig := scrapeRules.StashSceneMatching[site.ID] extRefLink := ExternalReferenceLink{} extRefLink.Find("stashdb studio", site.ID) - siteConfig.StashId = extRefLink.ExternalId - if len(siteConfig.Rules) == 0 { - siteConfig.Rules = append(siteConfig.Rules, SceneMatchRule{XbvrField: "scene_id", XbvrMatch: `-\d+$`, XbvrMatchResultPosition: 0, StashRule: `(povr|wankzvr).com\/(.*)(-\d*?)\/?$`, StashMatchResultPosition: 2}) + siteConfig = []StashSiteConfig{StashSiteConfig{}} + siteConfig[0].StashId = extRefLink.ExternalId + if len(siteConfig[0].Rules) == 0 { + siteConfig[0].Rules = append(siteConfig[0].Rules, SceneMatchRule{XbvrField: "scene_id", XbvrMatch: `-\d+$`, XbvrMatchResultPosition: 0, StashRule: `(povr|wankzvr).com\/(.*)(-\d*?)\/?$`, StashMatchResultPosition: 2}) scrapeRules.StashSceneMatching[site.ID] = siteConfig } } diff --git a/pkg/scrape/stashdb.go b/pkg/scrape/stashdb.go index e0d59c7ad..634db8a01 100644 --- a/pkg/scrape/stashdb.go +++ b/pkg/scrape/stashdb.go @@ -96,12 +96,14 @@ func StashDb() { } studio := findStudio(sitename, "name") - // check for a config entry if site not found - if studio.Data.Studio.ID == "" && Config.StashSceneMatching[site.ID].StashId != "" { - studio = findStudio(Config.StashSceneMatching[site.ID].StashId, "id") + sitecfg, cfgExists := Config.StashSceneMatching[site.ID] + if !cfgExists && studio.Data.Studio.ID != "" { + sitecfg = []models.StashSiteConfig{models.StashSiteConfig{StashId: studio.Data.Studio.ID}} } - if studio.Data.Studio.ID != "" { + // check for a config entry if site not found + for _, cfgEntry := range sitecfg { + studio = findStudio(cfgEntry.StashId, "id") siteConfig := Config.StashSceneMatching[site.ID] var ext models.ExternalReference ext.FindExternalId("stashdb studio", studio.Data.Studio.ID) @@ -113,12 +115,20 @@ func StashDb() { ext.AddUpdateWithId() } processStudioPerformers(studio.Data.Studio.ID) - scenes := getScenes(studio.Data.Studio.ID, siteConfig.ParentId, siteConfig.TagIdFilter) + parentId := "" + tagFilterId := "" + if siteConfig != nil { + parentId = siteConfig[0].ParentId + tagFilterId = siteConfig[0].TagIdFilter + } + scenes := getScenes(studio.Data.Studio.ID, parentId, tagFilterId) saveScenesToExternalReferences(scenes, studio.Data.Studio.ID) - } else { + } + if sitecfg == nil { log.Infof("No Stash Studio matching %v", site.Name) + } else { + tlog.Info("Scrape of Stashdb completed") } - tlog.Info("Scrape of Stashdb completed") } } From 401c19ee820c67656fb3f9b46085e8b9df3dbe7a Mon Sep 17 00:00:00 2001 From: toshski <104477758+toshski@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:51:48 +1300 Subject: [PATCH 26/27] feat: Allow Stash Scraping via new flag rather than Enabled (#1887) --- pkg/api/options.go | 9 +++++++++ pkg/migrations/migrations.go | 13 +++++++++++++ pkg/models/model_site.go | 1 + pkg/scrape/stashdb.go | 2 +- ui/src/store/optionsSites.js | 3 +++ .../options/sections/OptionsSceneDataScrapers.vue | 5 +++++ 6 files changed, 32 insertions(+), 1 deletion(-) diff --git a/pkg/api/options.go b/pkg/api/options.go index a50417ac8..c8f2e051c 100644 --- a/pkg/api/options.go +++ b/pkg/api/options.go @@ -238,6 +238,9 @@ func (i ConfigResource) WebService() *restful.WebService { ws.Route(ws.PUT("/sites/limit_scraping/{site}").To(i.toggleLimitScraping). Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.PUT("/sites/scrape_stash/{site}").To(i.toggleScrapeStash). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.POST("/scraper/force-site-update").To(i.forceSiteUpdate). Metadata(restfulspec.KeyOpenAPITags, tags)) @@ -355,6 +358,9 @@ func (i ConfigResource) toggleLimitScraping(req *restful.Request, resp *restful. i.toggleSiteField(req, resp, "LimitScraping") } +func (i ConfigResource) toggleScrapeStash(req *restful.Request, resp *restful.Response) { + i.toggleSiteField(req, resp, "ScrapeStash") +} func (i ConfigResource) toggleSiteField(req *restful.Request, resp *restful.Response, field string) { db, _ := models.GetDB() defer db.Close() @@ -380,6 +386,9 @@ func (i ConfigResource) toggleSiteField(req *restful.Request, resp *restful.Resp case "LimitScraping": site.LimitScraping = !site.LimitScraping db.Model(&models.Scene{}).Where("scraper_id = ?", site.ID).Update("limit_scraping", site.LimitScraping) + case "ScrapeStash": + site.ScrapeStash = !site.ScrapeStash + db.Model(&models.Scene{}).Where("scrape_stash = ?", site.ID).Update("scrape_stash", site.LimitScraping) } site.Save() diff --git a/pkg/migrations/migrations.go b/pkg/migrations/migrations.go index c6b7ddb64..a286afe35 100644 --- a/pkg/migrations/migrations.go +++ b/pkg/migrations/migrations.go @@ -820,6 +820,19 @@ func Migrate() { return nil }, }, + { + ID: "0082-scrape-stash-flag", + Migrate: func(tx *gorm.DB) error { + type Site struct { + ScrapeStash bool `json:"scrape_stash" xbvrbackup:"scrape_stash"` + } + err := tx.AutoMigrate(Site{}).Error + if err != nil { + return err + } + return tx.Exec("update sites set scrape_stash = is_enabled").Error + }, + }, // =============================================================================================== // Put DB Schema migrations above this line and migrations that rely on the updated schema below diff --git a/pkg/models/model_site.go b/pkg/models/model_site.go index 8af24250d..64d9fd8b9 100644 --- a/pkg/models/model_site.go +++ b/pkg/models/model_site.go @@ -19,6 +19,7 @@ type Site struct { LimitScraping bool `json:"limit_scraping" xbvrbackup:"limit_scraping"` MasterSiteID string `json:"master_site_id" xbvrbackup:"master_site_id"` MatchingParams string `json:"matching_params" gorm:"size:1000" xbvrbackup:"matching_params"` + ScrapeStash bool `json:"scrape_stash" xbvrbackup:"scrape_stash"` } func (i *Site) Save() error { diff --git a/pkg/scrape/stashdb.go b/pkg/scrape/stashdb.go index 634db8a01..ab1b2a89f 100644 --- a/pkg/scrape/stashdb.go +++ b/pkg/scrape/stashdb.go @@ -86,7 +86,7 @@ func StashDb() { defer db.Close() Config = models.BuildActorScraperRules() - db.Where(&models.Site{IsEnabled: true}).Order("id").Find(&sites) + db.Where(&models.Site{ScrapeStash: true}).Order("id").Find(&sites) for _, site := range sites { tlog.Infof("Scraping stash studio %s", site.Name) diff --git a/ui/src/store/optionsSites.js b/ui/src/store/optionsSites.js index 74e13ea7a..af38261a5 100644 --- a/ui/src/store/optionsSites.js +++ b/ui/src/store/optionsSites.js @@ -20,6 +20,9 @@ const actions = { async toggleLimitScraping ({ state }, params) { state.items = await ky.put(`/api/options/sites/limit_scraping/${params.id}`, { json: {} }).json() }, + async toggleScrapeStash ({ state }, params) { + state.items = await ky.put(`/api/options/sites/scrape_stash/${params.id}`, { json: {} }).json() + }, } export default { diff --git a/ui/src/views/options/sections/OptionsSceneDataScrapers.vue b/ui/src/views/options/sections/OptionsSceneDataScrapers.vue index 3b22e411d..086299bd5 100644 --- a/ui/src/views/options/sections/OptionsSceneDataScrapers.vue +++ b/ui/src/views/options/sections/OptionsSceneDataScrapers.vue @@ -50,6 +50,11 @@ + + + + +