diff --git a/Contents/Code/PAsiteList.py b/Contents/Code/PAsiteList.py index 5a5ebb4b2..3e3b568e8 100644 --- a/Contents/Code/PAsiteList.py +++ b/Contents/Code/PAsiteList.py @@ -2062,6 +2062,7 @@ ('^scoreland2', 'ScorelandTwo '), ('^seb ', 'SexuallyBroken '), ('^sed ', 'SexualDisgrace '), + ('^shd ', 'ScoreLand '), ('^Shes New ', 'She\'s New '), ('^sins ', 'SinsLife '), ('^sislove ', 'SisLovesMe '), @@ -2107,6 +2108,7 @@ ('^wunf', 'WakeUpNFuck'), ('^wy ', 'WebYoung '), ('^ylp ', '18OnlyGirls '), + ('^xlg ', 'XLGirls '), ('^YoungLegalPorn ', '18OnlyGirls '), ('^ztod ', 'ZeroTolerance '), ('^zzs ', 'ZZseries '), diff --git a/Contents/Code/PAutils.py b/Contents/Code/PAutils.py index aaa81f82c..ab5b0bc58 100644 --- a/Contents/Code/PAutils.py +++ b/Contents/Code/PAutils.py @@ -288,6 +288,7 @@ def parseTitle(s, siteNum): s = re.sub(r'w\/(?!\s)', 'w/ ', s, flags=re.IGNORECASE) s = re.sub(r'\,(?![\s|\d])', ', ', s) s = s.replace('_', ' ') + s = s.replace('’', '\'') s = preParseTitle(s) word_list = re.split(' ', s) diff --git a/Contents/Code/networkScoreGroup.py b/Contents/Code/networkScoreGroup.py index 8497caeac..c7c88af95 100644 --- a/Contents/Code/networkScoreGroup.py +++ b/Contents/Code/networkScoreGroup.py @@ -3,19 +3,57 @@ def search(results, lang, siteNum, searchData): - sceneID = re.sub(r'\D', '', searchData.title) - actorName = re.sub(r'\s\d.*', '', searchData.title).replace(' ', '-') - sceneURL = PAsearchSites.getSearchSearchURL(siteNum) + actorName + '/' + sceneID + searchResults = [] + searchID = None + + parts = searchData.title.split() + if unicode(parts[0], 'UTF-8').isdigit(): + sceneID = parts[0] + searchData.title = searchData.title.replace(sceneID, '', 1).strip() + else: + sceneID = re.sub(r'\D', '', searchData.title) + actorName = re.sub(r'\s\d.*', '', searchData.title).replace(' ', '-') + directURL = '%s%s/%s' % (PAsearchSites.getSearchSearchURL(siteNum), actorName, sceneID) + searchResults.append(directURL) + + urlID = PAsearchSites.getSearchSearchURL(siteNum).replace(PAsearchSites.getSearchBaseURL(siteNum), '') + + googleResults = PAutils.getFromGoogleSearch(searchData.title, siteNum) + for sceneURL in googleResults: + if urlID in sceneURL and '?' not in sceneURL and sceneURL not in searchResults: + searchResults.append(sceneURL) + + for sceneURL in searchResults: + req = PAutils.HTTPRequest(sceneURL) + searchPageElements = HTML.ElementFromString(req.text) + titleNoFormatting = PAutils.parseTitle(searchPageElements.xpath('//h1')[0].text_content().strip(), siteNum) + + if '404' not in titleNoFormatting: + match = re.search(r'(?<=\/)\d+(?=\/)', sceneURL) + if match: + searchID = match.group(0) + + curID = PAutils.Encode(sceneURL) - req = PAutils.HTTPRequest(sceneURL) - detailsPageElements = HTML.ElementFromString(req.text) - titleNoFormatting = detailsPageElements.xpath('//h1')[0].text_content().strip() + try: + date = searchPageElements.xpath('//div[./span[contains(., "Date:")]]//span[@class="value"]')[0].text_content().strip() + except: + date = '' - curID = PAutils.Encode(sceneURL) + if date: + releaseDate = parse(date).strftime('%Y-%m-%d') + else: + releaseDate = searchData.dateFormat() if searchData.date else '' + displayDate = releaseDate if date else '' - score = 100 + if searchID and searchID == sceneID: + score = 100 + elif searchData.date and displayDate: + score = 100 - Util.LevenshteinDistance(searchData.date, releaseDate) + else: + 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)) + results.Append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [%s] %s' % (titleNoFormatting, PAsearchSites.getSearchSiteName(siteNum), displayDate), score=score, lang=lang)) return results @@ -23,13 +61,15 @@ def search(results, lang, siteNum, searchData): 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.getSearchSearchURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title - metadata.title = detailsPageElements.xpath('//h1')[0].text_content().strip() + metadata.title = PAutils.parseTitle(detailsPageElements.xpath('//h1')[0].text_content().strip(), siteNum) # Summary summary_xpaths = [ @@ -51,6 +91,12 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art): 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 + # Release Date date = detailsPageElements.xpath('//div/span[@class="value"]') if date: @@ -83,6 +129,7 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art): art.append(match.group(1)) xpaths = [ + '//script[@type]/text()', '//div[contains(@class, "thumb")]/img/@src', '//div[contains(@class, "p-image")]/a/img/@src', '//div[contains(@class, "dl-opts")]/a/img/@src', @@ -92,6 +139,10 @@ def update(metadata, lang, siteNum, movieGenres, movieActors, art): for xpath in xpaths: for poster in detailsPageElements.xpath(xpath): + match = re.search(r'(?<=(poster: \')).*(?=\')', poster) + if match: + poster = match.group(0) + if not poster.startswith('http'): poster = 'http:' + poster diff --git a/docs/sitelist.md b/docs/sitelist.md index bbd51cffc..201c0d712 100644 --- a/docs/sitelist.md +++ b/docs/sitelist.md @@ -1491,7 +1491,7 @@ If you're having difficulty finding the SceneID, double-check [PAsiteList.py](.. - WOW Orgasms - X Angels + #### Teeny Taboo | ✅ -+ #### The Score Group | ❌ - **Direct URL** ++ #### The Score Group | ✅ - 18 Eighteen - 50 Plus MILFS - 60 Plus MILFS