Skip to content

Commit

Permalink
Merge pull request #1884 from diamondpete/bna-site
Browse files Browse the repository at this point in the history
Brand New Amateurs/Add Support for Site
  • Loading branch information
DirtyRacer1337 authored Feb 6, 2024
2 parents faf17f8 + 90a1245 commit 35fa2c8
Show file tree
Hide file tree
Showing 4 changed files with 148 additions and 18 deletions.
9 changes: 8 additions & 1 deletion Contents/Code/PAsiteList.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@
import siteXevUnleashed
import networkPKJMedia
import networkBellesa
import siteBrandNewAmateurs

searchSites = {
0: ('BlackedRaw', 'https://www.blackedraw.com', '/graphql'),
Expand Down Expand Up @@ -1891,6 +1892,8 @@
1796: ('Whorecraft VR', 'https://whorecraftvr.com', '/MemberSceneSearch?q='),
1797: ('Freeze', 'https://freeze.xxx', '/?s='),
1798: ('Plants vs Cunts', 'https://plantsvscunts.com', '/?s='),
1799: ('Brand New Amateurs', 'https://brandnewamateurs.com', '/models'),
1800: ('Hot Wives Cheating', 'https://hotwivescheating.com/', '/MemberSceneSearch?q='),
}

abbreviations = (
Expand Down Expand Up @@ -2719,7 +2722,7 @@ def getProviderFromSiteNum(siteNum):
provider = siteVivid

# AdultEmpireCash Network
elif siteNum == 815 or siteNum == 1337 or siteNum == 1574 or (1765 <= siteNum <= 1796):
elif siteNum == 815 or siteNum == 1337 or siteNum == 1574 or (1765 <= siteNum <= 1796) or siteNum == 1800:
provider = networkAdultEmpireCash

# My Pervy Family
Expand Down Expand Up @@ -3233,4 +3236,8 @@ def getProviderFromSiteNum(siteNum):
elif 1760 <= siteNum <= 1764:
provider = networkPKJMedia

# Brand New Amateurs
elif siteNum == 1799:
provider = siteBrandNewAmateurs

return provider
64 changes: 47 additions & 17 deletions Contents/Code/networkAdultEmpireCash.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,54 @@


def search(results, lang, siteNum, searchData):
sceneID = None
parts = searchData.title.split()
if unicode(parts[0], 'UTF-8').isdigit():
sceneID = parts[0]
searchData.title = searchData.title.replace(sceneID, '', 1).strip()

directURL = '%s/%s/%s.html' % (PAsearchSites.getSearchBaseURL(siteNum), sceneID, slugify(searchData.title))

req = PAutils.HTTPRequest(directURL)

if req.ok:
detailsPageElements = HTML.ElementFromString(req.text)
titleNoFormatting = PAutils.parseTitle(detailsPageElements.xpath('//h1[@class="description"]/text()')[0].strip(), siteNum)
curID = PAutils.Encode(directURL)

date = detailsPageElements.xpath('//div[@class="release-date"]/text()')
if date:
releaseDate = datetime.strptime(date[0].strip(), '%b %d, %Y').strftime('%Y-%m-%d')
else:
releaseDate = searchData.dateFormat() if searchData.date else ''

displayDate = releaseDate if date else ''

score = 100

results.Append(MetadataSearchResult(id='%s|%d' % (curID, siteNum), name='%s [%s] %s' % (titleNoFormatting, PAsearchSites.getSearchSiteName(siteNum), displayDate), score=score, lang=lang))

req = PAutils.HTTPRequest(PAsearchSites.getSearchSearchURL(siteNum) + searchData.encoded)
searchResults = HTML.ElementFromString(req.text)
for searchResult in searchResults.xpath('//div[contains(@class, "item-grid")]/div[@class="grid-item"]'):
if siteNum == 815 or siteNum == 1337 or siteNum == 1776:
# Modification for JAYs POV, SpankMonster, Hot Wife Fun
titleNoFormatting = PAutils.parseTitle(searchResult.xpath('.//img[contains(@class, "img-full-fluid")]/@title')[0], siteNum)
curID = PAutils.Encode(searchResult.xpath('.//article[contains(@class, "scene-update")]/a/@href')[0])
elif siteNum == 1766 or siteNum == 1779 or siteNum == 1790 or siteNum == 1792:
# Modification for Bizarre Entertainment, Jonathan Jordan XXX, Smut Factor, Step House XXX
titleNoFormatting = PAutils.parseTitle(searchResult.xpath('.//a[@class="scene-title"]/p/text()')[0].split(' | ', 1)[0], siteNum)
curID = PAutils.Encode(searchResult.xpath('.//a[@class="scene-title"]/@href')[0])
else:
titleNoFormatting = PAutils.parseTitle(searchResult.xpath('.//a[@class="scene-title"]/h6/text()')[0], siteNum)
curID = PAutils.Encode(searchResult.xpath('.//a[@class="scene-title"]/@href')[0])

score = 100 - Util.LevenshteinDistance(searchData.title.lower(), titleNoFormatting.lower())

results.Append(MetadataSearchResult(id='%s|%d' % (curID, siteNum), name='%s [%s]' % (titleNoFormatting, PAsearchSites.getSearchSiteName(siteNum)), score=score, lang=lang))
try:
if siteNum == 815 or siteNum == 1337 or siteNum == 1776 or siteNum == 1800:
# Modification for JAYs POV, SpankMonster, Hot Wife Fun
titleNoFormatting = PAutils.parseTitle(searchResult.xpath('.//img[contains(@class, "img-full-fluid")]/@title')[0].strip(), siteNum)
curID = PAutils.Encode(searchResult.xpath('.//article[contains(@class, "scene-update")]/a/@href')[0])
elif siteNum == 1766 or siteNum == 1779 or siteNum == 1790 or siteNum == 1792:
# Modification for Bizarre Entertainment, Jonathan Jordan XXX, Smut Factor, Step House XXX
titleNoFormatting = PAutils.parseTitle(searchResult.xpath('.//a[@class="scene-title"]/p/text()')[0].split(' | ', 1)[0].strip(), siteNum)
curID = PAutils.Encode(searchResult.xpath('.//a[@class="scene-title"]/@href')[0])
else:
titleNoFormatting = PAutils.parseTitle(searchResult.xpath('.//a[@class="scene-title"]/h6/text()')[0].strip(), siteNum)
curID = PAutils.Encode(searchResult.xpath('.//a[@class="scene-title"]/@href')[0])

score = 100 - Util.LevenshteinDistance(searchData.title.lower(), titleNoFormatting.lower())

results.Append(MetadataSearchResult(id='%s|%d' % (curID, siteNum), name='%s [%s]' % (titleNoFormatting, PAsearchSites.getSearchSiteName(siteNum)), score=score, lang=lang))
except:
pass

return results

Expand Down Expand Up @@ -51,9 +81,9 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art):
metadata.collections.add(metadata.tagline)

# Release Date
date = detailsPageElements.xpath('//div[@class="release-date"]/text()')[0].strip()
date = detailsPageElements.xpath('//div[@class="release-date"]/text()')
if date:
date_object = datetime.strptime(date, '%b %d, %Y')
date_object = datetime.strptime(date[0].strip(), '%b %d, %Y')
metadata.originally_available_at = date_object
metadata.year = metadata.originally_available_at.year

Expand Down
92 changes: 92 additions & 0 deletions Contents/Code/siteBrandNewAmateurs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
import PAsearchSites
import PAutils


def search(results, lang, siteNum, searchData):
url = '%s/%s.html' % (PAsearchSites.getSearchSearchURL(siteNum), searchData.title.replace(' ', ''))
req = PAutils.HTTPRequest(url)

searchResults = HTML.ElementFromString(req.text)
for searchResult in searchResults.xpath('//div[contains(@class, "item-video")]'):
titleNoFormatting = PAutils.parseTitle(searchResult.xpath('./div[@class="item-thumb"]//a/@title')[0], siteNum)
curID = PAutils.Encode(searchResult.xpath('./div[@class="item-thumb"]//a/@href')[0])
actorURL = PAutils.Encode(url)

releaseDate = searchData.dateFormat() if searchData.date else ''

score = 100 - Util.LevenshteinDistance(searchData.title.lower(), titleNoFormatting.lower())

results.Append(MetadataSearchResult(id='%s|%d|%s|%s' % (curID, siteNum, releaseDate, actorURL), name='%s [%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])
actorURL = PAutils.Decode(metadata_id[3])
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')[0].text_content().strip(), siteNum)

# Summary
try:
metadata.summary = detailsPageElements.xpath('//div[@class="videoDetails clear"]/p')[0].text_content().strip()
except:
pass

# Studio
metadata.studio = PAsearchSites.getSearchSiteName(siteNum)

# Tagline and Collection(s)
metadata.collections.add(metadata.studio)

# Genres
for genreLink in detailsPageElements.xpath('//ul[./li[contains(., "Tags:")]]//a'):
genreName = genreLink.text_content().strip()

movieGenres.addGenre(genreName)

# Actor(s)
req = PAutils.HTTPRequest(actorURL)
actorPageElements = HTML.ElementFromString(req.text)
actorName = actorPageElements.xpath('//h3')[0].text_content().strip()
actorPhotoURL = actorPageElements.xpath('//div[@class="profile-pic"]/img/@src0_3x')[0]
if not actorPhotoURL.startswith('http'):
actorPhotoURL = PAsearchSites.getSearchBaseURL(siteNum) + actorPhotoURL
movieActors.addActor(actorName, actorPhotoURL)

# Posters
xpaths = [
'//meta[contains(@name, "twitter:image")]/@content'
]

for xpath in xpaths:
for poster in detailsPageElements.xpath(xpath):
if 'http' not in poster:
poster = PAsearchSites.getSearchBaseURL(siteNum) + poster

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 or height > width:
# Item is a poster
metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx)
if width > 100 and width > height:
# Item is an art item
metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx)
except:
pass

return metadata
1 change: 1 addition & 0 deletions docs/sitelist.md
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,7 @@ If you're having difficulty finding the SceneID, double-check [PAsiteList.py](..
- Hot Guys Fuck
- Sugar Daddy Porn
+ #### Bound Honeys | ✓ - **Title only, Date Add**
+ #### Brand New Amateurs | ✓ - **Actor Name**
+ #### Brazzers Network
##### Matching type (main): ✓ - **Title only**
##### Matching type (alternate): ❌ - **SceneID**
Expand Down

0 comments on commit 35fa2c8

Please sign in to comment.