From 59c433b1c2276c7cc51f00e16f5116d9e4d744f3 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 25 Oct 2023 19:25:00 +0200
Subject: [PATCH 01/39] chore(deps): update dependency sass to v1.69.4 (#1431)
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 8058d3a82..9f9b83da8 100644
--- a/package.json
+++ b/package.json
@@ -51,7 +51,7 @@
"eslint-plugin-vue": "9.17.0",
"less": "4.2.0",
"less-loader": "11.1.3",
- "sass": "1.66.1",
+ "sass": "1.69.4",
"sass-loader": "13.3.2",
"simple-progress-webpack-plugin": "2.0.0",
"vue-cli-plugin-i18n": "2.3.2",
diff --git a/yarn.lock b/yarn.lock
index 2daceae2d..f316997cc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7152,10 +7152,10 @@ sass-loader@13.3.2:
dependencies:
neo-async "^2.6.2"
-sass@1.66.1:
- version "1.66.1"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.66.1.tgz#04b51c4671e4650aa393740e66a4e58b44d055b1"
- integrity sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==
+sass@1.69.4:
+ version "1.69.4"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.4.tgz#10c735f55e3ea0b7742c6efa940bce30e07fbca2"
+ integrity sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
From e724da052348a11b7291f67378d60513d2f04586 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 25 Oct 2023 19:25:13 +0200
Subject: [PATCH 02/39] chore(deps): update dependency eslint to v8.52.0
(#1430)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 44 +++++++++++++++++++++++++-------------------
2 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/package.json b/package.json
index 9f9b83da8..abd60807c 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.48.0",
+ "eslint": "8.52.0",
"eslint-plugin-import": "2.28.1",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "6.1.1",
diff --git a/yarn.lock b/yarn.lock
index f316997cc..e3f76fe2d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1304,10 +1304,10 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@8.48.0":
- version "8.48.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb"
- integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==
+"@eslint/js@8.52.0":
+ version "8.52.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c"
+ integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==
"@fortawesome/fontawesome-common-types@^0.2.36":
version "0.2.36"
@@ -1338,12 +1338,12 @@
dependencies:
"@hapi/hoek" "^9.0.0"
-"@humanwhocodes/config-array@^0.11.10":
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2"
- integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==
+"@humanwhocodes/config-array@^0.11.13":
+ version "0.11.13"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297"
+ integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==
dependencies:
- "@humanwhocodes/object-schema" "^1.2.1"
+ "@humanwhocodes/object-schema" "^2.0.1"
debug "^4.1.1"
minimatch "^3.0.5"
@@ -1352,10 +1352,10 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-"@humanwhocodes/object-schema@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
- integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+"@humanwhocodes/object-schema@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
+ integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
"@jridgewell/gen-mapping@^0.1.0":
version "0.1.1"
@@ -1694,6 +1694,11 @@
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"
@@ -4144,18 +4149,19 @@ eslint-webpack-plugin@^3.1.0:
normalize-path "^3.0.0"
schema-utils "^4.0.0"
-eslint@8.48.0:
- version "8.48.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155"
- integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==
+eslint@8.52.0:
+ version "8.52.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc"
+ integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
"@eslint/eslintrc" "^2.1.2"
- "@eslint/js" "8.48.0"
- "@humanwhocodes/config-array" "^0.11.10"
+ "@eslint/js" "8.52.0"
+ "@humanwhocodes/config-array" "^0.11.13"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
+ "@ungap/structured-clone" "^1.2.0"
ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.2"
From f25c175c3a511ad41737c1bf628e32f7e88d8541 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 25 Oct 2023 19:25:46 +0200
Subject: [PATCH 03/39] fix(deps): update module github.com/putdotio/go-putio
to v1.7.1 (#1429)
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 73513ec77..6b5c8b9ae 100644
--- a/go.mod
+++ b/go.mod
@@ -45,7 +45,7 @@ require (
github.com/nleeper/goment v1.4.4
github.com/peterbourgon/diskv v2.0.1+incompatible
github.com/pkg/errors v0.9.1
- github.com/putdotio/go-putio v1.7.0
+ github.com/putdotio/go-putio v1.7.1
github.com/robertkrimen/otto v0.2.1
github.com/robfig/cron/v3 v3.0.1
github.com/rs/cors v1.9.0
diff --git a/go.sum b/go.sum
index 1c3f0e0f9..4a2a078ff 100644
--- a/go.sum
+++ b/go.sum
@@ -314,6 +314,8 @@ github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwa
github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
github.com/putdotio/go-putio v1.7.0 h1:iL7G9O30NCiOH4FULbul/tRNWDA9LuvlsfXjBIBmRY4=
github.com/putdotio/go-putio v1.7.0/go.mod h1:QhjpLhn3La/ea4FeJlp1qsiaFZDC0EIO8VUe8VEKMV0=
+github.com/putdotio/go-putio v1.7.1 h1:316PpOMO2a7H73foRxlpHmekeLso07et26Z00YlwQ2A=
+github.com/putdotio/go-putio v1.7.1/go.mod h1:QhjpLhn3La/ea4FeJlp1qsiaFZDC0EIO8VUe8VEKMV0=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/robertkrimen/otto v0.2.1 h1:FVP0PJ0AHIjC+N4pKCG9yCDz6LHNPCwi/GKID5pGGF0=
github.com/robertkrimen/otto v0.2.1/go.mod h1:UPwtJ1Xu7JrLcZjNWN8orJaM5n5YEtqL//farB5FlRY=
From 9889d0b25d590a40556784abc052d022c057afe9 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 25 Oct 2023 19:26:22 +0200
Subject: [PATCH 04/39] fix(deps): update module github.com/gammazero/nexus/v3
to v3.2.1 (#1428)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
go.mod | 4 ++--
go.sum | 4 ++++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/go.mod b/go.mod
index 6b5c8b9ae..951f97aef 100644
--- a/go.mod
+++ b/go.mod
@@ -18,7 +18,7 @@ require (
github.com/dustin/go-humanize v1.0.1
github.com/emicklei/go-restful-openapi/v2 v2.9.1
github.com/emicklei/go-restful/v3 v3.11.0
- github.com/gammazero/nexus/v3 v3.2.0
+ github.com/gammazero/nexus/v3 v3.2.1
github.com/getlantern/systray v1.2.2
github.com/go-openapi/spec v0.20.9
github.com/go-resty/resty/v2 v2.7.0
@@ -138,7 +138,7 @@ require (
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.0 // indirect
github.com/tkuchiki/go-timezone v0.2.0 // indirect
- github.com/ugorji/go/codec v1.2.7 // indirect
+ github.com/ugorji/go/codec v1.2.11 // indirect
github.com/ulikunitz/xz v0.5.8 // indirect
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
go.etcd.io/bbolt v1.3.7 // indirect
diff --git a/go.sum b/go.sum
index 4a2a078ff..142c82daa 100644
--- a/go.sum
+++ b/go.sum
@@ -112,6 +112,8 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/gammazero/nexus/v3 v3.2.0 h1:dKdGk4vQ/56wX5CLKUt6U3XQymUhTY6xHowBO9Z7bVA=
github.com/gammazero/nexus/v3 v3.2.0/go.mod h1:h/5Osjg08QGAk+dVFpwdGdD8VsK+IGDm5E4PzVli264=
+github.com/gammazero/nexus/v3 v3.2.1 h1:9sqURks8EBEYkyEmkCtw85oApQ4ou0FCfh/jUG+Jq4I=
+github.com/gammazero/nexus/v3 v3.2.1/go.mod h1:SvrRjMwDP4S9RSx52Ks39ksmYA1FQQ0OuGKcleMJTQ0=
github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 h1:NRUJuo3v3WGC/g5YiyF790gut6oQr5f3FBI88Wv0dx4=
github.com/getlantern/context v0.0.0-20190109183933-c447772a6520/go.mod h1:L+mq6/vvYHKjCX2oez0CgEAJmbq1fbb/oNJIWQkBybY=
github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7 h1:6uJ+sZ/e03gkbqZ0kUG6mfKoqDb4XMAzMIwlajq19So=
@@ -357,6 +359,8 @@ github.com/tkuchiki/go-timezone v0.2.0/go.mod h1:b1Ean9v2UXtxSq4TZF0i/TU9NuoWa9h
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
+github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ=
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
From cfa220c30912e4dc764c10536e1c55b902bfdd96 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 25 Oct 2023 19:31:44 +0200
Subject: [PATCH 05/39] fix(deps): update vue monorepo to v2.7.15 (#1445)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package.json | 4 ++--
yarn.lock | 26 +++++++++++++-------------
2 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/package.json b/package.json
index abd60807c..84c053aea 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,7 @@
"pretty-bytes": "6.1.1",
"videojs-hotkeys": "0.2.28",
"videojs-vr": "1.8.0",
- "vue": "2.7.14",
+ "vue": "2.7.15",
"vue-debounce": "4.0.0",
"vue-gallery": "2.0.5",
"vue-global-events": "1.2.1",
@@ -56,7 +56,7 @@
"simple-progress-webpack-plugin": "2.0.0",
"vue-cli-plugin-i18n": "2.3.2",
"vue-i18n-extract": "2.0.7",
- "vue-template-compiler": "2.7.14",
+ "vue-template-compiler": "2.7.15",
"webpack": "5.88.2"
},
"eslintConfig": {
diff --git a/yarn.lock b/yarn.lock
index e3f76fe2d..25ec8c70f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1972,10 +1972,10 @@
semver "^7.3.4"
strip-ansi "^6.0.0"
-"@vue/compiler-sfc@2.7.14":
- version "2.7.14"
- resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz#3446fd2fbb670d709277fc3ffa88efc5e10284fd"
- integrity sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==
+"@vue/compiler-sfc@2.7.15":
+ version "2.7.15"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz#62135fb2f69559fc723fd9c56b8e8b0ac7864a0b"
+ integrity sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==
dependencies:
"@babel/parser" "^7.18.4"
postcss "^8.4.14"
@@ -8244,10 +8244,10 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.3:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
-vue-template-compiler@2.7.14:
- version "2.7.14"
- resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz#4545b7dfb88090744c1577ae5ac3f964e61634b1"
- integrity sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==
+vue-template-compiler@2.7.15:
+ version "2.7.15"
+ resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz#ec88ba8ceafe0f17a528b89c57e01e02da92b0de"
+ integrity sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==
dependencies:
de-indent "^1.0.2"
he "^1.2.0"
@@ -8257,12 +8257,12 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
-vue@2.7.14:
- version "2.7.14"
- resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.14.tgz#3743dcd248fd3a34d421ae456b864a0246bafb17"
- integrity sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==
+vue@2.7.15:
+ version "2.7.15"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.15.tgz#94cd34e6e9f22cd2d35a02143f96a5beac1c1f54"
+ integrity sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==
dependencies:
- "@vue/compiler-sfc" "2.7.14"
+ "@vue/compiler-sfc" "2.7.15"
csstype "^3.1.0"
vue@^2.3.3, vue@^2.6.11:
From 149bcad7abe1ffb1188d2e1daeddf55ae988c367 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 25 Oct 2023 19:32:01 +0200
Subject: [PATCH 06/39] chore(deps): update dependency eslint-plugin-import to
v2.29.0 (#1446)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 397 ++++++++++++++++++++++++++++-----------------------
2 files changed, 217 insertions(+), 182 deletions(-)
diff --git a/package.json b/package.json
index 84c053aea..297fcba67 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,7 @@
"buffer": "6.0.3",
"concurrently": "7.6.0",
"eslint": "8.52.0",
- "eslint-plugin-import": "2.28.1",
+ "eslint-plugin-import": "2.29.0",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "6.1.1",
"eslint-plugin-standard": "4.1.0",
diff --git a/yarn.lock b/yarn.lock
index 25ec8c70f..1d78f0495 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2498,15 +2498,15 @@ array-includes@^3.1.4:
get-intrinsic "^1.1.1"
is-string "^1.0.7"
-array-includes@^3.1.6:
- version "3.1.6"
- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f"
- integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==
+array-includes@^3.1.7:
+ version "3.1.7"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda"
+ integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
- get-intrinsic "^1.1.3"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ get-intrinsic "^1.2.1"
is-string "^1.0.7"
array-union@^2.1.0:
@@ -2514,16 +2514,16 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-array.prototype.findlastindex@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b"
- integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==
+array.prototype.findlastindex@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207"
+ integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
es-shim-unscopables "^1.0.0"
- get-intrinsic "^1.1.3"
+ get-intrinsic "^1.2.1"
array.prototype.flat@^1.2.5:
version "1.3.0"
@@ -2535,34 +2535,35 @@ array.prototype.flat@^1.2.5:
es-abstract "^1.19.2"
es-shim-unscopables "^1.0.0"
-array.prototype.flat@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2"
- integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==
+array.prototype.flat@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18"
+ integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
es-shim-unscopables "^1.0.0"
-array.prototype.flatmap@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183"
- integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==
+array.prototype.flatmap@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527"
+ integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
es-shim-unscopables "^1.0.0"
-arraybuffer.prototype.slice@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb"
- integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==
+arraybuffer.prototype.slice@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12"
+ integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==
dependencies:
array-buffer-byte-length "^1.0.0"
call-bind "^1.0.2"
define-properties "^1.2.0"
+ es-abstract "^1.22.1"
get-intrinsic "^1.2.1"
is-array-buffer "^3.0.2"
is-shared-array-buffer "^1.0.2"
@@ -2836,6 +2837,15 @@ call-bind@^1.0.0, call-bind@^1.0.2:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
+call-bind@^1.0.4, call-bind@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513"
+ integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
+ dependencies:
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.1"
+ set-function-length "^1.1.1"
+
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
@@ -3471,6 +3481,15 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
+define-data-property@^1.0.1, define-data-property@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
+ integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
+ dependencies:
+ get-intrinsic "^1.2.1"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.0"
+
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"
@@ -3748,65 +3767,26 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19
string.prototype.trimstart "^1.0.5"
unbox-primitive "^1.0.2"
-es-abstract@^1.20.4:
- version "1.21.1"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6"
- integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==
- dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- es-set-tostringtag "^2.0.1"
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- function.prototype.name "^1.1.5"
- get-intrinsic "^1.1.3"
- get-symbol-description "^1.0.0"
- globalthis "^1.0.3"
- gopd "^1.0.1"
- has "^1.0.3"
- has-property-descriptors "^1.0.0"
- has-proto "^1.0.1"
- has-symbols "^1.0.3"
- internal-slot "^1.0.4"
- is-array-buffer "^3.0.1"
- is-callable "^1.2.7"
- is-negative-zero "^2.0.2"
- is-regex "^1.1.4"
- is-shared-array-buffer "^1.0.2"
- is-string "^1.0.7"
- is-typed-array "^1.1.10"
- is-weakref "^1.0.2"
- object-inspect "^1.12.2"
- object-keys "^1.1.1"
- object.assign "^4.1.4"
- regexp.prototype.flags "^1.4.3"
- safe-regex-test "^1.0.0"
- string.prototype.trimend "^1.0.6"
- string.prototype.trimstart "^1.0.6"
- typed-array-length "^1.0.4"
- unbox-primitive "^1.0.2"
- which-typed-array "^1.1.9"
-
-es-abstract@^1.21.2:
- version "1.22.1"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc"
- integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==
+es-abstract@^1.22.1:
+ version "1.22.3"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32"
+ integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==
dependencies:
array-buffer-byte-length "^1.0.0"
- arraybuffer.prototype.slice "^1.0.1"
+ arraybuffer.prototype.slice "^1.0.2"
available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
+ call-bind "^1.0.5"
es-set-tostringtag "^2.0.1"
es-to-primitive "^1.2.1"
- function.prototype.name "^1.1.5"
- get-intrinsic "^1.2.1"
+ function.prototype.name "^1.1.6"
+ get-intrinsic "^1.2.2"
get-symbol-description "^1.0.0"
globalthis "^1.0.3"
gopd "^1.0.1"
- has "^1.0.3"
has-property-descriptors "^1.0.0"
has-proto "^1.0.1"
has-symbols "^1.0.3"
+ hasown "^2.0.0"
internal-slot "^1.0.5"
is-array-buffer "^3.0.2"
is-callable "^1.2.7"
@@ -3814,23 +3794,23 @@ es-abstract@^1.21.2:
is-regex "^1.1.4"
is-shared-array-buffer "^1.0.2"
is-string "^1.0.7"
- is-typed-array "^1.1.10"
+ is-typed-array "^1.1.12"
is-weakref "^1.0.2"
- object-inspect "^1.12.3"
+ object-inspect "^1.13.1"
object-keys "^1.1.1"
object.assign "^4.1.4"
- regexp.prototype.flags "^1.5.0"
- safe-array-concat "^1.0.0"
+ regexp.prototype.flags "^1.5.1"
+ safe-array-concat "^1.0.1"
safe-regex-test "^1.0.0"
- string.prototype.trim "^1.2.7"
- string.prototype.trimend "^1.0.6"
- string.prototype.trimstart "^1.0.6"
+ string.prototype.trim "^1.2.8"
+ string.prototype.trimend "^1.0.7"
+ string.prototype.trimstart "^1.0.7"
typed-array-buffer "^1.0.0"
typed-array-byte-length "^1.0.0"
typed-array-byte-offset "^1.0.0"
typed-array-length "^1.0.4"
unbox-primitive "^1.0.2"
- which-typed-array "^1.1.10"
+ which-typed-array "^1.1.13"
es-module-lexer@^0.9.0:
version "0.9.3"
@@ -3934,14 +3914,14 @@ eslint-import-resolver-node@^0.3.6:
debug "^3.2.7"
resolve "^1.20.0"
-eslint-import-resolver-node@^0.3.7:
- version "0.3.7"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7"
- integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==
+eslint-import-resolver-node@^0.3.9:
+ version "0.3.9"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
+ integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
dependencies:
debug "^3.2.7"
- is-core-module "^2.11.0"
- resolve "^1.22.1"
+ is-core-module "^2.13.0"
+ resolve "^1.22.4"
eslint-module-utils@^2.7.3:
version "2.7.3"
@@ -3974,26 +3954,26 @@ eslint-plugin-es@^4.1.0:
eslint-utils "^2.0.0"
regexpp "^3.0.0"
-eslint-plugin-import@2.28.1:
- version "2.28.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4"
- integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==
+eslint-plugin-import@2.29.0:
+ version "2.29.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155"
+ integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==
dependencies:
- array-includes "^3.1.6"
- array.prototype.findlastindex "^1.2.2"
- array.prototype.flat "^1.3.1"
- array.prototype.flatmap "^1.3.1"
+ array-includes "^3.1.7"
+ array.prototype.findlastindex "^1.2.3"
+ array.prototype.flat "^1.3.2"
+ array.prototype.flatmap "^1.3.2"
debug "^3.2.7"
doctrine "^2.1.0"
- eslint-import-resolver-node "^0.3.7"
+ eslint-import-resolver-node "^0.3.9"
eslint-module-utils "^2.8.0"
- has "^1.0.3"
- is-core-module "^2.13.0"
+ hasown "^2.0.0"
+ is-core-module "^2.13.1"
is-glob "^4.0.3"
minimatch "^3.1.2"
- object.fromentries "^2.0.6"
- object.groupby "^1.0.0"
- object.values "^1.1.6"
+ object.fromentries "^2.0.7"
+ object.groupby "^1.0.1"
+ object.values "^1.1.7"
semver "^6.3.1"
tsconfig-paths "^3.14.2"
@@ -4554,6 +4534,11 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
function.prototype.name@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
@@ -4564,6 +4549,16 @@ function.prototype.name@^1.1.5:
es-abstract "^1.19.0"
functions-have-names "^1.2.2"
+function.prototype.name@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
+ integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ functions-have-names "^1.2.3"
+
functions-have-names@^1.2.2, functions-have-names@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
@@ -4616,6 +4611,16 @@ get-intrinsic@^1.2.1:
has-proto "^1.0.1"
has-symbols "^1.0.3"
+get-intrinsic@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b"
+ integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
+ dependencies:
+ 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"
@@ -4829,6 +4834,13 @@ hash-sum@^2.0.0:
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
+hasown@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
+ integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
+ dependencies:
+ function-bind "^1.1.2"
+
he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@@ -5048,7 +5060,7 @@ internal-slot@^1.0.3:
has "^1.0.3"
side-channel "^1.0.4"
-internal-slot@^1.0.4, internal-slot@^1.0.5:
+internal-slot@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==
@@ -5131,13 +5143,6 @@ is-ci@^1.0.10:
dependencies:
ci-info "^1.5.0"
-is-core-module@^2.11.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
- integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
- dependencies:
- has "^1.0.3"
-
is-core-module@^2.13.0:
version "2.13.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db"
@@ -5145,6 +5150,13 @@ is-core-module@^2.13.0:
dependencies:
has "^1.0.3"
+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==
+ dependencies:
+ hasown "^2.0.0"
+
is-core-module@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887"
@@ -5302,6 +5314,13 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.9:
gopd "^1.0.1"
has-tostringtag "^1.0.0"
+is-typed-array@^1.1.12:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a"
+ integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==
+ dependencies:
+ which-typed-array "^1.1.11"
+
is-typedarray@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -6075,10 +6094,10 @@ object-inspect@^1.12.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
-object-inspect@^1.12.2, object-inspect@^1.12.3:
- version "1.12.3"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
- integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
+object-inspect@^1.13.1:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
+ integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
object-inspect@^1.9.0:
version "1.10.2"
@@ -6110,23 +6129,23 @@ object.assign@^4.1.4:
has-symbols "^1.0.3"
object-keys "^1.1.1"
-object.fromentries@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73"
- integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==
+object.fromentries@^2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616"
+ integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
-object.groupby@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.0.tgz#cb29259cf90f37e7bac6437686c1ea8c916d12a9"
- integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==
+object.groupby@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee"
+ integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==
dependencies:
call-bind "^1.0.2"
define-properties "^1.2.0"
- es-abstract "^1.21.2"
+ es-abstract "^1.22.1"
get-intrinsic "^1.2.1"
object.values@^1.1.5:
@@ -6138,14 +6157,14 @@ object.values@^1.1.5:
define-properties "^1.1.3"
es-abstract "^1.19.1"
-object.values@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d"
- integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==
+object.values@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a"
+ integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
@@ -6941,14 +6960,14 @@ regexp.prototype.flags@^1.4.3:
define-properties "^1.1.3"
functions-have-names "^1.2.2"
-regexp.prototype.flags@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
- integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==
+regexp.prototype.flags@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e"
+ integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==
dependencies:
call-bind "^1.0.2"
define-properties "^1.2.0"
- functions-have-names "^1.2.3"
+ set-function-name "^2.0.0"
regexpp@^3.0.0:
version "3.1.0"
@@ -7047,7 +7066,7 @@ resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2:
is-core-module "^2.2.0"
path-parse "^1.0.6"
-resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.0:
+resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.0:
version "1.22.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
@@ -7056,6 +7075,15 @@ resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.0:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
+resolve@^1.22.4:
+ version "1.22.8"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -7110,13 +7138,13 @@ rxjs@^7.0.0:
dependencies:
tslib "^2.1.0"
-safe-array-concat@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060"
- integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==
+safe-array-concat@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c"
+ integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==
dependencies:
call-bind "^1.0.2"
- get-intrinsic "^1.2.0"
+ get-intrinsic "^1.2.1"
has-symbols "^1.0.3"
isarray "^2.0.5"
@@ -7299,6 +7327,25 @@ serve-static@1.15.0:
parseurl "~1.3.3"
send "0.18.0"
+set-function-length@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
+ integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==
+ dependencies:
+ define-data-property "^1.1.1"
+ get-intrinsic "^1.2.1"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.0"
+
+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"
+ integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==
+ dependencies:
+ define-data-property "^1.0.1"
+ functions-have-names "^1.2.3"
+ has-property-descriptors "^1.0.0"
+
setprototypeof@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
@@ -7535,14 +7582,14 @@ string-width@^4.2.3:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
-string.prototype.trim@^1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533"
- integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==
+string.prototype.trim@^1.2.8:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd"
+ integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
string.prototype.trimend@^1.0.5:
version "1.0.5"
@@ -7553,14 +7600,14 @@ string.prototype.trimend@^1.0.5:
define-properties "^1.1.4"
es-abstract "^1.19.5"
-string.prototype.trimend@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533"
- integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==
+string.prototype.trimend@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e"
+ integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
string.prototype.trimstart@^1.0.5:
version "1.0.5"
@@ -7571,14 +7618,14 @@ string.prototype.trimstart@^1.0.5:
define-properties "^1.1.4"
es-abstract "^1.19.5"
-string.prototype.trimstart@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4"
- integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==
+string.prototype.trimstart@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298"
+ integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
string_decoder@^1.1.1:
version "1.3.0"
@@ -8527,28 +8574,16 @@ which-boxed-primitive@^1.0.2:
is-string "^1.0.5"
is-symbol "^1.0.3"
-which-typed-array@^1.1.10:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a"
- integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==
- dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- for-each "^0.3.3"
- gopd "^1.0.1"
- has-tostringtag "^1.0.0"
-
-which-typed-array@^1.1.9:
- version "1.1.9"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6"
- integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==
+which-typed-array@^1.1.11, which-typed-array@^1.1.13:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36"
+ integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==
dependencies:
available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
+ call-bind "^1.0.4"
for-each "^0.3.3"
gopd "^1.0.1"
has-tostringtag "^1.0.0"
- is-typed-array "^1.1.10"
which@^1.2.9:
version "1.3.1"
From b8ebf7ba71f48f3c5910b715e5bf576644d4d9de Mon Sep 17 00:00:00 2001
From: alex <85208095+alexnsfw@users.noreply.github.com>
Date: Wed, 25 Oct 2023 13:46:45 -0400
Subject: [PATCH 07/39] scraper: Fix SexBabesVR scraper (#1444)
---
pkg/scrape/sexbabesvr.go | 61 ++++++++--------------------------------
1 file changed, 11 insertions(+), 50 deletions(-)
diff --git a/pkg/scrape/sexbabesvr.go b/pkg/scrape/sexbabesvr.go
index 2d1681356..75bcde0a6 100644
--- a/pkg/scrape/sexbabesvr.go
+++ b/pkg/scrape/sexbabesvr.go
@@ -3,9 +3,6 @@ package scrape
import (
"encoding/json"
"net/url"
- "regexp"
- "sort"
- "strconv"
"strings"
"sync"
"time"
@@ -83,18 +80,20 @@ func SexBabesVR(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out c
})
// Date
- sc.Released = e.Request.Ctx.Get("released")
+ releaseDateText := e.ChildText(`.video-detail__description--container > div:last-of-type`)
+ tmpDate, _ := time.Parse("Jan 02, 2006", releaseDateText)
+ sc.Released = tmpDate.Format("2006-01-02")
// Duration
// Filenames
- // old site, needs update
+ // old site, needs update
e.ForEach(`div.modal a.vd-row`, func(id int, e *colly.HTMLElement) {
origURL, _ := url.Parse(e.Attr("href"))
base := origURL.Query().Get("response-content-disposition")
- base = strings.Replace(base, "attachment; filename=", "", -1)
- base = strings.Replace(base, "\"", "", -1)
- base = strings.Replace(base, "_trailer", "", -1)
+ base = strings.ReplaceAll(base, "attachment; filename=", "")
+ base = strings.ReplaceAll(base, "\"", "")
+ base = strings.ReplaceAll(base, "_trailer", "")
if !funk.ContainsString(sc.Filenames, base) {
sc.Filenames = append(sc.Filenames, base)
}
@@ -108,22 +107,11 @@ func SexBabesVR(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out c
siteCollector.Visit(pageURL)
})
- type video struct {
- url string
- released string
- }
- videoList := make(map[int]video)
-
siteCollector.OnHTML(`div.videos__content`, func(e *colly.HTMLElement) {
- e.ForEach(`a.video-container__description--information`, func(cnt int, e *colly.HTMLElement) {
+ e.ForEach(`a.video-container__description--title`, func(cnt int, e *colly.HTMLElement) {
sceneURL := e.Request.AbsoluteURL(e.Attr("href"))
- re := regexp.MustCompile(`(?m)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{2}`)
- match := re.FindAllString(e.Text, -1)
-
- if len(match) > 0 {
- // If scene exist in database, there's no need to scrape
- page, _ := strconv.Atoi(strings.ReplaceAll(e.Request.URL.String(), "https://sexbabesvr.com/vr-porn-videos/", ""))
- videoList[page*1000+cnt] = video{url: sceneURL, released: match[0]}
+ if !funk.ContainsString(knownScenes, sceneURL) {
+ sceneCollector.Visit(sceneURL)
}
})
})
@@ -132,38 +120,11 @@ func SexBabesVR(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out c
lastMonth = int(time.Now().Month())
if singleSceneURL != "" {
- ctx := colly.NewContext()
- ctx.Put("released", "")
-
- sceneCollector.Request("GET", singleSceneURL, nil, ctx, nil)
+ sceneCollector.Visit(singleSceneURL)
} else {
siteCollector.Visit("https://sexbabesvr.com/vr-porn-videos")
}
- // Sort the videoList as page visits may not return in the same speed and be out of order
- var sortedVideos []int
- for key := range videoList {
- sortedVideos = append(sortedVideos, key)
- }
- sort.Ints(sortedVideos)
-
- for _, seq := range sortedVideos {
- ctx := colly.NewContext()
- tmpDate, _ := time.Parse("Jan 02", videoList[seq].released)
- if tmpDate.Month() == 12 && lastMonth == 1 {
- currentYear -= 1
- } else if tmpDate.Month() == 1 && lastMonth == 12 {
- currentYear += 1
- }
- tmpDate = tmpDate.AddDate(currentYear-tmpDate.Year(), 0, 0)
- lastMonth = int(tmpDate.Month())
- ctx.Put("released", tmpDate.Format("2006-01-02"))
-
- if !funk.ContainsString(knownScenes, videoList[seq].url) {
- sceneCollector.Request("GET", videoList[seq].url, nil, ctx, nil)
- }
- }
-
if updateSite {
updateSiteLastUpdate(scraperID)
}
From 81d823174b60b2a249ebe93c4e286cf31ed05b2e Mon Sep 17 00:00:00 2001
From: vt-idiot <81622808+vt-idiot@users.noreply.github.com>
Date: Wed, 25 Oct 2023 13:47:25 -0400
Subject: [PATCH 08/39] scraper: Use better cover images for SexBabesVR (#1443)
Restores original, uncropped 1000x667 SexBabesVR covers. The videoDetail2x URL is serving a terrible looking 2x DPI upscale of an already upscaled crop (videoDetail). Removing that part of the path entirely returns the same type of cover image their site used before the re-design.
---
pkg/scrape/sexbabesvr.go | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pkg/scrape/sexbabesvr.go b/pkg/scrape/sexbabesvr.go
index 75bcde0a6..d8d044c55 100644
--- a/pkg/scrape/sexbabesvr.go
+++ b/pkg/scrape/sexbabesvr.go
@@ -40,7 +40,7 @@ func SexBabesVR(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out c
e.ForEach(`dl8-video`, func(id int, e *colly.HTMLElement) {
sc.SiteID = e.Attr("data-scene")
sc.SceneID = slugify.Slugify(sc.Site) + "-" + sc.SiteID
- sc.Covers = append(sc.Covers, e.Attr("poster"))
+ sc.Covers = append(sc.Covers, strings.Replace(e.Attr("poster"), "/videoDetail2x", "", -1))
})
// Title
From 25d99294897d375fec4aa57858b86dba14310ac7 Mon Sep 17 00:00:00 2001
From: toshski <104477758+toshski@users.noreply.github.com>
Date: Thu, 26 Oct 2023 06:52:12 +1300
Subject: [PATCH 09/39] Fix: Edited Duration not saved (#1437)
* Edited Duration not saved
* Fix saves with no durnation change
---
pkg/api/scenes.go | 6 +++++-
pkg/tasks/content.go | 9 +++++++--
ui/src/views/scenes/EditScene.vue | 1 +
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/pkg/api/scenes.go b/pkg/api/scenes.go
index e0e446e54..a596588b0 100644
--- a/pkg/api/scenes.go
+++ b/pkg/api/scenes.go
@@ -64,6 +64,7 @@ type RequestEditSceneDetails struct {
Images string `json:"images"`
CoverURL string `json:"cover_url"`
IsMultipart bool `json:"is_multipart"`
+ Duration string `json:"duration"`
}
type ResponseGetScenes struct {
@@ -804,7 +805,10 @@ func (i SceneResource) editScene(req *restful.Request, resp *restful.Response) {
scene.IsMultipart = r.IsMultipart
models.AddAction(scene.SceneID, "edit", "is_multipart", strconv.FormatBool(r.IsMultipart))
}
-
+ if strconv.Itoa(scene.Duration) != r.Duration {
+ scene.Duration, _ = strconv.Atoi(r.Duration)
+ models.AddAction(scene.SceneID, "edit", "duration", r.Duration)
+ }
ProcessTagChanges(&scene, &r.Tags, db)
newCast := make([]models.Actor, 0)
diff --git a/pkg/tasks/content.go b/pkg/tasks/content.go
index 98c7ceaa4..d0f0542ea 100644
--- a/pkg/tasks/content.go
+++ b/pkg/tasks/content.go
@@ -238,10 +238,15 @@ func ReapplyEdits() {
continue
}
// Reapply other edits
- db.Model(&scene).Update(a.ChangedColumn, a.NewValue)
- if a.ChangedColumn == "release_date_text" {
+ switch a.ChangedColumn {
+ case "duration":
+ i, _ := strconv.Atoi(a.NewValue)
+ db.Model(&scene).Update(a.ChangedColumn, i)
+ case "release_date_text":
dt, _ := time.Parse("2006-01-02", a.NewValue)
db.Model(&scene).Update("release_date", dt)
+ default:
+ db.Model(&scene).Update(a.ChangedColumn, a.NewValue)
}
}
db.Model(&models.Scene{}).UpdateColumn("edits_applied", true)
diff --git a/ui/src/views/scenes/EditScene.vue b/ui/src/views/scenes/EditScene.vue
index be05084a5..9f317be15 100644
--- a/ui/src/views/scenes/EditScene.vue
+++ b/ui/src/views/scenes/EditScene.vue
@@ -205,6 +205,7 @@ export default {
this.scene.images = JSON.stringify(images)
this.scene.cover_url = this.scene.covers[0]
this.scene.filenames_arr = JSON.stringify(this.scene.files)
+ this.scene.duration = String(this.scene.duration) // force to a string, if no change the UI sends an int, otherwise a string, nust be constant
ky.post(`/api/scene/edit/${this.scene.id}`, { json: { ...this.scene } })
From 33574fe1553ec0e2aa2460164ce57b17515b0034 Mon Sep 17 00:00:00 2001
From: vt-idiot <81622808+vt-idiot@users.noreply.github.com>
Date: Wed, 25 Oct 2023 13:59:19 -0400
Subject: [PATCH 10/39] scraper: Remove javbus.com scraper, replace with
R18.dev scraper (#1432)
* Update content.go
Remove javbus reference, replace with r18.dev
* Update OptionsSceneCreate.vue
Replace javbus reference with r18.dev
* Update and rename javbus.go to r18d.go
YOLO
* It works.
* Removed line break
* Update r18d.go
gofmt hate
* Update r18d.go
If title is machine translated, puts it in the scene synopsis instead of throwing it away
* Update r18d.go
Basic filler filename parser based on content ID, presence of quality tags, and FANZA filename suffixes.
* gofmt
really, gofmt? the code ran...
* Update r18d.go
Removed one set of filler filenames.
---
pkg/scrape/javbus.go | 110 ---------------
pkg/scrape/r18d.go | 126 ++++++++++++++++++
pkg/tasks/content.go | 6 +-
.../options/sections/OptionsSceneCreate.vue | 3 +-
4 files changed, 131 insertions(+), 114 deletions(-)
delete mode 100644 pkg/scrape/javbus.go
create mode 100644 pkg/scrape/r18d.go
diff --git a/pkg/scrape/javbus.go b/pkg/scrape/javbus.go
deleted file mode 100644
index c47b1f991..000000000
--- a/pkg/scrape/javbus.go
+++ /dev/null
@@ -1,110 +0,0 @@
-package scrape
-
-import (
- "regexp"
- "strconv"
- "strings"
-
- "github.com/gocolly/colly/v2"
- "github.com/xbapps/xbvr/pkg/models"
-)
-
-func ScrapeJavBus(out *[]models.ScrapedScene, queryString string) {
- sceneCollector := createCollector("www.javbus.com")
-
- sceneCollector.OnHTML(`html`, func(html *colly.HTMLElement) {
- sc := models.ScrapedScene{}
- sc.SceneType = "VR"
-
- // Always add 'javr' as a tag
- sc.Tags = append(sc.Tags, `javr`)
-
- // Always add 'javbus' as a tag
- sc.Tags = append(sc.Tags, `javbus`)
-
- html.ForEach(`div.row.movie div.info > p`, func(id int, p *colly.HTMLElement) {
- label := p.ChildText(`span.header`)
-
- if label == `Studio:` {
- // Studio
- sc.Studio = p.ChildText(`a`)
-
- } else if label == `ID:` {
- // Title, SceneID and SiteID all like 'VRKM-821' format
- idRegex := regexp.MustCompile("^([A-Za-z0-9]+)-([0-9]+)$")
- p.ForEach("span", func(_ int, span *colly.HTMLElement) {
- match := idRegex.FindStringSubmatch(span.Text)
- if match != nil && len(match) > 2 {
- dvdId := match[1] + "-" + match[2]
- sc.Title = dvdId
- sc.SceneID = dvdId
- sc.SiteID = dvdId
- sc.Site = match[1]
- }
- })
-
- } else if label == `Release Date:` {
- // Release date
- dateStr := p.Text
- dateRegex := regexp.MustCompile("(\\d\\d\\d\\d-\\d\\d-\\d\\d)")
- match := dateRegex.FindStringSubmatch(dateStr)
- if match != nil && len(match) > 1 {
- sc.Released = match[1]
- }
-
- } else if label == `Length:` {
- // Duration
- durationStr := p.Text
- durationRegex := regexp.MustCompile("(\\d+)")
- match := durationRegex.FindStringSubmatch(durationStr)
- if match != nil && len(match) > 1 {
- sc.Duration, _ = strconv.Atoi(match[1])
- }
- }
- })
-
- // Tags
- html.ForEach("div.row.movie span.genre > label > a", func(id int, anchor *colly.HTMLElement) {
- href := anchor.Attr("href")
- if strings.Contains(href, "javbus.com/en/genre/") {
- // Tags
- tag := ProcessJavrTag(anchor.Text)
-
- if tag != "" {
- sc.Tags = append(sc.Tags, tag)
- }
- }
- })
-
- // Cast
- html.ForEach("div.row.movie div.star-name > a", func(id int, anchor *colly.HTMLElement) {
- href := anchor.Attr("href")
- if strings.Contains(href, "javbus.com/en/star/") {
- sc.Cast = append(sc.Cast, anchor.Text)
- }
- })
-
- // Screenshots
- html.ForEach("a[href]", func(_ int, anchor *colly.HTMLElement) {
- linkHref := anchor.Attr(`href`)
- if strings.HasPrefix(linkHref, "https://pics.dmm.co.jp/digital/video/") && strings.HasSuffix(linkHref, `.jpg`) {
- sc.Gallery = append(sc.Gallery, linkHref)
- }
- })
-
- // Apply post-processing for error-correcting code
- PostProcessJavScene(&sc, "")
-
- if sc.SceneID != "" {
- *out = append(*out, sc)
- }
- })
-
- // Allow comma-separated scene id's
- scenes := strings.Split(queryString, ",")
- for _, v := range scenes {
- sceneCollector.Visit("https://www.javbus.com/en/" + strings.ToUpper(v) + "/")
- }
-
- sceneCollector.Wait()
-}
diff --git a/pkg/scrape/r18d.go b/pkg/scrape/r18d.go
new file mode 100644
index 000000000..f5acb75bc
--- /dev/null
+++ b/pkg/scrape/r18d.go
@@ -0,0 +1,126 @@
+package scrape
+
+import (
+ "html"
+ "strconv"
+ "strings"
+
+ "github.com/go-resty/resty/v2"
+ "github.com/tidwall/gjson"
+ "github.com/xbapps/xbvr/pkg/models"
+)
+
+func ScrapeR18D(out *[]models.ScrapedScene, queryString string) error {
+ scenes := strings.Split(queryString, ",")
+ for _, v := range scenes {
+ sc := models.ScrapedScene{}
+ sc.SceneType = "VR"
+
+ r, _ := resty.New().R().Get("https://r18.dev/videos/vod/movies/detail/-/combined=" + v + "/json")
+ JsonMetadata := r.String()
+
+ content_id := gjson.Get(JsonMetadata, "content_id").String()
+ sc.HomepageURL = "https://www.dmm.co.jp/en/digital/videoa/-/detail/=/cid=" + content_id + "/"
+
+ // Title
+ if gjson.Get(JsonMetadata, "title_en_is_machine_translation").String() == "false" {
+ sc.Title = strings.Replace(strings.TrimSpace(html.UnescapeString(gjson.Get(JsonMetadata, "title_en").String())), "[VR] ", "", -1)
+ } else {
+ sc.Title = gjson.Get(JsonMetadata, "content_id").String()
+ sc.Synopsis = gjson.Get(JsonMetadata, "title_en").String()
+ }
+
+ // Studio
+ sc.Studio = gjson.Get(JsonMetadata, "maker_name_en").String()
+
+ // Date
+ sc.Released = gjson.Get(JsonMetadata, "release_date").String()
+
+ // Time
+ tmpDuration, err := strconv.Atoi(gjson.Get(JsonMetadata, "runtime_mins").String())
+ if err == nil {
+ sc.Duration = tmpDuration
+ }
+
+ // Covers
+ coverimgs := gjson.Get(JsonMetadata, "jacket_full_url")
+ sc.Covers = append(sc.Covers, strings.TrimSpace(html.UnescapeString(coverimgs.String())))
+
+ // Gallery
+ galleryimgs := gjson.Get(JsonMetadata, "gallery.#.image_full")
+ for _, name := range galleryimgs.Array() {
+ sc.Gallery = append(sc.Gallery, strings.TrimSpace(html.UnescapeString(name.String())))
+ }
+
+ // Cast
+ actornames := gjson.Get(JsonMetadata, "actresses.#.name_romaji")
+ for _, name := range actornames.Array() {
+ sc.Cast = append(sc.Cast, strings.TrimSpace(html.UnescapeString(name.String())))
+ }
+
+ // Tags
+ // Skipping some very generic and useless tags
+ skiptags := map[string]bool{
+ "Featured Actress": true,
+ "VR Exclusive": true,
+ "High-Quality VR": true,
+ "Exclusive Distribution": true,
+ }
+
+ // JSON dump from R18's final days shows "女子校生" replaced with "Academy Uniform" instead of "Schoolgirl" - r18.dev seems to follow the same mapping for FANZA category 1018 - get your credit card compliance puritanism out of my porn, I don't need "Academy Uniform" and "Uniform" tagged together lmao
+ joshikosei := "Academy Uniform"
+
+ taglist := gjson.Get(JsonMetadata, "categories.#.name_en")
+ quality := "VR"
+ has8KVR := false
+ for _, name := range taglist.Array() {
+ if name.Str == "8KVR" {
+ has8KVR = true
+ quality = "8K"
+ } else if name.Str == "High-Quality VR" && !has8KVR {
+ quality = "HQ"
+ }
+ if !skiptags[name.Str] {
+ if name.Str == joshikosei {
+ sc.Tags = append(sc.Tags, "schoolgirl")
+ } else {
+ sc.Tags = append(sc.Tags, strings.TrimSpace(html.UnescapeString(name.String())))
+ }
+ }
+ }
+ sc.Tags = append(sc.Tags, "JAVR")
+ sc.Tags = append(sc.Tags, "R18.dev")
+
+ // Scene ID and Site
+ dvdID := gjson.Get(JsonMetadata, "dvd_id").String()
+ if dvdID == "----" || dvdID == "" {
+ sc.SceneID = content_id
+ sc.SiteID = content_id
+ sc.Site = gjson.Get(JsonMetadata, "label_name_en").String()
+ } else {
+ sc.SceneID = dvdID
+ sc.SiteID = dvdID
+ sc.Site = strings.Split(dvdID, "-")[0]
+ }
+
+ // Filler Filenames
+ resolutions := []string{"vmb"}
+ if quality == "HQ" {
+ resolutions = []string{"vrv1uhqe"}
+ } else if quality == "8K" {
+ resolutions = []string{"vrv1uhqf", "vrv18khia"}
+ }
+ for r := range resolutions {
+ parts := []string{"", "1", "2", "3"}
+ for p := range parts {
+ fn := content_id + resolutions[r] + parts[p] + ".mp4"
+ sc.Filenames = append(sc.Filenames, fn)
+ }
+ }
+
+ if sc.SceneID != "" {
+ *out = append(*out, sc)
+ }
+ }
+ return nil
+}
diff --git a/pkg/tasks/content.go b/pkg/tasks/content.go
index d0f0542ea..6a612fee4 100644
--- a/pkg/tasks/content.go
+++ b/pkg/tasks/content.go
@@ -352,9 +352,9 @@ func ScrapeJAVR(queryString string, scraper string) {
if scraper == "javlibrary" {
tlog.Infof("Scraping JavLibrary")
scrape.ScrapeJavLibrary(&collectedScenes, queryString)
- } else if scraper == "javbus" {
- tlog.Infof("Scraping JavBus")
- scrape.ScrapeJavBus(&collectedScenes, queryString)
+ } else if scraper == "r18d" {
+ tlog.Infof("Scraping R18.dev")
+ scrape.ScrapeR18D(&collectedScenes, queryString)
} else if scraper == "javland" {
tlog.Infof("Scraping JavLand")
scrape.ScrapeJavLand(&collectedScenes, queryString)
diff --git a/ui/src/views/options/sections/OptionsSceneCreate.vue b/ui/src/views/options/sections/OptionsSceneCreate.vue
index 91f4519fa..9c2f0b2af 100644
--- a/ui/src/views/options/sections/OptionsSceneCreate.vue
+++ b/ui/src/views/options/sections/OptionsSceneCreate.vue
@@ -6,13 +6,14 @@
javdatabase.com
+ r18.dev
javlibrary.com
- javbus.com
jav.land
{{$t('Go')}}
+ R18.dev scraper requires FANZA content ID, e.g. 84vrkm00139
From 1097b066b283d81605371cea714c1d71c061e7d5 Mon Sep 17 00:00:00 2001
From: toshski <104477758+toshski@users.noreply.github.com>
Date: Thu, 26 Oct 2023 06:59:54 +1300
Subject: [PATCH 11/39] feat: Add star rating to QuickFind (#1436)
---
ui/src/QuickFind.vue | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/ui/src/QuickFind.vue b/ui/src/QuickFind.vue
index 7fe863e90..6236afa27 100644
--- a/ui/src/QuickFind.vue
+++ b/ui/src/QuickFind.vue
@@ -48,7 +48,7 @@
- {{ props.option.site}}
+ {{ props.option.site}}
{{ props.option.title }}
@@ -58,6 +58,7 @@
+
@@ -217,6 +230,8 @@ export default {
currentPlaylist: '0',
myUrl: '/download/xbvr-content-bundle.json',
file: null,
+ testfile: null,
+ progressMsg:"",
uploadData: '',
activeTab: 0,
activeSubTab: 0
@@ -236,13 +251,46 @@ export default {
watch: {
// when a file is selected, then this will fire the upload process
file: function (o, n) {
- if (this.file != null) {
- const reader = new FileReader()
- reader.onload = (event) => {
- this.uploadData = JSON.stringify(JSON.parse(event.target.result))
- this.restoreContent()
+ try {
+ if (this.file != null) {
+ const reader = new FileReader()
+ reader.onload = (event) => {
+ try {
+ this.uploadData = JSON.stringify(JSON.parse(event.target.result))
+ this.restoreContent()
+ } catch (error) {
+ this.$buefy.toast.open({message: `Error: ${error.message}`, type: 'is-danger', duration: 30000})
+ }
+ }
+ reader.readAsText(this.file)
}
- reader.readAsText(this.file)
+ } catch (error) {
+ this.$buefy.toast.open({message: `Error: ${error.message}`, type: 'is-danger', duration: 30000})
+ }
+ },
+ testfile: function (o, n) {
+ try {
+ this.$buefy.toast.open({message: `Loading: ` + this.testfile.name, type: 'is-primary', duration: 30000})
+ if (this.testfile != null) {
+ this.progressMsg = "Uploading " + this.testfile.name
+ const reader = new FileReader()
+ reader.onload = (event) => {
+ try {
+ this.progressMsg = "File uploaded, converting to Json " + this.testfile.name
+ this.uploadData = JSON.stringify(JSON.parse(event.target.result))
+ this.progressMsg = ""
+ this.$buefy.toast.open({message: `Success Loading: ` + this.testfile.name, type: 'is-success', duration: 5000})
+ } catch (error) {
+ this.progressMsg = "Error: " + error.message
+ this.$buefy.toast.open({message: `Error: ${error.message}`, type: 'is-danger', duration: 30000})
+ }
+
+ }
+ reader.readAsText(this.testfile)
+ }
+ } catch (error) {
+ this.progressMsg = "Error: " + error.message
+ this.$buefy.toast.open({message: `Error: ${error.message}`, type: 'is-danger', duration: 30000})
}
}
},
From 434037eed468fdec904f214380757130c3a73e38 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 25 Oct 2023 20:04:50 +0200
Subject: [PATCH 13/39] chore(deps): update dependency eslint-plugin-vue to
v9.18.0 (#1447)
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 297fcba67..1c814c737 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "6.1.1",
"eslint-plugin-standard": "4.1.0",
- "eslint-plugin-vue": "9.17.0",
+ "eslint-plugin-vue": "9.18.0",
"less": "4.2.0",
"less-loader": "11.1.3",
"sass": "1.69.4",
diff --git a/yarn.lock b/yarn.lock
index 1d78f0495..66993727b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4037,10 +4037,10 @@ eslint-plugin-standard@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-vue@9.17.0:
- version "9.17.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz#4501547373f246547083482838b4c8f4b28e5932"
- integrity sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==
+eslint-plugin-vue@9.18.0:
+ version "9.18.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.0.tgz#2a2dbb3c67317e8c11ab56cafaa15a3a7eac6282"
+ integrity sha512-yUM8a2OD/7Qs0PiugkRaxgz5KBRvzMvWShity2UvVFAN0yk8029mGpTdg/TNARPiYzp335mEwDHwcAR8tQNe4g==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
natural-compare "^1.4.0"
From 308da04c1a185c8b4f5811d78bc70db3d027ea2e Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 25 Oct 2023 20:05:03 +0200
Subject: [PATCH 14/39] chore(deps): update dependency webpack to v5.89.0
(#1448)
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 1c814c737..8b45d3495 100644
--- a/package.json
+++ b/package.json
@@ -57,7 +57,7 @@
"vue-cli-plugin-i18n": "2.3.2",
"vue-i18n-extract": "2.0.7",
"vue-template-compiler": "2.7.15",
- "webpack": "5.88.2"
+ "webpack": "5.89.0"
},
"eslintConfig": {
"root": true,
diff --git a/yarn.lock b/yarn.lock
index 66993727b..7c04d1ef7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8452,10 +8452,10 @@ webpack-virtual-modules@^0.4.2:
resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz#a19fcf371923c59c4712d63d7d194b1e4d8262cc"
integrity sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==
-webpack@5.88.2:
- version "5.88.2"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e"
- integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==
+webpack@5.89.0:
+ version "5.89.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc"
+ integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^1.0.0"
From efa4407719c1cf87f726259f9dbc38249b55c57f Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 26 Oct 2023 17:37:09 +0200
Subject: [PATCH 15/39] chore(deps): update dependency sass to v1.69.5 (#1454)
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 8b45d3495..dea1bb8e0 100644
--- a/package.json
+++ b/package.json
@@ -51,7 +51,7 @@
"eslint-plugin-vue": "9.18.0",
"less": "4.2.0",
"less-loader": "11.1.3",
- "sass": "1.69.4",
+ "sass": "1.69.5",
"sass-loader": "13.3.2",
"simple-progress-webpack-plugin": "2.0.0",
"vue-cli-plugin-i18n": "2.3.2",
diff --git a/yarn.lock b/yarn.lock
index 7c04d1ef7..3c6549033 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7186,10 +7186,10 @@ sass-loader@13.3.2:
dependencies:
neo-async "^2.6.2"
-sass@1.69.4:
- version "1.69.4"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.4.tgz#10c735f55e3ea0b7742c6efa940bce30e07fbca2"
- integrity sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==
+sass@1.69.5:
+ version "1.69.5"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde"
+ integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
From d82b55ee4de948ae7b10ca3a030aaf81e9a28499 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 26 Oct 2023 17:37:21 +0200
Subject: [PATCH 16/39] fix(deps): update module github.com/anacrolix/ffprobe
to v1.1.0 (#1451)
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 951f97aef..530a6b348 100644
--- a/go.mod
+++ b/go.mod
@@ -6,7 +6,7 @@ require (
github.com/ProtonMail/go-appdir v1.1.0
github.com/PuerkitoBio/goquery v1.8.1
github.com/abbot/go-http-auth v0.4.0
- github.com/anacrolix/ffprobe v1.0.1
+ github.com/anacrolix/ffprobe v1.1.0
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de
github.com/avast/retry-go/v4 v4.5.0
github.com/blevesearch/bleve/v2 v2.3.10
diff --git a/go.sum b/go.sum
index 142c82daa..f6566678b 100644
--- a/go.sum
+++ b/go.sum
@@ -16,6 +16,8 @@ github.com/abbot/go-http-auth v0.4.0/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg
github.com/anacrolix/envpprof v1.0.0 h1:AwZ+mBP4rQ5f7JSsrsN3h7M2xDW/xSE66IPVOqlnuUc=
github.com/anacrolix/ffprobe v1.0.1 h1:S/MfCrUNZvbkkykX/1mmLVRf8//M7mvlY3BcwHaK3bQ=
github.com/anacrolix/ffprobe v1.0.1/go.mod h1:MXe+zG/RRa5OdIf5+VYYfS/CfsSqOH7RrvGIqJBzqhI=
+github.com/anacrolix/ffprobe v1.1.0 h1:eKBudnERW9zRJ0+ge6FzkQ0pWLyq142+FJrwRwSRMT4=
+github.com/anacrolix/ffprobe v1.1.0/go.mod h1:MXe+zG/RRa5OdIf5+VYYfS/CfsSqOH7RrvGIqJBzqhI=
github.com/anacrolix/missinggo v1.1.0 h1:0lZbaNa6zTR1bELAIzCNmRGAtkHuLDPJqTiTtXoAIx8=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY=
From 848f4ff3a8d5e8165c719a2c7facf2bf800e8991 Mon Sep 17 00:00:00 2001
From: peter23231 <148326204+peter23231@users.noreply.github.com>
Date: Thu, 2 Nov 2023 21:40:24 +0100
Subject: [PATCH 17/39] feat: Add option to show heatmaps in the scene list
(#1461)
* Add script heatmap to scene list as toggleable option (#1)
* 'Improve' CSS
* Actually 'improved' CSS
* fix for some funscripts which fail to generate a heatmap
---
pkg/api/options.go | 2 ++
pkg/config/config.go | 1 +
pkg/config/state.go | 1 +
ui/src/store/optionsWeb.js | 3 +++
.../views/options/sections/InterfaceWeb.vue | 13 ++++++++++
ui/src/views/scenes/SceneCard.vue | 25 +++++++++++++++++++
6 files changed, 45 insertions(+)
diff --git a/pkg/api/options.go b/pkg/api/options.go
index eef169b24..20d55de85 100644
--- a/pkg/api/options.go
+++ b/pkg/api/options.go
@@ -56,6 +56,7 @@ type RequestSaveOptionsWeb struct {
ShowHspFile bool `json:"showHspFile"`
ShowSubtitlesFile bool `json:"showSubtitlesFile"`
SceneTrailerlist bool `json:"sceneTrailerlist"`
+ ShowScriptHeatmap bool `json:"showScriptHeatmap"`
UpdateCheck bool `json:"updateCheck"`
}
@@ -379,6 +380,7 @@ func (i ConfigResource) saveOptionsWeb(req *restful.Request, resp *restful.Respo
config.Config.Web.ShowHspFile = r.ShowHspFile
config.Config.Web.ShowSubtitlesFile = r.ShowSubtitlesFile
config.Config.Web.SceneTrailerlist = r.SceneTrailerlist
+ config.Config.Web.ShowScriptHeatmap = r.ShowScriptHeatmap
config.Config.Web.UpdateCheck = r.UpdateCheck
config.SaveConfig()
diff --git a/pkg/config/config.go b/pkg/config/config.go
index 09b699d36..6ee6482b3 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -41,6 +41,7 @@ type ObjectConfig struct {
ShowHspFile bool `default:"true" json:"showHspFile"`
ShowSubtitlesFile bool `default:"true" json:"showSubtitlesFile"`
SceneTrailerlist bool `default:"true" json:"sceneTrailerlist"`
+ ShowScriptHeatmap bool `default:"true" json:"showScriptHeatmap"`
UpdateCheck bool `default:"true" json:"updateCheck"`
} `json:"web"`
Advanced struct {
diff --git a/pkg/config/state.go b/pkg/config/state.go
index 72814da39..4620527f6 100644
--- a/pkg/config/state.go
+++ b/pkg/config/state.go
@@ -24,6 +24,7 @@ type ObjectState struct {
ShowHspFile bool `json:"showHspFile"`
ShowSubtitlesFile bool `json:"showSubtitlesFile"`
SceneTrailerlist bool `json:"sceneTrailerlist"`
+ ShowScriptHeatmap bool `json:"showScriptHeatmap"`
UpdateCheck bool `json:"updateCheck"`
} `json:"web"`
DLNA struct {
diff --git a/ui/src/store/optionsWeb.js b/ui/src/store/optionsWeb.js
index 6aa91a99a..862ed23cf 100644
--- a/ui/src/store/optionsWeb.js
+++ b/ui/src/store/optionsWeb.js
@@ -15,6 +15,7 @@ const state = {
showHspFile: true,
showSubtitlesFile: true,
sceneTrailerlist: true,
+ showScriptHeatmap: false,
updateCheck: true
}
}
@@ -39,6 +40,7 @@ const actions = {
state.web.showHspFile = data.config.web.showHspFile
state.web.showSubtitlesFile = data.config.web.showSubtitlesFile
state.web.sceneTrailerlist = data.config.web.sceneTrailerlist
+ state.web.showScriptHeatmap = data.config.web.showScriptHeatmap
state.web.updateCheck = data.config.web.updateCheck
state.loading = false
})
@@ -60,6 +62,7 @@ const actions = {
state.web.showHspFile = data.showHspFile
state.web.showSubtitlesFile = data.showSubtitlesFile
state.web.sceneTrailerlist = data.sceneTrailerlist
+ state.web.showScriptHeatmap = data.showScriptHeatmap
state.web.updateCheck = data.updateCheck
state.loading = false
})
diff --git a/ui/src/views/options/sections/InterfaceWeb.vue b/ui/src/views/options/sections/InterfaceWeb.vue
index 9c8868a5a..55139db31 100644
--- a/ui/src/views/options/sections/InterfaceWeb.vue
+++ b/ui/src/views/options/sections/InterfaceWeb.vue
@@ -75,6 +75,11 @@
show subtitles File button
+
+
+ show Script Heatmap
+
+
@@ -168,6 +173,14 @@ export default {
this.$store.state.optionsWeb.web.sceneEdit = value
}
},
+ ScriptHeatmap: {
+ get () {
+ return this.$store.state.optionsWeb.web.showScriptHeatmap
+ },
+ set (value) {
+ this.$store.state.optionsWeb.web.showScriptHeatmap = value
+ }
+ },
updateCheck: {
get () {
return this.$store.state.optionsWeb.web.updateCheck
diff --git a/ui/src/views/scenes/SceneCard.vue b/ui/src/views/scenes/SceneCard.vue
index 4b4066670..068a5402e 100644
--- a/ui/src/views/scenes/SceneCard.vue
+++ b/ui/src/views/scenes/SceneCard.vue
@@ -41,6 +41,11 @@
{{item.duration}}m
+
+
+
+
+
@@ -153,6 +158,12 @@ export default {
this.$store.commit('overlay/showDetails', { scene: scene })
}
this.$store.commit('overlay/hideActorDetails')
+ },
+ getHeatmapURL (fileId) {
+ return `/api/dms/heatmap/${fileId}`
+ },
+ getFunscript () {
+ return this.item.file !== null && this.item.file.find(a => a.type === 'script' && a.has_heatmap);
}
}
}
@@ -204,6 +215,8 @@ export default {
.align-bottom-left {
align-items: flex-end;
justify-content: flex-end;
+ flex-wrap: wrap;
+ flex-direction: column
}
.bbox:after {
@@ -223,4 +236,16 @@ export default {
overflow: hidden;
text-overflow: ellipsis;
}
+
+.heatmapFunscript {
+ width: auto;
+}
+
+.heatmapFunscript img {
+ border: 1px #888 solid;
+ width: 100%;
+ height: 15px;
+ border-radius: 0.25rem;
+}
+
From c95f30cd6479afe0200dce0542e3633536da7cca Mon Sep 17 00:00:00 2001
From: crwxaj <52156245+crwxaj@users.noreply.github.com>
Date: Thu, 2 Nov 2023 21:40:49 +0100
Subject: [PATCH 18/39] scraper: Fix TmwVRnet (#1463)
Co-authored-by: crwxaj
---
pkg/scrape/tmwvrnet.go | 41 ++++++++++++++++++++---------------------
1 file changed, 20 insertions(+), 21 deletions(-)
diff --git a/pkg/scrape/tmwvrnet.go b/pkg/scrape/tmwvrnet.go
index 1604b16e8..6cbee6c74 100644
--- a/pkg/scrape/tmwvrnet.go
+++ b/pkg/scrape/tmwvrnet.go
@@ -32,10 +32,10 @@ func TmwVRnet(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out cha
sc.HomepageURL = strings.Split(e.Request.URL.String(), "?")[0]
// Date & Duration
- e.ForEach(`.info-block__main-info_f`, func(id int, e *colly.HTMLElement) {
- tmpDate, _ := goment.New(e.ChildText(`.date`), "MMMM DD, YYYY")
+ e.ForEach(`.video-info-data`, func(id int, e *colly.HTMLElement) {
+ tmpDate, _ := goment.New(e.ChildText(`.video-info-date`), "MMMM DD, YYYY")
sc.Released = tmpDate.Format("YYYY-MM-DD")
- tmpDuration, err := strconv.Atoi(strings.TrimSpace(strings.Replace(e.ChildText(`.durations`), " min", "", -1)))
+ tmpDuration, err := strconv.Atoi(strings.TrimSpace(strings.Replace(e.ChildText(`.video-info-time`), " min", "", -1)))
if err == nil {
sc.Duration = tmpDuration
}
@@ -45,12 +45,7 @@ func TmwVRnet(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out cha
e.ForEach(`dl8-video`, func(id int, e *colly.HTMLElement) {
sc.Title = strings.TrimSpace(e.Attr("title"))
- tmpCover := ""
- if e.Request.Ctx.GetAny("cover-id").(string) == "" {
- tmpCover = e.Request.AbsoluteURL(e.Attr("poster"))
- } else {
- tmpCover = e.Request.AbsoluteURL(e.Request.Ctx.GetAny("cover-id").(string))
- }
+ tmpCover := e.Request.AbsoluteURL(e.Attr("poster"))
sc.Covers = append(sc.Covers, tmpCover)
tmp := strings.Split(tmpCover, "/")
@@ -60,16 +55,25 @@ func TmwVRnet(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out cha
// Gallery
e.ForEach(`div.photo-list img`, func(id int, e *colly.HTMLElement) {
- sc.Gallery = append(sc.Gallery, e.Request.AbsoluteURL(e.Attr("src")))
+ galleryURL := e.Request.AbsoluteURL(e.Attr("src"))
+ if galleryURL == "" || galleryURL == "https://tmwvrnet.com/assets/vr/public/tour1/images/th5.jpg" {
+ return
+ }
+ srcset := strings.Split(e.Attr("srcset"), ",")
+ lastSrc := srcset[len(srcset)-1]
+ if lastSrc != "" {
+ galleryURL = e.Request.AbsoluteURL(strings.TrimSpace(strings.Split(lastSrc, " ")[0]))
+ }
+ sc.Gallery = append(sc.Gallery, galleryURL)
})
// Synopsis
- e.ForEach(`div.about-video p.about`, func(id int, e *colly.HTMLElement) {
+ e.ForEach(`p.video-description-text`, func(id int, e *colly.HTMLElement) {
sc.Synopsis = strings.TrimSpace(e.Text)
})
// Tags
- e.ForEach(`div.about-video .tags-list a`, func(id int, e *colly.HTMLElement) {
+ e.ForEach(`div.video-tag-list a`, func(id int, e *colly.HTMLElement) {
tag := strings.TrimSpace(e.Text)
if tag != "" {
sc.Tags = append(sc.Tags, tag)
@@ -84,7 +88,7 @@ func TmwVRnet(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out cha
// Cast
sc.ActorDetails = make(map[string]models.ActorDetails)
- e.ForEach(`div.about-video p.featuring a`, func(id int, e *colly.HTMLElement) {
+ e.ForEach(`.video-actor-list a`, func(id int, e *colly.HTMLElement) {
sc.Cast = append(sc.Cast, strings.TrimSpace(e.Text))
sc.ActorDetails[strings.TrimSpace(e.Text)] = models.ActorDetails{Source: sc.ScraperID + " scrape", ProfileUrl: e.Request.AbsoluteURL(e.Attr("href"))}
})
@@ -100,25 +104,20 @@ func TmwVRnet(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out cha
siteCollector.Visit(pageURL)
})
- siteCollector.OnHTML(`div.thumbs__image`, func(e *colly.HTMLElement) {
+ siteCollector.OnHTML(`div.thumb-photo`, func(e *colly.HTMLElement) {
sceneURL := e.Request.AbsoluteURL(e.ChildAttr(`a`, "href"))
- ctx := colly.NewContext()
- ctx.Put("cover-id", e.ChildAttr(`img`, "data-src"))
if strings.Contains(sceneURL, "trailers") {
// If scene exist in database, there's no need to scrape
if !funk.ContainsString(knownScenes, sceneURL) {
- sceneCollector.Request("GET", sceneURL, nil, ctx, nil)
+ sceneCollector.Visit(sceneURL)
}
}
})
if singleSceneURL != "" {
- ctx := colly.NewContext()
- ctx.Put("cover-id", "")
-
- sceneCollector.Request("GET", singleSceneURL, nil, ctx, nil)
+ sceneCollector.Visit(singleSceneURL)
} else {
siteCollector.Visit("https://tmwvrnet.com/categories/movies.html")
}
From 3557b8aa5e983d74ba52132e81468a3effdb055b Mon Sep 17 00:00:00 2001
From: crwxaj <52156245+crwxaj@users.noreply.github.com>
Date: Sun, 5 Nov 2023 14:08:44 +0100
Subject: [PATCH 19/39] scraper: Fix VRBangers crash (#1466)
Co-authored-by: crwxaj
---
pkg/scrape/vrbangers.go | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/pkg/scrape/vrbangers.go b/pkg/scrape/vrbangers.go
index 2702adc54..7bb556b82 100755
--- a/pkg/scrape/vrbangers.go
+++ b/pkg/scrape/vrbangers.go
@@ -32,7 +32,11 @@ func VRBangersSite(wg *sync.WaitGroup, updateSite bool, knownScenes []string, ou
sc.Site = siteID
sc.HomepageURL = strings.Split(e.Request.URL.String(), "?")[0]
- content_id := strings.Split(strings.Replace(sc.HomepageURL, "//", "/", -1), "/")[3]
+ parts := strings.Split(strings.Replace(sc.HomepageURL, "//", "/", -1), "/")
+ if len(parts) < 4 {
+ return
+ }
+ content_id := parts[3]
//https://content.vrbangers.com
contentURL := strings.Replace(URL, "//", "//content.", 1)
From 10bfaec2e968083e7475672e55a4c35f40b972bc Mon Sep 17 00:00:00 2001
From: vt-idiot <81622808+vt-idiot@users.noreply.github.com>
Date: Sun, 5 Nov 2023 08:11:07 -0500
Subject: [PATCH 20/39] scraper: Better filename generation for SLR scrapers
(#1440)
* Update slrstudios.go
Attempt at re-writing the filename part of the scraper.
* Update slrstudios.go
Uses the API to properly set only the relevant filenames.
* Update slrstudios.go
Additional fix for trans scene ID collisions. And the old filename method is necessary for trans scenes unless someone knows the API endpoint.
---
pkg/scrape/slrstudios.go | 127 +++++++++++++++++++++++++++------------
1 file changed, 88 insertions(+), 39 deletions(-)
diff --git a/pkg/scrape/slrstudios.go b/pkg/scrape/slrstudios.go
index 4c0b2f353..4ecd26593 100644
--- a/pkg/scrape/slrstudios.go
+++ b/pkg/scrape/slrstudios.go
@@ -133,6 +133,10 @@ func SexLikeReal(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out
sc.TrailerType = "slr"
sc.TrailerSrc = "https://api.sexlikereal.com/virtualreality/video/id/" + sc.SiteID
+ s, _ := resty.New().R().
+ SetHeader("User-Agent", UserAgent).
+ Get(sc.TrailerSrc)
+ JsonMetadataA := s.String()
isTransScene := e.Request.Ctx.GetAny("isTransScene").(bool)
@@ -202,6 +206,9 @@ func SexLikeReal(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out
// Title
sc.Title = gjson.Get(JsonMetadata, "title").String()
+ // Fix Scene ID Collisions
+ sc.SceneID = "slr-trans-" + sc.SiteID
+
// Duration - Not Available
// Filenames
@@ -223,10 +230,6 @@ func SexLikeReal(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out
// Passthrough "chromaKey":{"enabled":false,"hasAlpha":true,"h":0,"opacity":1,"s":0,"threshold":0,"v":0}
if alphA == "PT" {
- s, _ := resty.New().R().
- SetHeader("User-Agent", UserAgent).
- Get(sc.TrailerSrc)
- JsonMetadataA := s.String()
if gjson.Get(JsonMetadataA, "chromaKey").Exists() {
sc.ChromaKey = gjson.Get(JsonMetadataA, "chromaKey").String()
}
@@ -234,7 +237,7 @@ func SexLikeReal(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out
}
// Filenames
- appendFilenames(&sc, siteID, filenameRegEx, videotype, FB360, alphA)
+ appendFilenames(&sc, siteID, filenameRegEx, videotype, FB360, alphA, JsonMetadataA, isTransScene)
// actor details
sc.ActorDetails = make(map[string]models.ActorDetails)
@@ -355,47 +358,93 @@ func SexLikeReal(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out
return nil
}
-func appendFilenames(sc *models.ScrapedScene, siteID string, filenameRegEx *regexp.Regexp, videotype string, FB360 string, AlphA string) {
+func appendFilenames(sc *models.ScrapedScene, siteID string, filenameRegEx *regexp.Regexp, videotype string, FB360 string, AlphA string, JsonMetadataA string, isTransScene bool) {
// Only shown for logged in users so need to generate them
// Format: SLR_siteID_Title__SceneID__<180/360>.mp4
- 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, "_")
- switch videotype {
- case "360°": // Sadly can't determine if TB or MONO so have to add both
- for i := range resolutions {
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MONO_360.mp4")
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_TB_360.mp4")
- }
- case "Fisheye": // 200° videos named with MKX200
- for i := range resolutions {
+ if !isTransScene {
+ viewAngle := gjson.Get(JsonMetadataA, "viewAngle").String()
+ projSuffix := "_LR_180.mp4"
+ if viewAngle == "190" || viewAngle == "200" || viewAngle == "220" {
+ screentype := strings.ToUpper(gjson.Get(JsonMetadataA, "screenType").String())
+ projSuffix = "_" + screentype
if AlphA == "true" {
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MKX200_alpha.mp4")
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MKX220_alpha.mp4")
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_RF52_alpha.mp4")
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_FISHEYE190_alpha.mp4")
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_VRCA220_alpha.mp4")
+ projSuffix = "_" + screentype + "_alpha"
+ }
+ if FB360 != "" {
+ FB360 = projSuffix + "_FB360.mkv"
+ }
+ projSuffix = projSuffix + ".mp4"
+ } else if viewAngle == "360" {
+ monotb := gjson.Get(JsonMetadataA, "stereomode").String()
+ if monotb == "mono" {
+ projSuffix = "_MONO_360.mp4"
} else {
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MKX200.mp4")
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MKX220.mp4")
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_RF52.mp4")
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_FISHEYE190.mp4")
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_VRCA220.mp4")
+ projSuffix = "_TB_360.mp4"
}
}
- default: // Assuming everything else is 180 and LR, yet to find a TB_180
- for i := range resolutions {
- sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_LR_180.mp4")
+ resolutions := []string{"_original_"}
+ encodings := gjson.Get(JsonMetadataA, "encodings.#(name=h265).videoSources.#.resolution")
+ for _, name := range encodings.Array() {
+ resolutions = append(resolutions, "_"+name.String()+"p_")
+ }
+ baseName := "SLR_" + strings.TrimSuffix(siteID, " (SLR)") + "_" + filenameRegEx.ReplaceAllString(sc.Title, "_")
+ switch videotype {
+ case "360°":
+ for i := range resolutions {
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+projSuffix)
+ }
+ case "Fisheye": // 200° videos named with MKX200
+ for i := range resolutions {
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+projSuffix)
+ }
+ default: // Assuming everything else is 180 and LR, yet to find a TB_180
+ for i := range resolutions {
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+projSuffix)
+ }
+ }
+ if FB360 != "" {
+ sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+FB360)
+ }
+ } 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, "_")
+ switch videotype {
+ case "360°": // Sadly can't determine if TB or MONO so have to add both
+ for i := range resolutions {
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MONO_360.mp4")
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_TB_360.mp4")
+ }
+ case "Fisheye": // 200° videos named with MKX200
+ for i := range resolutions {
+ if AlphA == "true" {
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MKX200_alpha.mp4")
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MKX220_alpha.mp4")
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_RF52_alpha.mp4")
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_FISHEYE190_alpha.mp4")
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_VRCA220_alpha.mp4")
+ } else {
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MKX200.mp4")
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_MKX220.mp4")
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_RF52.mp4")
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_FISHEYE190.mp4")
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_VRCA220.mp4")
+ }
+ }
+ default: // Assuming everything else is 180 and LR, yet to find a TB_180
+ for i := range resolutions {
+ sc.Filenames = append(sc.Filenames, baseName+resolutions[i]+sc.SiteID+"_LR_180.mp4")
+ }
+ }
+ if FB360 != "" {
+ sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_LR_180"+FB360)
+ sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_MKX200"+FB360)
+ sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_MKX220"+FB360)
+ sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_RF52"+FB360)
+ sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"FISHEYE190"+FB360)
+ sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_VRCA220"+FB360)
+ sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_MONO_360"+FB360)
+ sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_TB_360"+FB360)
}
- }
- if FB360 != "" {
- sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_LR_180"+FB360)
- sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_MKX200"+FB360)
- sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_MKX220"+FB360)
- sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_RF52"+FB360)
- sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"FISHEYE190"+FB360)
- sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_VRCA220"+FB360)
- sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_MONO_360"+FB360)
- sc.Filenames = append(sc.Filenames, baseName+"_original_"+sc.SiteID+"_TB_360"+FB360)
}
}
From 67113632d0699eaca1418b40f2ab4d55a3e524ef Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 5 Nov 2023 14:12:32 +0100
Subject: [PATCH 21/39] fix(deps): update module github.com/djherbis/times to
v1.6.0 (#1455)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
go.mod | 2 +-
go.sum | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/go.mod b/go.mod
index 530a6b348..6e4c459d3 100644
--- a/go.mod
+++ b/go.mod
@@ -14,7 +14,7 @@ require (
github.com/creasty/defaults v1.7.0
github.com/darwayne/go-timecode v1.1.0
github.com/disintegration/imaging v1.6.2
- github.com/djherbis/times v1.5.0
+ github.com/djherbis/times v1.6.0
github.com/dustin/go-humanize v1.0.1
github.com/emicklei/go-restful-openapi/v2 v2.9.1
github.com/emicklei/go-restful/v3 v3.11.0
diff --git a/go.sum b/go.sum
index f6566678b..0d82a25b3 100644
--- a/go.sum
+++ b/go.sum
@@ -94,6 +94,8 @@ github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1
github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU=
github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0=
+github.com/djherbis/times v1.6.0 h1:w2ctJ92J8fBvWPxugmXIv7Nz7Q3iDMKNx9v5ocVH20c=
+github.com/djherbis/times v1.6.0/go.mod h1:gOHeRAz2h+VJNZ5Gmc/o7iD9k4wW7NMVqieYCY99oc0=
github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q=
github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo=
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
@@ -439,6 +441,7 @@ golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
From 8d1da838f2947dcdea0d8e03c1197ab7dcb1ea3f Mon Sep 17 00:00:00 2001
From: toshski <104477758+toshski@users.noreply.github.com>
Date: Mon, 6 Nov 2023 02:13:45 +1300
Subject: [PATCH 22/39] feat: Update Possible Aka Saved Search (#1434)
---
pkg/api/actors.go | 1 +
pkg/migrations/migrations.go | 38 ++++++++++++++++++++++++++++++++++++
pkg/models/model_actor.go | 6 ++++++
3 files changed, 45 insertions(+)
diff --git a/pkg/api/actors.go b/pkg/api/actors.go
index e57385bdd..0e808fdcc 100644
--- a/pkg/api/actors.go
+++ b/pkg/api/actors.go
@@ -127,6 +127,7 @@ func (i ActorResource) getFilters(req *restful.Request, resp *restful.Response)
outAttributes = append(outAttributes, "Has Piercing")
outAttributes = append(outAttributes, "Aka Group")
outAttributes = append(outAttributes, "Possible Aka")
+ outAttributes = append(outAttributes, "In An Aka Group")
outAttributes = append(outAttributes, "Multiple Stashdb Links")
outAttributes = append(outAttributes, "Has Image")
diff --git a/pkg/migrations/migrations.go b/pkg/migrations/migrations.go
index 01b991567..ef087c9aa 100644
--- a/pkg/migrations/migrations.go
+++ b/pkg/migrations/migrations.go
@@ -1765,6 +1765,44 @@ func Migrate() {
return nil
},
},
+ {
+ ID: "0070-update_possible_aka_saved_search",
+ Migrate: func(tx *gorm.DB) error {
+ // update existing Possible Aka Actor Playlist
+ var playlist models.Playlist
+ tx.Model(&models.Playlist{}).Where("playlist_type = ? and name = ?", "actor", "Possible Aka").First(&playlist)
+ if playlist.ID != 0 {
+ list := models.RequestActorList{
+ DlState: optional.NewString("Any"),
+ Lists: []optional.String{},
+ Cast: []optional.String{},
+ Sites: []optional.String{},
+ Tags: []optional.String{},
+ Attributes: []optional.String{},
+ JumpTo: optional.NewString(""),
+ MinAge: optional.NewInt(0),
+ MaxAge: optional.NewInt(100),
+ MinHeight: optional.NewInt(120),
+ MaxHeight: optional.NewInt(220),
+ MinCount: optional.NewInt(0),
+ MaxCount: optional.NewInt(150),
+ MinAvail: optional.NewInt(0),
+ MaxAvail: optional.NewInt(150),
+ MinRating: optional.NewFloat64(0),
+ MaxRating: optional.NewFloat64(5),
+ MinSceneRating: optional.NewFloat64(0),
+ MaxSceneRating: optional.NewFloat64(5),
+ Sort: optional.NewString("birthday_desc"),
+ }
+ list.Attributes = append(list.Attributes, optional.NewString("&Possible Aka"), optional.NewString("!In An Aka Group"), optional.NewString("!Aka Group"))
+ b, _ := json.Marshal(list)
+
+ playlist.SearchParams = string(b)
+ playlist.Save()
+ }
+ return nil
+ },
+ },
})
if err := m.Migrate(); err != nil {
diff --git a/pkg/models/model_actor.go b/pkg/models/model_actor.go
index 0534629bd..6f9345f43 100644
--- a/pkg/models/model_actor.go
+++ b/pkg/models/model_actor.go
@@ -258,6 +258,12 @@ func QueryActors(r RequestActorList, enablePreload bool) ResponseActorList {
} else {
where = "name not like 'aka:%'"
}
+ case "In An Aka Group":
+ if truefalse {
+ where = "(select count(*) from actor_akas " + " where actor_akas.actor_id = actors.id) > 0"
+ } else {
+ where = "(select count(*) from actor_akas " + " where actor_akas.actor_id = actors.id) = 0"
+ }
case "Has Image":
if truefalse {
where = "image_url is not null and image_url <> ''"
From 9f43104e5246d31fbe22280b3d161057d0bb0741 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 5 Nov 2023 14:15:23 +0100
Subject: [PATCH 23/39] fix(deps): update module github.com/go-resty/resty/v2
to v2.10.0 (#1456)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
go.mod | 2 +-
go.sum | 7 +++++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/go.mod b/go.mod
index 6e4c459d3..099bcd1d5 100644
--- a/go.mod
+++ b/go.mod
@@ -21,7 +21,7 @@ require (
github.com/gammazero/nexus/v3 v3.2.1
github.com/getlantern/systray v1.2.2
github.com/go-openapi/spec v0.20.9
- github.com/go-resty/resty/v2 v2.7.0
+ github.com/go-resty/resty/v2 v2.10.0
github.com/go-test/deep v1.1.0
github.com/gocolly/colly/v2 v2.1.0
github.com/gorilla/mux v1.8.0
diff --git a/go.sum b/go.sum
index 0d82a25b3..5ea82d6be 100644
--- a/go.sum
+++ b/go.sum
@@ -146,6 +146,8 @@ github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyr
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY=
github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I=
+github.com/go-resty/resty/v2 v2.10.0 h1:Qla4W/+TMmv0fOeeRqzEpXPLfTUnR5HZ1+lGs+CkiCo=
+github.com/go-resty/resty/v2 v2.10.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A=
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
@@ -417,6 +419,7 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -447,12 +450,14 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
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=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -462,9 +467,11 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
From 3ba67101ed8c00cd740c0a4920dcc27f560f4d27 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 5 Nov 2023 14:16:05 +0100
Subject: [PATCH 24/39] chore(deps): bump crypto-js from 4.0.0 to 4.2.0 (#1452)
Bumps [crypto-js](https://github.com/brix/crypto-js) from 4.0.0 to 4.2.0.
- [Commits](https://github.com/brix/crypto-js/compare/4.0.0...4.2.0)
---
updated-dependencies:
- dependency-name: crypto-js
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 3c6549033..112be39c1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3274,9 +3274,9 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
which "^2.0.1"
crypto-js@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.0.0.tgz#2904ab2677a9d042856a2ea2ef80de92e4a36dcc"
- integrity sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631"
+ integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==
css-declaration-sorter@^6.3.0:
version "6.3.0"
From 5cc16f1d0f155974759efb473850ded85163f011 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 5 Nov 2023 14:18:09 +0100
Subject: [PATCH 25/39] fix(deps): update dependency @mdi/font to v7.3.67
(#1450)
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 dea1bb8e0..f58f744a4 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,7 @@
"dependencies": {
"@fortawesome/fontawesome-free": "5.15.4",
"@fortawesome/fontawesome-svg-core": "1.2.36",
- "@mdi/font": "7.2.96",
+ "@mdi/font": "7.3.67",
"buefy": "0.9.25",
"bulma-extensions": "6.2.7",
"date-fns": "2.30.0",
diff --git a/yarn.lock b/yarn.lock
index 112be39c1..911baede8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1418,10 +1418,10 @@
resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
-"@mdi/font@7.2.96":
- version "7.2.96"
- resolved "https://registry.yarnpkg.com/@mdi/font/-/font-7.2.96.tgz#af800d9fe3b424f85ad45e9baa755bd003ab4986"
- integrity sha512-e//lmkmpFUMZKhmCY9zdjRe4zNXfbOIJnn6xveHbaV2kSw5aJ5dLXUxcRt1Gxfi7ZYpFLUWlkG2MGSFAiqAu7w==
+"@mdi/font@7.3.67":
+ version "7.3.67"
+ resolved "https://registry.yarnpkg.com/@mdi/font/-/font-7.3.67.tgz#faa344a04c9d02f608c891a01134084febeb42db"
+ integrity sha512-SWxvzRbUQRfewlIV+OF4/YF4DkeTjMWoT8Hh9yeU/5UBVdJZj9Uf4a9+cXjknSIhIaMxZ/4N1O/s7ojApOOGjg==
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
version "5.1.1-v1"
From cb5f2f731c807740d3955ab2c2f8fed960e0acb9 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 5 Nov 2023 14:18:18 +0100
Subject: [PATCH 26/39] chore(deps): update dependency eslint-plugin-vue to
v9.18.1 (#1467)
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 f58f744a4..4a9e905d3 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "6.1.1",
"eslint-plugin-standard": "4.1.0",
- "eslint-plugin-vue": "9.18.0",
+ "eslint-plugin-vue": "9.18.1",
"less": "4.2.0",
"less-loader": "11.1.3",
"sass": "1.69.5",
diff --git a/yarn.lock b/yarn.lock
index 911baede8..91a25312e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4037,10 +4037,10 @@ eslint-plugin-standard@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-vue@9.18.0:
- version "9.18.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.0.tgz#2a2dbb3c67317e8c11ab56cafaa15a3a7eac6282"
- integrity sha512-yUM8a2OD/7Qs0PiugkRaxgz5KBRvzMvWShity2UvVFAN0yk8029mGpTdg/TNARPiYzp335mEwDHwcAR8tQNe4g==
+eslint-plugin-vue@9.18.1:
+ version "9.18.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz#73cf29df7450ce5913296465f8d1dc545344920c"
+ integrity sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
natural-compare "^1.4.0"
From 2f83e977004dd36309b5e804ae78b18d77e1a3a8 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 5 Nov 2023 14:18:37 +0100
Subject: [PATCH 27/39] fix(deps): update module github.com/gorilla/mux to
v1.8.1 (#1468)
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 099bcd1d5..e3b10acc8 100644
--- a/go.mod
+++ b/go.mod
@@ -24,7 +24,7 @@ require (
github.com/go-resty/resty/v2 v2.10.0
github.com/go-test/deep v1.1.0
github.com/gocolly/colly/v2 v2.1.0
- github.com/gorilla/mux v1.8.0
+ github.com/gorilla/mux v1.8.1
github.com/gosimple/slug v1.13.1
github.com/gowww/log v1.0.0
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
diff --git a/go.sum b/go.sum
index 5ea82d6be..e9837b178 100644
--- a/go.sum
+++ b/go.sum
@@ -198,6 +198,8 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
+github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gosimple/slug v1.13.1 h1:bQ+kpX9Qa6tHRaK+fZR0A0M2Kd7Pa5eHPPsb1JpHD+Q=
From 9ccbff2d499a1e81137dd7cf2d780c3376d7b6c5 Mon Sep 17 00:00:00 2001
From: toshski <104477758+toshski@users.noreply.github.com>
Date: Mon, 6 Nov 2023 02:19:57 +1300
Subject: [PATCH 28/39] Actor pagination fixes (#1435)
* Fix Arrow Key scrolling Actor List
* Change JumpTo Actors by a Letter
---
pkg/models/model_actor.go | 20 ++++++++++++++++----
ui/src/store/actorList.js | 3 ++-
ui/src/views/actors/List.vue | 6 ++++++
3 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/pkg/models/model_actor.go b/pkg/models/model_actor.go
index 6f9345f43..6f40c97f6 100644
--- a/pkg/models/model_actor.go
+++ b/pkg/models/model_actor.go
@@ -88,6 +88,7 @@ type ResponseActorList struct {
CountDownloaded int `json:"count_downloaded"`
CountNotDownloaded int `json:"count_not_downloaded"`
CountHidden int `json:"count_hidden"`
+ Offset int `json:"offset"`
}
type ActorLink struct {
@@ -346,10 +347,6 @@ func QueryActors(r RequestActorList, enablePreload bool) ResponseActorList {
tx = tx.Where("actors.name NOT IN (?)", excludedCast)
}
- if r.JumpTo.OrElse("") != "" {
- tx = tx.Where("actors.name > ?", r.JumpTo.OrElse(""))
- }
-
if r.MinAge.OrElse(0) > 18 || r.MaxAge.OrElse(100) < 100 {
startRange := time.Now().AddDate(r.MinAge.OrElse(0)*-1, 0, 0)
endRange := time.Now().AddDate(r.MaxAge.OrElse(0)*-1, 0, 0)
@@ -476,6 +473,21 @@ func QueryActors(r RequestActorList, enablePreload bool) ResponseActorList {
return db.Order("release_date DESC").Where("is_hidden = 0")
})
+ if r.JumpTo.OrElse("") != "" {
+ // if we want to jump to actors starting with a specific letter, then we need to work out the offset to them
+ cnt := 0
+ txList := tx.Select(`distinct actors.name`)
+ txList.Find(&out.Actors)
+ for idx, actor := range out.Actors {
+ if strings.ToLower(actor.Name) >= strings.ToLower(r.JumpTo.OrElse("")) {
+ break
+ }
+ cnt = idx
+ }
+ offset = (cnt / limit) * limit
+ }
+ out.Offset = offset
+
tx = tx.Select(`distinct actors.*,
(select AVG(s.star_rating) scene_avg from scene_cast sc join scenes s on s.id=sc.scene_id where sc.actor_id =actors.id and s.star_rating > 0 ) as scene_rating_average
`)
diff --git a/ui/src/store/actorList.js b/ui/src/store/actorList.js
index 8334f09d3..18779cddf 100644
--- a/ui/src/store/actorList.js
+++ b/ui/src/store/actorList.js
@@ -161,13 +161,14 @@ const actions = {
.json()
state.isLoading = false
+ state.filters.jumpTo = "" // clear the jumpto value now that we have the data
if (iOffset === 0) {
commit('setActors', [])
}
commit('setActors', state.actors=data.actors)
- state.offset = iOffset + state.limit
+ state.offset = data.offset + state.limit
state.total = data.results
}
}
diff --git a/ui/src/views/actors/List.vue b/ui/src/views/actors/List.vue
index 84eb42704..473e4ec1a 100644
--- a/ui/src/views/actors/List.vue
+++ b/ui/src/views/actors/List.vue
@@ -256,6 +256,9 @@ export default {
if (this.$store.state.overlay.actordetails.show){
return
}
+ if (this.$store.state.overlay.details.show){
+ return
+ }
if (this.current * this.limit >= this.total) {
this.current = 1
} else {
@@ -267,6 +270,9 @@ export default {
if (this.$store.state.overlay.actordetails.show){
return
}
+ if (this.$store.state.overlay.details.show){
+ return
+ }
if (this.current > 1) {
this.current -= 1
} else {
From 6f2607001f92bed3ce037dacf936fe2163bb7871 Mon Sep 17 00:00:00 2001
From: toshski <104477758+toshski@users.noreply.github.com>
Date: Mon, 6 Nov 2023 02:22:57 +1300
Subject: [PATCH 29/39] feat: add command line configuration options (#1449)
* Environment Variable to override WSAddr
* Add command line and Env Variable config items
* Remove debug log left by mistake
---
pkg/common/common.go | 2 ++
pkg/common/paths.go | 77 +++++++++++++++++++++++++++++++++++---------
pkg/config/config.go | 4 +++
ui/src/Socket.vue | 2 +-
4 files changed, 68 insertions(+), 17 deletions(-)
diff --git a/pkg/common/common.go b/pkg/common/common.go
index fe7ecf65c..972895de2 100644
--- a/pkg/common/common.go
+++ b/pkg/common/common.go
@@ -19,6 +19,8 @@ type EnvConfigSpec struct {
UIUsername string `envconfig:"UI_USERNAME" required:"false"`
UIPassword string `envconfig:"UI_PASSWORD" required:"false"`
DatabaseURL string `envconfig:"DATABASE_URL" required:"false" default:""`
+ WsAddr string `envconfig:"XBVR_WS_ADDR" required:"false" default:""`
+ WebPort int `envconfig:"XBVR_WEB_PORT" required:"false" default:"0"`
}
var EnvConfig EnvConfigSpec
diff --git a/pkg/common/paths.go b/pkg/common/paths.go
index 360f85de3..db53a6229 100644
--- a/pkg/common/paths.go
+++ b/pkg/common/paths.go
@@ -21,6 +21,7 @@ var VideoPreviewDir string
var VideoThumbnailDir string
var ScriptHeatmapDir string
var DownloadDir string
+var WebPort int
func DirSize(path string) (int64, error) {
var size int64
@@ -38,41 +39,76 @@ func DirSize(path string) (int64, error) {
func InitPaths() {
- enableLocalStorage := flag.Bool("localstorage", false, "Use local folder to store application data")
+ enableLocalStorage := flag.Bool("localstorage", false, "Optional: Use local folder to store application data")
+ app_dir := flag.String("app_dir", "", "Optional: path to the application directory")
+ cache_dir := flag.String("cache_dir", "", "Optional: path to the tempoarary scraper cache directory")
+ imgproxy_dir := flag.String("imgproxy_dir", "", "Optional: path to the imageproxy directory")
+ search_dir := flag.String("search_dir", "", "Optional: path to the Search Index directory")
+ preview_dir := flag.String("preview_dir", "", "Optional: path to the Scraper Cache directory")
+ scriptsheatmap_dir := flag.String("scripts_heatmap_dir", "", "Optional: path to the scripts_heatmap directory")
+ databaseurl := flag.String("database_url", "", "Optional: override default database path")
+ web_port := flag.Int("web_port", 0, "Optional: override default Web Page port 9999")
+ ws_addr := flag.String("ws_addr", "", "Optional: override default Websocket address from the default 0.0.0.0:9998")
+
flag.Parse()
- if *enableLocalStorage {
- executable, err := os.Executable()
+ if *app_dir == "" {
+ tmp := os.Getenv("XBVR_APPDIR")
+ app_dir = &tmp
+ }
+ if *app_dir == "" {
+ if *enableLocalStorage {
+ executable, err := os.Executable()
- if err != nil {
- panic(err)
- }
+ if err != nil {
+ panic(err)
+ }
- AppDir = filepath.Dir(executable)
+ AppDir = filepath.Dir(executable)
+ } else {
+ AppDir = appdir.New("xbvr").UserConfig()
+ }
} else {
- AppDir = appdir.New("xbvr").UserConfig()
+ AppDir = *app_dir
}
- CacheDir = filepath.Join(AppDir, "cache")
+ CacheDir = getPath(*cache_dir, "XBVR_CACHEDIR", "cache")
BinDir = filepath.Join(AppDir, "bin")
- ImgDir = filepath.Join(AppDir, "imageproxy")
+ ImgDir = getPath(*imgproxy_dir, "XBVR_IMAGEPROXYDIR", "imageproxy")
MetricsDir = filepath.Join(AppDir, "metrics")
HeatmapDir = filepath.Join(AppDir, "heatmap")
- IndexDirV2 = filepath.Join(AppDir, "search-v2")
+ IndexDirV2 = getPath(*search_dir, "XBVR_SEARCHDIR", "search-v2")
ScrapeCacheDir = filepath.Join(CacheDir, "scrape_cache")
- VideoPreviewDir = filepath.Join(AppDir, "video_preview")
+ VideoPreviewDir = getPath(*preview_dir, "XBVR_VIDEOPREVIEWDIR", "video_preview")
VideoThumbnailDir = filepath.Join(AppDir, "video_thumbnail")
- ScriptHeatmapDir = filepath.Join(AppDir, "script_heatmap")
+ ScriptHeatmapDir = getPath(*scriptsheatmap_dir, "XBVR_SCRIPTHEATMAPDIR", "script_heatmap")
DownloadDir = filepath.Join(AppDir, "download")
// Initialize DATABASE_URL once appdir path is known
- if EnvConfig.DatabaseURL != "" {
- DATABASE_URL = EnvConfig.DatabaseURL
+ if *databaseurl != "" {
+ DATABASE_URL = *databaseurl
} else {
- DATABASE_URL = fmt.Sprintf("sqlite:%v", filepath.Join(AppDir, "main.db"))
+ if EnvConfig.DatabaseURL != "" {
+ DATABASE_URL = EnvConfig.DatabaseURL
+ } else {
+ DATABASE_URL = fmt.Sprintf("sqlite:%v", filepath.Join(AppDir, "main.db"))
+ }
+ }
+
+ if *web_port != 0 {
+ WebPort = *web_port
+ } else {
+ WebPort = EnvConfig.WebPort
+ }
+ if *ws_addr != "" {
+ WsAddr = *ws_addr
+ } else {
+ if EnvConfig.WsAddr != "" {
+ WsAddr = EnvConfig.WsAddr
+ }
}
_ = os.MkdirAll(AppDir, os.ModePerm)
@@ -86,3 +122,12 @@ func InitPaths() {
_ = os.MkdirAll(ScriptHeatmapDir, os.ModePerm)
_ = os.MkdirAll(DownloadDir, os.ModePerm)
}
+func getPath(commandLinePath string, environmentName string, directoryName string) string {
+ if commandLinePath != "" {
+ return commandLinePath
+ }
+ if os.Getenv(environmentName) != "" {
+ return os.Getenv(environmentName)
+ }
+ return filepath.Join(AppDir, directoryName)
+}
diff --git a/pkg/config/config.go b/pkg/config/config.go
index 6ee6482b3..b2cd2f456 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -168,6 +168,10 @@ func LoadConfig() {
if err := json.Unmarshal([]byte(obj.Value), &Config); err != nil {
common.Log.Error("Failed to load config from database")
}
+ if common.WebPort != 0 && common.WebPort != Config.Server.Port {
+ Config.Server.Port = common.WebPort
+ SaveConfig()
+ }
}
}
diff --git a/ui/src/Socket.vue b/ui/src/Socket.vue
index af5b35a17..cc30da878 100644
--- a/ui/src/Socket.vue
+++ b/ui/src/Socket.vue
@@ -30,7 +30,7 @@ export default {
onReconnectSuccess: () => {
this.wsStatus = 'connected'
}
- })
+ })
ws.subscribe('service.log', (dataArr, dataObj) => {
if (dataArr.argsDict.level == 'debug') {
From ef6f0654a6b36c4ad98539b1638c5d5eac0156b6 Mon Sep 17 00:00:00 2001
From: toshski <104477758+toshski@users.noreply.github.com>
Date: Mon, 6 Nov 2023 02:27:19 +1300
Subject: [PATCH 30/39] feat: Allow web serving of user files (#1457)
* Environment Variable to override WSAddr
* Add command line and Env Variable config items
* Create MyFiles Web Endpoint
* Remove debug log left by mistake
* Make Myfiles Directory Configurable
---------
Co-authored-by: crwxaj <52156245+crwxaj@users.noreply.github.com>
---
pkg/common/paths.go | 4 ++++
pkg/server/myfiles.go | 36 ++++++++++++++++++++++++++++++++++++
pkg/server/server.go | 2 ++
3 files changed, 42 insertions(+)
create mode 100644 pkg/server/myfiles.go
diff --git a/pkg/common/paths.go b/pkg/common/paths.go
index db53a6229..b206c5132 100644
--- a/pkg/common/paths.go
+++ b/pkg/common/paths.go
@@ -20,6 +20,7 @@ var ScrapeCacheDir string
var VideoPreviewDir string
var VideoThumbnailDir string
var ScriptHeatmapDir string
+var MyFilesDir string
var DownloadDir string
var WebPort int
@@ -46,6 +47,7 @@ func InitPaths() {
search_dir := flag.String("search_dir", "", "Optional: path to the Search Index directory")
preview_dir := flag.String("preview_dir", "", "Optional: path to the Scraper Cache directory")
scriptsheatmap_dir := flag.String("scripts_heatmap_dir", "", "Optional: path to the scripts_heatmap directory")
+ myfiles_dir := flag.String("myfiles_dir", "", "Optional: path to the myfiles directory for serving users own content (eg images")
databaseurl := flag.String("database_url", "", "Optional: override default database path")
web_port := flag.Int("web_port", 0, "Optional: override default Web Page port 9999")
ws_addr := flag.String("ws_addr", "", "Optional: override default Websocket address from the default 0.0.0.0:9998")
@@ -85,6 +87,7 @@ func InitPaths() {
VideoThumbnailDir = filepath.Join(AppDir, "video_thumbnail")
ScriptHeatmapDir = getPath(*scriptsheatmap_dir, "XBVR_SCRIPTHEATMAPDIR", "script_heatmap")
+ MyFilesDir = getPath(*myfiles_dir, "XBVR_MYFILESDIR", "myfiles")
DownloadDir = filepath.Join(AppDir, "download")
// Initialize DATABASE_URL once appdir path is known
@@ -120,6 +123,7 @@ func InitPaths() {
_ = os.MkdirAll(IndexDirV2, os.ModePerm)
_ = os.MkdirAll(ScrapeCacheDir, os.ModePerm)
_ = os.MkdirAll(ScriptHeatmapDir, os.ModePerm)
+ _ = os.MkdirAll(MyFilesDir, os.ModePerm)
_ = os.MkdirAll(DownloadDir, os.ModePerm)
}
func getPath(commandLinePath string, environmentName string, directoryName string) string {
diff --git a/pkg/server/myfiles.go b/pkg/server/myfiles.go
new file mode 100644
index 000000000..70334db18
--- /dev/null
+++ b/pkg/server/myfiles.go
@@ -0,0 +1,36 @@
+package server
+
+import (
+ "fmt"
+ "io"
+ "net/http"
+ "os"
+ "path/filepath"
+ "strings"
+
+ "github.com/xbapps/xbvr/pkg/common"
+)
+
+type MyFilesHandler struct {
+}
+
+func (h MyFilesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ path := filepath.Join(common.MyFilesDir, r.URL.Path)
+ fi, err := os.Stat(path)
+
+ if os.IsNotExist(err) || strings.Contains(path, "..") { // check the path exists and not trying to go up directory levels
+ // file does not exist
+ http.Error(w, err.Error(), http.StatusNotFound)
+ return
+ }
+
+ //copy the relevant headers. If you want to preserve the downloaded file name, extract it with go's url parser.
+ if strings.HasSuffix(path, ".json") {
+ w.Header().Set("Content-Type", r.Header.Get("application/json"))
+ }
+ w.Header().Set("Content-Length", fmt.Sprint(fi.Size())) // useful for download progress
+
+ //stream the body to the client without fully loading it into memory
+ reader, _ := os.Open(path)
+ io.Copy(w, reader)
+}
diff --git a/pkg/server/server.go b/pkg/server/server.go
index bbcc575f5..327c4b681 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -142,6 +142,8 @@ func StartServer(version, commit, branch, date string) {
r.PathPrefix("/imghm/").Handler(http.StripPrefix("/imghm", hmp))
downloadhandler := DownloadHandler{}
r.PathPrefix("/download/").Handler(http.StripPrefix("/download/", downloadhandler))
+ myfileshandler := MyFilesHandler{}
+ r.PathPrefix("/myfiles/").Handler(http.StripPrefix("/myfiles/", myfileshandler))
r.SkipClean(true)
r.PathPrefix("/").Handler(http.DefaultServeMux)
From da4773f0fc4d61e7747c3c9ff3bdc5669c809c1b Mon Sep 17 00:00:00 2001
From: toshski <104477758+toshski@users.noreply.github.com>
Date: Mon, 6 Nov 2023 02:28:26 +1300
Subject: [PATCH 31/39] feat: Add "Has Favourite Actor" Scene Filter Attribute
(#1438)
---
pkg/api/scenes.go | 1 +
pkg/models/model_scene.go | 2 ++
2 files changed, 3 insertions(+)
diff --git a/pkg/api/scenes.go b/pkg/api/scenes.go
index a596588b0..03ec3bff3 100644
--- a/pkg/api/scenes.go
+++ b/pkg/api/scenes.go
@@ -371,6 +371,7 @@ func (i SceneResource) getFilters(req *restful.Request, resp *restful.Response)
outAttributes = append(outAttributes, "Has Script Download")
outAttributes = append(outAttributes, "Has AI Generated Script")
outAttributes = append(outAttributes, "Has Human Generated Script")
+ outAttributes = append(outAttributes, "Has Favourite Actor")
type Results struct {
Result string
}
diff --git a/pkg/models/model_scene.go b/pkg/models/model_scene.go
index 3865f1e28..aeb30fecb 100644
--- a/pkg/models/model_scene.go
+++ b/pkg/models/model_scene.go
@@ -834,6 +834,8 @@ func queryScenes(db *gorm.DB, r RequestSceneList) (*gorm.DB, *gorm.DB) {
where = "scenes.ai_script = 1"
case "Has Human Generated Script":
where = "scenes.human_script = 1"
+ case "Has Favourite Actor":
+ where = "exists (select * from scene_cast join actors on actors.id=scene_cast.actor_id where actors.favourite=1 and scene_cast.scene_id=scenes.id)"
}
if negate {
From eb8cd13c520677d195775b7260a666f4e8829a17 Mon Sep 17 00:00:00 2001
From: toshski <104477758+toshski@users.noreply.github.com>
Date: Mon, 6 Nov 2023 02:29:04 +1300
Subject: [PATCH 32/39] feat: Add Ability to sort Actors by Scene Count (#1439)
---
pkg/models/model_actor.go | 6 ++++++
ui/src/locales/en-GB.json | 2 ++
ui/src/views/actors/Filters.vue | 2 ++
3 files changed, 10 insertions(+)
diff --git a/pkg/models/model_actor.go b/pkg/models/model_actor.go
index 6f40c97f6..d524aeb9e 100644
--- a/pkg/models/model_actor.go
+++ b/pkg/models/model_actor.go
@@ -462,6 +462,12 @@ func QueryActors(r RequestActorList, enablePreload bool) ResponseActorList {
} else {
tx = tx.Order("random()")
}
+ case "scene_count_desc":
+ tx = tx.
+ Order("actors.`count` desc, actors.name")
+ case "scene_available_desc":
+ tx = tx.
+ Order("actors.`avail_count` desc, actors.name")
default:
tx = tx.Order("name asc")
}
diff --git a/ui/src/locales/en-GB.json b/ui/src/locales/en-GB.json
index 013a71791..67ab9a110 100644
--- a/ui/src/locales/en-GB.json
+++ b/ui/src/locales/en-GB.json
@@ -193,6 +193,8 @@
"Clear":"Clear",
"No matching country":"No matching country",
"Scene Released Date":"Scene Released Date",
+ "Available Scene Count":"Available Scene Count",
+ "Scene Count":"Scene Count",
"Cast":"Cast",
"Allows searching a variety of attributes such as: Possible Aka actors, Cup Size, Eye/Hair Color, Has Tattoo, Has Piercing, Breast Type, Nationailty, Ethnicity, Aka, Has Images":"Allows searching a variety of attributes such as: Possible Aka actors, Cup Size, Eye/Hair Color, Has Tattoo, Has Piercing, Breast Type, Nationailty, Ethnicity, Aka, Has Images",
"New Aka Group. Select 2 or more actors in the Cast filter":"New Aka Group. Select 2 or more actors in the Cast filter",
diff --git a/ui/src/views/actors/Filters.vue b/ui/src/views/actors/Filters.vue
index 17eab5814..342dd5cc9 100644
--- a/ui/src/views/actors/Filters.vue
+++ b/ui/src/views/actors/Filters.vue
@@ -41,6 +41,8 @@
↓ {{ $t("Scene Released Date") }}
↓ {{ $t("Scene Added Date") }}
↓ {{ $t("File Added Date") }}
+ ↓ {{ $t("Available Scene Count") }}
+ ↓ {{ $t("Scene Count") }}
↯ {{ $t("Random") }}
From 9e493d8405ba5db40f1d71a5a861c2dc0849fcdf Mon Sep 17 00:00:00 2001
From: toshski <104477758+toshski@users.noreply.github.com>
Date: Mon, 6 Nov 2023 02:31:56 +1300
Subject: [PATCH 33/39] feat: add Option to set opacity of not available scenes
in scene list (#1453)
Co-authored-by: crwxaj <52156245+crwxaj@users.noreply.github.com>
---
pkg/api/options.go | 2 ++
pkg/config/config.go | 1 +
pkg/config/state.go | 1 +
ui/src/store/optionsWeb.js | 4 ++++
ui/src/views/actors/ActorCard.vue | 8 +++++++-
.../views/options/sections/InterfaceWeb.vue | 19 ++++++++++++++++++-
ui/src/views/scenes/SceneCard.vue | 10 ++++++++--
7 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/pkg/api/options.go b/pkg/api/options.go
index 20d55de85..52b1313fd 100644
--- a/pkg/api/options.go
+++ b/pkg/api/options.go
@@ -58,6 +58,7 @@ type RequestSaveOptionsWeb struct {
SceneTrailerlist bool `json:"sceneTrailerlist"`
ShowScriptHeatmap bool `json:"showScriptHeatmap"`
UpdateCheck bool `json:"updateCheck"`
+ IsAvailOpacity int `json:"isAvailOpacity"`
}
type RequestSaveOptionsAdvanced struct {
@@ -382,6 +383,7 @@ func (i ConfigResource) saveOptionsWeb(req *restful.Request, resp *restful.Respo
config.Config.Web.SceneTrailerlist = r.SceneTrailerlist
config.Config.Web.ShowScriptHeatmap = r.ShowScriptHeatmap
config.Config.Web.UpdateCheck = r.UpdateCheck
+ config.Config.Web.IsAvailOpacity = r.IsAvailOpacity
config.SaveConfig()
resp.WriteHeaderAndEntity(http.StatusOK, r)
diff --git a/pkg/config/config.go b/pkg/config/config.go
index b2cd2f456..612f10cf9 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -43,6 +43,7 @@ type ObjectConfig struct {
SceneTrailerlist bool `default:"true" json:"sceneTrailerlist"`
ShowScriptHeatmap bool `default:"true" json:"showScriptHeatmap"`
UpdateCheck bool `default:"true" json:"updateCheck"`
+ IsAvailOpacity int `default:"40" json:"isAvailOpacity"`
} `json:"web"`
Advanced struct {
ShowInternalSceneId bool `default:"false" json:"showInternalSceneId"`
diff --git a/pkg/config/state.go b/pkg/config/state.go
index 4620527f6..b465e65f7 100644
--- a/pkg/config/state.go
+++ b/pkg/config/state.go
@@ -26,6 +26,7 @@ type ObjectState struct {
SceneTrailerlist bool `json:"sceneTrailerlist"`
ShowScriptHeatmap bool `json:"showScriptHeatmap"`
UpdateCheck bool `json:"updateCheck"`
+ IsAvailOpacity int `json:"isAvailOpacity"`
} `json:"web"`
DLNA struct {
Running bool `json:"running"`
diff --git a/ui/src/store/optionsWeb.js b/ui/src/store/optionsWeb.js
index 862ed23cf..a1cfb1b5c 100644
--- a/ui/src/store/optionsWeb.js
+++ b/ui/src/store/optionsWeb.js
@@ -15,6 +15,8 @@ const state = {
showHspFile: true,
showSubtitlesFile: true,
sceneTrailerlist: true,
+ updateCheck: true,
+ isAvailOpacity: 40,
showScriptHeatmap: false,
updateCheck: true
}
@@ -42,6 +44,7 @@ const actions = {
state.web.sceneTrailerlist = data.config.web.sceneTrailerlist
state.web.showScriptHeatmap = data.config.web.showScriptHeatmap
state.web.updateCheck = data.config.web.updateCheck
+ state.web.isAvailOpacity = data.config.web.isAvailOpacity
state.loading = false
})
},
@@ -64,6 +67,7 @@ const actions = {
state.web.sceneTrailerlist = data.sceneTrailerlist
state.web.showScriptHeatmap = data.showScriptHeatmap
state.web.updateCheck = data.updateCheck
+ state.web.isAvailOpacity = data.isAvailOpacity
state.loading = false
})
}
diff --git a/ui/src/views/actors/ActorCard.vue b/ui/src/views/actors/ActorCard.vue
index 8bd1ffdd6..fbc716875 100644
--- a/ui/src/views/actors/ActorCard.vue
+++ b/ui/src/views/actors/ActorCard.vue
@@ -2,7 +2,7 @@
@@ -69,6 +69,12 @@ export default {
}
},
computed: {
+ isAvailOpactiy () {
+ if (this.$store.state.optionsWeb.web.isAvailOpacity == undefined) {
+ return .4
+ }
+ return this.$store.state.optionsWeb.web.isAvailOpacity / 100
+ },
},
methods: {
getImageURL (u) {
diff --git a/ui/src/views/options/sections/InterfaceWeb.vue b/ui/src/views/options/sections/InterfaceWeb.vue
index 55139db31..29f8d2972 100644
--- a/ui/src/views/options/sections/InterfaceWeb.vue
+++ b/ui/src/views/options/sections/InterfaceWeb.vue
@@ -75,6 +75,12 @@
show subtitles File button
+
+
show Script Heatmap
@@ -221,9 +227,20 @@ export default {
this.$store.state.optionsWeb.web.showSubtitlesFile = value
}
},
+ isAvailOpacity: {
+ get () {
+ if (this.$store.state.optionsWeb.web.isAvailOpacity == undefined) {
+ return 40
+ }
+ return this.$store.state.optionsWeb.web.isAvailOpacity
+ },
+ set (value) {
+ this.$store.state.optionsWeb.web.isAvailOpacity = value
+ }
+ },
isLoading: function () {
return this.$store.state.optionsWeb.loading
- }
+ }
}
}
diff --git a/ui/src/views/scenes/SceneCard.vue b/ui/src/views/scenes/SceneCard.vue
index 068a5402e..338784283 100644
--- a/ui/src/views/scenes/SceneCard.vue
+++ b/ui/src/views/scenes/SceneCard.vue
@@ -2,7 +2,7 @@
@@ -134,7 +134,13 @@ export default {
}
})
return count
- }
+ },
+ isAvailOpactiy () {
+ if (this.$store.state.optionsWeb.web.isAvailOpacity == undefined) {
+ return .4
+ }
+ return this.$store.state.optionsWeb.web.isAvailOpacity / 100
+ },
},
methods: {
getImageURL (u) {
From 0e0e426b5c24c83f3e4970060553f4baec03e554 Mon Sep 17 00:00:00 2001
From: crwxaj <52156245+crwxaj@users.noreply.github.com>
Date: Sun, 5 Nov 2023 14:49:25 +0100
Subject: [PATCH 34/39] chore: dependency cleanup (#1469)
Co-authored-by: crwxaj
---
go.sum | 21 +++----------------
.../views/options/sections/InterfaceWeb.vue | 9 ++++----
2 files changed, 8 insertions(+), 22 deletions(-)
diff --git a/go.sum b/go.sum
index e9837b178..42093cc7b 100644
--- a/go.sum
+++ b/go.sum
@@ -14,8 +14,6 @@ github.com/RoaringBitmap/roaring v1.2.3/go.mod h1:plvDsJQpxOC5bw8LRteu/MLWHsHez/
github.com/abbot/go-http-auth v0.4.0 h1:QjmvZ5gSC7jm3Zg54DqWE/T5m1t2AfDu6QlXJT0EVT0=
github.com/abbot/go-http-auth v0.4.0/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM=
github.com/anacrolix/envpprof v1.0.0 h1:AwZ+mBP4rQ5f7JSsrsN3h7M2xDW/xSE66IPVOqlnuUc=
-github.com/anacrolix/ffprobe v1.0.1 h1:S/MfCrUNZvbkkykX/1mmLVRf8//M7mvlY3BcwHaK3bQ=
-github.com/anacrolix/ffprobe v1.0.1/go.mod h1:MXe+zG/RRa5OdIf5+VYYfS/CfsSqOH7RrvGIqJBzqhI=
github.com/anacrolix/ffprobe v1.1.0 h1:eKBudnERW9zRJ0+ge6FzkQ0pWLyq142+FJrwRwSRMT4=
github.com/anacrolix/ffprobe v1.1.0/go.mod h1:MXe+zG/RRa5OdIf5+VYYfS/CfsSqOH7RrvGIqJBzqhI=
github.com/anacrolix/missinggo v1.1.0 h1:0lZbaNa6zTR1bELAIzCNmRGAtkHuLDPJqTiTtXoAIx8=
@@ -92,8 +90,6 @@ github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6RO
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c=
github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
-github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU=
-github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0=
github.com/djherbis/times v1.6.0 h1:w2ctJ92J8fBvWPxugmXIv7Nz7Q3iDMKNx9v5ocVH20c=
github.com/djherbis/times v1.6.0/go.mod h1:gOHeRAz2h+VJNZ5Gmc/o7iD9k4wW7NMVqieYCY99oc0=
github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q=
@@ -112,10 +108,7 @@ github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DP
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
github.com/fcjr/aia-transport-go v1.2.2 h1:sIZqXcM+YhTd2BDtkV2OJaqbcIVcPv1oKru3VJPIPc8=
github.com/fcjr/aia-transport-go v1.2.2/go.mod h1:onSqSq3tGkM14WusDx7q9FTheS9R1KBtD+QBWI6zG/w=
-github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/gammazero/nexus/v3 v3.2.0 h1:dKdGk4vQ/56wX5CLKUt6U3XQymUhTY6xHowBO9Z7bVA=
-github.com/gammazero/nexus/v3 v3.2.0/go.mod h1:h/5Osjg08QGAk+dVFpwdGdD8VsK+IGDm5E4PzVli264=
github.com/gammazero/nexus/v3 v3.2.1 h1:9sqURks8EBEYkyEmkCtw85oApQ4ou0FCfh/jUG+Jq4I=
github.com/gammazero/nexus/v3 v3.2.1/go.mod h1:SvrRjMwDP4S9RSx52Ks39ksmYA1FQQ0OuGKcleMJTQ0=
github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 h1:NRUJuo3v3WGC/g5YiyF790gut6oQr5f3FBI88Wv0dx4=
@@ -144,8 +137,6 @@ github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM=
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
-github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY=
-github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I=
github.com/go-resty/resty/v2 v2.10.0 h1:Qla4W/+TMmv0fOeeRqzEpXPLfTUnR5HZ1+lGs+CkiCo=
github.com/go-resty/resty/v2 v2.10.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A=
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
@@ -196,8 +187,6 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
-github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
@@ -322,8 +311,6 @@ github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdO
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI=
github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
-github.com/putdotio/go-putio v1.7.0 h1:iL7G9O30NCiOH4FULbul/tRNWDA9LuvlsfXjBIBmRY4=
-github.com/putdotio/go-putio v1.7.0/go.mod h1:QhjpLhn3La/ea4FeJlp1qsiaFZDC0EIO8VUe8VEKMV0=
github.com/putdotio/go-putio v1.7.1 h1:316PpOMO2a7H73foRxlpHmekeLso07et26Z00YlwQ2A=
github.com/putdotio/go-putio v1.7.1/go.mod h1:QhjpLhn3La/ea4FeJlp1qsiaFZDC0EIO8VUe8VEKMV0=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
@@ -351,7 +338,7 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/temoto/robotstxt v1.1.1 h1:Gh8RCs8ouX3hRSxxK7B1mO5RFByQ4CmJZDwgom++JaA=
github.com/temoto/robotstxt v1.1.1/go.mod h1:+1AmkuG3IYkh1kv0d2qEB9Le88ehNO0zwOr3ujewlOo=
github.com/thoas/go-funk v0.9.3 h1:7+nAEx3kn5ZJcnDm2Bh23N2yOtweO14bi//dvRtgLpw=
@@ -364,9 +351,6 @@ github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/tkuchiki/go-timezone v0.2.0 h1:yyZVHtQRVZ+wvlte5HXvSpBkR0dPYnPEIgq9qqAqltk=
github.com/tkuchiki/go-timezone v0.2.0/go.mod h1:b1Ean9v2UXtxSq4TZF0i/TU9NuoWa9hOzOKoGCV2zqY=
-github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
-github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
-github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
@@ -381,6 +365,7 @@ github.com/xo/dburl v0.16.0/go.mod h1:B7/G9FGungw6ighV8xJNwWYQPMfn3gsi2sn5SE8Bzc
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ=
go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
+go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -416,7 +401,6 @@ golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
@@ -473,6 +457,7 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
diff --git a/ui/src/views/options/sections/InterfaceWeb.vue b/ui/src/views/options/sections/InterfaceWeb.vue
index 29f8d2972..83f86eeff 100644
--- a/ui/src/views/options/sections/InterfaceWeb.vue
+++ b/ui/src/views/options/sections/InterfaceWeb.vue
@@ -75,16 +75,17 @@
show subtitles File button
+
+
+ show Script Heatmap
+
+
-
-
- show Script Heatmap
-
From 928e2f519642fdd24a652628e7704560fd7f7810 Mon Sep 17 00:00:00 2001
From: crwxaj <52156245+crwxaj@users.noreply.github.com>
Date: Sun, 5 Nov 2023 15:08:46 +0100
Subject: [PATCH 35/39] chore: fix some scraper icons (#1470)
Co-authored-by: crwxaj
---
pkg/config/scrapers.json | 2 +-
pkg/scrape/tmwvrnet.go | 2 +-
pkg/scrape/vrspy.go | 2 +-
pkg/scrape/wetvr.go | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/pkg/config/scrapers.json b/pkg/config/scrapers.json
index 238eb6264..f2a7dc0c2 100644
--- a/pkg/config/scrapers.json
+++ b/pkg/config/scrapers.json
@@ -455,7 +455,7 @@
"url": "https://www.sexlikereal.com/studios/vrpfilms",
"name": "VRPFilms",
"company": "VRPFilms",
- "avatar_url": "https://vrpfilms.com/storage/settings/March2021/Z0krYIQBMwSJ4R1eCnv1.png"
+ "avatar_url": "https://mcdn.vrporn.com/files/20190417121849/vrpfilms-logo.jpg"
},
{
"url": "https://www.sexlikereal.com/studios/vrpornjack",
diff --git a/pkg/scrape/tmwvrnet.go b/pkg/scrape/tmwvrnet.go
index 6cbee6c74..c53bf7b97 100644
--- a/pkg/scrape/tmwvrnet.go
+++ b/pkg/scrape/tmwvrnet.go
@@ -130,5 +130,5 @@ func TmwVRnet(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out cha
}
func init() {
- registerScraper("tmwvrnet", "TmwVRnet", "https://tmwvrnet.com/assets/vr/public/tour1/images/favicon/apple-touch-icon.png", "tmwvrnet.com", TmwVRnet)
+ registerScraper("tmwvrnet", "TmwVRnet", "https://cdn-vr.sexlikereal.com/images/studio_creatives/logotypes/1/26/logo_crop_1623330575.png", "tmwvrnet.com", TmwVRnet)
}
diff --git a/pkg/scrape/vrspy.go b/pkg/scrape/vrspy.go
index c71dfe336..8336a6c23 100755
--- a/pkg/scrape/vrspy.go
+++ b/pkg/scrape/vrspy.go
@@ -161,5 +161,5 @@ func VRSpy(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out chan<-
}
func init() {
- registerScraper(scraperID, siteID, baseURL+"/favicon.png", domain, VRSpy)
+ registerScraper(scraperID, siteID, baseURL+"/favicon.ico", domain, VRSpy)
}
diff --git a/pkg/scrape/wetvr.go b/pkg/scrape/wetvr.go
index e440a1a68..8af34c8c2 100644
--- a/pkg/scrape/wetvr.go
+++ b/pkg/scrape/wetvr.go
@@ -140,5 +140,5 @@ func WetVR(wg *sync.WaitGroup, updateSite bool, knownScenes []string, out chan<-
}
func init() {
- registerScraper("wetvr", "WetVR", "https://wetvr.com/assets/images/sites/wetvr/logo-4a2f06a4c9.png", "wetvr.com", WetVR)
+ registerScraper("wetvr", "WetVR", "https://wetvr.com/wetvr-favicone2df70df.ico", "wetvr.com", WetVR)
}
From 7fd84631c711bef8ead50519724e44469c0b9353 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 5 Nov 2023 15:18:44 +0100
Subject: [PATCH 36/39] chore(deps): update dependency eslint to v8.53.0
(#1472)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
package.json | 2 +-
yarn.lock | 28 ++++++++++++++--------------
2 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/package.json b/package.json
index 4a9e905d3..b7300701d 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.52.0",
+ "eslint": "8.53.0",
"eslint-plugin-import": "2.29.0",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "6.1.1",
diff --git a/yarn.lock b/yarn.lock
index 91a25312e..b27f97adf 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1289,10 +1289,10 @@
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8"
integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==
-"@eslint/eslintrc@^2.1.2":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396"
- integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==
+"@eslint/eslintrc@^2.1.3":
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d"
+ integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
@@ -1304,10 +1304,10 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@8.52.0":
- version "8.52.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c"
- integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==
+"@eslint/js@8.53.0":
+ version "8.53.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d"
+ integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==
"@fortawesome/fontawesome-common-types@^0.2.36":
version "0.2.36"
@@ -4129,15 +4129,15 @@ eslint-webpack-plugin@^3.1.0:
normalize-path "^3.0.0"
schema-utils "^4.0.0"
-eslint@8.52.0:
- version "8.52.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc"
- integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==
+eslint@8.53.0:
+ version "8.53.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce"
+ integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
- "@eslint/eslintrc" "^2.1.2"
- "@eslint/js" "8.52.0"
+ "@eslint/eslintrc" "^2.1.3"
+ "@eslint/js" "8.53.0"
"@humanwhocodes/config-array" "^0.11.13"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
From b368ba5b170de441870e7bedbcb1b29b8d3dd9e7 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 5 Nov 2023 15:19:18 +0100
Subject: [PATCH 37/39] fix(deps): update module github.com/mattn/go-sqlite3 to
v1.14.18 (#1471)
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 e3b10acc8..b9420e1d0 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.17
+ github.com/mattn/go-sqlite3 v1.14.18
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 42093cc7b..a8feb52c1 100644
--- a/go.sum
+++ b/go.sum
@@ -259,6 +259,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.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM=
github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
+github.com/mattn/go-sqlite3 v1.14.18 h1:JL0eqdCOq6DJVNPSvArO/bIV9/P7fbGrV00LZHc+5aI=
+github.com/mattn/go-sqlite3 v1.14.18/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
github.com/mcuadros/go-version v0.0.0-20190830083331-035f6764e8d2 h1:YocNLcTBdEdvY3iDK6jfWXvEaM5OCKkjxPKoJRdB3Gg=
From 98b72a034cf7528dedcc8c965b928cf59313ac74 Mon Sep 17 00:00:00 2001
From: tarrawhitefan <149216089+tarrawhitefan@users.noreply.github.com>
Date: Sun, 5 Nov 2023 15:29:11 +0100
Subject: [PATCH 38/39] scraper: Validate cover image for VirtualReal websites
(#1458)
Some of the covers provided by the VirtualReal websites are using a
pixel format that is not compatible with golang's `image/jpeg` decoder
and also with some VR players like HereSphere. It should be kinda safe
to assume that if a image can't be decoded by the golang decoders it may
not work in some players.
This patch validates the cover images against the golang decoders, and
tries to use some gallery image as cover, if no valid coner image is
found.
This is the only scraper I had this issue so far, but more scrapers may
need the same changes.
---
pkg/scrape/virtualrealporn.go | 31 ++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)
diff --git a/pkg/scrape/virtualrealporn.go b/pkg/scrape/virtualrealporn.go
index 36be99d25..cef44c682 100644
--- a/pkg/scrape/virtualrealporn.go
+++ b/pkg/scrape/virtualrealporn.go
@@ -1,9 +1,11 @@
package scrape
import (
+ "bytes"
"encoding/json"
"fmt"
"html"
+ "image"
"strconv"
"strings"
"sync"
@@ -20,11 +22,18 @@ func VirtualRealPornSite(wg *sync.WaitGroup, updateSite bool, knownScenes []stri
logScrapeStart(scraperID, siteID)
page := 1
+ imageCollector := createCollector("virtualrealporn.com", "virtualrealtrans.com", "virtualrealgay.com", "virtualrealpassion.com", "virtualrealamateurporn.com")
sceneCollector := createCollector("virtualrealporn.com", "virtualrealtrans.com", "virtualrealgay.com", "virtualrealpassion.com", "virtualrealamateurporn.com")
siteCollector := createCollector("virtualrealporn.com", "virtualrealtrans.com", "virtualrealgay.com", "virtualrealpassion.com", "virtualrealamateurporn.com")
castCollector := createCollector("virtualrealporn.com", "virtualrealtrans.com", "virtualrealgay.com", "virtualrealpassion.com", "virtualrealamateurporn.com")
castCollector.AllowURLRevisit = true
+ imageCollector.OnResponse(func(r *colly.Response) {
+ if _, _, err := image.Decode(bytes.NewReader(r.Body)); err == nil {
+ r.Ctx.Put("valid", "1")
+ }
+ })
+
sceneCollector.OnHTML(`html`, func(e *colly.HTMLElement) {
sc := models.ScrapedScene{}
sc.ScraperID = scraperID
@@ -54,14 +63,30 @@ func VirtualRealPornSite(wg *sync.WaitGroup, updateSite bool, knownScenes []stri
// Cover URLs
e.ForEach(`meta[property="og:image"]`, func(id int, e *colly.HTMLElement) {
- if id == 0 {
- sc.Covers = append(sc.Covers, strings.Split(e.Request.AbsoluteURL(e.Attr("content")), "?")[0])
+ if len(sc.Covers) == 0 {
+ u := strings.Split(e.Request.AbsoluteURL(e.Attr("content")), "?")[0]
+ ctx := colly.NewContext()
+ if err := imageCollector.Request("GET", u, nil, ctx, nil); err == nil {
+ if ctx.Get("valid") != "" {
+ sc.Covers = append(sc.Covers, u)
+ }
+ }
}
})
// Gallery
e.ForEach(`figure[itemprop="associatedMedia"] a`, func(id int, e *colly.HTMLElement) {
- sc.Gallery = append(sc.Gallery, e.Request.AbsoluteURL(strings.Split(e.Attr("href"), "?")[0]))
+ if len(sc.Covers) == 0 {
+ u := e.Request.AbsoluteURL(strings.Split(e.Attr("href"), "?")[0])
+ ctx := colly.NewContext()
+ if err := imageCollector.Request("GET", u, nil, ctx, nil); err == nil {
+ if ctx.Get("valid") != "" {
+ sc.Covers = append(sc.Covers, u)
+ }
+ }
+ } else {
+ sc.Gallery = append(sc.Gallery, e.Request.AbsoluteURL(strings.Split(e.Attr("href"), "?")[0]))
+ }
})
// Tags
From 506c3578695c1d8bd1edc2a6cefde742cab26553 Mon Sep 17 00:00:00 2001
From: crwxaj <52156245+crwxaj@users.noreply.github.com>
Date: Sun, 5 Nov 2023 15:39:53 +0100
Subject: [PATCH 39/39] minor: added some log output for HereSphere file
deletes (#1473)
Co-authored-by: crwxaj
---
pkg/api/files.go | 1 +
pkg/api/heresphere.go | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/pkg/api/files.go b/pkg/api/files.go
index 7e3e2a16c..4d41e7d33 100644
--- a/pkg/api/files.go
+++ b/pkg/api/files.go
@@ -323,6 +323,7 @@ func removeFileByFileId(fileId uint) models.Scene {
err := db.Preload("Volume").Where(&models.File{ID: fileId}).First(&file).Error
if err == nil {
+ log.Infof("Deleting file %s", filepath.Join(file.Path, file.Filename))
deleted := false
switch file.Volume.Type {
case "local":
diff --git a/pkg/api/heresphere.go b/pkg/api/heresphere.go
index 0581a5fa2..e6fcd5975 100644
--- a/pkg/api/heresphere.go
+++ b/pkg/api/heresphere.go
@@ -238,6 +238,7 @@ func (i HeresphereResource) getHeresphereFile(req *restful.Request, resp *restfu
Media: media,
}
if requestData.DeleteFiles != nil && config.Config.Interfaces.Heresphere.AllowFileDeletes {
+ log.Infof("Got request by HereSphere to delete file %v", file.Filename)
removeFileByFileId(file.ID)
}
@@ -879,6 +880,7 @@ func ProcessHeresphereUpdates(scene *models.Scene, requestData HereSphereAuthReq
}
if requestData.DeleteFiles != nil && config.Config.Interfaces.Heresphere.AllowFileDeletes {
+ log.Infof("Got request by HereSphere to delete files for scene %v", scene.ID)
for _, sceneFile := range scene.Files {
removeFileByFileId(sceneFile.ID)
}
@@ -887,7 +889,7 @@ func ProcessHeresphereUpdates(scene *models.Scene, requestData HereSphereAuthReq
if requestData.Hsp != nil && config.Config.Interfaces.Heresphere.AllowHspData {
hspContent, err := base64.StdEncoding.DecodeString(*requestData.Hsp)
if err != nil {
- log.Error("Error decoding heresphere hsp data %v", err)
+ log.Errorf("Error decoding heresphere hsp data %v", err)
}
fName := filepath.Join(scene.Files[0].Path, strings.TrimSuffix(scene.Files[0].Filename, filepath.Ext(videoFile.Filename))+".hsp")