From 06b01856c0dca38fb7c746886c8344c9307a2a1f Mon Sep 17 00:00:00 2001 From: pahelper Date: Tue, 22 Jan 2019 08:14:36 -0600 Subject: [PATCH] Consolidated PornFidelity sites to one file, updated search to return in standard format --- Contents/Code/PAsearchSites.py | 6 +- Contents/Code/__init__.py | 26 +---- ...KellyMadison.py => networkPornFidelity.py} | 37 ++++--- Contents/Code/sitePornFidelity.py | 95 ------------------ Contents/Code/siteTeenFidelity.py | 96 ------------------- README.md | 1 + 6 files changed, 31 insertions(+), 230 deletions(-) rename Contents/Code/{siteKellyMadison.py => networkPornFidelity.py} (75%) delete mode 100644 Contents/Code/sitePornFidelity.py delete mode 100644 Contents/Code/siteTeenFidelity.py diff --git a/Contents/Code/PAsearchSites.py b/Contents/Code/PAsearchSites.py index 8dcd3792c..06c8a876f 100644 --- a/Contents/Code/PAsearchSites.py +++ b/Contents/Code/PAsearchSites.py @@ -219,9 +219,9 @@ searchSites[181] = ["We Live Together","We Live Together", "https://www.realitykings.com/", "https://www.realitykings.com/tour/search/videos/"] searchSites[182] = ["Wives in Pantyhose","Wives in Pantyhose", "https://www.realitykings.com/", "https://www.realitykings.com/tour/search/videos/"] searchSites[183] = ["21Naturals","21Naturals","https://www.21naturals.com","http://www.21naturals.com/en/search/"] -searchSites[184] = ["PornFidelity","PornFidelity","https://www.pornfidelity.com","https://www.pornfidelity.com/?search="] -searchSites[185] = ["TeenFidelity","TeenFidelity","https://www.pornfidelity.com","https://www.pornfidelity.com/?search="] -searchSites[186] = ["Kelly Madison","Kelly Madison","https://www.pornfidelity.com","https://www.pornfidelity.com/?search="] +searchSites[184] = ["PornFidelity","PornFidelity","https://www.pornfidelity.com","https://www.pornfidelity.com/episodes/search/?site=2&page=1&search="] +searchSites[185] = ["TeenFidelity","TeenFidelity","https://www.pornfidelity.com","https://www.pornfidelity.com/episodes/search/?site=3&page=1&search="] +searchSites[186] = ["Kelly Madison","Kelly Madison","https://www.pornfidelity.com","https://www.pornfidelity.com/episodes/search/?site=1&page=1&search="] searchSites[187] = ["TeamSkeet", "TeamSkeet", "https://www.teamskeet.com","https://www.teamskeet.com/t1/search/results/?query="] searchSites[188] = ["Exxxtra small","Exxxtra small", "https://www.teamskeet.com","https://www.teamskeet.com/t1/search/results/?query="] searchSites[189] = ["Teen Pies","Teen Pies", "https://www.teamskeet.com","https://www.teamskeet.com/t1/search/results/?query="] diff --git a/Contents/Code/__init__.py b/Contents/Code/__init__.py index 847dfecbc..45c63efee 100644 --- a/Contents/Code/__init__.py +++ b/Contents/Code/__init__.py @@ -151,21 +151,21 @@ def search(self, results, media, lang): ############### if siteNum == 184: if searchAll or searchSiteID == 184: - results = PAsearchSites.sitePornFidelity.search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate, searchAll, searchSiteID) + results = PAsearchSites.networkPornFidelity.search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate, searchAll, searchSiteID) ############### ## TeenFidelity ############### if siteNum == 185: if searchAll or searchSiteID == 185: - results = PAsearchSites.siteTeenFidelity.search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate, searchAll, searchSiteID) + results = PAsearchSites.networkPornFidelity.search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate, searchAll, searchSiteID) ############### ## Kelly Madison ############### if siteNum == 186: if searchAll or searchSiteID == 186: - results = PAsearchSites.siteKellyMadison.search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate, searchAll, searchSiteID) + results = PAsearchSites.networkPornFidelity.search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate, searchAll, searchSiteID) ############### ## Team Skeet @@ -451,24 +451,8 @@ def update(self, metadata, media, lang): ## PornFidelity ## ## ## ############################################################## - if siteID == 184: - metadata = PAsearchSites.sitePornFidelity.update(metadata,siteID,movieGenres,movieActors) - - ############################################################## - ## ## - ## TeenFidelity ## - ## ## - ############################################################## - if siteID == 185: - metadata = PAsearchSites.siteTeenFidelity.update(metadata,siteID,movieGenres,movieActors) - - ############################################################## - ## ## - ## Kelly Madison ## - ## ## - ############################################################## - if siteID == 186: - metadata = PAsearchSites.siteKellyMadison.update(metadata,siteID,movieGenres,movieActors) + if siteID >= 184 and siteID <= 186: + metadata = PAsearchSites.networkPornFidelity.update(metadata,siteID,movieGenres,movieActors) ############################################################## ## ## diff --git a/Contents/Code/siteKellyMadison.py b/Contents/Code/networkPornFidelity.py similarity index 75% rename from Contents/Code/siteKellyMadison.py rename to Contents/Code/networkPornFidelity.py index cb7a85e0c..6ccaf5d0e 100644 --- a/Contents/Code/siteKellyMadison.py +++ b/Contents/Code/networkPornFidelity.py @@ -1,31 +1,34 @@ import PAsearchSites import PAgenres def search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate,searchAll,searchSiteID): + if searchSiteID != 9999: + siteNum = searchSiteID searchPageContent = HTTP.Request("https://www.pornfidelity.com") #The search page seems to redirect to PornFidelity.com if you didn't just come from there, so I open this first to trick it... - searchPageContent = HTTP.Request("https://www.pornfidelity.com/episodes/search/?site=1&page=1&search=" + encodedTitle) + searchPageContent = HTTP.Request(PAsearchSites.getSearchSearchURL(siteNum) + encodedTitle) searchPageContent = str(searchPageContent).split('":"') searchPageResult = searchPageContent[len(searchPageContent)-1][:-2] searchPageResult = searchPageResult.replace('\\n',"").replace('\\',"") #Log(searchPageResult) searchResults = HTML.ElementFromString(searchPageResult) for searchResult in searchResults.xpath('//div[contains(@class,"d-flex")]'): - titleNoFormatting = searchResult.xpath('.//a[@class="text-km"]')[0].text_content().strip() + titleNoFormatting = searchResult.xpath('.//a[@class="text-km"] | .//a[@class="text-pf"] | .//a[@class="text-tf"]')[0].text_content().strip() Log(titleNoFormatting) - curID = searchResult.xpath('.//a[@class="text-km"]')[0].get('href') - curID = curID.replace('/','_') + curID = searchResult.xpath('.//a[@class="text-km"] | .//a[@class="text-pf"] | .//a[@class="text-tf"]')[0].get('href') + curID = curID.replace('/','_').replace('?','!') curID = curID[8:-19] Log("ID: " + curID) - releasedDate = searchResult.xpath('.//div[contains(@class,"text-left")]')[0].text_content().strip()[10:] - if ", 20" not in releasedDate: - releasedDate = releasedDate + ", " + str(datetime.now().year) + releaseDate = searchResult.xpath('.//div[contains(@class,"text-left")]')[0].text_content().strip()[10:] + if ", 20" not in releaseDate: + releaseDate = releaseDate + ", " + str(datetime.now().year) + releaseDate = parse(releaseDate).strftime('%Y-%m-%d') Log(str(curID)) lowerResultTitle = str(titleNoFormatting).lower() if searchByDateActor != True: score = 102 - Util.LevenshteinDistance(searchTitle.lower(), titleNoFormatting.lower()) else: searchDateCompare = datetime.strptime(searchDate, '%Y-%m-%d').strftime('%b %m, $Y') - score = 102 - Util.LevenshteinDistance(searchDateCompare.lower(), releasedDate.lower()) - titleNoFormatting = titleNoFormatting + " [" + PAsearchSites.getSearchSiteName(siteNum) + ", " + releasedDate + "]" + score = 102 - Util.LevenshteinDistance(searchDateCompare.lower(), releaseDate.lower()) + titleNoFormatting = titleNoFormatting + " [" + PAsearchSites.getSearchSiteName(siteNum) + "] " + releaseDate results.Append(MetadataSearchResult(id = curID + "|" + str(siteNum), name = titleNoFormatting, score = score, lang = lang)) return results @@ -40,16 +43,21 @@ def update(metadata,siteID,movieGenres,movieActors): # Summary metadata.studio = "PornFidelity" - metadata.summary = detailsPageElements.xpath('//p[contains(@class,"card-text")]')[0].text_content() + metadata.summary = detailsPageElements.xpath('//p[contains(@class,"card-text")]')[0].text_content().strip() metadata.title = detailsPageElements.xpath('//h4')[0].text_content()[36:].strip() - tagline = "Kelly Madison" + if "Teenfidelity" in metadata.title: + tagline = "TeenFidelity" + elif "Kelly Madison" in metadata.title: + tagline = "Kelly Madison" + else: + tagline = "PornFidelity" Log(metadata.title) metadataParts = detailsPageElements.xpath('//div[contains(@class,"episode-summary")]//h4') for metadataPart in metadataParts: if "Published" in metadataPart.text_content(): - releasedDate = metadataPart.text_content()[39:49] - Log(releasedDate) - date_object = datetime.strptime(releasedDate, '%Y-%m-%d') + releaseDate = metadataPart.text_content()[39:49] + Log(releaseDate) + date_object = datetime.strptime(releaseDate, '%Y-%m-%d') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year @@ -89,7 +97,6 @@ def update(metadata,siteID,movieGenres,movieActors): metadata.posters[background] = Proxy.Preview(HTTP.Request(background).content, sort_order = 1) except: pass - diff --git a/Contents/Code/sitePornFidelity.py b/Contents/Code/sitePornFidelity.py deleted file mode 100644 index 9200f4788..000000000 --- a/Contents/Code/sitePornFidelity.py +++ /dev/null @@ -1,95 +0,0 @@ -import PAsearchSites -import PAgenres -def search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate,searchAll,searchSiteID): - searchPageContent = HTTP.Request("https://www.pornfidelity.com") #The search page seems to redirect to PornFidelity.com if you didn't just come from there, so I open this first to trick it... - searchPageContent = HTTP.Request("https://www.pornfidelity.com/episodes/search/?site=2&page=1&search=" + encodedTitle) - searchPageContent = str(searchPageContent).split('":"') - searchPageResult = searchPageContent[len(searchPageContent)-1][:-2] - searchPageResult = searchPageResult.replace('\\n',"").replace('\\',"") - #Log(searchPageResult) - searchResults = HTML.ElementFromString(searchPageResult) - for searchResult in searchResults.xpath('//div[contains(@class,"d-flex")]'): - titleNoFormatting = searchResult.xpath('.//a[@class="text-pf"]')[0].text_content().strip() - Log(titleNoFormatting) - curID = searchResult.xpath('.//a[@class="text-pf"]')[0].get('href') - curID = curID.replace('/','_') - curID = curID[8:-19] - Log("ID: " + curID) - releasedDate = searchResult.xpath('.//div[contains(@class,"text-left")]')[0].text_content().strip()[10:] - if ", 20" not in releasedDate: - releasedDate = releasedDate + ", " + str(datetime.now().year) - Log(str(curID)) - lowerResultTitle = str(titleNoFormatting).lower() - if searchByDateActor != True: - score = 102 - Util.LevenshteinDistance(searchTitle.lower(), titleNoFormatting.lower()) - else: - searchDateCompare = datetime.strptime(searchDate, '%Y-%m-%d').strftime('%b %m, $Y') - score = 102 - Util.LevenshteinDistance(searchDateCompare.lower(), releasedDate.lower()) - titleNoFormatting = titleNoFormatting + " [" + PAsearchSites.getSearchSiteName(siteNum) + ", " + releasedDate + "]" - results.Append(MetadataSearchResult(id = curID + "|" + str(siteNum), name = titleNoFormatting, score = score, lang = lang)) - - return results - - -def update(metadata,siteID,movieGenres,movieActors): - Log('******UPDATE CALLED*******') - temp = str(metadata.id).split("|")[0].replace('_','/') - - url = "https://" + temp - detailsPageElements = HTML.ElementFromURL(url) - - # Summary - metadata.studio = "PornFidelity" - metadata.summary = detailsPageElements.xpath('//p[contains(@class,"card-text")]')[0].text_content() - metadata.title = detailsPageElements.xpath('//h4')[0].text_content()[36:].strip() - tagline = "PornFidelity" - Log(metadata.title) - metadataParts = detailsPageElements.xpath('//div[contains(@class,"episode-summary")]//h4') - for metadataPart in metadataParts: - if "Published" in metadataPart.text_content(): - releasedDate = metadataPart.text_content()[39:49] - Log(releasedDate) - date_object = datetime.strptime(releasedDate, '%Y-%m-%d') - metadata.originally_available_at = date_object - metadata.year = metadata.originally_available_at.year - - metadata.tagline = tagline - metadata.collections.clear() - metadata.collections.add(tagline) - - # Genres - movieGenres.clearGenres() - movieGenres.addGenre("Hardcore") - movieGenres.addGenre("Heterosexual") - - # Actors - movieActors.clearActors() - actors = detailsPageElements.xpath('//div[contains(@class,"episode-summary")]//a[contains(@href,"/models/")]') - if len(actors) > 0: - for actorLink in actors: - actorName = actorLink.text_content() - actorPageURL = actorLink.get("href") - actorPage = HTML.ElementFromURL(actorPageURL) - actorPhotoURL = actorPage.xpath('//img[@class="img-fluid"]')[0].get("src") - movieActors.addActor(actorName,actorPhotoURL) - - # Posters/Background - valid_names = list() - pageSource = str(HTTP.Request(url)) - posterStartPos = pageSource.index('poster: "') - posterEndPos = pageSource.index('"',posterStartPos+10) - background = pageSource[posterStartPos+9:posterEndPos] - metadata.posters.validate_keys(valid_names) - metadata.art.validate_keys(valid_names) - try: - metadata.art[background] = Proxy.Preview(HTTP.Request(background).content, sort_order = 1) - except: - pass - try: - metadata.posters[background] = Proxy.Preview(HTTP.Request(background).content, sort_order = 1) - except: - pass - - - - return metadata diff --git a/Contents/Code/siteTeenFidelity.py b/Contents/Code/siteTeenFidelity.py deleted file mode 100644 index b1e13cc51..000000000 --- a/Contents/Code/siteTeenFidelity.py +++ /dev/null @@ -1,96 +0,0 @@ -import PAsearchSites -import PAgenres -def search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate,searchAll,searchSiteID): - searchPageContent = HTTP.Request("https://www.pornfidelity.com") #The search page seems to redirect to PornFidelity.com if you didn't just come from there, so I open this first to trick it... - searchPageContent = HTTP.Request("https://www.pornfidelity.com/episodes/search/?site=3&page=1&search=" + encodedTitle) - searchPageContent = str(searchPageContent).split('":"') - searchPageResult = searchPageContent[len(searchPageContent)-1][:-2] - searchPageResult = searchPageResult.replace('\\n',"").replace('\\',"") - #Log(searchPageResult) - searchResults = HTML.ElementFromString(searchPageResult) - for searchResult in searchResults.xpath('//div[contains(@class,"d-flex")]'): - titleNoFormatting = searchResult.xpath('.//a[@class="text-tf"]')[0].text_content().strip() - Log(titleNoFormatting) - curID = searchResult.xpath('.//a[@class="text-tf"]')[0].get('href') - curID = curID.replace('/','_') - curID = curID[8:-19] - Log("ID: " + curID) - releasedDate = searchResult.xpath('.//div[contains(@class,"text-left")]')[0].text_content().strip()[10:] - if ", 20" not in releasedDate: - releasedDate = releasedDate + ", " + str(datetime.now().year) - Log(str(curID)) - lowerResultTitle = str(titleNoFormatting).lower() - if searchByDateActor != True: - score = 102 - Util.LevenshteinDistance(searchTitle.lower(), titleNoFormatting.lower()) - else: - searchDateCompare = datetime.strptime(searchDate, '%Y-%m-%d').strftime('%b %m, $Y') - score = 102 - Util.LevenshteinDistance(searchDateCompare.lower(), releasedDate.lower()) - titleNoFormatting = titleNoFormatting + " [" + PAsearchSites.getSearchSiteName(siteNum) + ", " + releasedDate + "]" - results.Append(MetadataSearchResult(id = curID + "|" + str(siteNum), name = titleNoFormatting, score = score, lang = lang)) - - return results - - -def update(metadata,siteID,movieGenres,movieActors): - Log('******UPDATE CALLED*******') - temp = str(metadata.id).split("|")[0].replace('_','/') - - url = "https://" + temp - detailsPageElements = HTML.ElementFromURL(url) - - # Summary - metadata.studio = "PornFidelity" - metadata.summary = detailsPageElements.xpath('//p[contains(@class,"card-text")]')[0].text_content() - metadata.title = detailsPageElements.xpath('//h4')[0].text_content()[36:].strip() - tagline = "TeenFidelity" - Log(metadata.title) - metadataParts = detailsPageElements.xpath('//div[contains(@class,"episode-summary")]//h4') - for metadataPart in metadataParts: - if "Published" in metadataPart.text_content(): - releasedDate = metadataPart.text_content()[39:49] - Log(releasedDate) - date_object = datetime.strptime(releasedDate, '%Y-%m-%d') - metadata.originally_available_at = date_object - metadata.year = metadata.originally_available_at.year - - metadata.tagline = tagline - metadata.collections.clear() - metadata.collections.add(tagline) - - # Genres - movieGenres.clearGenres() - movieGenres.addGenre("Hardcore") - movieGenres.addGenre("Heterosexual") - - # Actors - movieActors.clearActors() - actors = detailsPageElements.xpath('//div[contains(@class,"episode-summary")]//a[contains(@href,"/models/")]') - if len(actors) > 0: - for actorLink in actors: - actorName = actorLink.text_content() - actorPageURL = actorLink.get("href") - actorPage = HTML.ElementFromURL(actorPageURL) - actorPhotoURL = actorPage.xpath('//img[@class="img-fluid"]')[0].get("src") - movieActors.addActor(actorName,actorPhotoURL) - - # Posters/Background - valid_names = list() - pageSource = str(HTTP.Request(url)) - posterStartPos = pageSource.index('poster: "') - posterEndPos = pageSource.index('"',posterStartPos+10) - background = pageSource[posterStartPos+9:posterEndPos] - metadata.posters.validate_keys(valid_names) - metadata.art.validate_keys(valid_names) - try: - metadata.art[background] = Proxy.Preview(HTTP.Request(background).content, sort_order = 1) - except: - pass - try: - metadata.posters[background] = Proxy.Preview(HTTP.Request(background).content, sort_order = 1) - except: - pass - - - - - return metadata diff --git a/README.md b/README.md index c639f1c54..0feec97fa 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,7 @@ No real error checking is implemented. It was quickly tested on 10+ titles per s - GloryholeSecrets only searches by their video title, and their title is very structured and limited. Best to just search for girl's first name only e.g. "GloryholeSecrets - Rachele" ## Change Log/Updates +- 2019-01-22 8:15AM CST - Consolidated PornFidelity sites to one file, updated search to return in standard format - 2019-01-21 9:00AM CST - Cleaned up the search section of init, a few other bugfixes - 2019-01-20 5:15PM CST - Merged Dev's code for JulesJordan, Dogfart Network, DDF Network, and the Perfect Gonzo network. Added 21Sextreme network to the existing GammaEnt file. - 2019-01-15 7:45AM CST - Added 4 new NaughtyAmerica sites: LA Sluts, Slut Stepsister, Teens Love Cream, and Latina Stepmom