Fix date selector for Kink

Updates the studio name map based on their currently listed channels
Changes Details postprocessing to attempt to replicate the linebreaks as displayed on the scene page

Closes #1909
This commit is contained in:
Maista6969 2024-06-18 22:05:24 +02:00
parent c34b2a3b53
commit c118e0d973
No known key found for this signature in database

View File

@ -41,7 +41,7 @@ xPathScrapers:
selector: //div[@data-setup]/@data-setup selector: //div[@data-setup]/@data-setup
postProcess: postProcess:
- replace: - replace:
- regex: ^.*"publishedDate":"([^T]+).*$ - regex: ^.*"publishedDate":"([^"]+).*$
with: $1 with: $1
- parseDate: 2006-01-02 - parseDate: 2006-01-02
Director: //span[contains(@class, "director-name")] Director: //span[contains(@class, "director-name")]
@ -53,32 +53,15 @@ xPathScrapers:
- regex: /channel/ - regex: /channel/
with: "" with: ""
- map: - map:
# List of sites as of 2024-01-04 from https://www.kink.com/channels # List of sites as of 2024-06-18 from https://www.kink.com/channels
# [...new Set([...document.querySelectorAll('h3 > a')] # [...new Set([...document.querySelectorAll('a.h5[href^="/channel"]')]
# .map(a => a.href.split("/").pop() + ": " + a.innerText))] # .map(a => a.href.split("/").pop() + ": " + a.innerText))]
# .toSorted() # .toSorted()
# .join("\n") # .join("\n")
analized: Analized behind-kink: Behind Kink
animated-kink: Animated Kink
ashley-fires-scifi-dreamgirls: Ashley Fires SciFi Dreamgirls
aziani-iron: Aziani Iron
badfam-pov: Bad Family POV
ball-gaggers: Ball Gaggers
banana-jacks: Banana Jacks
bifuck: BiFUCK
bizarre-video-transsexual: Bizarre Video Transsexual
bizarre-video: Bizarre Video
bleu-films: Bleu Films
bondage-liberation: Bondage Liberation bondage-liberation: Bondage Liberation
bound-gang-bangs: Bound Gang Bangs bound-gang-bangs: Bound Gang Bangs
bound-men-wanked: Bound Men Wanked
brutal-sessions: Brutal Sessions
carmen-rivera: Carmen Rivera
cfnmeu: CFNMEU
ddf-network: DDF Network
deviant-hardcore: Deviant Hardcore
device-bondage: Device Bondage device-bondage: Device Bondage
digital-sin: Digital Sin
divine-bitches: Divine Bitches divine-bitches: Divine Bitches
dungeon-sex: Dungeon Sex dungeon-sex: Dungeon Sex
electrosluts: Electrosluts electrosluts: Electrosluts
@ -86,64 +69,32 @@ xPathScrapers:
evolved-fights-lesbian-edition: Evolved Fights Lesbian Edition evolved-fights-lesbian-edition: Evolved Fights Lesbian Edition
evolved-fights: Evolved Fights evolved-fights: Evolved Fights
families-tied: Families Tied families-tied: Families Tied
fembot-academy: Fembot Academy
femdum: FemDum
femme-fatale-films: Femme Fatale Films
fetishnetwork: FetishNetwork
filth-syndicate: Filth Syndicate
filthy-femdom: Filthy Femdom filthy-femdom: Filthy Femdom
foot-worship: Foot Worship foot-worship: Foot Worship
fucking-machines: Fucking Machines fucking-machines: Fucking Machines
gangbang-chief: Gangbang Chief
gloryhole-secrets: Gloryhole Secrets
hardcore-gangbang: Hardcore Gangbang hardcore-gangbang: Hardcore Gangbang
hardcore-punishments: Hardcore Punishments
harmony-fetish: Harmony Fetish harmony-fetish: Harmony Fetish
hogtied-up: Hogtied Up
hogtied: Hogtied hogtied: Hogtied
hot-legs-and-feet: Hot Legs & Feet
house-of-taboo: House Of Taboo
kink-classics: Kink Classics kink-classics: Kink Classics
kink-features: Kink Features kink-features: Kink Features
kink-test-shoots: Kink Test Shoots kink-test-shoots: Kink Test Shoots
kink-university: Kink University kink-university: Kink University
kinklive: KinkLive kinklive: KinkLive
kinky-bites: Kinky Bites kinky-bites: Kinky Bites
lakeview-entertainment: Lakeview Entertainment
machine-dom: Machine Dom
mean-bitch: Mean Bitch mean-bitch: Mean Bitch
medical-y-sado: Medical Y Sado
men-in-pain: Men In Pain men-in-pain: Men In Pain
pascals-sub-sluts: Pascals Sub Sluts
pegging: Pegging
peghim: PegHim
plumperd: Plumperd
pornforce: Porn Force
pornstar-platinum: Pornstar Platinum
pov-pickups: POV Pickups
public-disgrace: Public Disgrace public-disgrace: Public Disgrace
revenge-of-the-baroness: Revenge Of The Baroness quality-control: Quality Control
royal-fetish-films: Royal Fetish Films
savage-gangbang: Savage Gangbang savage-gangbang: Savage Gangbang
severe-sex-films: Severe Sex Films severe-sex-films: Severe Sex Films
sex-and-submission: Sex And Submission sex-and-submission: Sex And Submission
sexual-disgrace: Sexual Disgrace submissed: Submissed
sister-wives: Sister Wives
slutinspection: Slut Inspection
spizoo: Spizoo
strapon-squad: Strapon Squad
struggling-babes: Struggling Babes
submissive-x: Submissive X submissive-x: Submissive X
submissived: Submissived tease-and-thank-you: Tease And Thank You
sweet-femdom: Sweet FemDom
the-training-of-o: The Training Of O the-training-of-o: The Training Of O
the-upper-floor: The Upper Floor the-upper-floor: The Upper Floor
the-venus-girls: The Venus Girls
torment-time: Torment Time
transerotica: TransErotica
ts-pussy-hunters: TS Pussy Hunters ts-pussy-hunters: TS Pussy Hunters
ts-seduction: TS Seduction ts-seduction: TS Seduction
twisted-visual: Twisted Visual
ultimate-surrender: Ultimate Surrender ultimate-surrender: Ultimate Surrender
wasteland: Wasteland wasteland: Wasteland
water-bondage: Water Bondage water-bondage: Water Bondage
@ -168,7 +119,7 @@ xPathScrapers:
with: "" with: ""
Details: Details:
selector: //h4[contains(text(), "Description")]/following-sibling::*[1]//text() selector: //h4[contains(text(), "Description")]/following-sibling::*[1]//text()
concat: "\n" concat: "\n\n"
Image: Image:
selector: //div[@data-setup]/@data-setup selector: //div[@data-setup]/@data-setup
postProcess: postProcess:
@ -212,7 +163,7 @@ xPathScrapers:
postProcess: postProcess:
- replace: - replace:
- regex: .+ - regex: .+
with: 'Yes' with: "Yes"
Piercings: Piercings:
selector: //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/pierced')]/span/text() selector: //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/pierced')]/span/text()
concat: "\n" concat: "\n"
@ -225,65 +176,64 @@ xPathScrapers:
- replace: - replace:
- regex: "(?i)<a[^>]*>" - regex: "(?i)<a[^>]*>"
with: "" with: ""
FakeTits: FakeTits:
selector: > selector: >
//div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/fake-boobs')]/span/text() //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/fake-boobs') or contains(@href,'/natural-boobs')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/natural-boobs')]/span/text()
postProcess: postProcess:
- replace: - replace:
- regex: .*?Fake.+ - regex: .*?Fake.+
with: 'Yes' with: "Yes"
- regex: .*?Natural.+ - regex: .*?Natural.+
with: 'No' with: "No"
HairColor: HairColor:
selector: > selector: >
//div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/black-hair')]/span/text() //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/black-hair')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/brunet')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/brunet')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/brunette')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/brunette')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/blond')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/blond')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/blonde')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/blonde')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/redhead')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/redhead')]/span/text()
postProcess: postProcess:
- replace: - replace:
- regex: \sHair - regex: \sHair
with: '' with: ""
Ethnicity: Ethnicity:
selector: > selector: >
//div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/asian')]/span/text() //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/asian')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/black')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/black')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/latin')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/latin')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/mixed')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/mixed')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/white')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/white')]/span/text()
Circumcised: Circumcised:
selector: > selector: >
//div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/circumcised')]/span/text() //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/circumcised')]/span/text()
| //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/uncircumcised')]/span/text() | //div/span[contains(text(),'tags:')]/following-sibling::a[contains(@href,'/uncircumcised')]/span/text()
postProcess: postProcess:
- replace: - replace:
- regex: Uncircumcised - regex: Uncircumcised
with: 'Uncut' with: "Uncut"
- regex: Circumcised - regex: Circumcised
with: 'Cut' with: "Cut"
Gender: Gender:
selector: //script[contains(.,'KinkyTracking.all')] selector: //script[contains(.,'KinkyTracking.all')]
postProcess: postProcess:
- replace: - replace:
- regex: .+?"((modelGender)|(genderIds))":"((woman)|(man)|(nonbinary)|(tsman)|(tswoman)|(unknown))".+ - regex: .+?"((modelGender)|(genderIds))":"((woman)|(man)|(nonbinary)|(tsman)|(tswoman)|(unknown))".+
with: '%%%$4' # This little trick will make sure we're left with: "%%%$4" # This little trick will make sure we're left
- regex: ^[^%].+ # with an empty string if we don't match anything - regex: ^[^%].+ # with an empty string if we don't match anything
with: '' # in the regex above. with: "" # in the regex above.
- regex: ^%+ - regex: ^%+
with: '' with: ""
- map: - map:
woman: Female woman: Female
man: Male man: Male
tswoman: Transgender Female tswoman: Transgender Female
tsman: Transgender Male tsman: Transgender Male
nonbinary: Non-Binary nonbinary: Non-Binary
unknown: '' unknown: ""
URL: URL:
selector: //script[contains(.,'KinkyTracking.all')] | //button[@data-id]/@data-id selector: //script[contains(.,'KinkyTracking.all')] | //button[@data-id]/@data-id
concat: '__SEP__' concat: "__SEP__"
postProcess: postProcess:
- replace: - replace:
- regex: ^.+?multiSite:'([^']+).+?__SEP__(.+) - regex: ^.+?multiSite:'([^']+).+?__SEP__(.+)