From 2bd8ce4950e383a6016bd8976f6e15421d8ecbb3 Mon Sep 17 00:00:00 2001 From: diamondpete <87245367+diamondpete@users.noreply.github.com> Date: Mon, 18 Sep 2023 15:41:26 -0400 Subject: [PATCH] Add Thick Cash Sites --- Contents/Code/PAsiteList.py | 8 +++ Contents/Code/networkThickCashOther.py | 96 ++++++++++++++++++++++++++ docs/sitelist.md | 5 +- 3 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 Contents/Code/networkThickCashOther.py diff --git a/Contents/Code/PAsiteList.py b/Contents/Code/PAsiteList.py index 47d07d652..1bde5a79d 100644 --- a/Contents/Code/PAsiteList.py +++ b/Contents/Code/PAsiteList.py @@ -191,6 +191,7 @@ import networkAuntJudys import siteColette import siteSINematica +import networkThickCashOther searchSites = { 0: ('BlackedRaw', 'https://www.blackedraw.com', '/graphql'), @@ -1847,6 +1848,9 @@ 1751: ('Hot Girls Raw', 'https://www.filthykings.com', 'https://tsmkfa364q-dsn.algolia.net/1/indexes/*/queries'), 1752: ('Its Anal', 'https://www.filthykings.com', 'https://tsmkfa364q-dsn.algolia.net/1/indexes/*/queries'), 1753: ('FK BTS', 'https://www.filthykings.com', 'https://tsmkfa364q-dsn.algolia.net/1/indexes/*/queries'), + 1754: ('MilfAF', 'https://www.milfaf.com', '/models/'), + 1755: ('Shady Spa', 'https://www.shadyspa.com', '/models/'), + 1756: ('Breed Me', 'https://www.breedme.com', '/models/'), } abbreviations = ( @@ -3210,4 +3214,8 @@ def getProviderFromSiteNum(siteNum): elif siteNum == 1742: provider = siteSINematica + # Thick Cash Other + elif (1754 <= siteNum <= 1756): + provider = networkThickCashOther + return provider diff --git a/Contents/Code/networkThickCashOther.py b/Contents/Code/networkThickCashOther.py new file mode 100644 index 000000000..83f2cfb72 --- /dev/null +++ b/Contents/Code/networkThickCashOther.py @@ -0,0 +1,96 @@ +import PAsearchSites +import PAutils + + +def search(results, lang, siteNum, searchData): + try: + modelID = '-'.join(searchData.title.split(' ', 2)[:2]) + except: + modelID = searchData.title.split(' ', 1)[0] + + url = '%s%s.html' % (PAsearchSites.getSearchSearchURL(siteNum), modelID) + req = PAutils.HTTPRequest(url) + searchResults = HTML.ElementFromString(req.text) + + for searchResult in searchResults.xpath('//div[@class="model-grid"]//a'): + titleNoFormatting = searchResult.xpath('.//h5')[0].text_content().strip() + sceneURL = searchResult.xpath('./@href')[0] + curID = PAutils.Encode(sceneURL) + + releaseDate = searchData.dateFormat() if searchData.date else '' + + score = 100 - Util.LevenshteinDistance(searchData.title.lower(), titleNoFormatting.lower()) + + results.Append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [Thick Cash/%s]' % (titleNoFormatting, PAsearchSites.getSearchSiteName(siteNum)), score=score, lang=lang)) + + return results + + +def update(metadata, lang, siteNum, movieGenres, movieActors, art): + metadata_id = str(metadata.id).split('|') + sceneURL = PAutils.Decode(metadata_id[0]) + sceneDate = metadata_id[2] + if not sceneURL.startswith('http'): + sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL + req = PAutils.HTTPRequest(sceneURL) + detailsPageElements = HTML.ElementFromString(req.text) + + # Title + metadata.title = PAutils.parseTitle(detailsPageElements.xpath('//h3[@class="top-title"]')[0].text_content().strip(), siteNum) + + # Summary + metadata.summary = detailsPageElements.xpath('//div[@class="player-box"]//p')[0].text_content().strip() + + # Studio + metadata.studio = 'Thick Cash' + + # Tagline and Collection(s) + metadata.collections.clear() + tagline = PAsearchSites.getSearchSiteName(siteNum) + metadata.tagline = tagline + metadata.collections.add(metadata.tagline) + + # Release Date + if sceneDate: + date_object = parse(sceneDate) + metadata.originally_available_at = date_object + metadata.year = metadata.originally_available_at.year + + # Actors + movieActors.clearActors() + for actorLink in detailsPageElements.xpath('//a[@class="tag"][contains(@href, "models")]'): + actorName = actorLink.text_content().strip() + actorPhotoURL = '' + + movieActors.addActor(actorName, actorPhotoURL) + + + # Posters/Background + xpaths = [ + '//video/@poster', + ] + + for xpath in xpaths: + for img in detailsPageElements.xpath(xpath): + art.append(img) + + Log('Artwork found: %d' % len(art)) + for idx, posterUrl in enumerate(art, 1): + if not PAsearchSites.posterAlreadyExists(posterUrl, metadata): + # Download image file for analysis + try: + image = PAutils.HTTPRequest(posterUrl) + im = StringIO(image.content) + resized_image = Image.open(im) + width, height = resized_image.size + # Add the image proxy items to the collection + if width > 1: + # Item is a poster + metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx) + if width > 100: + # Item is an art item + metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx) + except: + pass + + return metadata diff --git a/docs/sitelist.md b/docs/sitelist.md index 7f56e1a01..6f1e10458 100644 --- a/docs/sitelist.md +++ b/docs/sitelist.md @@ -1522,10 +1522,13 @@ If you're having difficulty finding the SceneID, double-check [PAsiteList.py](.. - Scoreland2 - ScoreVideos - XL Girls -+ #### Thick Cash Network | ✅ - **Actor only, Date Add** ++ #### Thick Cash Network | ✓ - **Actor only, Date Add** + - Breed Me - Ebony Tugs - Family Lust + - MilfAF - Over 40 Handjobs + - Shady Spa - Teen Tugs + #### Top Web Models | ✅ - 2 Girls 1 Camera