diff --git a/migrations/20231201040310_tagsplit.js b/migrations/20231201040310_tagsplit.js new file mode 100644 index 000000000..4ffedc332 --- /dev/null +++ b/migrations/20231201040310_tagsplit.js @@ -0,0 +1,21 @@ +exports.up = async (knex) => { + await knex.schema.alterTable('tags', (table) => { + table.specificType('implied_tag_ids', 'integer[]'); + }); + + await knex.schema.alterTable('releases_tags', (table) => { + table.enum('source', ['scraper', 'editor', 'implied']) + .notNullable() + .defaultTo('scraper'); + }); +}; + +exports.down = async (knex) => { + await knex.schema.alterTable('tags', (table) => { + table.dropColumn('implied_tag_ids'); + }); + + await knex.schema.alterTable('releases_tags', (table) => { + table.dropColumn('source'); + }); +}; diff --git a/package-lock.json b/package-lock.json index 9c320ec5a..cfce81e60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,7 +55,7 @@ "iconv-lite": "^0.6.3", "inquirer": "^8.2.6", "inspector-api": "^1.4.8", - "jsdom": "^22.1.0", + "jsdom": "^23.0.1", "knex": "^3.0.1", "knex-migrate": "^1.7.4", "longjohn": "^0.2.12", @@ -5072,6 +5072,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, "engines": { "node": ">= 10" } @@ -7914,16 +7915,23 @@ } }, "node_modules/data-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" + } + }, + "node_modules/data-urls/node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "engines": { + "node": ">=18" } }, "node_modules/date-fns": { @@ -8174,18 +8182,6 @@ } ] }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -10730,14 +10726,14 @@ "dev": true }, "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dependencies": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/html-entities": { @@ -10798,6 +10794,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -11994,39 +11991,37 @@ "peer": true }, "node_modules/jsdom": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", - "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.0.1.tgz", + "integrity": "sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==", "dependencies": { - "abab": "^2.0.6", "cssstyle": "^3.0.0", - "data-urls": "^4.0.0", + "data-urls": "^5.0.0", "decimal.js": "^10.4.3", - "domexception": "^4.0.0", "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.4", + "nwsapi": "^2.2.7", "parse5": "^7.1.2", "rrweb-cssom": "^0.6.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", + "tough-cookie": "^4.1.3", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.1", - "ws": "^8.13.0", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.14.2", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^2.11.2" }, "peerDependenciesMeta": { "canvas": { @@ -12034,6 +12029,57 @@ } } }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "engines": { + "node": ">=18" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -17727,14 +17773,14 @@ } }, "node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dependencies": { - "punycode": "^2.3.0" + "punycode": "^2.3.1" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/trim-newlines": { @@ -18926,14 +18972,22 @@ } }, "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dependencies": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" + } + }, + "node_modules/w3c-xmlserializer/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "engines": { + "node": ">=18" } }, "node_modules/watchpack": { @@ -19138,14 +19192,14 @@ "integrity": "sha512-O0S1ZGEWyPvyZEkS2VbyV7mtir/NM9MNK3EuhbHPoJ8EHTky2pTXehjIl+IiDPr+Lldgx129QGt3NGly7rwRPw==" }, "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dependencies": { "iconv-lite": "0.6.3" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-mimetype": { @@ -19157,15 +19211,15 @@ } }, "node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", "dependencies": { - "tr46": "^4.1.1", + "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/which": { @@ -19484,6 +19538,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, "engines": { "node": ">=12" } diff --git a/package.json b/package.json index 9cfa7e6e1..0ee36c2ad 100755 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "iconv-lite": "^0.6.3", "inquirer": "^8.2.6", "inspector-api": "^1.4.8", - "jsdom": "^22.1.0", + "jsdom": "^23.0.1", "knex": "^3.0.1", "knex-migrate": "^1.7.4", "longjohn": "^0.2.12", diff --git a/public/img/logos/innofsin/adreenawinters.png b/public/img/logos/innofsin/adreenawinters.png new file mode 100644 index 000000000..2f311c3ad Binary files /dev/null and b/public/img/logos/innofsin/adreenawinters.png differ diff --git a/public/img/logos/innofsin/bbctitans.png b/public/img/logos/innofsin/bbctitans.png new file mode 100644 index 000000000..c15cb46d7 Binary files /dev/null and b/public/img/logos/innofsin/bbctitans.png differ diff --git a/public/img/logos/innofsin/dannyoceansadventures.png b/public/img/logos/innofsin/dannyoceansadventures.png new file mode 100644 index 000000000..2588cb82c Binary files /dev/null and b/public/img/logos/innofsin/dannyoceansadventures.png differ diff --git a/public/img/logos/innofsin/favicon.png b/public/img/logos/innofsin/favicon.png new file mode 100644 index 000000000..e336e0888 Binary files /dev/null and b/public/img/logos/innofsin/favicon.png differ diff --git a/public/img/logos/innofsin/favicon_dark.png b/public/img/logos/innofsin/favicon_dark.png new file mode 100644 index 000000000..8fdeaf4c5 Binary files /dev/null and b/public/img/logos/innofsin/favicon_dark.png differ diff --git a/public/img/logos/innofsin/favicon_light.png b/public/img/logos/innofsin/favicon_light.png new file mode 100644 index 000000000..9e2aeb129 Binary files /dev/null and b/public/img/logos/innofsin/favicon_light.png differ diff --git a/public/img/logos/innofsin/innofsin.png b/public/img/logos/innofsin/innofsin.png new file mode 100644 index 000000000..46a0bc6bc Binary files /dev/null and b/public/img/logos/innofsin/innofsin.png differ diff --git a/public/img/logos/innofsin/lazy/adreenawinters.png b/public/img/logos/innofsin/lazy/adreenawinters.png new file mode 100644 index 000000000..85e8dbcbc Binary files /dev/null and b/public/img/logos/innofsin/lazy/adreenawinters.png differ diff --git a/public/img/logos/innofsin/lazy/bbctitans.png b/public/img/logos/innofsin/lazy/bbctitans.png new file mode 100644 index 000000000..8c8990a79 Binary files /dev/null and b/public/img/logos/innofsin/lazy/bbctitans.png differ diff --git a/public/img/logos/innofsin/lazy/dannyoceansadventures.png b/public/img/logos/innofsin/lazy/dannyoceansadventures.png new file mode 100644 index 000000000..ede235d7c Binary files /dev/null and b/public/img/logos/innofsin/lazy/dannyoceansadventures.png differ diff --git a/public/img/logos/innofsin/lazy/innofsin.png b/public/img/logos/innofsin/lazy/innofsin.png new file mode 100644 index 000000000..6615547f0 Binary files /dev/null and b/public/img/logos/innofsin/lazy/innofsin.png differ diff --git a/public/img/logos/innofsin/lazy/mydeepdarksecret.png b/public/img/logos/innofsin/lazy/mydeepdarksecret.png new file mode 100644 index 000000000..88cc8e746 Binary files /dev/null and b/public/img/logos/innofsin/lazy/mydeepdarksecret.png differ diff --git a/public/img/logos/innofsin/lazy/network.png b/public/img/logos/innofsin/lazy/network.png new file mode 100644 index 000000000..e5406fa95 Binary files /dev/null and b/public/img/logos/innofsin/lazy/network.png differ diff --git a/public/img/logos/innofsin/lazy/puertorock.png b/public/img/logos/innofsin/lazy/puertorock.png new file mode 100644 index 000000000..288ada6d6 Binary files /dev/null and b/public/img/logos/innofsin/lazy/puertorock.png differ diff --git a/public/img/logos/innofsin/lazy/rebelrhyder.png b/public/img/logos/innofsin/lazy/rebelrhyder.png new file mode 100644 index 000000000..928d18597 Binary files /dev/null and b/public/img/logos/innofsin/lazy/rebelrhyder.png differ diff --git a/public/img/logos/innofsin/lazy/richardmannevents.png b/public/img/logos/innofsin/lazy/richardmannevents.png new file mode 100644 index 000000000..ede1d5fb8 Binary files /dev/null and b/public/img/logos/innofsin/lazy/richardmannevents.png differ diff --git a/public/img/logos/innofsin/lazy/richardmannsworld.png b/public/img/logos/innofsin/lazy/richardmannsworld.png new file mode 100644 index 000000000..334f5c2ea Binary files /dev/null and b/public/img/logos/innofsin/lazy/richardmannsworld.png differ diff --git a/public/img/logos/innofsin/lazy/tatsandtits.png b/public/img/logos/innofsin/lazy/tatsandtits.png new file mode 100644 index 000000000..2bc6b9df8 Binary files /dev/null and b/public/img/logos/innofsin/lazy/tatsandtits.png differ diff --git a/public/img/logos/innofsin/lazy/trans4thefans.png b/public/img/logos/innofsin/lazy/trans4thefans.png new file mode 100644 index 000000000..3c2d589b1 Binary files /dev/null and b/public/img/logos/innofsin/lazy/trans4thefans.png differ diff --git a/public/img/logos/innofsin/lazy/wefuckin.png b/public/img/logos/innofsin/lazy/wefuckin.png new file mode 100644 index 000000000..9c93c8d80 Binary files /dev/null and b/public/img/logos/innofsin/lazy/wefuckin.png differ diff --git a/public/img/logos/innofsin/misc/back-side-bonanza_banner.png b/public/img/logos/innofsin/misc/back-side-bonanza_banner.png new file mode 100755 index 000000000..9fc3d6cb3 Binary files /dev/null and b/public/img/logos/innofsin/misc/back-side-bonanza_banner.png differ diff --git a/public/img/logos/innofsin/misc/backside-bonanza_bw.gif b/public/img/logos/innofsin/misc/backside-bonanza_bw.gif new file mode 100644 index 000000000..b22fa4695 Binary files /dev/null and b/public/img/logos/innofsin/misc/backside-bonanza_bw.gif differ diff --git a/public/img/logos/innofsin/misc/cum-thirsty-cougars_banner.png b/public/img/logos/innofsin/misc/cum-thirsty-cougars_banner.png new file mode 100755 index 000000000..a0b4a2f18 Binary files /dev/null and b/public/img/logos/innofsin/misc/cum-thirsty-cougars_banner.png differ diff --git a/public/img/logos/innofsin/misc/cum-thirsty-cougars_bg.gif b/public/img/logos/innofsin/misc/cum-thirsty-cougars_bg.gif new file mode 100644 index 000000000..4006c12c5 Binary files /dev/null and b/public/img/logos/innofsin/misc/cum-thirsty-cougars_bg.gif differ diff --git a/public/img/logos/innofsin/misc/cum-thirsty-cougars_bw.gif b/public/img/logos/innofsin/misc/cum-thirsty-cougars_bw.gif new file mode 100644 index 000000000..4e381b2b0 Binary files /dev/null and b/public/img/logos/innofsin/misc/cum-thirsty-cougars_bw.gif differ diff --git a/public/img/logos/innofsin/mydeepdarksecret.png b/public/img/logos/innofsin/mydeepdarksecret.png new file mode 100644 index 000000000..46f3166dd Binary files /dev/null and b/public/img/logos/innofsin/mydeepdarksecret.png differ diff --git a/public/img/logos/innofsin/network.png b/public/img/logos/innofsin/network.png new file mode 100644 index 000000000..f8180ec2c Binary files /dev/null and b/public/img/logos/innofsin/network.png differ diff --git a/public/img/logos/innofsin/puertorock.png b/public/img/logos/innofsin/puertorock.png new file mode 100644 index 000000000..1f33094b7 Binary files /dev/null and b/public/img/logos/innofsin/puertorock.png differ diff --git a/public/img/logos/innofsin/rebelrhyder.png b/public/img/logos/innofsin/rebelrhyder.png new file mode 100644 index 000000000..fdd1ccae0 Binary files /dev/null and b/public/img/logos/innofsin/rebelrhyder.png differ diff --git a/public/img/logos/innofsin/richardmannevents.png b/public/img/logos/innofsin/richardmannevents.png new file mode 100644 index 000000000..5b0f83c5c Binary files /dev/null and b/public/img/logos/innofsin/richardmannevents.png differ diff --git a/public/img/logos/innofsin/richardmannsworld.png b/public/img/logos/innofsin/richardmannsworld.png new file mode 100644 index 000000000..2016001a3 Binary files /dev/null and b/public/img/logos/innofsin/richardmannsworld.png differ diff --git a/public/img/logos/innofsin/tatsandtits.png b/public/img/logos/innofsin/tatsandtits.png new file mode 100644 index 000000000..0c0247b5a Binary files /dev/null and b/public/img/logos/innofsin/tatsandtits.png differ diff --git a/public/img/logos/innofsin/thumbs/adreenawinters.png b/public/img/logos/innofsin/thumbs/adreenawinters.png new file mode 100644 index 000000000..15e764d39 Binary files /dev/null and b/public/img/logos/innofsin/thumbs/adreenawinters.png differ diff --git a/public/img/logos/innofsin/thumbs/bbctitans.png b/public/img/logos/innofsin/thumbs/bbctitans.png new file mode 100644 index 000000000..2a4e812db Binary files /dev/null and b/public/img/logos/innofsin/thumbs/bbctitans.png differ diff --git a/public/img/logos/innofsin/thumbs/dannyoceansadventures.png b/public/img/logos/innofsin/thumbs/dannyoceansadventures.png new file mode 100644 index 000000000..c77857a0a Binary files /dev/null and b/public/img/logos/innofsin/thumbs/dannyoceansadventures.png differ diff --git a/public/img/logos/innofsin/thumbs/innofsin.png b/public/img/logos/innofsin/thumbs/innofsin.png new file mode 100644 index 000000000..d828846a7 Binary files /dev/null and b/public/img/logos/innofsin/thumbs/innofsin.png differ diff --git a/public/img/logos/innofsin/thumbs/mydeepdarksecret.png b/public/img/logos/innofsin/thumbs/mydeepdarksecret.png new file mode 100644 index 000000000..69e865b38 Binary files /dev/null and b/public/img/logos/innofsin/thumbs/mydeepdarksecret.png differ diff --git a/public/img/logos/innofsin/thumbs/network.png b/public/img/logos/innofsin/thumbs/network.png new file mode 100644 index 000000000..0dc1f0a2a Binary files /dev/null and b/public/img/logos/innofsin/thumbs/network.png differ diff --git a/public/img/logos/innofsin/thumbs/puertorock.png b/public/img/logos/innofsin/thumbs/puertorock.png new file mode 100644 index 000000000..3c4981542 Binary files /dev/null and b/public/img/logos/innofsin/thumbs/puertorock.png differ diff --git a/public/img/logos/innofsin/thumbs/rebelrhyder.png b/public/img/logos/innofsin/thumbs/rebelrhyder.png new file mode 100644 index 000000000..42eb84b9c Binary files /dev/null and b/public/img/logos/innofsin/thumbs/rebelrhyder.png differ diff --git a/public/img/logos/innofsin/thumbs/richardmannevents.png b/public/img/logos/innofsin/thumbs/richardmannevents.png new file mode 100644 index 000000000..b84f5c08a Binary files /dev/null and b/public/img/logos/innofsin/thumbs/richardmannevents.png differ diff --git a/public/img/logos/innofsin/thumbs/richardmannsworld.png b/public/img/logos/innofsin/thumbs/richardmannsworld.png new file mode 100644 index 000000000..1e8857c26 Binary files /dev/null and b/public/img/logos/innofsin/thumbs/richardmannsworld.png differ diff --git a/public/img/logos/innofsin/thumbs/tatsandtits.png b/public/img/logos/innofsin/thumbs/tatsandtits.png new file mode 100644 index 000000000..c227d62d8 Binary files /dev/null and b/public/img/logos/innofsin/thumbs/tatsandtits.png differ diff --git a/public/img/logos/innofsin/thumbs/trans4thefans.png b/public/img/logos/innofsin/thumbs/trans4thefans.png new file mode 100644 index 000000000..07ace20f1 Binary files /dev/null and b/public/img/logos/innofsin/thumbs/trans4thefans.png differ diff --git a/public/img/logos/innofsin/thumbs/wefuckin.png b/public/img/logos/innofsin/thumbs/wefuckin.png new file mode 100644 index 000000000..e110bec25 Binary files /dev/null and b/public/img/logos/innofsin/thumbs/wefuckin.png differ diff --git a/public/img/logos/innofsin/trans4thefans.png b/public/img/logos/innofsin/trans4thefans.png new file mode 100644 index 000000000..ee8314707 Binary files /dev/null and b/public/img/logos/innofsin/trans4thefans.png differ diff --git a/public/img/logos/innofsin/wefuckin.png b/public/img/logos/innofsin/wefuckin.png new file mode 100644 index 000000000..937a7ae04 Binary files /dev/null and b/public/img/logos/innofsin/wefuckin.png differ diff --git a/public/img/logos/nubiles/lazy/anilos.png b/public/img/logos/nubiles/lazy/anilos.png old mode 100755 new mode 100644 index 487ca6d71..1b0dbeeac Binary files a/public/img/logos/nubiles/lazy/anilos.png and b/public/img/logos/nubiles/lazy/anilos.png differ diff --git a/public/img/logos/nubiles/lazy/badteenspunished.png b/public/img/logos/nubiles/lazy/badteenspunished.png old mode 100755 new mode 100644 index 429e35f0c..bec3e46e1 Binary files a/public/img/logos/nubiles/lazy/badteenspunished.png and b/public/img/logos/nubiles/lazy/badteenspunished.png differ diff --git a/public/img/logos/nubiles/lazy/bountyhunterporn.png b/public/img/logos/nubiles/lazy/bountyhunterporn.png old mode 100755 new mode 100644 index d987572c4..46f4af023 Binary files a/public/img/logos/nubiles/lazy/bountyhunterporn.png and b/public/img/logos/nubiles/lazy/bountyhunterporn.png differ diff --git a/public/img/logos/nubiles/lazy/brattysis.png b/public/img/logos/nubiles/lazy/brattysis.png old mode 100755 new mode 100644 index b02adb8eb..af7eb7978 Binary files a/public/img/logos/nubiles/lazy/brattysis.png and b/public/img/logos/nubiles/lazy/brattysis.png differ diff --git a/public/img/logos/nubiles/lazy/daddyslilangel.png b/public/img/logos/nubiles/lazy/daddyslilangel.png old mode 100755 new mode 100644 index 9f0348716..051d0c2a6 Binary files a/public/img/logos/nubiles/lazy/daddyslilangel.png and b/public/img/logos/nubiles/lazy/daddyslilangel.png differ diff --git a/public/img/logos/nubiles/lazy/deeplush.png b/public/img/logos/nubiles/lazy/deeplush.png old mode 100755 new mode 100644 index aae6c3fca..9051e8abb Binary files a/public/img/logos/nubiles/lazy/deeplush.png and b/public/img/logos/nubiles/lazy/deeplush.png differ diff --git a/public/img/logos/nubiles/lazy/detentiongirls.png b/public/img/logos/nubiles/lazy/detentiongirls.png old mode 100755 new mode 100644 index 0d10363dd..27ba45e42 Binary files a/public/img/logos/nubiles/lazy/detentiongirls.png and b/public/img/logos/nubiles/lazy/detentiongirls.png differ diff --git a/public/img/logos/nubiles/lazy/driverxxx.png b/public/img/logos/nubiles/lazy/driverxxx.png old mode 100755 new mode 100644 index d0ff65e3d..b699465c1 Binary files a/public/img/logos/nubiles/lazy/driverxxx.png and b/public/img/logos/nubiles/lazy/driverxxx.png differ diff --git a/public/img/logos/nubiles/lazy/favicon.png b/public/img/logos/nubiles/lazy/favicon.png old mode 100755 new mode 100644 index e49b4d0f0..71ec4c74f Binary files a/public/img/logos/nubiles/lazy/favicon.png and b/public/img/logos/nubiles/lazy/favicon.png differ diff --git a/public/img/logos/nubiles/lazy/favicon_dark.png b/public/img/logos/nubiles/lazy/favicon_dark.png new file mode 100644 index 000000000..b1b4ec568 Binary files /dev/null and b/public/img/logos/nubiles/lazy/favicon_dark.png differ diff --git a/public/img/logos/nubiles/lazy/favicon_light.png b/public/img/logos/nubiles/lazy/favicon_light.png new file mode 100644 index 000000000..71ec4c74f Binary files /dev/null and b/public/img/logos/nubiles/lazy/favicon_light.png differ diff --git a/public/img/logos/nubiles/lazy/hotcrazymess.png b/public/img/logos/nubiles/lazy/hotcrazymess.png old mode 100755 new mode 100644 index 8ecabe650..c94f6063e Binary files a/public/img/logos/nubiles/lazy/hotcrazymess.png and b/public/img/logos/nubiles/lazy/hotcrazymess.png differ diff --git a/public/img/logos/nubiles/lazy/lilsis.png b/public/img/logos/nubiles/lazy/lilsis.png new file mode 100644 index 000000000..1aacafceb Binary files /dev/null and b/public/img/logos/nubiles/lazy/lilsis.png differ diff --git a/public/img/logos/nubiles/lazy/momsteachsex.png b/public/img/logos/nubiles/lazy/momsteachsex.png old mode 100755 new mode 100644 index 6508ac459..cc986d765 Binary files a/public/img/logos/nubiles/lazy/momsteachsex.png and b/public/img/logos/nubiles/lazy/momsteachsex.png differ diff --git a/public/img/logos/nubiles/lazy/myfamilypies.png b/public/img/logos/nubiles/lazy/myfamilypies.png old mode 100755 new mode 100644 index f6678e72e..b904a4eab Binary files a/public/img/logos/nubiles/lazy/myfamilypies.png and b/public/img/logos/nubiles/lazy/myfamilypies.png differ diff --git a/public/img/logos/nubiles/lazy/network.png b/public/img/logos/nubiles/lazy/network.png old mode 100755 new mode 100644 index 952ee9d19..0d2af1e29 Binary files a/public/img/logos/nubiles/lazy/network.png and b/public/img/logos/nubiles/lazy/network.png differ diff --git a/public/img/logos/nubiles/lazy/nfbusty.png b/public/img/logos/nubiles/lazy/nfbusty.png old mode 100755 new mode 100644 index 1be5b7a32..0401196f4 Binary files a/public/img/logos/nubiles/lazy/nfbusty.png and b/public/img/logos/nubiles/lazy/nfbusty.png differ diff --git a/public/img/logos/nubiles/lazy/nubilefilms.png b/public/img/logos/nubiles/lazy/nubilefilms.png old mode 100755 new mode 100644 index 002003474..94321fcf2 Binary files a/public/img/logos/nubiles/lazy/nubilefilms.png and b/public/img/logos/nubiles/lazy/nubilefilms.png differ diff --git a/public/img/logos/nubiles/lazy/nubiles.png b/public/img/logos/nubiles/lazy/nubiles.png old mode 100755 new mode 100644 index 579df0a4d..242357a53 Binary files a/public/img/logos/nubiles/lazy/nubiles.png and b/public/img/logos/nubiles/lazy/nubiles.png differ diff --git a/public/img/logos/nubiles/lazy/nubilescasting.png b/public/img/logos/nubiles/lazy/nubilescasting.png old mode 100755 new mode 100644 index 5d40a3b84..198998265 Binary files a/public/img/logos/nubiles/lazy/nubilescasting.png and b/public/img/logos/nubiles/lazy/nubilescasting.png differ diff --git a/public/img/logos/nubiles/lazy/nubileset.png b/public/img/logos/nubiles/lazy/nubileset.png old mode 100755 new mode 100644 index 56e58b1f4..b2e734287 Binary files a/public/img/logos/nubiles/lazy/nubileset.png and b/public/img/logos/nubiles/lazy/nubileset.png differ diff --git a/public/img/logos/nubiles/lazy/nubilesunscripted.png b/public/img/logos/nubiles/lazy/nubilesunscripted.png old mode 100755 new mode 100644 index ebb28ef64..f16786d92 Binary files a/public/img/logos/nubiles/lazy/nubilesunscripted.png and b/public/img/logos/nubiles/lazy/nubilesunscripted.png differ diff --git a/public/img/logos/nubiles/lazy/petiteballerinasfucked.png b/public/img/logos/nubiles/lazy/petiteballerinasfucked.png old mode 100755 new mode 100644 index a09d91fa9..dbe8b4f8f Binary files a/public/img/logos/nubiles/lazy/petiteballerinasfucked.png and b/public/img/logos/nubiles/lazy/petiteballerinasfucked.png differ diff --git a/public/img/logos/nubiles/lazy/petitehdporn.png b/public/img/logos/nubiles/lazy/petitehdporn.png old mode 100755 new mode 100644 index 06b1686c0..a77a8f285 Binary files a/public/img/logos/nubiles/lazy/petitehdporn.png and b/public/img/logos/nubiles/lazy/petitehdporn.png differ diff --git a/public/img/logos/nubiles/lazy/princesscum.png b/public/img/logos/nubiles/lazy/princesscum.png old mode 100755 new mode 100644 index 1550b47b2..056bf9a2e Binary files a/public/img/logos/nubiles/lazy/princesscum.png and b/public/img/logos/nubiles/lazy/princesscum.png differ diff --git a/public/img/logos/nubiles/lazy/stepsiblingscaught.png b/public/img/logos/nubiles/lazy/stepsiblingscaught.png old mode 100755 new mode 100644 index d32311f59..f67b342c8 Binary files a/public/img/logos/nubiles/lazy/stepsiblingscaught.png and b/public/img/logos/nubiles/lazy/stepsiblingscaught.png differ diff --git a/public/img/logos/nubiles/lazy/teacherfucksteens.png b/public/img/logos/nubiles/lazy/teacherfucksteens.png old mode 100755 new mode 100644 index c5b9dc2d7..5ef1a99c8 Binary files a/public/img/logos/nubiles/lazy/teacherfucksteens.png and b/public/img/logos/nubiles/lazy/teacherfucksteens.png differ diff --git a/public/img/logos/nubiles/lazy/thatsitcomshow.png b/public/img/logos/nubiles/lazy/thatsitcomshow.png old mode 100755 new mode 100644 index 27c808076..fa1d0c916 Binary files a/public/img/logos/nubiles/lazy/thatsitcomshow.png and b/public/img/logos/nubiles/lazy/thatsitcomshow.png differ diff --git a/public/img/logos/nubiles/lilsis.png b/public/img/logos/nubiles/lilsis.png new file mode 100644 index 000000000..1f2e9a000 Binary files /dev/null and b/public/img/logos/nubiles/lilsis.png differ diff --git a/public/img/logos/nubiles/misc/lil-sis.svg b/public/img/logos/nubiles/misc/lil-sis.svg new file mode 100755 index 000000000..ea8c5b62d --- /dev/null +++ b/public/img/logos/nubiles/misc/lil-sis.svg @@ -0,0 +1,169 @@ + + + + + AAAsZ2p1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAACxBanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46dXVpZDpjMWZlNjU3YS04YzM3LTQxMjItYjRlOC0wMGRhNjM4MGM0MjEAAAABp2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAAMpqdW1iAAAAJmp1bWRjYm9yABEAEIAAAKoAOJtxA2MycGEuYWN0aW9ucwAAAACcY2JvcqFnYWN0aW9uc4GjZmFjdGlvbmtjMnBhLmVkaXRlZG1zb2Z0d2FyZUFnZW50bUFkb2JlIEZpcmVmbHlxZGlnaXRhbFNvdXJjZVR5cGV4Rmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWEAAACsanVtYgAAAChqdW1kY2JvcgARABCAAACqADibcQNjMnBhLmhhc2guZGF0YQAAAAB8Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0GLZmbGVuZ3RoGTs0ZG5hbWVuanVtYmYgbWFuaWZlc3RjYWxnZnNoYTI1NmRoYXNoWCA+S8XStW3QPZ5x5/umvu63wLRC8ykvR9lPGKP3Aw/4jWNwYWRJAAAAAAAAAAAAAAACC2p1bWIAAAAkanVtZGMyY2wAEQAQgAAAqgA4m3EDYzJwYS5jbGFpbQAAAAHfY2JvcqhoZGM6dGl0bGVvR2VuZXJhdGVkIEltYWdlaWRjOmZvcm1hdG1pbWFnZS9zdmcreG1samluc3RhbmNlSUR4LHhtcDppaWQ6MWE4ZDNhOTMtMDA5Ni00NDFjLWE2MzItNDQwMTk3MmEzYmMwb2NsYWltX2dlbmVyYXRvcng2QWRvYmVfSWxsdXN0cmF0b3IvMjguMCBhZG9iZV9jMnBhLzAuNy42IGMycGEtcnMvMC4yNS4ydGNsYWltX2dlbmVyYXRvcl9pbmZvgb9kbmFtZXFBZG9iZSBJbGx1c3RyYXRvcmd2ZXJzaW9uZDI4LjD/aXNpZ25hdHVyZXgZc2VsZiNqdW1iZj1jMnBhLnNpZ25hdHVyZWphc3NlcnRpb25zgqJjdXJseCdzZWxmI2p1bWJmPWMy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WQu8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZZAQDRKUSLJwgZRgPXbEquOAYdmE3ZXZev0lUmxFeSOgOPzNxwMdSv38twF9y+WOwqV3biSvk212nU4RXY7ut55oJV0qocr/HYC9Xqik/vDv1heQlG0n2oDAzGx3IBthkgiZL/Cja6+Li5DfldTL+DXhNVKOAZlKIAlmN3jv7xhMnGYIkylWj66Zvuv+mtcisl3xqLf/vbfoeNb68fu0JW3Ni+RDGBoWX5GAvWiN9bnaW78+85rr5hANDKfM30m/tMcc3FHwIlVOHeuxo/LTh7gDIRxtu2UYLJU288GiduP654/Yl2ctQ2Yg7tfqwA9nS8dL2yAaYWfAAwpIliWKbskaFr + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/logos/nubiles/misc/lil-sis_notld.png b/public/img/logos/nubiles/misc/lil-sis_notld.png new file mode 100644 index 000000000..4f36dea1e Binary files /dev/null and b/public/img/logos/nubiles/misc/lil-sis_notld.png differ diff --git a/public/img/logos/nubiles/misc/lil-sis_tld.png b/public/img/logos/nubiles/misc/lil-sis_tld.png new file mode 100644 index 000000000..c6597f258 Binary files /dev/null and b/public/img/logos/nubiles/misc/lil-sis_tld.png differ diff --git a/public/img/logos/nubiles/thumbs/anilos.png b/public/img/logos/nubiles/thumbs/anilos.png old mode 100755 new mode 100644 index 38e91d5b9..f4d649302 Binary files a/public/img/logos/nubiles/thumbs/anilos.png and b/public/img/logos/nubiles/thumbs/anilos.png differ diff --git a/public/img/logos/nubiles/thumbs/badteenspunished.png b/public/img/logos/nubiles/thumbs/badteenspunished.png old mode 100755 new mode 100644 index 98c777599..e9c6801c7 Binary files a/public/img/logos/nubiles/thumbs/badteenspunished.png and b/public/img/logos/nubiles/thumbs/badteenspunished.png differ diff --git a/public/img/logos/nubiles/thumbs/bountyhunterporn.png b/public/img/logos/nubiles/thumbs/bountyhunterporn.png old mode 100755 new mode 100644 index fae230b01..6f4dcdb12 Binary files a/public/img/logos/nubiles/thumbs/bountyhunterporn.png and b/public/img/logos/nubiles/thumbs/bountyhunterporn.png differ diff --git a/public/img/logos/nubiles/thumbs/brattysis.png b/public/img/logos/nubiles/thumbs/brattysis.png old mode 100755 new mode 100644 index 8d5d946e6..13bae5e05 Binary files a/public/img/logos/nubiles/thumbs/brattysis.png and b/public/img/logos/nubiles/thumbs/brattysis.png differ diff --git a/public/img/logos/nubiles/thumbs/daddyslilangel.png b/public/img/logos/nubiles/thumbs/daddyslilangel.png old mode 100755 new mode 100644 index 43b50353c..805c001fb Binary files a/public/img/logos/nubiles/thumbs/daddyslilangel.png and b/public/img/logos/nubiles/thumbs/daddyslilangel.png differ diff --git a/public/img/logos/nubiles/thumbs/deeplush.png b/public/img/logos/nubiles/thumbs/deeplush.png old mode 100755 new mode 100644 index 51dcd6915..b413f4dff Binary files a/public/img/logos/nubiles/thumbs/deeplush.png and b/public/img/logos/nubiles/thumbs/deeplush.png differ diff --git a/public/img/logos/nubiles/thumbs/detentiongirls.png b/public/img/logos/nubiles/thumbs/detentiongirls.png old mode 100755 new mode 100644 index 82feb5ab2..e232a78e5 Binary files a/public/img/logos/nubiles/thumbs/detentiongirls.png and b/public/img/logos/nubiles/thumbs/detentiongirls.png differ diff --git a/public/img/logos/nubiles/thumbs/driverxxx.png b/public/img/logos/nubiles/thumbs/driverxxx.png old mode 100755 new mode 100644 index 6e32ec683..b999967c2 Binary files a/public/img/logos/nubiles/thumbs/driverxxx.png and b/public/img/logos/nubiles/thumbs/driverxxx.png differ diff --git a/public/img/logos/nubiles/thumbs/favicon.png b/public/img/logos/nubiles/thumbs/favicon.png old mode 100755 new mode 100644 index 84980ff33..71ec4c74f Binary files a/public/img/logos/nubiles/thumbs/favicon.png and b/public/img/logos/nubiles/thumbs/favicon.png differ diff --git a/public/img/logos/nubiles/thumbs/favicon_dark.png b/public/img/logos/nubiles/thumbs/favicon_dark.png new file mode 100644 index 000000000..b1b4ec568 Binary files /dev/null and b/public/img/logos/nubiles/thumbs/favicon_dark.png differ diff --git a/public/img/logos/nubiles/thumbs/favicon_light.png b/public/img/logos/nubiles/thumbs/favicon_light.png new file mode 100644 index 000000000..71ec4c74f Binary files /dev/null and b/public/img/logos/nubiles/thumbs/favicon_light.png differ diff --git a/public/img/logos/nubiles/thumbs/hotcrazymess.png b/public/img/logos/nubiles/thumbs/hotcrazymess.png old mode 100755 new mode 100644 index 530d38016..a2ce72d03 Binary files a/public/img/logos/nubiles/thumbs/hotcrazymess.png and b/public/img/logos/nubiles/thumbs/hotcrazymess.png differ diff --git a/public/img/logos/nubiles/thumbs/lilsis.png b/public/img/logos/nubiles/thumbs/lilsis.png new file mode 100644 index 000000000..a82f82d86 Binary files /dev/null and b/public/img/logos/nubiles/thumbs/lilsis.png differ diff --git a/public/img/logos/nubiles/thumbs/momsteachsex.png b/public/img/logos/nubiles/thumbs/momsteachsex.png old mode 100755 new mode 100644 index ee20974c2..428965487 Binary files a/public/img/logos/nubiles/thumbs/momsteachsex.png and b/public/img/logos/nubiles/thumbs/momsteachsex.png differ diff --git a/public/img/logos/nubiles/thumbs/myfamilypies.png b/public/img/logos/nubiles/thumbs/myfamilypies.png old mode 100755 new mode 100644 index 136d6f25f..aa5eb8949 Binary files a/public/img/logos/nubiles/thumbs/myfamilypies.png and b/public/img/logos/nubiles/thumbs/myfamilypies.png differ diff --git a/public/img/logos/nubiles/thumbs/network.png b/public/img/logos/nubiles/thumbs/network.png old mode 100755 new mode 100644 index becec0418..4ebfcf7ba Binary files a/public/img/logos/nubiles/thumbs/network.png and b/public/img/logos/nubiles/thumbs/network.png differ diff --git a/public/img/logos/nubiles/thumbs/nfbusty.png b/public/img/logos/nubiles/thumbs/nfbusty.png old mode 100755 new mode 100644 index 9fec58914..60107154c Binary files a/public/img/logos/nubiles/thumbs/nfbusty.png and b/public/img/logos/nubiles/thumbs/nfbusty.png differ diff --git a/public/img/logos/nubiles/thumbs/nubilefilms.png b/public/img/logos/nubiles/thumbs/nubilefilms.png old mode 100755 new mode 100644 index 4ca5ad9e2..74efc922a Binary files a/public/img/logos/nubiles/thumbs/nubilefilms.png and b/public/img/logos/nubiles/thumbs/nubilefilms.png differ diff --git a/public/img/logos/nubiles/thumbs/nubiles.png b/public/img/logos/nubiles/thumbs/nubiles.png old mode 100755 new mode 100644 index 495a557e7..4bfd50540 Binary files a/public/img/logos/nubiles/thumbs/nubiles.png and b/public/img/logos/nubiles/thumbs/nubiles.png differ diff --git a/public/img/logos/nubiles/thumbs/nubilescasting.png b/public/img/logos/nubiles/thumbs/nubilescasting.png old mode 100755 new mode 100644 index 5eb0ffa64..ea8433a82 Binary files a/public/img/logos/nubiles/thumbs/nubilescasting.png and b/public/img/logos/nubiles/thumbs/nubilescasting.png differ diff --git a/public/img/logos/nubiles/thumbs/nubileset.png b/public/img/logos/nubiles/thumbs/nubileset.png old mode 100755 new mode 100644 index 88d03577b..7793b657f Binary files a/public/img/logos/nubiles/thumbs/nubileset.png and b/public/img/logos/nubiles/thumbs/nubileset.png differ diff --git a/public/img/logos/nubiles/thumbs/nubilesunscripted.png b/public/img/logos/nubiles/thumbs/nubilesunscripted.png old mode 100755 new mode 100644 index a8f2b7f16..7f687102e Binary files a/public/img/logos/nubiles/thumbs/nubilesunscripted.png and b/public/img/logos/nubiles/thumbs/nubilesunscripted.png differ diff --git a/public/img/logos/nubiles/thumbs/petiteballerinasfucked.png b/public/img/logos/nubiles/thumbs/petiteballerinasfucked.png old mode 100755 new mode 100644 index 4052967dc..a17b9f965 Binary files a/public/img/logos/nubiles/thumbs/petiteballerinasfucked.png and b/public/img/logos/nubiles/thumbs/petiteballerinasfucked.png differ diff --git a/public/img/logos/nubiles/thumbs/petitehdporn.png b/public/img/logos/nubiles/thumbs/petitehdporn.png old mode 100755 new mode 100644 index 0b8a92f5c..8e9d69ebb Binary files a/public/img/logos/nubiles/thumbs/petitehdporn.png and b/public/img/logos/nubiles/thumbs/petitehdporn.png differ diff --git a/public/img/logos/nubiles/thumbs/princesscum.png b/public/img/logos/nubiles/thumbs/princesscum.png old mode 100755 new mode 100644 index b811288b9..e132b764c Binary files a/public/img/logos/nubiles/thumbs/princesscum.png and b/public/img/logos/nubiles/thumbs/princesscum.png differ diff --git a/public/img/logos/nubiles/thumbs/stepsiblingscaught.png b/public/img/logos/nubiles/thumbs/stepsiblingscaught.png old mode 100755 new mode 100644 index fa5020176..f64fdaba9 Binary files a/public/img/logos/nubiles/thumbs/stepsiblingscaught.png and b/public/img/logos/nubiles/thumbs/stepsiblingscaught.png differ diff --git a/public/img/logos/nubiles/thumbs/teacherfucksteens.png b/public/img/logos/nubiles/thumbs/teacherfucksteens.png old mode 100755 new mode 100644 index de9fc5759..6765b8b2c Binary files a/public/img/logos/nubiles/thumbs/teacherfucksteens.png and b/public/img/logos/nubiles/thumbs/teacherfucksteens.png differ diff --git a/public/img/logos/nubiles/thumbs/thatsitcomshow.png b/public/img/logos/nubiles/thumbs/thatsitcomshow.png old mode 100755 new mode 100644 index 76b6c1514..fc73f3e37 Binary files a/public/img/logos/nubiles/thumbs/thatsitcomshow.png and b/public/img/logos/nubiles/thumbs/thatsitcomshow.png differ diff --git a/seeds/00_tags.js b/seeds/00_tags.js index 21ee2da98..1010ffd2f 100755 --- a/seeds/00_tags.js +++ b/seeds/00_tags.js @@ -442,6 +442,7 @@ const tags = [ slug: 'dp', description: 'Getting your [ass](/tag/anal) and pussy fucked at the same time. If you take another cock in your mouth, you are [airtight](/tag/airtight).', group: 'penetration', + implies: ['anal'], }, { name: 'dungeon', @@ -2431,6 +2432,11 @@ const aliases = [ name: 'strip pole dancing', for: 'strip-pole-dancing', }, + { + name: 'anal gangbangs', + for: 'gangbang', + implies: ['anal'], + }, ]; const priorities = [ // higher index is higher priority @@ -2481,7 +2487,17 @@ exports.seed = (knex) => Promise.resolve() }; }); - return upsert('tags', tagsWithGroups, 'slug'); + await upsert('tags', tagsWithGroups, 'slug'); + + const tagEntries = await knex('tags').select('*').where({ alias_for: null }); + const tagsMap = tagEntries.reduce((acc, { id, slug }) => ({ ...acc, [slug]: id }), {}); + + const implications = tags.map((tag) => ({ + slug: tag.slug, + implied_tag_ids: tag.implies?.map((slug) => tagsMap[slug]), + })); + + await upsert('tags', implications, 'slug'); }) .then(async () => { const tagEntries = await knex('tags').select('*').where({ alias_for: null }); @@ -2490,6 +2506,7 @@ exports.seed = (knex) => Promise.resolve() const tagAliases = aliases.map((alias) => ({ name: alias.name, alias_for: tagsMap[alias.for], + implied_tag_ids: alias.implies?.map((slug) => tagsMap[slug]), secondary: !!alias.secondary, })); diff --git a/seeds/01_networks.js b/seeds/01_networks.js index 02342f53a..f0ce0e786 100755 --- a/seeds/01_networks.js +++ b/seeds/01_networks.js @@ -381,6 +381,10 @@ const networks = [ sequential: true, }, }, + { + slug: 'innofsin', + name: 'Inn Of Sin', + }, { slug: 'interracialpass', name: 'Interracial Pass', diff --git a/seeds/02_sites.js b/seeds/02_sites.js index 4420e2632..5fe016077 100755 --- a/seeds/02_sites.js +++ b/seeds/02_sites.js @@ -4507,6 +4507,105 @@ const sites = [ name: 'InTheCrack', url: 'https://inthecrack.com', }, + // INN OF SIN + { + slug: 'richardmannevents', + name: 'Richard Mann Events', + url: 'https://richardmannevents.com', + parent: 'innofsin', + }, + { + slug: 'adreenawinters', + name: 'Adreena Winters', + url: 'https://adreenawinters.com', + parent: 'innofsin', + }, + { + slug: 'bbctitans', + name: 'BBC Titans', + url: 'https://bbctitans.com', + tags: ['bbc'], + parent: 'innofsin', + }, + { + slug: 'wefuckin', + name: 'We Fuckin', + url: 'https://wefuckin.com', + parent: 'innofsin', + }, + { + slug: 'mydeepdarksecret', + name: 'My Deep Dark Secret', + url: 'https://mydeepdarksecret.com', + parent: 'innofsin', + parameters: { + layout: 'classic', + }, + }, + { + slug: 'rebelrhyder', + name: 'Rebel Rhyder', + url: 'https://rebelrhyder.com', + parent: 'innofsin', + }, + { + slug: 'tatsandtits', + name: 'Tats And Tits', + url: 'https://tatsandtits.com', + tags: ['tattoos'], + parent: 'innofsin', + }, + { + slug: 'backsidebonanza', + name: 'Back Side Bonanza', + url: 'https://backsidebonanza.com', + hasLogo: false, + parent: 'innofsin', + parameters: { + layout: 'sliced', + }, + }, + { + slug: 'puertorock', + name: 'Puerto-Rock', + url: 'https://puerto-rock.com', + parent: 'innofsin', + }, + { + slug: 'richardmannsworld', + name: 'Richard Mann\'s World', + url: 'https://richardmannsworld.com', + parent: 'innofsin', + parameters: { + layout: 'classic', + }, + }, + { + slug: 'trans4thefans', + name: 'Trans 4 The Fans', + url: 'https://trans4thefans.com', + tags: ['transsexual'], + parent: 'innofsin', + }, + { + slug: 'dannyoceansadventures', + name: 'Danny Ocean\'s Adventures', + url: 'https://dannyoceansadventures.com', + parent: 'innofsin', + parameters: { + layout: 'classic', + }, + }, + { + slug: 'cumthirstycougars', + name: 'Cum Thirsty Cougars', + url: 'https://cumthirstycougars.com', + hasLogo: false, + parent: 'innofsin', + parameters: { + layout: 'sliced', + }, + }, // INTERRACIAL PASS { slug: '2bigtobetrue', @@ -7777,6 +7876,13 @@ const sites = [ tags: ['parody'], parent: 'nubiles', }, + { + slug: 'lilsis', + name: 'Lil Sis', + url: 'https://www.lilsis.com', + tags: ['family'], + parent: 'nubiles', + }, // PASCALS SUBSLUTS { slug: 'pascalssubsluts', diff --git a/src/scrapers/innofsin.js b/src/scrapers/innofsin.js new file mode 100755 index 000000000..b0b5e666f --- /dev/null +++ b/src/scrapers/innofsin.js @@ -0,0 +1,100 @@ +'use strict'; + +const unprint = require('unprint'); + +const slugify = require('../utils/slugify'); + +function scrapeAll(scenes) { + return scenes.map(({ query }) => { + const release = {}; + + release.url = query.url('a'); + release.entryId = new URL(release.url).pathname.replaceAll('/', ''); + + release.title = query.content('h2 a'); + + release.date = query.date('.date', 'MMM DD, YYYY'); + + release.actors = query.content('.modelname').split(',').filter(Boolean); + + release.poster = query.img('.imgc img'); + release.teaser = query.video('.vidhover source'); + + console.log(release); + return release; + }); +} + +function scrapeScene({ query }, { url }) { + const release = {}; + + release.entryId = new URL(url).pathname.replaceAll('/', ''); + + release.title = query.content('.vid-box h1'); + release.description = query.content('//div[contains(@class, "vid-box")]/*[contains(text(), "About")]/following-sibling::p[2]'); + + release.actors = query.all('.vid-box a[href*="/pornstars"]').map((actorEl) => ({ + name: unprint.query.content(actorEl), + url: unprint.query.url(actorEl, null), + })); + + release.poster = query.poster('.vid-play video'); + release.photos = query.imgs('.img-sample img').map((source) => [ + source.replace(/-\d+x\d+/, ''), // usually same size, but try anyway + source, + ]); + + release.tags = query.contents('.vid-box [itemprop="keywords"] a'); + + release.trailer = query.video('.vid-play source'); + + console.log(release); + return release; +} + +function scrapeProfile({ query }, actorName, entity, include) { + const profile = {}; + + profile.description = query.cnt('.bio-text'); + profile.birthPlace = query.cnt('.birth-place span'); + + profile.avatar = query.img('.actor-photo img'); + + if (include.releases) { + return scrapeAll(unprint.initAll(query.all('.scene'))); + } + + console.log(profile); + return profile; +} + +async function fetchLatest(channel, page = 1) { + const url = `${channel.url}/videos/page/${page}/`; + const res = await unprint.get(url, { selectAll: '.vid-listing li' }); + + if (res.ok) { + return scrapeAll(res.context, channel); + } + + return res.status; +} + +async function fetchProfile({ name: actorName }, entity, include) { + const url = `${entity.url}/actors/${slugify(actorName, '_')}`; + const res = await unprint.get(url); + + if (res.ok) { + return scrapeProfile(res.item, actorName, entity, include); + } + + return res.status; +} + +module.exports = { + fetchLatest, + fetchProfile, + scrapeScene: { + scraper: scrapeScene, + unprint: true, + }, +}; diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js index b1823e929..006180950 100755 --- a/src/scrapers/scrapers.js +++ b/src/scrapers/scrapers.js @@ -25,6 +25,7 @@ const gamma = require('./gamma'); const hitzefrei = require('./hitzefrei'); const hookuphotshot = require('./hookuphotshot'); const hush = require('./hush'); +const innofsin = require('./innofsin'); const insex = require('./insex'); const inthecrack = require('./inthecrack'); const jayrock = require('./jayrock'); @@ -111,6 +112,7 @@ const scrapers = { hookuphotshot, hussiepass: hush, hushpass: hush, + innofsin, insex, interracialpass: hush, inthecrack, diff --git a/src/scrapers/template.js b/src/scrapers/template.js index dfb93a500..133f2a7d0 100755 --- a/src/scrapers/template.js +++ b/src/scrapers/template.js @@ -1,6 +1,7 @@ 'use strict'; -const qu = require('../utils/q'); +const unprint = require('unprint'); + const slugify = require('../utils/slugify'); function scrapeAll(scenes) { @@ -10,11 +11,11 @@ function scrapeAll(scenes) { release.url = query.url('.title a'); release.entryId = new URL(release.url).pathname.match(/\/scene\/(\d+)/)[1]; - release.title = query.cnt('.title a'); - release.description = query.cnt('.description'); + release.title = query.content('.title a'); + release.description = query.content('.description'); release.date = query.date('.date', 'MMM DD, YYYY'); - release.actors = query.cnts('.models a.model'); + release.actors = query.contents('.models a.model'); release.poster = query.img('img.poster'); release.teaser = { src: query.video('.teaser video') }; @@ -32,26 +33,26 @@ function scrapeScene({ query }, url) { release.entryId = new URL(url).pathname.match(/\/scene\/(\d+)/)[1]; - release.title = query.cnt('h3.title'); - release.description = query.cnt('p.description'); + release.title = query.content('h3.title'); + release.description = query.content('p.description'); [release.poster, ...release.photos] = query.imgs('.preview-thumb'); - release.trailer = { src: query.video('.trailer video') }; + release.trailer = query.video('.trailer video'); console.log(release); return release; } -function scrapeProfile({ query, el }, actorName, entity, include) { +function scrapeProfile({ query }, actorName, entity, include) { const profile = {}; - profile.description = query.cnt('.bio-text'); - profile.birthPlace = query.cnt('.birth-place span'); + profile.description = query.content('.bio-text'); + profile.birthPlace = query.content('.birth-place span'); profile.avatar = query.img('.actor-photo img'); if (include.releases) { - return scrapeAll(qu.initAll(el, '.scene')); + return scrapeAll(unprint.initAll(query.all('.scene'))); } console.log(profile); @@ -60,20 +61,20 @@ function scrapeProfile({ query, el }, actorName, entity, include) { async function fetchLatest(channel, page = 1) { const url = `${channel.url}/${page}`; - const res = await qu.getAll(url, '.scene'); + const res = await unprint.get(url, { selectAll: '.scene' }); if (res.ok) { - return scrapeAll(res.items, channel); + return scrapeAll(res.context, channel); } return res.status; } async function fetchScene(url, channel) { - const res = await qu.get(url); + const res = await unprint.get(url); if (res.ok) { - return scrapeScene(res.item, url, channel); + return scrapeScene(res.context, url, channel); } return res.status; @@ -81,10 +82,10 @@ async function fetchScene(url, channel) { async function fetchProfile({ name: actorName }, entity, include) { const url = `${entity.url}/actors/${slugify(actorName, '_')}`; - const res = await qu.get(url); + const res = await unprint.get(url); if (res.ok) { - return scrapeProfile(res.item, actorName, entity, include); + return scrapeProfile(res.context, actorName, entity, include); } return res.status; diff --git a/src/tags.js b/src/tags.js index 2c510c105..73e285b78 100755 --- a/src/tags.js +++ b/src/tags.js @@ -85,7 +85,7 @@ async function matchReleaseTags(releases) { )]; const tagEntries = await knex('tags') - .select('tags.id', 'tags.name', 'tags.alias_for') + .select('tags.id', 'tags.name', 'tags.alias_for', 'tags.implied_tag_ids') .whereIn('tags.name', casedTags); const tagIdsBySlug = tagEntries