Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 72 additions & 60 deletions Contents/Code/PAutils.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,18 +300,22 @@ def parseTitle(s, siteNum):
s = preParseTitle(s)
word_list = re.split(' ', s)

if not word_list:
return s

pattern = re.compile(r'\W')
firstWord = parseWord(word_list[0], siteNum)
cleanfirstWord = re.sub(pattern, '', firstWord)
if len(cleanfirstWord) > 1:
firstWord = firstWord[0].capitalize() + firstWord[1:]
else:
firstWord = firstWord.upper()
final = []

final = [firstWord]
for idx, word in enumerate(word_list):
parsed = parseWord(word, siteNum)

for word in word_list[1:]:
final.append(parseWord(word, siteNum))
# Capitalize first word only
if idx == 0:
cleanWord = re.sub(pattern, '', parsed)
if cleanWord:
parsed = parsed[0].upper() + parsed[1:] if len(cleanWord) > 1 else parsed.upper()

final.append(parsed)

output = ' '.join(final)
output = postParseTitle(output)
Expand All @@ -326,27 +330,28 @@ def parseWord(word, siteNum):
'hd', 'milf', 'gilf', 'dilf', 'dtf', 'zz', 'xxxl', 'usa', 'nsa', 'hr', 'ii', 'iii', 'iv', 'bbq', 'avn', 'xtc', 'atv',
'joi', 'rpg', 'wunf', 'uk', 'asap', 'sss', 'nf', 'pawg', 'ama'
)
symbolsClean = ['-', '/', '.', '+', '\'']
symbolsEsc = ['-', '/', r'\.', r'\+', r'\'']
symbols_map = {'-': '-', '/': '/', '.': r'\.', '+': r'\+', '\'': r'\''}

pattern = re.compile(r'\W')
cleanWord = re.sub(pattern, '', word)
cleanWordLower = cleanWord.lower()
cleanSiteName = re.sub(pattern, '', PAsearchSites.getSearchSiteName(siteNum).replace(' ', ''))

if cleanSiteName.lower() == cleanWord.lower():
if cleanSiteName.lower() == cleanWordLower:
word = PAsearchSites.getSearchSiteName(siteNum)
elif any(symbol in word for symbol in symbolsClean):
for idx, symbol in enumerate(symbolsClean, 0):
elif any(symbol in word for symbol in symbols_map):
for symbol, escaped_symbol in symbols_map.items():
if symbol in word:
word = parseTitleSymbol(word, siteNum, symbolsEsc[idx])
elif cleanWord.lower() in upper_exceptions:
word = parseTitleSymbol(word, siteNum, escaped_symbol)
break
elif cleanWordLower in upper_exceptions:
word = word.upper()
elif cleanWord.isupper() and cleanWord.lower() not in lower_exceptions:
elif cleanWord.isupper() and cleanWordLower not in lower_exceptions:
word = word.upper()
elif not (cleanWord.islower() or cleanWord.isupper() or cleanWord.lower() in lower_exceptions):
elif not (cleanWord.islower() or cleanWord.isupper() or cleanWordLower in lower_exceptions):
pass
else:
word = word.lower() if cleanWord.lower() in lower_exceptions else word.capitalize()
word = word.lower() if cleanWordLower in lower_exceptions else word.capitalize()

word = manualWordFix(word)

Expand All @@ -361,39 +366,49 @@ def any(s):


def parseTitleSymbol(word, siteNum, symbol):
lower_exceptions = ['vs']
contraction_exceptions = ['re', 't', 's', 'd', 'll', 've', 'm', 'am', 'ed']
word_list = re.split(symbol, word)
symbols = ['-', '/', r'\.', r'\+']
pattern = re.compile(r'\W')

firstWord = parseWord(word_list[0], siteNum)
if firstWord not in lower_exceptions:
if re.search(r'^\W', firstWord):
firstWord = firstWord[0:2].upper() + firstWord[2:]
elif len(firstWord) > 1:
firstWord = firstWord[0].capitalize() + firstWord[1:]
lower_exceptions = set(['vs'])
contraction_exceptions = set(['re', 't', 's', 'd', 'll', 've', 'm', 'am', 'ed'])
symbols = set(['-', '/', r'\.', r'\+'])
nonword_re = re.compile(r'\W')

parts = re.split(symbol, word)
# Normalize first part
first = parseWord(parts[0], siteNum)
if first not in lower_exceptions:
if first and re.search(r'^\W', first):
# Preserve leading punctuation then uppercase the next char(s)
if len(first) >= 2:
first = first[:2].upper() + first[2:]
else:
first = first.upper()
elif len(first) > 1:
first = first[0].upper() + first[1:]
else:
firstWord = firstWord.upper()
nhword = firstWord + symbol.replace('\\', '')
first = first.upper()

for idx, hword in enumerate(word_list[1:], 1):
cleanWord = re.sub(pattern, '', hword)
sep = symbol.replace('\\', '')
result = first + sep

# Process remaining parts
total = len(parts)
for idx, part in enumerate(parts[1:], 1):
clean = nonword_re.sub('', part)
if symbol in symbols:
if idx == 1 and not firstWord:
nhword += hword.capitalize()
elif len(hword) > 1:
nhword += parseWord(hword, siteNum)
if idx == 1 and not first:
result += part.capitalize()
elif len(part) > 1:
result += parseWord(part, siteNum)
else:
nhword += hword.capitalize()
elif cleanWord.lower() in contraction_exceptions:
nhword += hword.lower()
result += part.capitalize()
elif clean.lower() in contraction_exceptions:
result += part.lower()
else:
nhword += parseWord(hword, siteNum)
result += parseWord(part, siteNum)

if idx != total - 1:
result += sep

if idx != len(word_list) - 1:
nhword += symbol.replace('\\', '')
return nhword
return result


def postParseTitle(output):
Expand Down Expand Up @@ -480,23 +495,20 @@ def cleanSummary(summary):


def manualWordFix(word):
exceptions = (
'im', 'theyll', 'cant', 'ive', 'shes', 'theyre', 'tshirt', 'dont', 'wasnt', 'youre', 'ill', 'whats', 'didnt',
'isnt', 'senor', 'senorita', 'thats', 'gstring', 'milfs', 'oreilly', 'bangbros', 'bday', 'dms', 'bffs',
'ohmy', 'wont', 'whos', 'shouldnt', 'lasirena', 'espanol', 'youd'
)
corrections = (
'I\'m', 'They\'ll', 'Can\'t', 'I\'ve', 'She\'s', 'They\'re', 'T-Shirt', 'Don\'t', 'Wasn\'t', 'You\'re', 'I\'ll', 'What\'s', 'Didn\'t',
'Isn\'t', 'Señor', 'Señorita', 'That\'s', 'G-String', 'MILFs', 'O\'Reilly', 'BangBros', 'B-Day', 'DMs', 'BFFs',
'OhMy', 'Won\'t', 'Who\'s', 'Shouldn\'t', 'LaSirena', 'español', 'You\'d'
)
corrections_map = {
'im': 'I\'m', 'theyll': 'They\'ll', 'cant': 'Can\'t', 'ive': 'I\'ve', 'shes': 'She\'s', 'theyre': 'They\'re', 'tshirt': 'T-Shirt', 'dont': 'Don\'t',
'wasnt': 'Wasn\'t', 'youre': 'You\'re', 'ill': 'I\'ll', 'whats': 'What\'s', 'didnt': 'Didn\'t', 'isnt': 'Isn\'t', 'senor': 'Señor', 'senorita': 'Señorita',
'thats': 'That\'s', 'gstring': 'G-String', 'milfs': 'MILFs', 'oreilly': 'O\'Reilly', 'bangbros': 'BangBros', 'bday': 'B-Day', 'dms': 'DMs', 'bffs': 'BFFs',
'ohmy': 'OhMy', 'wont': 'Won\'t', 'whos': 'Who\'s', 'shouldnt': 'Shouldn\'t', 'lasirena': 'LaSirena', 'espanol': 'español', 'youd': 'You\'d'
}

pattern = re.compile(r'\d|\W')
cleanWord = re.sub(pattern, '', word)
cleanWordLower = cleanWord.lower()

if cleanWord.lower() in exceptions:
for correction in corrections:
if cleanWord.lower() == re.sub(pattern, '', correction.replace('ñ', 'n')).lower():
return re.sub(re.escape(cleanWord), correction, word)
if cleanWordLower in corrections_map:
correction = corrections_map[cleanWordLower]
return re.sub(re.escape(cleanWord), correction, word, flags=re.IGNORECASE)

return word

Expand Down
5 changes: 4 additions & 1 deletion Contents/Code/network18.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,12 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, movieCollections,
if poster:
art.append(poster['serve']['uri'])

postersClean = list()
Log('Artwork found: %d' % len(art))
for idx, posterUrl in enumerate(art, 1):
# Remove Timestamp and Token from URL
cleanUrl = posterUrl.split('?')[0]
art[idx - 1] = cleanUrl
postersClean.append(cleanUrl)
if not PAsearchSites.posterAlreadyExists(cleanUrl, metadata):
# Download image file for analysis
try:
Expand All @@ -118,6 +119,8 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, movieCollections,
except:
pass

art.extend(postersClean)

return metadata


Expand Down
6 changes: 3 additions & 3 deletions Contents/Code/networkAdultPrime.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def search(results, lang, siteNum, searchData):
sceneURL = '%s/studios/video/%s' % (PAsearchSites.getSearchBaseURL(siteNum), sceneID)
req = PAutils.HTTPRequest(sceneURL)
detailsPageElements = HTML.ElementFromString(req.text)
titleNoFormatting = PAutils.parseTitle(detailsPageElements.xpath('//h2')[0].text_content().strip(), siteNum)
titleNoFormatting = PAutils.parseTitle(detailsPageElements.xpath('//h1')[0].text_content().split(':')[-1].split('Full video by')[0].strip(), siteNum)
curID = PAutils.Encode(sceneURL)

date = detailsPageElements.xpath('//p[@class="update-info-line regular"]/b[1][./preceding-sibling::i[contains(@class, "calendar")]]')
Expand Down Expand Up @@ -80,10 +80,10 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, movieCollections,
metadata.summary = summary

# Studio
metadata.studio = detailsPageElements.xpath('//p[@class="update-info-line regular"][./b[contains(., "Studio")]]//a')[0].text_content().strip()
metadata.studio = 'Adult Prime'

# Tagline and Collection(s)
tagline = detailsPageElements.xpath('//p[@class="update-info-line regular"][./b[contains(., "Series")]]//a')[1].text_content().strip()
tagline = detailsPageElements.xpath('//p[@class="update-info-line regular"][./b[contains(., "Studio")]]//a')[0].text_content().strip()
metadata.tagline = tagline
movieCollections.addCollection(tagline)

Expand Down
Loading