Skip to content

Commit 4d27274

Browse files
Refactor URL detection logic to match sites (#444)
1 parent b14e196 commit 4d27274

File tree

1 file changed

+174
-74
lines changed

1 file changed

+174
-74
lines changed

userscripts/StashDB_Submission_Helper/stashdb_submission_helper.user.js

Lines changed: 174 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -160,83 +160,183 @@ function existingUrlObjects() {
160160
return urlObjects;
161161
}
162162

163+
const urlPatterns = [
164+
{
165+
pattern:
166+
/(^https?:\/\/(?:www\.)?adultfilmdatabase\.com\/(?:video|studio|actor)\/.+)\??/,
167+
site: "AFDB",
168+
},
169+
// AllMyLinks
170+
// APClips
171+
// ashemale Tube
172+
{
173+
pattern: /(https?:\/\/www.babepedia.com\/babe\/[^?]+)\??/,
174+
site: "Babepedia",
175+
},
176+
// Babes and Stars
177+
{
178+
pattern:
179+
/(^https?:\/\/(?:www\.)?bgafd\.co\.uk\/(?:films|actresses)\/details.php\/id\/[^?]+)\??/,
180+
site: "BGAFD",
181+
},
182+
{
183+
pattern: /(https?:\/\/www.boobpedia.com\/boobs\/[^?]+)\??/,
184+
site: "Boobpedia",
185+
},
186+
// CamSoda
187+
// Chaturbate
188+
// Clips4Sale
189+
// Cocksuckers Guide
190+
{
191+
pattern: /(https?:\/\/www.data18.com\/[^?]+)\??/,
192+
site: "DATA18",
193+
},
194+
// dbNaked
195+
// DefineFetish
196+
// DMM / FANZA
197+
{
198+
pattern:
199+
/(^https?:\/\/(?:www\.)?egafd\.com\/(?:films|actresses)\/details.php\/id\/[^?]+)\??/,
200+
site: "EGAFD",
201+
},
202+
{
203+
pattern: /(https?:\/\/(www\.)?eurobabeindex.com\/sbandoindex\/.*?.html)/,
204+
site: "Eurobabeindex",
205+
},
206+
// EuroPornstar
207+
{
208+
pattern: /(^https?:\/\/(?:www.)?facebook\.com\/[^?]+)/,
209+
site: "Facebook",
210+
},
211+
// Fancentro
212+
// FansDB
213+
// Fansly
214+
{
215+
pattern: /(https?:\/\/www.freeones.com\/[^/?]+)\??/,
216+
site: "FreeOnes",
217+
},
218+
{
219+
pattern: /^https:\/\/gayeroticvideoindex\.com\/performer\/\d+$/,
220+
site: "GEVI",
221+
},
222+
// GravureFit
223+
{
224+
pattern: /(https?:\/\/www.iafd.com\/[^?]+)\??/,
225+
site: "IAFD",
226+
},
227+
// Idol Erotic
228+
{
229+
pattern: /(^https?:\/\/(?:www\.)?imdb\.com\/(?:name|title)\/[^?]+)\/?/,
230+
site: "IMDB",
231+
},
232+
{
233+
pattern: /(https?:\/\/www.indexxx.com\/[^?]+)\??/,
234+
site: "Indexxx",
235+
},
236+
{
237+
pattern: /(https?:\/\/www.instagram.com\/[^/?]+)\??/,
238+
site: "Instagram",
239+
},
240+
// iWantClips
241+
// JustFor.Fans
242+
// Kick
243+
// Linktree
244+
// Lnk.Bio
245+
// LoyalFans
246+
{
247+
pattern: /(https?:\/\/www.manyvids.com\/[^?]+)\??/,
248+
site: "ManyVids",
249+
},
250+
// MFC Share
251+
{
252+
pattern: /(^https?:\/\/(?:www.)?minnano-av\.com\/actress\d+.html)/,
253+
site: "Minnano-av",
254+
},
255+
// Modeling Agency
256+
// Model Mayhem
257+
// MSIN
258+
// MyDirtyHobby
259+
// MyFreeCams
260+
{
261+
pattern: /(^https?:\/\/(?:www.)?myspace\.com\/[^?]+)/,
262+
site: "Myspace",
263+
},
264+
// Official Website
265+
{
266+
pattern: /(https?:\/\/onlyfans.com\/[^?]+)\??/,
267+
site: "OnlyFans",
268+
},
269+
// Peach
270+
// PMV Stash
271+
// Pornhub
272+
// Pornopedia
273+
// PornPics
274+
// PornTeenGirl
275+
// R18.dev
276+
// Reddit User
277+
// Shemale Model Database
278+
// Snapchat
279+
// Sougouwiki
280+
// Stripchat
281+
{
282+
pattern: /(https?:\/\/www.thenude.com\/[^?]+\.htm)/,
283+
site: "theNude",
284+
},
285+
// ThePornDB
286+
{
287+
pattern: /(^https?:\/\/(?:www.)?tiktok\.com\/@[^?]+)/,
288+
site: "TikTok",
289+
},
290+
// Twitch
291+
{
292+
pattern: /(https?:\/\/twitter.com\/[^?]+)\??/,
293+
site: "Twitter",
294+
},
295+
{
296+
pattern: /(https?:\/\/x.com\/[^?]+)\??/,
297+
site: "Twitter",
298+
},
299+
// UViU
300+
// WAPdB
301+
// WAYBIG
302+
{
303+
pattern: /(^https?:\/\/(www\.)?wikidata.org\/wiki\/[^?]+)/,
304+
site: "Wikidata",
305+
},
306+
// wikiFeet X
307+
{
308+
pattern: /(^https?:\/\/(?:\w+\.)?wikipedia\.org\/wiki\/[^?]+)/,
309+
site: "Wikipedia",
310+
},
311+
// Wikiporno
312+
// XCITY
313+
{
314+
pattern: /(^https?:\/\/xslist\.org\/en\/model\/\d+\.html)/,
315+
site: "XsList",
316+
},
317+
// XVideos
318+
{
319+
pattern:
320+
/(^https?:\/\/(?:www.)?youtube\.com\/(?:c(?:hannel)?|user)\/[^?]+)/,
321+
site: "YouTube",
322+
},
323+
{
324+
pattern: /^https?:\/\/gayeroticvideoindex\.com\/performer\/\d+$/,
325+
site: "GEVI",
326+
},
327+
{
328+
pattern: /^https:\/\/www\.gaybabeindex\.com\/[^?]+$/,
329+
site: "GBI",
330+
},
331+
];
163332
function urlSite(url) {
164-
let site;
165-
if (
166-
/(^https?:\/\/(?:www\.)?adultfilmdatabase\.com\/(?:video|studio|actor)\/.+)\??/.test(
167-
url
168-
)
169-
) {
170-
site = "AFDB";
171-
} else if (/(https?:\/\/www.babepedia.com\/babe\/[^?]+)\??/.test(url)) {
172-
site = "Babepedia";
173-
} else if (
174-
/(^https?:\/\/(?:www\.)?bgafd\.co\.uk\/(?:films|actresses)\/details.php\/id\/[^?]+)\??/.test(
175-
url
176-
)
177-
) {
178-
site = "BGAFD";
179-
} else if (/(https?:\/\/www.boobpedia.com\/boobs\/[^?]+)\??/.test(url)) {
180-
site = "Boobpedia";
181-
} else if (/(https?:\/\/www.data18.com\/[^?]+)\??/.test(url)) {
182-
site = "DATA18";
183-
} else if (
184-
/(^https?:\/\/(?:www\.)?egafd\.com\/(?:films|actresses)\/details.php\/id\/[^?]+)\??/.test(
185-
url
186-
)
187-
) {
188-
site = "EGAFD";
189-
} else if (
190-
/(https?:\/\/(www\.)?eurobabeindex.com\/sbandoindex\/.*?.html)/.test(url)
191-
) {
192-
site = "Eurobabeindex";
193-
} else if (/(^https?:\/\/(?:www.)?facebook\.com\/[^?]+)/.test(url)) {
194-
site = "Facebook";
195-
} else if (/(https?:\/\/www.freeones.com\/[^/?]+)\??/.test(url)) {
196-
site = "FreeOnes";
197-
} else if (/(https?:\/\/www.iafd.com\/[^?]+)\??/.test(url)) {
198-
site = "IAFD";
199-
} else if (
200-
/(^https?:\/\/(?:www\.)?imdb\.com\/(?:name|title)\/[^?]+)\/?/.test(url)
201-
) {
202-
site = "IMDB";
203-
} else if (/(https?:\/\/www.indexxx.com\/[^?]+)\??/.test(url)) {
204-
site = "Indexxx";
205-
} else if (/(https?:\/\/www.instagram.com\/[^/?]+)\??/.test(url)) {
206-
site = "Instagram";
207-
} else if (/(https?:\/\/www.manyvids.com\/[^?]+)\??/.test(url)) {
208-
site = "ManyVids";
209-
} else if (
210-
/(^https?:\/\/(?:www.)?minnano-av\.com\/actress\d+.html)/.test(url)
211-
) {
212-
site = "Minnano-av";
213-
} else if (/(^https?:\/\/(?:www.)?myspace\.com\/[^?]+)/.test(url)) {
214-
site = "Myspace";
215-
} else if (/(https?:\/\/onlyfans.com\/[^?]+)\??/.test(url)) {
216-
site = "OnlyFans";
217-
} else if (/(https?:\/\/www.thenude.com\/[^?]+\.htm)/.test(url)) {
218-
site = "theNude";
219-
} else if (/(^https?:\/\/(?:www.)?tiktok\.com\/@[^?]+)/.test(url)) {
220-
site = "TikTok";
221-
} else if (/(https?:\/\/twitter.com\/[^?]+)\??/.test(url)) {
222-
site = "Twitter";
223-
} else if (/(^https?:\/\/(www\.)?wikidata.org\/wiki\/[^?]+)/.test(url)) {
224-
site = "Wikidata";
225-
} else if (/(^https?:\/\/(?:\w+\.)?wikipedia\.org\/wiki\/[^?]+)/.test(url)) {
226-
site = "Wikipedia";
227-
} else if (/(^https?:\/\/xslist\.org\/en\/model\/\d+\.html)/.test(url)) {
228-
site = "XsList";
229-
} else if (
230-
/(^https?:\/\/(?:www.)?youtube\.com\/(?:c(?:hannel)?|user)\/[^?]+)/.test(
231-
url
232-
)
233-
) {
234-
site = "YouTube";
235-
} else {
236-
return;
333+
for (const { pattern, site } of urlPatterns) {
334+
if (pattern.test(url)) {
335+
return site;
336+
}
237337
}
238338

239-
return site;
339+
return "Studio Profile";
240340
}
241341

242342
function siteMatch(url, selections) {

0 commit comments

Comments
 (0)