Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Elegant Angel and Update Adult Empire #1824

Merged
merged 10 commits into from
Aug 10, 2023
38 changes: 31 additions & 7 deletions Contents/Code/PAactors.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def processActors(self, metadata, siteNum):
if gender == 'male':
continue
elif Prefs['gender_enable']:
gender = genderCheck(urllib.quote(actorName))
gender = genderCheck(actorName)
Log('Gender: %s' % gender)
if gender == 'male':
continue
Expand All @@ -102,7 +102,7 @@ def processActors(self, metadata, siteNum):


def actorDBfinder(actorName, metadata):
actorEncoded = urllib.quote(actorName)
actorEncoded = urllib.quote(re.sub(r'(?<=\w)\.\s(?=\w\.)', '', actorName).replace('.', ''))

actorPhotoURL = ''
databaseName = ''
Expand Down Expand Up @@ -147,15 +147,39 @@ def actorDBfinder(actorName, metadata):
return actorPhotoURL, gender


def genderCheck(actorEncoded):
def genderCheck(actorName):
actorEncoded = urllib.quote(re.sub(r'(?<=\w)\.\s(?=\w\.)', '', actorName).replace('.', ''))
gender = ''

url = 'http://www.iafd.com/results.asp?searchtype=comprehensive&searchstring=' + actorEncoded
req = PAutils.HTTPRequest(url)

actorSearch = HTML.ElementFromString(req.text)
actorPageURL = actorSearch.xpath('//table[@id="tblFem" or @id="tblMal"]//tbody//a/@href')
if actorPageURL:
gender = 'male' if 'gender=m' in actorPageURL[0] else 'female'
actorResults = actorSearch.xpath('//table[@id="tblFem" or @id="tblMal"]//tbody//td[2]//a')
actorAlias = actorSearch.xpath('//table[@id="tblFem" or @id="tblMal"]//tbody//td[@class="text-left"]')

if actorResults:
score = Util.LevenshteinDistance(actorName.lower(), actorResults[0].text_content().strip().lower()) + 1

results = []
for idx, actor in enumerate(actorResults, 0):
resultScore = Util.LevenshteinDistance(actorName.lower(), actor.text_content().strip().lower())

if resultScore != 0:
if actorName.lower() in actorAlias[idx].text_content().lower():
resultScore = resultScore - 1

if resultScore == score:
results.append(actor)
elif resultScore < score:
score = resultScore
results = [actor]

if results:
actor = random.choice(results)
actorPageURL = actor.xpath('./@href')[0]

gender = 'male' if 'gender=m' in actorPageURL else 'female'

return gender

Expand Down Expand Up @@ -266,7 +290,7 @@ def getFromBabesandStars(actorName, actorEncoded, metadata):
def getFromIAFD(actorName, actorEncoded, metadata):
actorPhotoURL = ''
gender = ''
req = PAutils.HTTPRequest('http://www.iafd.com/results.asp?searchtype=comprehensive&searchstring=' + actorEncoded)
req = PAutils.HTTPRequest('http://www.iafd.com/results.asp?searchtype=comprehensive&searchstring=' + actorEncoded.replace('.', ''))

actorSearch = HTML.ElementFromString(req.text)
actorThumbs = actorSearch.xpath('//table[@id="tblFem" or @id="tblMal"]//tbody//td[1]//a')
Expand Down
1 change: 1 addition & 0 deletions Contents/Code/PAdatabaseActors.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@
'Jenna Ross': ['Jenna J Ross', 'Jenna J. Ross'],
'Jennifer Bliss': ['Jenni Bliss', 'Jennifer Matthews'],
'Jenny Fer': ['Jenny Ferri'],
'Jerry Kovacs': ['Jerry Kovak'],
'Jessi Gold': ['Jaggie Gold', 'Jassie Gold'],
'Jessica Foxx': ['Jessica Blue', 'Jessica Cute'],
'Jewel De\'Nyle': ['Jewel De Nyle', 'Jewel DeNyle', 'Jewel Denyle'],
Expand Down
10 changes: 10 additions & 0 deletions Contents/Code/PAutils.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,16 @@ def postParseTitle(output):
# Override lowercase if last word
output = re.sub(r'\S+$', lambda m: m.group(0)[0].capitalize() + m.group(0)[1:], output)

if re.search(r'(,\sthe)(?=:|\s\()', output, re.IGNORECASE):
output = re.sub(r'(,\sthe)(?=:|\s\()', '', output, flags=re.IGNORECASE)
output = 'The ' + output
elif re.search(r'(,\sthe)$', output, re.IGNORECASE):
output = re.sub(r'(,\sthe)$', '', output, flags=re.IGNORECASE)
output = 'The ' + output
elif re.search(r'(,\sA)$', output, re.IGNORECASE):
output = re.sub(r'(,\sA)$', '', output, flags=re.IGNORECASE)
output = 'A ' + output

for value in replace:
output = output.replace(value[0], value[1])

Expand Down
46 changes: 35 additions & 11 deletions Contents/Code/siteAdultEmpire.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ def search(results, lang, siteNum, searchData):
searchPageElements = HTML.ElementFromString(req.text)

for searchResult in searchPageElements.xpath('//small[not(contains(., "Sex Toy"))]//parent::div'):
resultType = searchResult.xpath('.//@href')[0].rsplit('-')[-1].replace('.html', '').replace('ray', 'Blu-Ray').title()
urlID = searchResult.xpath('.//@href')[0].split('/')[1]
movieURL = '%s/%s' % (PAsearchSites.getSearchBaseURL(siteNum), urlID)

Expand Down Expand Up @@ -88,9 +89,9 @@ def search(results, lang, siteNum, searchData):

if score == 80:
count += 1
temp.append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [%s] %s' % (titleNoFormatting, studio, displayDate), score=score, lang=lang))
temp.append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [%s] [%s] %s' % (titleNoFormatting, studio, resultType, displayDate), score=score, lang=lang))
else:
results.Append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [%s] %s' % (titleNoFormatting, studio, displayDate), score=score, lang=lang))
results.Append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [%s] [%s] %s' % (titleNoFormatting, studio, resultType, displayDate), score=score, lang=lang))

# Split Scenes
scenes = []
Expand All @@ -116,17 +117,17 @@ def search(results, lang, siteNum, searchData):

if score == 80:
count += 1
temp.append(MetadataSearchResult(id='%s|%d|%s|%d|%d' % (curID, siteNum, releaseDate, sceneNum, photoIdx), name='%s/#%d[%s][%s] %s' % (titleNoFormatting, sceneNum, actorNames, studio, displayDate), score=score, lang=lang))
temp.append(MetadataSearchResult(id='%s|%d|%s|%d|%d' % (curID, siteNum, releaseDate, sceneNum, photoIdx), name='%s[%s]/#%d[%s][%s] %s' % (titleNoFormatting, resultType, sceneNum, actorNames, studio, displayDate), score=score, lang=lang))
else:
results.Append(MetadataSearchResult(id='%s|%d|%s|%d|%d' % (curID, siteNum, releaseDate, sceneNum, photoIdx), name='%s/#%d[%s][%s] %s' % (titleNoFormatting, sceneNum, actorNames, studio, displayDate), score=score, lang=lang))
results.Append(MetadataSearchResult(id='%s|%d|%s|%d|%d' % (curID, siteNum, releaseDate, sceneNum, photoIdx), name='%s[%s]/#%d[%s][%s] %s' % (titleNoFormatting, resultType, sceneNum, actorNames, studio, displayDate), score=score, lang=lang))
except:
pass
else:
if score == 80:
count += 1
temp.append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s %s' % (titleNoFormatting, displayDate), score=score, lang=lang))
temp.append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [%s] %s' % (titleNoFormatting, resultType, displayDate), score=score, lang=lang))
else:
results.Append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s %s' % (titleNoFormatting, displayDate), score=score, lang=lang))
results.Append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [%s] %s' % (titleNoFormatting, resultType, displayDate), score=score, lang=lang))

googleResults = PAutils.getFromGoogleSearch(searchData.title, siteNum)
for movieURL in googleResults:
Expand Down Expand Up @@ -217,7 +218,7 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art):
splitScene = True

# Title
metadata.title = PAutils.parseTitle(detailsPageElements.xpath('//h1/text()')[0], siteNum).strip()
metadata.title = PAutils.parseTitle(detailsPageElements.xpath('//h1/text()')[0].strip(), siteNum)
if splitScene:
metadata.title = '%s [Scene %d]' % (metadata.title, sceneNum)

Expand All @@ -231,6 +232,20 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art):
summary = ''
metadata.summary = summary

# Director(s)
directorElement = detailsPageElements.xpath('//div[./a[@name="cast"]]//li[./*[contains(., "Director")]]/a/text()')
for directorName in directorElement:
director = metadata.directors.new()
name = directorName.strip()
director.name = name

# Producer(s)
producerElement = detailsPageElements.xpath('//div[./a[@name="cast"]]//li[./*[contains(., "Producer")]]/text()')
for producerName in producerElement:
producer = metadata.producers.new()
name = producerName.strip()
producer.name = name

# Studio
try:
studio = detailsPageElements.xpath('//li[contains(., "Studio:")]/a/text()')[0].strip()
Expand All @@ -241,11 +256,13 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art):

# Tagline and Collection(s)
metadata.collections.clear()
metadata.collections.add(studio)
try:
tagline = re.sub(r'\(.*\)', '', detailsPageElements.xpath('//h2/a[@label="Series"]/text()')[0].strip().split('"')[1]).strip()
tagline = PAutils.parseTitle(tagline, siteNum)

metadata.tagline = tagline
metadata.collections.add(tagline)
metadata.collections.add(studio)
except:
if splitScene:
metadata.collections.add(PAutils.parseTitle(detailsPageElements.xpath('//h1/text()')[0], siteNum).strip())
Expand Down Expand Up @@ -277,9 +294,9 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art):

# Fallback
if not actors:
actors = detailsPageElements.xpath('//div[contains(., "Starring")]/a')
actors = detailsPageElements.xpath('//div[contains(., "Starring")][1]/a')
else:
actors = detailsPageElements.xpath('//div[contains(., "Starring")]/a')
actors = detailsPageElements.xpath('//div[contains(., "Starring")][1]/a')

for actorLink in actors:
actorName = actorLink.text_content().split('(')[0].strip()
Expand All @@ -293,16 +310,23 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art):

# Posters
xpaths = [
'//div[@class="boxcover-container"]/a/img/@src'
'//div[@class="boxcover-container"]/a/img/@src',
'//div[@class="boxcover-container"]/a/@href'
]

try:
for xpath in xpaths:
art.append(detailsPageElements.xpath(xpath)[0])
except:
pass

try:
if splitScene:
splitScenes = '//div[@class="row"][.//div[@class="row"]][.//a[@rel="scenescreenshots"]][%d]//a/@href' % (sceneIndex + 1)
art.extend(detailsPageElements.xpath(splitScenes))
else:
scenes = '//div[@class="row"][.//div[@class="row"]][.//a[@rel="scenescreenshots"]]//div[@class="row"]//a/@href'
art.extend(detailsPageElements.xpath(scenes))
except:
pass

Expand Down
4 changes: 2 additions & 2 deletions Contents/Code/siteElegantAngel.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ def search(results, lang, siteNum, searchData):
req = PAutils.HTTPRequest(PAsearchSites.getSearchSearchURL(siteNum) + searchData.encoded)
searchResults = HTML.ElementFromString(req.text)
for searchResult in searchResults.xpath('//div[@class="list-page-grid-container"]//div[@class="grid-item"]'):
titleNoFormatting = searchResult.xpath('.//span[@class="overlay-inner"]')[0].text_content().strip()
titleNoFormatting = PAutils.parseTitle(searchResult.text_content().strip(), siteNum)
curID = PAutils.Encode(searchResult.xpath('.//a[@class="boxcover"]/@href')[0])

score = 100 - Util.LevenshteinDistance(searchData.title.lower(), titleNoFormatting.lower())
Expand All @@ -25,7 +25,7 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art):
detailsPageElements = HTML.ElementFromString(req.text)

# Title
metadata.title = detailsPageElements.xpath('//h1[@class="description"]')[0].text_content().strip()
metadata.title = PAutils.parseTitle(detailsPageElements.xpath('//h1[@class="description"]')[0].text_content().strip(), siteNum)

# Summary
try:
Expand Down