def update(metadata, siteID, movieGenres, movieActors): temp = str(metadata.id).split("|")[0] art = [] url = PAsearchSites.getSearchSearchURL(siteID) + temp Log('scene url: ' + url) detailsPageElements = HTML.ElementFromURL(url) metadata.studio = "P**n Pros" # Collections / Tagline siteName = PAsearchSites.getSearchSiteName(siteID) metadata.collections.clear() metadata.tagline = siteName metadata.collections.add(siteName) # Summary try: if siteName.lower() == "Cum4K".lower(): summaryurl = "https://cum4k.tube/" + temp Log(summaryurl) summaryPageElements = HTML.ElementFromURL(summaryurl) metadata.summary = summaryPageElements.xpath( '//p[@class="more"]/text()')[0].strip() except: Log("did not pull tube summary") pass # Actors movieActors.clearActors() titleActors = "" actors = detailsPageElements.xpath( '//div[@class="details col-sm-6 col-md-3 order-md-2 mb-2"]//div[@class="row"]//div[@class="col-6 col-md-12"]//a' ) if len(actors) > 0: for actorLink in actors: actorName = actorLink.text_content() actorPhotoURL = PAactors.actorDBfinder(actorName) titleActors = titleActors + actorName + " & " Log("actorPhoto: " + actorPhotoURL) movieActors.addActor(actorName, actorPhotoURL) titleActors = titleActors[:-3] # Genres movieGenres.clearGenres() # Based on site if siteName.lower() == "Lubed".lower(): for genreName in ['Lube', 'Raw', 'Wet']: movieGenres.addGenre(genreName) elif siteName.lower() == "Holed".lower(): for genreName in ['Anal', 'Ass']: movieGenres.addGenre(genreName) elif siteName.lower() == "POVD".lower(): for genreName in ['Gonzo', 'POV']: movieGenres.addGenre(genreName) elif siteName.lower() == "MassageCreep".lower(): for genreName in ['Massage', 'Oil']: movieGenres.addGenre(genreName) elif siteName.lower() == "DeepThroatLove".lower(): for genreName in ['B*****b', 'Deep Throat']: movieGenres.addGenre(genreName) elif siteName.lower() == "PureMature".lower(): for genreName in ['MILF', 'Mature']: movieGenres.addGenre(genreName) elif siteName.lower() == "Cum4K".lower(): for genreName in ['Creampie']: movieGenres.addGenre(genreName) # Based on number of actors if len(actors) == 3: movieGenres.addGenre('Threesome') if len(actors) == 4: movieGenres.addGenre('Foursome') if len(actors) > 4: movieGenres.addGenre('Orgy') # Posters background = "http:" + detailsPageElements.xpath( '//video[@id="player"]')[0].get('poster') Log("BG DL: " + background) metadata.art[background] = Proxy.Preview(HTTP.Request( background, headers={ 'Referer': 'http://www.google.com' }).content, sort_order=1) metadata.posters[background] = Proxy.Preview(HTTP.Request( background, headers={ 'Referer': 'http://www.google.com' }).content, sort_order=1) # Date date = detailsPageElements.xpath( '//div[contains(@class,"details")]//p')[0].text_content().strip() Log('Date: ' + date) date_object = datetime.strptime(date, '%B %d, %Y') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Title metadata.title = detailsPageElements.xpath( '//div[contains(@class,"details")]//h1')[0].text_content().strip() #Extra Posters import random if siteName.lower() == "Holed".lower(): fanSite = PAextras.getFanArt("AnalPornFan.com", art, actors, actorName, metadata.title) elif siteName.lower() == "SpyFam".lower(): fanSite = PAextras.getFanArt("SpyFams.com", art, actors, actorName, metadata.title) elif siteName.lower() == "Lubed".lower(): fanSite = PAextras.getFanArt("LubedFan.com", art, actors, actorName, metadata.title) elif siteName.lower() == "PassionHD".lower(): for site in ["PassionHDFan.com", "HQSluts.com"]: fanSite = PAextras.getFanArt(site, art, actors, actorName, metadata.title) else: fanSite = PAextras.getFanArt("HQSluts.com", art, actors, actorName, metadata.title) summary = fanSite[1] match = fanSite[2] try: if len(metadata.summary) < len(summary): metadata.summary = summary except: metadata.summary = summary if match is 1: # Return, first, last and randóm selection of images # If you want more or less posters edít the value in random.sample below or refresh metadata to get a different sample. sample = [art[0], art[1], art[2], art[3], art[-1]] + random.sample( art, 4) art = sample Log("Selecting first 5, last and random 4 images from set") j = 1 for posterUrl in art: Log("Trying next Image") if not PAsearchSites.posterAlreadyExists(posterUrl, metadata): #Download image file for analysis try: img_file = urllib.urlopen(posterUrl) im = StringIO(img_file.read()) 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.Preview( HTTP.Request(posterUrl, headers={ 'Referer': 'http://www.google.com' }).content, sort_order=j) if width > 100 and width > height: # Item is an art item metadata.art[posterUrl] = Proxy.Preview(HTTP.Request( posterUrl, headers={ 'Referer': 'http://www.google.com' }).content, sort_order=j) j = j + 1 except: Log("there was an issue") return metadata
def update(metadata, siteID, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteID) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//h1')[0].text_content().replace('VR P**n video', '').strip() # Summary description = detailsPageElements.xpath( '//div[@class="g-cols onlydesktop"]') if description: metadata.summary = description[0].text_content().strip() # Studio metadata.studio = PAsearchSites.getSearchSiteName(siteID) # Tagline and Collection metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteID) metadata.tagline = tagline metadata.collections.add(tagline) # Release Date script_text = detailsPageElements.xpath( '//script[@type="application/ld+json"]')[1].text_content() alpha = script_text.find('datePublished') omega = script_text.find('"', alpha + 16) date = script_text[alpha + 16:omega] if date: date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath( '//a[@class="g-btn type_default"]//span'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() for actorLink in detailsPageElements.xpath( '//div[@class="w-portfolio-item-image modelBox"]//img'): actorName = actorLink.get('alt') actorPhotoURL = actorLink.get('src') movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] xpaths = [ '//dl8-video/@poster', '//figure[contains(@itemprop, "associatedMedia")]/a/@href' ] for xpath in xpaths: for poster in detailsPageElements.xpath(xpath): art.append(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, headers={'Referer': 'http://www.google.com'}) im = StringIO(image.content) resized_image = Image.open(im) width, height = resized_image.size # Add the image proxy items to the collection if width < height: # Item is a poster metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx) else: # Item is an art item metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx) except: pass return metadata
def update(metadata, siteID, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteID) + sceneURL sceneDate = metadata_id[2] scenePoster = metadata_id[3] if len(metadata_id) > 3 else None req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//h4')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath( '//p[@class="hide-for-small-only"]')[0].text_content().strip() # Studio metadata.studio = 'Full P**n Network' # Tagline and Collection(s) metadata.collections.clear() for seriesName in [ metadata.studio, PAsearchSites.getSearchSiteName(siteID) ]: metadata.collections.add(seriesName) # Release Date if sceneDate: date_object = parse(sceneDate) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath( '//div[@class="small-12"]//a[contains(@href, "/category/")]/text()' ): genreName = genreLink.strip() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() for actorLink in detailsPageElements.xpath( '//div[@class="small-12"]//a[contains(@href, "/model/")]/@href'): req = PAutils.HTTPRequest( PAsearchSites.getSearchBaseURL(siteID) + actorLink) actorPage = HTML.ElementFromString(req.text) actorName = actorPage.xpath('//h1')[0].text_content().strip() actorPhotoURL = actorPage.xpath('//img[@alt="%s"]/@src' % actorName)[0] movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] if scenePoster: art.append(scenePoster) 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, headers={'Referer': 'http://www.google.com'}) 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: # Item is a poster metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx) if width > 100: # Item is an art item metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx) except: pass return metadata
def update(metadata, siteID, movieGenres, movieActors): metadata_id = metadata.id.split('|') sceneURL = PAsearchSites.getSearchBaseURL( siteID) + '/video/' + metadata_id[0] scenePoster = metadata_id[2] req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//div[@class="trailerArea"]/h3')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath( '//div[@class="trailerContent"]/p')[0].text_content().strip() # Studio metadata.studio = 'Meana Wolf' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteID).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = detailsPageElements.xpath( '//div[@class="videoContent"]/ul/li[2]')[0].text_content().replace( 'ADDED:', '').strip() if date: date_object = datetime.strptime(date, '%B %d, %Y') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieActors.clearActors() movieGenres.clearGenres() for genreLink in detailsPageElements.xpath( '//div[@class="videoContent"]/ul/li[position()=last()]/a'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) # Actors for actorLink in detailsPageElements.xpath( '//div[@class="videoContent"]/ul/li[3]/a'): actorName = actorLink.text_content().strip() actorPhotoURL = '' try: actorPageURL = actorLink.get('href') req = PAutils.HTTPRequest(actorPageURL) actorPage = HTML.ElementFromString(req.text) actorPhotoURL = actorPage.xpath( '//div[@class="modelBioPic"]/img/@src0_3x')[0] if 'http' not in actorPhotoURL: actorPhotoURL = PAsearchSites.getSearchBaseURL( siteID) + actorPhotoURL except: pass movieActors.addActor(actorName, actorPhotoURL) # Posters art = [scenePoster] 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, headers={'Referer': 'http://www.google.com'}) 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: # Item is a poster metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx) if width > 100: # Item is an art item metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx) except: pass return metadata
def update(metadata, siteID, movieGenres, movieActors): Log('******UPDATE CALLED*******') metadata.studio = 'Stepped Up Media' url = str(metadata.id).split("|")[0].replace('_', '/').replace('!', '?') detailsPageElements = HTML.ElementFromURL(url) art = [] # Summary metadata.summary = detailsPageElements.xpath( '//div[contains(@class,"desc")]')[0].text_content().strip() tagline = PAsearchSites.getSearchSiteName(siteID) metadata.collections.clear() metadata.tagline = tagline metadata.collections.add(tagline) metadata.title = detailsPageElements.xpath( '//h1[@class="title"] | //h2[@class="title"]')[0].text_content().strip( ) # Genres movieGenres.clearGenres() movieGenres.addGenre('hardcore') movieGenres.addGenre('heterosexual') if tagline == "Swallowed": movieGenres.addGenre('b*****b') movieGenres.addGenre('cum swallow') elif tagline == "TrueAnal" or "AllAnal": movieGenres.addGenre('anal') movieGenres.addGenre('gaping') elif tagline == "Nympho": movieGenres.addGenre('nympho') # Actors movieActors.clearActors() actors = detailsPageElements.xpath('(//h4[@class="models"])[1]//a') if len(actors) > 0: if len(actors) == 3: movieGenres.addGenre("Threesome") if len(actors) == 4: movieGenres.addGenre("Foursome") if len(actors) > 4: movieGenres.addGenre("Orgy") for actorLink in actors: actorName = str(actorLink.text_content().strip()) actorPageURL = actorLink.get("href") actorPage = HTML.ElementFromURL(actorPageURL) actorPhotoURL = actorPage.xpath( '//div[contains(@class,"model")]/img')[0].get("src") movieActors.addActor(actorName, actorPhotoURL) movieActors.addActor('Mike Adriano', 'https://imgs1cdn.adultempire.com/actors/470003.jpg') # Release Date date = detailsPageElements.xpath('//span[contains(@class,"date")]') if len(date) > 0: date = date[0].text_content().strip() date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year #Posters try: art.append( detailsPageElements.xpath('//div[@id="trailer-player"]')[0].get( 'data-screencap')) except: art.append( detailsPageElements.xpath('//video[@id="ypp-player"]')[0].get( 'poster')) for poster in actorPage.xpath('//a[@href="' + url + '"]//img'): art.append(poster.get('src')) for poster in actorPage.xpath( '//div[@class="thumb-mouseover"] | //div[@class="thumb-bottom"] | //div[@class="thumb-top"]' ): theStyle = poster.get('style') alpha = theStyle.find('http') omega = theStyle.find(');', alpha) art.append(theStyle[alpha:omega].strip()) j = 1 Log("Artwork found: " + str(len(art))) for posterUrl in art: if not PAsearchSites.posterAlreadyExists(posterUrl, metadata): #Download image file for analysis try: img_file = urllib.urlopen(posterUrl) im = StringIO(img_file.read()) resized_image = Image.open(im) width, height = resized_image.size #Add the image proxy items to the collection if (width > 1): # Item is a poster metadata.posters[posterUrl] = Proxy.Preview(HTTP.Request( posterUrl, headers={ 'Referer': 'http://www.google.com' }).content, sort_order=j) if (width > 100): # Item is an art item metadata.art[posterUrl] = Proxy.Preview(HTTP.Request( posterUrl, headers={ 'Referer': 'http://www.google.com' }).content, sort_order=j) j = j + 1 except: pass return metadata
def update(metadata, lang, siteNum, movieGenres, movieActors, art): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//h1[@class="description"]')[0].text_content().strip() # Summary try: metadata.summary = detailsPageElements.xpath( '//div[@class="synopsis"]/p')[0].text_content().strip() except: pass # Studio metadata.studio = 'Elegant Angel' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = detailsPageElements.xpath( '//div[@class="release-date"]')[0].text_content().replace( 'Released:', '').strip() if date: date_object = datetime.strptime(date, '%b %d, %Y') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath('//div[@class="categories"]/a'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() for actorLink in detailsPageElements.xpath( '//div[@class="scene-cast-list"]/a | //div[@class="video-performer"]/a' ): actorName = actorLink.text_content().strip() actorPhotoURL = '' actorPageURL = PAsearchSites.getSearchBaseURL(siteNum) + actorLink.get( 'href') req = PAutils.HTTPRequest(actorPageURL) actorPage = HTML.ElementFromString(req.text) img = actorPage.xpath('//div[@class="container-fluid px-0"]//img/@src') if img: actorPhotoURL = img[0] if 'http' not in actorPhotoURL: actorPhotoURL = PAsearchSites.getSearchBaseURL( siteNum) + actorPhotoURL movieActors.addActor(actorName, actorPhotoURL) # Director director = metadata.directors.new() try: directors = detailsPageElements.xpath('//div[@class="director"]/a') for dirname in directors: director.name = dirname.text_content().strip() except: pass # Posters xpaths = ['//div[@class="carousel-item active"]/img/@data-src'] for xpath in xpaths: for img in detailsPageElements.xpath(xpath): art.append(img) # Scene photos page try: photoPageUrl = PAsearchSites.getSearchBaseURL( siteNum) + detailsPageElements.xpath( '//div[@class="user-actions"]/a[2]')[0].get('href') req = PAutils.HTTPRequest(photoPageUrl) photoPage = HTML.ElementFromString(req.text) unlockedPhotos = photoPage.xpath( '//div[@class="item-grid item-grid-gallery"]//img/@data-src') for unlockedPhoto in unlockedPhotos: if 'http' not in unlockedPhoto: art.append( PAsearchSites.getSearchBaseURL(siteNum) + unlockedPhoto) else: art.append(unlockedPhoto) except: photos = detailsPageElements.xpath( '//div[@class="item-grid item-grid-scene"]//img[@class="img-full-fluid"]/@data-src' ) for photoLink in photos: art.append(photoLink) 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
def update(metadata, lang, siteNum, movieGenres, movieActors): metadata_id = metadata.id.split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//h2[@class="section-title"]')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath( '//div[@class="update-info-block"]')[1].text_content().replace( 'Description:', '', 1).strip() # Studio metadata.studio = 'Interracial Pass' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = detailsPageElements.xpath( '//div[@class="update-info-row"]')[0].text_content().replace( 'Released:', '', 1).strip() if date: date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath('//ul[@class="tags"]//li//a'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() for actorLink in detailsPageElements.xpath( '//div[contains(@class, "models-list-thumbs")]//li'): actorName = actorLink.xpath('.//span/text()')[0] actorPhotoURL = actorLink.xpath('.//img//@src0_3x')[0] if not actorPhotoURL.startswith('http'): actorPhotoURL = PAsearchSites.getSearchBaseURL( siteNum) + actorPhotoURL movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] xpaths = ['//div[@class="player-thumb"]//img/@src0_1x'] for xpath in xpaths: for img in detailsPageElements.xpath(xpath): if not img.startswith('http'): img = PAsearchSites.getSearchBaseURL(siteNum) + img art.append(img) 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: # Item is a poster metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx) if width > 100: # Item is an art item metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx) except: pass return metadata
def update(metadata, lang, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL scenePoster = PAutils.Decode(metadata_id[2]) req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//h1[@class="title"]')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath( '//p[@class="description-truncated"]')[0].text_content().strip( ).replace('...', '', 1) # Studio metadata.studio = 'Playboy Plus' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = detailsPageElements.xpath( '//p[contains(@class, "date")]')[0].text_content().strip() date_object = datetime.strptime(date, '%B %d, %Y') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() movieGenres.addGenre('Glamour') # Actors movieActors.clearActors() for actorLink in detailsPageElements.xpath( '//p[@class="contributorName"]//a'): actorName = actorLink.text_content().strip() actorPhotoURL = '' movieActors.addActor(actorName, '') # Photos art = [ scenePoster, detailsPageElements.xpath('//img[contains(@class, "image")]/@data-src') [0].split('?', 1)[0] ] for img in detailsPageElements.xpath( '//section[@class="gallery"]//img[contains(@class, "image")]/@data-src' ): art.append(img.split('?', 1)[0]) 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) and width < height: # 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
def update(metadata, siteID, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteID) + sceneURL sceneDate = metadata_id[2] req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Studio metadata.studio = PAsearchSites.getSearchSiteName(siteID) # Title metadata.title = detailsPageElements.xpath( '//div[@class="col-xs-12 video-title"]//h3')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath( '//div[@class="col-sm-6 col-md-6 vidpage-info"]/text()')[4].strip() # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteID).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Release Date if sceneDate: date_object = parse(sceneDate) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath( '//div[@class="videopage-tags"]/a'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() for actorLink in detailsPageElements.xpath( '//div[@class="col-xs-6 col-sm-4 col-md-3"]'): actorName = actorLink.xpath( './/div[@class="vidpage-mobilePad"]//a//strong/text()')[0].strip() actorPhotoURL = '' try: actorPhotoURL = actorLink.xpath( './/img[@class="img-responsive imgHover"]/@src')[0] except: pass movieActors.addActor(actorName, actorPhotoURL) # Photos art = [] try: posterURL = detailsPageElements.xpath( '//div[@class="col-xs-12 col-sm-6 col-md-6 vidCover"]//img/@src' )[0] art.append(posterURL) except: pass for photo in detailsPageElements.xpath( '//div[@class="vid-flex-container"]//span'): photoLink = photo.xpath('.//img/@src')[0].replace('_thumb', '') art.append(photoLink) 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, headers={'Referer': 'http://www.google.com'}) 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
def search(results,encodedTitle,title,searchTitle,siteNum,lang,searchByDateActor,searchDate, searchSiteID): if searchSiteID != 9999: siteNum = searchSiteID searchResults = HTML.ElementFromURL(PAsearchSites.getSearchSearchURL(siteNum) + encodedTitle) for searchResult in searchResults.xpath('//div[@class="item-video hover"]'): titleNoFormatting = searchResult.xpath('./div[1]/a')[0].get('title').strip() curID = "http:" + searchResult.xpath('./div[1]/a')[0].get('href').replace('/','_').replace('?','!') score = 100 - Util.LevenshteinDistance(searchTitle.lower(), titleNoFormatting.lower()) results.Append(MetadataSearchResult(id = curID + "|" + str(siteNum), name = titleNoFormatting + PAsearchSites.getSearchSiteName(siteNum), score = score, lang = lang)) return results
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneID = metadata_id[0] sceneType = metadata_id[2] token = get_Token(siteNum) headers = { 'Instance': token, } url = PAsearchSites.getSearchSearchURL( siteNum) + '/v2/releases?type=%s&id=%s' % (sceneType, sceneID) req = PAutils.HTTPRequest(url, headers=headers) detailsPageElements = req.json()['result'][0] # Title metadata.title = detailsPageElements['title'] # Summary description = None if 'description' in detailsPageElements: description = detailsPageElements['description'] elif 'parent' in detailsPageElements: if 'description' in detailsPageElements['parent']: description = detailsPageElements['parent']['description'] if description: metadata.summary = description # Studio metadata.studio = detailsPageElements['brand'].title() # Tagline and Collection(s) metadata.collections.clear() seriesNames = [] if 'collections' in detailsPageElements and detailsPageElements[ 'collections']: for collection in detailsPageElements['collections']: seriesNames.append(collection['name']) if 'parent' in detailsPageElements: if 'title' in detailsPageElements['parent']: seriesNames.append(detailsPageElements['parent']['title']) isInCollection = False siteName = PAsearchSites.getSearchSiteName(siteNum).lower().replace( ' ', '').replace('\'', '') for seriesName in seriesNames: if seriesName.lower().replace(' ', '').replace('\'', '') == siteName: isInCollection = True break if not isInCollection: seriesNames.insert(0, PAsearchSites.getSearchSiteName(siteNum)) for seriesName in seriesNames: metadata.collections.add(seriesName) # Release Date date_object = parse(detailsPageElements['dateReleased']) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() genres = detailsPageElements['tags'] for genreLink in genres: genreName = genreLink['name'] movieGenres.addGenre(genreName) # Actors movieActors.clearActors() actors = detailsPageElements['actors'] for actorLink in actors: actorPageURL = PAsearchSites.getSearchSearchURL( siteNum) + '/v1/actors?id=%d' % actorLink['id'] req = PAutils.HTTPRequest(actorPageURL, headers=headers) actorData = req.json()['result'][0] actorName = actorData['name'] actorPhotoURL = '' if actorData['images'] and actorData['images']['profile']: actorPhotoURL = actorData['images']['profile'][0]['xs']['url'] movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] for imageType in ['poster', 'cover']: if imageType in detailsPageElements['images']: for image in detailsPageElements['images'][imageType]: art.append(image['xx']['url']) 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: # 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
def update(metadata,siteID,movieGenres,movieActors): Log('******UPDATE CALLED*******') url = str(metadata.id).split("|")[0].replace('_','/').replace('!','?') detailsPageElements = HTML.ElementFromURL(url) art = [] metadata.collections.clear() movieGenres.clearGenres() movieActors.clearActors() # Studio metadata.studio = 'BellaPass' # Title metadata.title = detailsPageElements.xpath('//div[@class="videoDetails clear"]/h3')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath('//div[@class="videoDetails clear"]/p')[0].text_content().strip() #Tagline and Collection(s) tagline = PAsearchSites.getSearchSiteName(siteID) metadata.tagline = tagline metadata.collections.add(tagline) # Genres genres = detailsPageElements.xpath('//div[@class="inner-area clear"]/div[5]/ul/li') if len(genres) > 0: for genreLink in genres: genreName = genreLink.text_content().replace('Tags:','').lower() movieGenres.addGenre(genreName) # Actors actors = detailsPageElements.xpath('//div[@class="inner-area clear"]/div[4]/ul/li') if len(actors) > 0: if len(actors) == 3: movieGenres.addGenre("Threesome") if len(actors) == 4: movieGenres.addGenre("Foursome") if len(actors) > 4: movieGenres.addGenre("Orgy") for actorLink in actors: actorName = str(actorLink.text_content().replace('Featuring:','').strip()) try: actorPageURL = PAsearchSites.getSearchBaseURL(siteID) + actorLink.get("href") actorPage = HTML.ElementFromURL(actorPageURL) actorPhotoURL = PAsearchSites.getSearchBaseURL(siteID) + actorPage.xpath('//div[@class="profile-pic"]/img')[0].get("src0_3x") except: actorPhotoURL = '' movieActors.addActor(actorName,actorPhotoURL) # Release Date date = detailsPageElements.xpath('//div[@class="videoInfo clear"]/p')[0].text_content().replace('Date Added:','').strip() date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Artwork # Video background setID = detailsPageElements.xpath('//img[@class="update_thumb thumbs stdimage"]')[0].get('id') try: art.append(PAsearchSites.getSearchBaseURL(siteID) + detailsPageElements.xpath('//img[@class="update_thumb thumbs stdimage"]')[0].get('src0_3x')) except: pass # Search Page try: Log('searchPageElements: ' + PAsearchSites.getSearchSearchURL(siteID) + metadata.title.replace(' ','+')) searchPageElements = HTML.ElementFromURL(PAsearchSites.getSearchSearchURL(siteID) + metadata.title.replace(' ','+')) cnt = int(searchPageElements.xpath('//img[@id="'+setID+'"]')[0].get('cnt')) for i in range(cnt): Log('i: ' + str(i)) Log('art.append: '+PAsearchSites.getSearchBaseURL(siteID) + searchPageElements.xpath('//img[@id="'+setID+'"]')[0].get('src'+str(i)+'_3x')) art.append(PAsearchSites.getSearchBaseURL(siteID) + searchPageElements.xpath('//img[@id="'+setID+'"]')[0].get('src'+str(i)+'_3x')) except: pass # Photo page try: photoPageElements = HTML.ElementFromURL(url.replace('/trailers/','/preview/')) for image in photoPageElements.xpath('//img[@id="'+setID+'"]'): art.append(PAsearchSites.getSearchBaseURL(siteID) + image.get('src0_3x')) except: pass j = 1 Log("Artwork found: " + str(len(art))) for posterUrl in art: if not PAsearchSites.posterAlreadyExists(posterUrl,metadata): #Download image file for analysis try: img_file = urllib.urlopen(posterUrl) im = StringIO(img_file.read()) resized_image = Image.open(im) width, height = resized_image.size #Add the image proxy items to the collection if(width > 1): # Item is a poster metadata.posters[posterUrl] = Proxy.Preview(HTTP.Request(posterUrl, headers={'Referer': 'http://www.google.com'}).content, sort_order = j) if(width > 100): # Item is an art item metadata.art[posterUrl] = Proxy.Preview(HTTP.Request(posterUrl, headers={'Referer': 'http://www.google.com'}).content, sort_order = j) j = j + 1 except: pass return metadata
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title try: metadata.title = detailsPageElements.xpath( '//a[@class="title"]')[0].text_content().strip() except: metadata.title = detailsPageElements.xpath( '//meta[@property="og:title"]')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath( '//div[@class="entry_content"]/p')[0].text_content().strip() # Studio metadata.studio = 'MomPOV' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum) metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = detailsPageElements.xpath( '//div[@class="date_holder"]')[0].text_content().strip() if date: date_object = datetime.strptime(date, '%b %Y %d') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() movieGenres.addGenre('MILF') # Actors movieActors.clearActors() # Posters art = [] xpaths = ['//div[@id="inner_content"]/div[1]/a/img/@src'] for xpath in xpaths: for poster in detailsPageElements.xpath(xpath): art.append(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, headers={'Referer': 'http://www.google.com'}) 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 and 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
def update(metadata, lang, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//h1')[0].text_content().strip() # Summary description = detailsPageElements.xpath( '//div[@data-id="description" and @class="hidden"]') if description: metadata.summary = description[0].text_content().strip().replace( 'Read less', '') # Studio metadata.studio = 'DarkRoomVR' # Tagline and Collection metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum) metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = (detailsPageElements.xpath('//div[@class="video-info__time"]') [0].text_content().strip()).split(' • ')[1] if date: date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath('//div/a[@class="tags__item"]'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() for actorLink in detailsPageElements.xpath( '//div[@class="video-info__text"]/a'): actorName = actorLink.text_content().strip() actorPageURL = actorLink.get('href') req = PAutils.HTTPRequest(actorPageURL) actorPage = HTML.ElementFromString(req.text) actorPhotoURL = actorPage.xpath( '//img[contains(@class, "pornstar-detail__picture")]/@src')[0] movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] xpaths = ['//div[@class="video-detail__gallery-item"]/a/@href'] for xpath in xpaths: for img in detailsPageElements.xpath(xpath): art.append(img) # Get More Posters # imagestring = (detailsPageElements.xpath('//div[@class="video-detail__gallery-item"]/a/@href')[0]).split('img_')[0] # for i in range(100): # img = imagestring+'img_'+str(i).rjust(3, '0')+'.jpg' # art.append(img) 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
def update(metadata, lang, siteNum, movieGenres, movieActors, art): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//div[@class="fltWrap"]/h1/span')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath( '//p[@class="description"]')[0].text_content().replace( 'Description:', '').strip() # Studio metadata.studio = 'ClubFilly' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum) metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = detailsPageElements.xpath( '//div[@class="fltRight"]')[0].text_content().replace( 'Release Date :', '').strip() if date: date_object = datetime.strptime(date, '%Y-%m-%d') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() movieGenres.addGenre('Lesbian') # Actors movieActors.clearActors() actorText = detailsPageElements.xpath( '//p[@class="starring"]')[0].text_content().replace('Starring:', '').strip() actors = actorText.split(',') if len(actors) > 0: if len(actors) == 3: movieGenres.addGenre('Threesome') if len(actors) == 4: movieGenres.addGenre('Foursome') if len(actors) > 4: movieGenres.addGenre('Orgy') for actorLink in actors: actorName = actorLink.strip() actorPhotoURL = '' movieActors.addActor(actorName, actorPhotoURL) # Posters xpaths = ['//ul[@id="lstSceneFocus"]/li/img/@src'] for xpath in xpaths: for img in detailsPageElements.xpath(xpath): art.append(img) 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
def search(results, encodedTitle, searchTitle, siteNum, lang, searchDate): directURL = searchTitle.replace(' ', '-').lower() if '/' not in directURL: directURL = directURL.replace('-', '/', 1) shootID = directURL.split('/', 2)[0] if not unicode(shootID, 'UTF-8').isdigit(): shootID = None directURL = directURL.replace('/', '-', 1) else: directURL = directURL.split('/')[1] directURL = PAsearchSites.getSearchSearchURL(siteNum) + directURL searchResultsURLs = [directURL] googleResults = PAutils.getFromGoogleSearch(searchTitle, siteNum) for sceneURL in googleResults: sceneURL = sceneURL.rsplit('?', 1)[0] if sceneURL not in searchResultsURLs: if ('/movies/' in sceneURL): searchResultsURLs.append(sceneURL) for sceneURL in searchResultsURLs: detailsPageElements = getJSONfromPage(sceneURL) if detailsPageElements: contentName = None for name in ['moviesContent', 'videosContent']: if name in detailsPageElements and detailsPageElements[name]: contentName = name break if contentName: detailsPageElements = detailsPageElements[contentName] curID = detailsPageElements.keys()[0] detailsPageElements = detailsPageElements[curID] titleNoFormatting = detailsPageElements['title'] if 'site' in detailsPageElements: subSite = detailsPageElements['site']['name'] else: subSite = PAsearchSites.getSearchSiteName(siteNum) if 'publishedDate' in detailsPageElements: releaseDate = parse( detailsPageElements['publishedDate']).strftime( '%Y-%m-%d') else: releaseDate = parse(searchDate).strftime( '%Y-%m-%d') if searchDate else '' displayDate = releaseDate if 'publishedDate' in detailsPageElements else '' if searchDate and displayDate: score = 100 - Util.LevenshteinDistance( searchDate, releaseDate) else: score = 100 - Util.LevenshteinDistance( searchTitle.lower(), titleNoFormatting.lower()) results.Append( MetadataSearchResult( id='%s|%d|%s|%s' % (curID, siteNum, releaseDate, contentName), name='%s [Mylf/%s] %s' % (titleNoFormatting, subSite, displayDate), score=score, lang=lang)) return results
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) art = [] # Title metadata.title = detailsPageElements.xpath( '//section[@class="downloads"]/strong')[0].text_content().strip() # Summary all_summary = detailsPageElements.xpath( '//div/section[4]/div')[0].text_content().strip() tags_summary = detailsPageElements.xpath( '//div/section[4]/div/p')[0].text_content().strip() summary = all_summary.replace(tags_summary, '') summary = summary.split('Show more...')[0].strip() metadata.summary = summary # Studio metadata.studio = 'VIPissy' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = detailsPageElements.xpath( '//div/section[2]/dl/dd[2]')[0].text_content().strip() if date: date_object = datetime.strptime(date, '%b %d, %Y') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath('//div/section[4]/div/p/a'): genreName = genreLink.text_content().strip().lower() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() actors = detailsPageElements.xpath('//div/section[2]/dl/dd[1]/a') if actors: if len(actors) == 3: movieGenres.addGenre('Threesome') if len(actors) == 4: movieGenres.addGenre('Foursome') if len(actors) > 4: movieGenres.addGenre('Orgy') for actorLink in actors: actorName = actorLink.text_content().strip() actorPhotoURL = '' try: actorPageURL = actorLink.get('href') if 'http' not in actorPageURL: actorPageURL = PAsearchSites.getSearchBaseURL( siteNum) + actorPageURL req = PAutils.HTTPRequest(actorPageURL) actorPage = HTML.ElementFromString(req.text) actorPhotoURL = actorPage.xpath( '//div/section[1]/div/div[1]/img/@src')[0] if 'http' not in actorPhotoURL: actorPhotoURL = PAsearchSites.getSearchBaseURL( siteNum) + actorPhotoURL except: pass movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] xpaths = [ '//div[contains(@id, "pics2")]//div//ul//li//div//div//img/@src', ] for xpath in xpaths: for poster in detailsPageElements.xpath(xpath): art.append(poster) try: twitterBG = 'https://media.vipissy.com/videos%scover/l.jpg' % sceneURL.split( '/updates')[1] art.imsert(0, twitterBG) except: pass 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
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneName = metadata_id[0] releaseDate = metadata_id[2] contentName = metadata_id[3] detailsPageElements = getJSONfromPage( PAsearchSites.getSearchSearchURL(siteNum) + sceneName)[contentName][sceneName] # Title metadata.title = detailsPageElements['title'] # Summary metadata.summary = detailsPageElements['description'] # Studio metadata.studio = 'Mylf' # Tagline and Collection(s) metadata.collections.clear() if 'site' in detailsPageElements: subSite = detailsPageElements['site']['name'] else: subSite = PAsearchSites.getSearchSiteName(siteNum) metadata.tagline = subSite metadata.collections.add(subSite) # Release Date if releaseDate: date_object = parse(releaseDate) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Actors movieActors.clearActors() actors = detailsPageElements['models'] for actorLink in actors: actorID = actorLink['modelId'] actorName = actorLink['modelName'] actorPhotoURL = '' actorData = getJSONfromPage( '%s/models/%s' % (PAsearchSites.getSearchBaseURL(siteNum), actorID)) if actorData: actorPhotoURL = actorData['modelsContent'][actorID]['img'] movieActors.addActor(actorName, actorPhotoURL) # Genres movieGenres.clearGenres() genres = ["MILF", "Mature"] if subSite.lower() == 'MylfBoss'.lower(): for genreName in ['Office', 'Boss']: movieGenres.addGenre(genreName) elif subSite.lower() == 'MylfBlows'.lower(): for genreName in ['B*****b']: movieGenres.addGenre(genreName) elif subSite.lower() == 'Milfty'.lower(): for genreName in ['Cheating']: movieGenres.addGenre(genreName) elif subSite.lower() == 'Mom Drips'.lower(): for genreName in ['Creampie']: movieGenres.addGenre(genreName) elif subSite.lower() == 'Milf Body'.lower(): for genreName in ['Gym', 'Fitness']: movieGenres.addGenre(genreName) elif subSite.lower() == 'Lone Milf'.lower(): for genreName in ['Solo']: movieGenres.addGenre(genreName) elif subSite.lower() == 'Full Of JOI'.lower(): for genreName in ['JOI']: movieGenres.addGenre(genreName) elif subSite.lower() == 'Mylfed'.lower(): for genreName in ['Lesbian', 'Girl on Girl', 'GG']: movieGenres.addGenre(genreName) elif subSite.lower() == 'MylfDom'.lower(): for genreName in ['BDSM']: movieGenres.addGenre(genreName) if (len(actors) > 1) and subSite != 'Mylfed': genres.append('Threesome') for genre in genres: movieGenres.addGenre(genre) # Posters art = [detailsPageElements['img']] 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: # 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
def update(metadata, siteID, movieGenres, movieActors): Log('******UPDATE CALLED*******') url = str(metadata.id).split("|")[0].replace('_', '/').replace('?', '!') detailsPageElements = HTML.ElementFromURL(url) art = [] metadata.collections.clear() movieGenres.clearGenres() movieActors.clearActors() # Studio metadata.studio = 'VixenX' # Title metadata.title = detailsPageElements.xpath( '//h1[@class="wxt7nk-4 fSsARZ"]')[0].text_content().strip() # Summary try: metadata.summary = detailsPageElements.xpath( '//div[@class="tjb798-2 flgKJM"]/span[2]/div[2]')[0].text_content( ).strip() except: pass #Tagline and Collection(s) tagline = PAsearchSites.getSearchSiteName(siteID).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Genres genres = detailsPageElements.xpath( '//div[@class="tjb798-2 flgKJM"]/span[1]/a') if len(genres) > 0: for genreLink in genres: genreName = genreLink.text_content().replace(',', '').strip().lower() movieGenres.addGenre(genreName) # Release Date if metadata.summary: date = detailsPageElements.xpath( '//div[@class="tjb798-2 flgKJM"]/span[3]') else: date = detailsPageElements.xpath( '//div[@class="tjb798-2 flgKJM"]/span[2]') if len(date) > 0: date = date[0].text_content().strip().replace('Release Date:', '') date_object = datetime.strptime(date, '%B %d, %Y') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Actors try: actors = detailsPageElements.xpath('//a[@class="wxt7nk-6 czvZQW"]') if len(actors) > 0: if len(actors) == 3: movieGenres.addGenre("Threesome") if len(actors) == 4: movieGenres.addGenre("Foursome") if len(actors) > 4: movieGenres.addGenre("Orgy") if len(actors) > 0: for actorLink in actors: actorName = str(actorLink.text_content().strip()) actorPhotoURL = '' movieActors.addActor(actorName, actorPhotoURL) except: pass ### Posters and artwork ### # Video trailer background image try: twitterBG = detailsPageElements.xpath( '//div[@class="tg5e7m-2 evtSOm"]/img')[0].get('src') art.append(twitterBG) except: pass j = 1 Log("Artwork found: " + str(len(art))) for posterUrl in art: if not PAsearchSites.posterAlreadyExists(posterUrl, metadata): #Download image file for analysis try: img_file = urllib.urlopen(posterUrl) im = StringIO(img_file.read()) 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.Preview(HTTP.Request( posterUrl, headers={ 'Referer': 'http://www.google.com' }).content, sort_order=j) if width > 100 and width > height: # Item is an art item metadata.art[posterUrl] = Proxy.Preview(HTTP.Request( posterUrl, headers={ 'Referer': 'http://www.google.com' }).content, sort_order=j) j = j + 1 except: pass return metadata
def update(metadata, lang, siteNum, movieGenres, movieActors): metadata_id = metadata.id.split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) metadata.directors.clear() director = metadata.directors.new() if siteNum == 278 or (siteNum >= 285 and siteNum <= 287) or siteNum == 843: metadata.studio = 'XEmpire' director.name = 'Mason' elif siteNum == 329 or (siteNum >= 351 and siteNum <= 354) or siteNum == 861: metadata.studio = 'Blowpass' elif siteNum == 331 or (siteNum >= 355 and siteNum <= 360) or siteNum == 750: metadata.studio = 'Fantasy Massage' elif (siteNum >= 365 and siteNum <= 372) or siteNum == 466 or siteNum == 690: metadata.studio = '21Sextury' elif siteNum == 183 or (siteNum >= 373 and siteNum <= 374): metadata.studio = '21Naturals' elif siteNum >= 383 and siteNum <= 386: metadata.studio = 'Fame Digital' elif siteNum >= 387 and siteNum <= 392: metadata.studio = 'Open Life Network' elif siteNum == 281: metadata.studio = 'Pure Taboo' elif siteNum == 381: metadata.studio = 'Burning Angel' elif siteNum == 382: metadata.studio = 'Pretty Dirty' elif siteNum >= 460 and siteNum <= 466: metadata.studio = '21Sextreme' art = [] # Summary try: paragraph = detailsPageElements.xpath( '//meta[@name="twitter:description"]/@content')[0].strip() except: paragraph = '' if not paragraph: try: paragraph = detailsPageElements.xpath( '//div[@class="sceneDesc bioToRight showMore"]' )[0].text_content().strip() paragraph = paragraph[20:] except: try: paragraph = detailsPageElements.xpath( '//div[@class="sceneDescText"]')[0].text_content().strip() except: try: paragraph = detailsPageElements.xpath( '//p[@class="descriptionText"]')[0].text_content( ).strip() except: paragraph = '' metadata.summary = paragraph.replace('</br>', '\n').replace('<br>', '\n').replace( '<br/>', '\n').strip() metadata.collections.clear() # Tagline try: tagline = detailsPageElements.xpath( '//div[@class="studioLink"]')[0].text_content().strip() except: tagline = PAsearchSites.getSearchSiteName(siteNum) metadata.tagline = tagline metadata.collections.add(tagline) # Title DVD try: dvdTitle = detailsPageElements.xpath( '//a[contains(@class, "dvdLink")][1]/@title')[0].strip() metadata.collections.add(dvdTitle.replace('#0', '').replace('#', '')) except: try: dvdTitleScript = detailsPageElements.xpath( '//script[contains(text(), "dvdName")]')[0].text_content() alpha = dvdTitleScript.find('"dvdName"') + 11 omega = dvdTitleScript.find('"', alpha) dvdTitle = dvdTitleScript[alpha:omega] if dvdTitle: metadata.collections.add( dvdTitle.replace('#0', '').replace('#', '')) except: try: dvdTitle = detailsPageElements.xpath( '//h1[@class="sceneTitle"]')[0].text_content().strip() dvdTitle = dvdTitle.replace('BONUS-', '').replace('BONUS - ', '') dvdTitle = dvdTitle.replace('BONUS', '') dvdTitle = dvdTitle.replace('BTS-', '').replace('BTS - ', '') dvdTitle = dvdTitle.replace('BTS', '') metadata.collections.add( dvdTitle.replace('#0', '').replace('#', '')) except: dvdTitle = 'This is some damn nonsense that should never match the scene title' # Director try: directors = detailsPageElements.xpath( '//div[@class="sceneCol sceneColDirectors"]//a | //ul[@class="directedBy"]/li/a' ) for dirname in directors: director.name = dirname.text_content().strip() except: pass # Genres movieGenres.clearGenres() genres = detailsPageElements.xpath( '//div[@class="sceneCol sceneColCategories"]//a | //div[@class="sceneCategories"]//a | //p[@class="dvdCol"]/a' ) for genreLink in genres: genreName = genreLink.text_content().strip('\n').lower() movieGenres.addGenre(genreName) # Release Date try: date = detailsPageElements.xpath( '//*[@class="updatedDate"]')[0].text_content().replace('|', '').strip() if date: date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year except: try: date = detailsPageElements.xpath( '//*[@class="updatedOn"]')[0].text_content().strip() date = date[8:].strip() if date: date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year except: try: datePublished = detailsPageElements.xpath( '//script[contains(text(), "datePublished")]' )[0].text_content() alpha = datePublished.find('"datePublished"') + 17 omega = datePublished.find('"', alpha) date = datePublished[alpha:omega] if date: date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year except: pass # Actors movieActors.clearActors() actors = detailsPageElements.xpath( '//div[@class="sceneCol sceneColActors"]//a | //div[@class="sceneCol sceneActors"]//a | //div[@class="pornstarNameBox"]/a[@class="pornstarName"] | //div[@id="slick_DVDInfoActorCarousel"]//a | //div[@id="slick_sceneInfoPlayerActorCarousel"]//a' ) if metadata.title == 'Kennedy Leigh' and metadata.tagline == 'Only Teen Blowjobs': movieActors.addActor( 'Kennedy Leigh', 'https://imgs1cdn.adultempire.com/actors/649607h.jpg') if not actors: # Try pulling the mobile site try: req = PAutils.HTTPRequest( url.replace('www', 'm'), headers={ 'User-Agent': 'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' }) mobilePageElements = HTML.ElementFromString(req.text) actors = mobilePageElements.xpath( '//a[@class="pornstarName"] | //a[@class="pornstarImageLink"]') except: pass if actors: for actorLink in actors: actorName = actorLink.text_content().strip() actorPhotoURL = '' actorPageURL = actorLink.get('href') req = PAutils.HTTPRequest( PAsearchSites.getSearchBaseURL(siteNum) + actorPageURL) actorPage = HTML.ElementFromString(req.text) actorPhotoURL = actorPage.xpath( '//img[@class="actorPicture"]/@src | //span[@class="removeAvatarParent"]/img/@src' )[0] movieActors.addActor(actorName, actorPhotoURL) else: try: dataLayer = detailsPageElements.xpath( '//script[contains(text(), "dataLayer")]')[0].text_content() alpha = dataLayer.find('"sceneActors"') + 14 omega = dataLayer.find(']', alpha) sceneActors = dataLayer[alpha:omega] i = 1 while i <= int(sceneActors.count('actorId')): alpha = sceneActors.find('"actorId"', omega) + 11 omega = sceneActors.find('"', alpha) actorId = sceneActors[alpha:omega] alpha = sceneActors.find('"actorName"', omega) + 13 omega = sceneActors.find('"', alpha) actorName = sceneActors[alpha:omega] # Search for the actor to get their page (then photo) or hardcode the URL pattern if feeling frisky actorPageURL = '/en/pornstar/' + actorName.replace( ' ', '-') + '/' + actorId req = PAutils.HTTPRequest( (PAsearchSites.getSearchBaseURL(siteNum) + actorPageURL)) actorPage = HTML.ElementFromString(req.text) actorPhotoURL = actorPage.xpath( '//img[@class="actorPicture"]/@src | //span[@class="removeAvatarParent"]/img/@src' )[0] movieActors.addActor(actorName, actorPhotoURL) i += 1 except: pass # Title try: title = detailsPageElements.xpath( '//meta[@name="twitter:title"]/@content')[0].strip() except: try: # Title DVD title = detailsPageElements.xpath( '//h3[@class="dvdTitle"]')[0].text_content().strip() except: try: # Title Scene title = detailsPageElements.xpath( '//h1[@class="sceneTitle"]')[0].text_content().strip() except: try: title = detailsPageElements.xpath( '//h1')[0].text_content().strip() except: title = 'I couldn\'t find the title, please report this on github: https://github.com/PAhelper/PhoenixAdult.bundle/issues' if 'Scene #' in detailsPageElements.xpath( '//title')[0].text_content().strip() and "Scene #" not in title: pageTitle = detailsPageElements.xpath( '//title')[0].text_content().strip() alpha = pageTitle.find('Scene') + 6 omega = pageTitle.find(' ', alpha) title = '%s - Scene %s' % (title, pageTitle[alpha:omega].strip()).replace( '#0', '').replace('#', '') if 'BONUS' in title or 'BTS' in title: if actors: actorTitle = ' - ' for actorLink in actors: actorName = actorLink.text_content().strip() if 'Rocco Siffredi' not in actorName and 'Peter North' not in actorName: actorTitle = actorTitle + actorName + ', ' title = title + actorTitle title = title.strip() title = title.strip(',') title = title.replace('BONUS-', 'BONUS - ').replace('BTS-', 'BTS - ') metadata.title = title # Posters # Video trailer background image try: twitterBG = detailsPageElements.xpath( '//meta[@name="twitter:image"]/@content')[0] art.append(twitterBG) except: pass try: picScript = detailsPageElements.xpath( '//script[contains(text(), "picPreview")]')[0].text_content() alpha = picScript.find('"picPreview":"') + 14 omega = picScript.find('"', alpha) art.append(picScript[alpha:omega].replace('\\', '')) except: pass try: sceneImg = detailsPageElements.xpath( '//img[@class="sceneImage"]/@src')[0] art.append(sceneImg) except: pass # Scene photos page try: photoPageUrl = PAsearchSites.getSearchBaseURL( siteNum ) + detailsPageElements.xpath( '//a[@class="controlButton GA_Track GA_Track_Action_Pictures GA_Track_Category_Player GA GA_Click GA_Id_ScenePlayer_Pictures"]' )[0].get('href') req = PAutils.HTTPRequest(photoPageUrl) photoPage = HTML.ElementFromString(req.text) unlockedPhotoImg = photoPage.xpath( '//div[@class="previewImage"]/img/@src')[0] art.append(unlockedPhotoImg) unlockedPhotos = photoPage.xpath( '//a[@class="imgLink"]/@href | //a[@class="imgLink pgUnlocked"]/@href' ) for unlockedPhoto in unlockedPhotos: art.append(unlockedPhoto) except: photoPageUrl = sceneURL # DVD Covers if '/movie/' in sceneURL: try: dvdFrontCover = detailsPageElements.xpath( '//a[@class="frontCoverImg"]/@href')[0] art.append(dvdFrontCover) dvdBackCover = detailsPageElements.xpath( '//a[@class="backCoverImg"]/@href')[0] art.append(dvdBackCover) except: pass # DVD scene images try: sceneImgs = detailsPageElements.xpath( '//img[@class="tlcImageItem img"]/@src') for sceneImg in sceneImgs: art.append(sceneImg) except: pass try: sceneImgs = detailsPageElements.xpath( '//img[@class="img lazy"]/@data-original') for sceneImg in sceneImgs: art.append(sceneImg) except: pass 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: # Item is a poster metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx) if width > 100: # Item is an art item metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx) except: pass return metadata
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL sceneDate = metadata_id[2] req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//div/section[1]/div[2]/h2/span')[0].text_content().strip() # Summary all_summary = detailsPageElements.xpath( '//div/section[3]/div[2]')[0].text_content().strip() tags_summary = detailsPageElements.xpath( '//div/section[3]/div[2]/p')[0].text_content().strip() summary = all_summary.replace(tags_summary, '') summary = summary.split('Show more...')[0].strip() metadata.summary = summary # Studio metadata.studio = 'Puffy Network' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum) metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = detailsPageElements.xpath( '//div/section[2]/dl/dt[2]')[0].text_content().replace( 'Released on:', '') if not date and sceneDate: date = sceneDate if date: date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath('//div/section[3]/div[2]/p/a'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() actors = detailsPageElements.xpath('//div/section[2]/dl/dd[1]/a') if actors: if len(actors) == 3: movieGenres.addGenre('Threesome') if len(actors) == 4: movieGenres.addGenre('Foursome') if len(actors) > 4: movieGenres.addGenre('Orgy') for actorLink in actors: actorName = actorLink.text_content().strip() actorPhotoURL = '' actorPageURL = actorLink.get('href') if 'http' not in actorPageURL: actorPageURL = PAsearchSites.getSearchBaseURL( siteNum) + actorPageURL req = PAutils.HTTPRequest(actorPageURL) actorPage = HTML.ElementFromString(req.text) actorPhotoNode = actorPage.xpath( '//div/section[1]/div/div[1]/img/@src') if actorPhotoNode: actorPhotoURL = actorPhotoNode[0] if 'http' not in actorPhotoURL: actorPhotoURL = PAsearchSites.getSearchBaseURL( siteNum) + actorPhotoURL movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] twitterBG = None cover = sceneURL.split('-video-')[1] if 'Wet and Pissy' in tagline: twitterBG = 'https://media.wetandpissy.com/videos/video-' + cover + 'cover/hd.jpg' elif 'We Like To Suck' in tagline: twitterBG = 'https://media.weliketosuck.com/videos/video-' + cover + 'cover/hd.jpg' elif 'Wet and Puffy' in tagline: twitterBG = 'https://media.wetandpuffy.com/videos/video-' + cover + 'cover/hd.jpg' elif 'Simply Anal' in tagline: twitterBG = 'https://media.simplyanal.com/videos/video-' + cover + 'cover/hd.jpg' elif 'Euro Babe Facials' in tagline: twitterBG = 'https://media.eurobabefacials.com/videos/video-' + cover + 'cover/hd.jpg' if twitterBG: art.append(twitterBG) xpaths = ['//div[contains(@id, "pics")]//@src'] for xpath in xpaths: for poster in detailsPageElements.xpath(xpath): art.append(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
def search(results, lang, siteNum, searchData): networkscene = True networkscenepages = True networkdvd = True directmatch = False network_sep_scene_prev = '' network_sep_scene = '' network_sep_scene_pages_prev = '' network_sep_scene_pages = '/' network_sep_scene_pages_next = '' network_sep_dvd_prev = '' network_sep_dvd = '/1/dvd' if siteNum == 278 or (siteNum >= 285 and siteNum <= 287) or siteNum == 843: network = 'XEmpire' network_sep_scene_prev = 'scene/' network_sep_scene_pages_prev = 'scene/' network_sep_dvd_prev = 'dvd/' network_sep_dvd = '/1' elif siteNum == 329 or (siteNum >= 351 and siteNum <= 354) or siteNum == 861: network = 'Blowpass' networkdvd = False elif siteNum == 330 or (siteNum >= 355 and siteNum <= 360) or siteNum == 750: network = 'Fantasy Massage' networkdvd = False network_sep_scene = '/scene' network_sep_scene_pages = '/scene/' elif (siteNum >= 365 and siteNum <= 372) or siteNum == 466 or siteNum == 692: network = '21Sextury' networkdvd = False elif siteNum == 183 or (siteNum >= 373 and siteNum <= 374): network = '21Naturals' networkdvd = False network_sep_scene = '/scene' network_sep_scene_pages = '/scene/' elif siteNum >= 383 and siteNum <= 386: network = 'Fame Digital' if siteNum == 383: networkdvd = False network_sep_scene = '/scene' network_sep_scene_pages = '/scene/' network_sep_dvd = '/dvd' if siteNum == 386: networkscene = False networkscenepages = False networkdvd = False elif siteNum >= 387 and siteNum <= 392: network = 'Open Life Network' networkdvd = False elif siteNum == 281: network = 'Pure Taboo' networkdvd = False network_sep_scene = '/scene' network_sep_scene_pages = '/scene/' elif siteNum == 381: network = 'Burning Angel' networkdvd = False network_sep_scene = '/scene' network_sep_scene_pages = '/scene/' elif siteNum == 382: network = 'Pretty Dirty' networkdvd = False network_sep_scene = '/scene' network_sep_scene_pages = '/scene/' elif siteNum >= 460 and siteNum <= 465: network = '21Sextreme' networkdvd = False network_sep_scene = '/scene' network_sep_scene_pages = '/scene/' if network == PAsearchSites.getSearchSiteName(siteNum): network = '' else: network = network if networkscene: # Result to check resultfirst = [] # Result next page resultsecond = [] # searchResults = HTML.ElementFromURL(PAsearchSites.getSearchSearchURL(siteNum) + searchData.encoded + "?query=" + searchData.encoded) searchData.encoded = searchData.encoded.replace('%27', '').replace( '%3F', '').replace('%2C', '') # Remove troublesome punctuation (, . ?) req = PAutils.HTTPRequest( PAsearchSites.getSearchSearchURL(siteNum) + network_sep_scene_prev + searchData.encoded + network_sep_scene) searchResults = HTML.ElementFromString(req.text) for searchResult in searchResults.xpath('//div[@class="tlcDetails"]'): titleNoFormatting = searchResult.xpath( './/a[1]')[0].text_content().strip() titleNoFormatting = titleNoFormatting.replace('BONUS-', 'BONUS - ') titleNoFormatting = titleNoFormatting.replace('BTS-', 'BTS - ') curID = PAutils.Encode(searchResult.xpath('.//a[1]/@href')[0]) resultfirst.append(curID) try: actorLink = searchResult.xpath('.//div[@class="tlcActors"]/a') actor = ' - ' if 'BONUS' in titleNoFormatting or 'BTS' in titleNoFormatting: for actorText in actorLink: actorName = actorText.text_content().strip() if 'Rocco Siffredi' not in actorName and 'Peter North' not in actorName: actor = actor + actorName + ', ' else: actor = actor + actorLink[0].text_content().strip() actor = actor.strip() actor = actor.strip(',') actor = ' ' + actor except: actor = '' try: releaseDate = parse( searchResult.xpath( './/div[@class="tlcSpecs"]/span[@class="tlcSpecsDate"]/span[@class="tlcDetailsValue"]' )[0].text_content().strip()).strftime('%Y-%m-%d') except: try: req = PAutils.HTTPRequest( PAsearchSites.getSearchBaseURL(siteNum) + searchResult.xpath('.//a[1]')[0].get('href')) detailsPageElements = HTML.ElementFromString(req.text) releaseDate = parse( detailsPageElements.xpath('//*[@class="updatedDate"]') [0].text_content().strip()).strftime('%Y-%m-%d') except: releaseDate = '' if searchData.date and releaseDate: 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 [%s/%s] %s' % (titleNoFormatting, actor, network, PAsearchSites.getSearchSiteName(siteNum), releaseDate), score=score, lang=lang)) if networkscenepages: # Other pages i = 2 while i < 3: pagenum = i req = PAutils.HTTPRequest( PAsearchSites.getSearchSearchURL(siteNum) + network_sep_scene_pages_prev + searchData.encoded + network_sep_scene_pages + str(pagenum) + network_sep_scene_pages_next) searchResultsSec = HTML.ElementFromString(req.text) i += 1 searchResultSec = searchResultsSec.xpath( '//div[@class="tlcDetails"]') if searchResultSec: titleText = searchResultSec[0].xpath('.//a[1]/@href')[0] resultSEARCH = PAutils.Encode(titleText) for resultCheck in resultfirst: if resultCheck == resultSEARCH: i = 100 break for searchResultSec in searchResultsSec.xpath( '//div[@class="tlcDetails"]'): titleText = searchResultSec.xpath('.//a[1]')[0] titleNoFormatting = titleText.text_content().strip() titleNoFormatting = titleNoFormatting.replace( 'BONUS-', 'BONUS - ') titleNoFormatting = titleNoFormatting.replace( 'BTS-', 'BTS - ') curID = PAutils.Encode(titleText.get('href')) resultsecond.append(curID) try: actorLink = searchResultSec.xpath( './/div[@class="tlcActors"]/a') actor = ' - ' if 'BONUS' in titleNoFormatting or 'BTS' in titleNoFormatting: for actorText in actorLink: actorName = actorText.text_content().strip( ) if 'Rocco Siffredi' not in actorName and 'Peter North' not in actorName: actor = actor + actorName + ', ' else: actor = actor + actorLink[0].text_content( ).strip() actor = actor.strip() actor = actor.strip(',') actor = ' ' + actor except: actor = '' try: releaseDate = parse( searchResultSec.xpath( './/div[@class="tlcSpecs"]/span[@class="tlcSpecsDate"]/span[@class="tlcDetailsValue"]' )[0].text_content().strip()).strftime( '%Y-%m-%d') except: try: req = PAutils.HTTPRequest( PAsearchSites.getSearchBaseURL(siteNum) + searchResultSec.xpath('.//a[1]/@href')[0]) detailsPageElements = HTML.ElementFromString( req.text) releaseDate = parse( detailsPageElements.xpath( '//*[@class="updatedDate"]') [0].text_content().strip()).strftime( '%Y-%m-%d') except: releaseDate = '' if searchData.date and releaseDate: 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 [%s/%s] %s' % (titleNoFormatting, actor, network, PAsearchSites.getSearchSiteName(siteNum), releaseDate), score=score, lang=lang)) resultfirst = resultsecond resultsecond = [] else: i = 100 if directmatch: # Result to check resultfirst = [] searchString = searchData.encoded.replace('%20', '-').lower() # searchResults = HTML.ElementFromURL(PAsearchSites.getSearchSearchURL(siteNum) + searchData.encoded + "?query=" + searchData.encoded) req = PAutils.HTTPRequest( PAsearchSites.getSearchSearchURL(siteNum) + searchString) searchResults = HTML.ElementFromString(req.text) for searchResult in searchResults.xpath('//div[@id="infoWrapper"]'): titleNoFormatting = searchResult.xpath( './/h1[1]')[0].text_content().strip() titleNoFormatting = titleNoFormatting.replace('BONUS-', 'BONUS - ') titleNoFormatting = titleNoFormatting.replace('BTS-', 'BTS - ') curID = PAutils.Encode( PAsearchSites.getSearchSearchURL(siteNum) + searchString) resultfirst.append(curID) try: releaseDate = (searchResult.xpath('//li[@class="updatedDate"]') [0].text_content().strip()).strftime('%Y-%m-%d') except: releaseDate = '' if searchData.date and releaseDate: 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/%s] %s' % (titleNoFormatting, network, PAsearchSites.getSearchSiteName(siteNum), releaseDate), score=score, lang=lang)) if networkdvd: try: req = PAutils.HTTPRequest( PAsearchSites.getSearchSearchURL(siteNum) + network_sep_dvd_prev + searchData.encoded + network_sep_dvd) dvdResults = HTML.ElementFromString(req.text) for dvdResult in dvdResults.xpath( '//div[contains(@class, "tlcItem playlistable_dvds")] | //div[@class="tlcDetails"]' ): titleNoFormatting = dvdResult.xpath( './/div[@class="tlcTitle"]/a/@title')[0].strip() curID = PAutils.Encode(dvdResult.xpath('.//a/@href')[0]) try: releaseDate = parse( dvdResult.xpath( './/div[@class="tlcSpecs"]/span[@class="tlcSpecsDate"]/span[@class="tlcDetailsValue"]' )[0].text_content().strip()) except: try: req = PAutils.HTTPRequest( PAsearchSites.getSearchBaseURL(siteNum) + dvdResult.xpath('.//a[1]/@href')[0]) detailsPageElements = HTML.ElementFromString(req.text) releaseDate = parse( detailsPageElements.xpath( '//*[@class="updatedDate"]') [0].text_content().strip()) except: releaseDate = '' score = 100 - Util.LevenshteinDistance( searchData.title.lower(), titleNoFormatting.lower()) results.Append( MetadataSearchResult( id='%s|%d' % (curID, siteNum), name='%s (%s) - Full Movie [%s]' % (titleNoFormatting, releaseDate.strftime('%Y'), PAsearchSites.getSearchSiteName(siteNum)), score=score, lang=lang)) except: pass return results
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = '%s/membersarea/%s' % (PAsearchSites.getSearchBaseURL(siteNum), PAutils.Decode(metadata_id[0])) sceneDate = metadata_id[2] req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//title')[0].text_content().split('-')[0].strip() # Studio metadata.studio = 'FuelVirtual' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Release Date if sceneDate: date_object = parse(sceneDate) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath( '//td[@class="plaintext"]/a[@class="model_category_link"]'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) movieGenres.addGenre('18-Year-Old') # Actors movieActors.clearActors() actors = detailsPageElements.xpath( '//div[@id="description"]//td[@align="left"]/a') if actors: if len(actors) == 3: movieGenres.addGenre('Threesome') if len(actors) == 4: movieGenres.addGenre('Foursome') if len(actors) > 4: movieGenres.addGenre('Orgy') for actorLink in actors: actorName = actorLink.text_content().strip() actorPhotoURL = '' movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] xpaths = ['//a[@class="jqModal"]/img/@src'] for xpath in xpaths: for img in detailsPageElements.xpath(xpath): img = PAsearchSites.getSearchBaseURL(siteNum) + img art.append(img) photoPageUrl = sceneURL.replace('vids', 'highres') req = PAutils.HTTPRequest(photoPageUrl) photoPage = HTML.ElementFromString(req.text) for img in photoPage.xpath('//a[@class="jqModal"]/img/@src'): img = PAsearchSites.getSearchBaseURL(siteNum) + img art.append(img) 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
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL sceneDate = metadata_id[2] req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) photosetPageElements = '' if sceneURL.endswith('-2/'): photosetURL = sceneURL.replace('-2/', '/') req = PAutils.HTTPRequest(photosetURL) photosetPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//meta[@property="og:title"]/@content')[0].strip() # Summary if photosetPageElements: description = photosetPageElements.xpath( '//div[@class="video-embed"]/p') if description: metadata.summary = description[0].text_content().replace( '<a href="/allfinegirls">18OnlyGirls</a>', '').strip() # Studio metadata.studio = '18OnlyGirls' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Release Date if sceneDate: date_object = parse(sceneDate) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath( '//div[@itemprop="keywords"]//a'): genreName = genreLink.text_content().replace('Movies', '').strip() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() actors = detailsPageElements.xpath('//div[@itemprop="actor"]//a') if actors: if len(actors) == 3: movieGenres.addGenre('Threesome') if len(actors) == 4: movieGenres.addGenre('Foursome') if len(actors) > 4: movieGenres.addGenre('Orgy') for actorLink in actors: actorName = str(actorLink.text_content().strip()) actorPhotoURL = '' actorPageURL = 'https://18onlygirls.tv/models/' + actorName.replace( ' ', '-') req = PAutils.HTTPRequest(actorPageURL) try: actorPage = HTML.ElementFromString(req.text) actorPhotoURL = actorPage.xpath( '//div[@id="mod_info"]/img/@src')[0] if 'http' not in actorPhotoURL: actorPhotoURL = PAsearchSites.getSearchBaseURL( siteNum) + actorPhotoURL except: pass movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] xpaths = [ '//div[contains(@id, "gallery")]//@href', ] for xpath in xpaths: for poster in detailsPageElements.xpath(xpath): art.append(poster) if photosetPageElements: for xpath in xpaths: for poster in photosetPageElements.xpath(xpath): art.append(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, headers={'Referer': sceneURL}) im = StringIO(image.content) resized_image = Image.open(im) width, height = resized_image.size # Add the image proxy items to the collection if width < height: # Item is a poster metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx) if width > height: # Item is an art item metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx) except: pass return metadata
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + "/" + sceneURL posterUri = PAutils.Decode(metadata_id[2]) req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) movieGenres.clearGenres() movieActors.clearActors() # Title metadata.title = detailsPageElements.xpath( '//h1[@class="video-detail-name"]')[0].text_content().strip() # Summary rawSummary = detailsPageElements.xpath( '//p[@itemprop="description"]')[0].text_content().replace( '…', '').replace('Read more', '') metadata.summary = ' '.join(rawSummary.split()) # Studio metadata.studio = PAsearchSites.getSearchSiteName(siteNum) # Tagline and Collection(s) metadata.collections.clear() metadata.tagline = metadata.studio metadata.collections.add(metadata.studio) # Release Date date = detailsPageElements.xpath( '//span[@class="videoClip__Details-infoValue"]')[0].text_content( ).strip() if date: date_object = parse(date) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres for genreLink in detailsPageElements.xpath( '//span[@itemprop="keywords"]/a'): genreName = genreLink.text_content().strip().lower() movieGenres.addGenre(genreName) # Actors actors = detailsPageElements.xpath('//span[@itemprop="actors"]/a') for actorLink in detailsPageElements.xpath('//span[@itemprop="actors"]/a'): actorName = actorLink.text_content().strip() actorPhotoURL = '' try: actorPageURL = actorLink.get('href') req = PAutils.HTTPRequest(actorPageURL) actorPage = HTML.ElementFromString(req.text) actorPhotoLinks = actorPage.xpath( '//img[@class="girlDetails-posterImage"]/@srcset')[0] actorPhotoURL = actorPhotoLinks.split(',')[1][:-3].replace( 'https', 'http') except: pass movieActors.addActor(actorName, actorPhotoURL) # Photos art = [] for photo in detailsPageElements.xpath( '//img[contains(@class, "videoClip__Details--galleryItem")]/data-big' ): photoURLs = photo.split(',') photoURL = photoURLs[len(photoURLs) - 1][:-6].replace('https', 'http') art.append(photoURL) 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: # Item is a poster metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx) if width > 100: # Item is an art item metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx) except: pass return metadata
def update(metadata, lang, siteNum, movieGenres, movieActors, art): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) posterURL = PAutils.Decode(metadata_id[4]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Studio metadata.studio = 'Pornstar Platinum' # Title metadata.title = PAutils.Decode(metadata_id[2]).strip() # Summary metadata.summary = detailsPageElements.xpath( '//div[@class="panel-content"]/p')[0].text_content().strip() # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath('//div[@class="tagcloud"]/a'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) # Release Date date_object = parse(PAutils.Decode(metadata_id[3])) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Actors movieActors.clearActors() actorName = PAutils.Decode(metadata_id[5]) actorPhotoURL = '' movieActors.addActor(actorName, actorPhotoURL) # Posters if posterURL: art.append(posterURL) 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
def search(results, encodedTitle, searchTitle, siteNum, lang, searchDate): searchResultsURLs = [] googleResults = PAutils.getFromGoogleSearch(searchTitle, siteNum) for sceneURL in googleResults: if sceneURL not in searchResultsURLs: url = None if '/scene/' in sceneURL: url = sceneURL else: for item in ['/trailers/', '/updates/']: if item in sceneURL: url = sceneURL.replace(item, '/1/scene/').replace( '.html', '/') break if url and url not in searchResultsURLs: searchResultsURLs.append(url) for url in searchResultsURLs: req = PAutils.HTTPRequest(url) detailsPageElements = HTML.ElementFromString(req.text) curID = PAutils.Encode(url) titleNoFormatting = detailsPageElements.xpath( '//h4')[0].text_content().strip() releaseDate = parse(searchDate).strftime( '%Y-%m-%d') if searchDate else '' score = 100 - Util.LevenshteinDistance(searchTitle.lower(), titleNoFormatting.lower()) results.Append( MetadataSearchResult( id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [FPN/%s] %s' % (titleNoFormatting, PAsearchSites.getSearchSiteName(siteNum), releaseDate), score=score, lang=lang)) encodedTitle = searchTitle.replace(' ', '_') req = PAutils.HTTPRequest( PAsearchSites.getSearchSearchURL(siteNum) + encodedTitle) searchResults = HTML.ElementFromString(req.text) for searchResult in searchResults.xpath( '//div[contains(@class, "section-updates")]'): curID = PAutils.Encode(searchResult.xpath('.//a/@href')[0]) titleNoFormatting = searchResult.xpath( './/div[contains(@class, "scene-info")]//a')[0].text_content( ).strip() poster = searchResult.xpath('.//img/@src')[0] releaseDate = parse(searchDate).strftime( '%Y-%m-%d') if searchDate else '' score = 100 - Util.LevenshteinDistance(searchTitle.lower(), titleNoFormatting.lower()) results.Append( MetadataSearchResult( id='%s|%d|%s|%s' % (curID, siteNum, releaseDate, poster), name='%s [FPN/%s] %s' % (titleNoFormatting, PAsearchSites.getSearchSiteName(siteNum), releaseDate), score=score, lang=lang)) return results
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//h1[@class="title--3"]')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath( '//div[2]/div[2]/div[1]/div[2]/div[1]/div[1]/p')[0].text_content( ).strip() # Studio metadata.studio = 'SinX' # Tagline and Collection(s) metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum).strip() metadata.tagline = tagline metadata.collections.add(tagline) # Release Date date = detailsPageElements.xpath( '//div[2]/div[1]/div[3]/div[1]/ul/li[1]')[0].text_content().strip() if date: date_object = datetime.strptime(date, '%d %b %Y') metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres movieGenres.clearGenres() for genreLink in detailsPageElements.xpath('//div/section[4]/div/p/a'): genreName = genreLink.text_content().strip() movieGenres.addGenre(genreName) # Actors movieActors.clearActors() actors = detailsPageElements.xpath( '//div[2]/div[2]/div[1]/div[2]/div[1]/div[2]/div/figure/figcaption/h4') if actors: if len(actors) == 3: movieGenres.addGenre('Threesome') if len(actors) == 4: movieGenres.addGenre('Foursome') if len(actors) > 4: movieGenres.addGenre('Orgy') for actorLink in actors: actorName = actorLink.text_content().strip() actorPhotoURL = '' if len(actors) == 1: actorPhotoURL = detailsPageElements.xpath( '//div[2]/div[2]/div[1]/div[2]/div[1]/div[2]/div/figure/div/img/@src' )[0] movieActors.addActor(actorName, actorPhotoURL) # Posters art = [] xpaths = ['//div[2]/div[1]/div[1]/a/div[1]/img/@src'] for xpath in xpaths: for poster in detailsPageElements.xpath(xpath): art.append(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: # Item is a poster metadata.posters[posterUrl] = Proxy.Media(image.content, sort_order=idx) if width > 100 and idx > 1: # Item is an art item metadata.art[posterUrl] = Proxy.Media(image.content, sort_order=idx) except: pass return metadata
def update(metadata, lang, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneURL = PAutils.Decode(metadata_id[0]) if not sceneURL.startswith('http'): sceneURL = PAsearchSites.getSearchBaseURL(siteNum) + sceneURL sceneDate = metadata_id[2] req = PAutils.HTTPRequest(sceneURL) detailsPageElements = HTML.ElementFromString(req.text) # Title metadata.title = detailsPageElements.xpath( '//h1')[0].text_content().strip() # Summary metadata.summary = detailsPageElements.xpath( '//div[@class="description"]//p')[0].text_content().strip() # Studio metadata.studio = PAsearchSites.getSearchSiteName(siteNum) # Collections / Tagline metadata.collections.clear() tagline = PAsearchSites.getSearchSiteName(siteNum) metadata.tagline = tagline if Prefs['collections_addsitename']: metadata.collections.add(tagline) # Genres genres = detailsPageElements.xpath('//dd[2]') for genreLink in detailsPageElements.xpath('//dd[2]'): genreName = genreLink.text_content().strip().lower() movieGenres.addGenre(genreName) # Release Date if sceneDate: date_object = parse(sceneDate) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Actors movieActors.clearActors() actors = detailsPageElements.xpath('//dd[1]') for actorLink in actors: actorName = actorLink.xpath('.//a[1]')[0].text_content().strip() actorPhotoURL = actorLink.xpath('.//a[2]//img/@src')[0] movieActors.addActor(actorName, actorPhotoURL) try: actorName = actorLink.xpath('.//a[3]')[0].text_content().strip() actorPhotoURL = actorLink.xpath('.//a[4]//img/@src')[0] movieActors.addActor(actorName, actorPhotoURL) except: pass # Director metadata.directors.clear() director = metadata.directors.new() director.name = 'Charles Dera' # Posters art = [] req = PAutils.HTTPRequest(detailsPageElements.xpath('//dd[1]//a/@href')[0]) posters = HTML.ElementFromString(req.text) for poster in posters.xpath('//a[contains(@href, "%s")]//img/@src' % sceneURL): art.append(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
def update(metadata, siteNum, movieGenres, movieActors): metadata_id = str(metadata.id).split('|') sceneName = metadata_id[0] sceneDate = metadata_id[2] sceneType = metadata_id[3] dbURL = getDBURL(PAsearchSites.getSearchBaseURL(siteNum)) detailsPageElements = getDataFromAPI(dbURL, sceneType, sceneName, siteNum) # Title metadata.title = PAutils.parseTitle(detailsPageElements['title'], siteNum) # Summary metadata.summary = detailsPageElements['description'] # Studio metadata.studio = 'TeamSkeet' # Collections / Tagline siteName = detailsPageElements['site'][ 'name'] if 'site' in detailsPageElements else PAsearchSites.getSearchSiteName( siteNum) metadata.collections.clear() metadata.tagline = siteName metadata.collections.add(siteName) # Release Date if sceneDate: date_object = parse(sceneDate) metadata.originally_available_at = date_object metadata.year = metadata.originally_available_at.year # Genres if 'tags' in detailsPageElements and detailsPageElements['tags']: for genreLink in detailsPageElements['tags']: genreName = genreLink.strip() movieGenres.addGenre(genreName) if siteName == 'Sis Loves Me': movieGenres.addGenre('Step Sister') elif siteName == 'DadCrush' or siteName == 'DaughterSwap': movieGenres.addGenre('Step Dad') movieGenres.addGenre('Step Daughter') elif siteName == 'PervMom': movieGenres.addGenre('Step Mom') elif siteName == 'Family Strokes': movieGenres.addGenre('Taboo Family') elif siteName == 'Foster Tapes': movieGenres.addGenre('Taboo Sex') elif siteName == 'BFFs': movieGenres.addGenre('Teen') movieGenres.addGenre('Group Sex') elif siteName == 'Shoplyfter': movieGenres.addGenre('Strip') elif siteName == 'ShoplyfterMylf': movieGenres.addGenre('Strip') movieGenres.addGenre('MILF') elif siteName == 'Exxxtra Small': movieGenres.addGenre('Teen') movieGenres.addGenre('Small T**s') elif siteName == 'Little Asians': movieGenres.addGenre('Asian') movieGenres.addGenre('Teen') elif siteName == 'TeenJoi': movieGenres.addGenre('Teen') movieGenres.addGenre('JOI') elif siteName == 'Black Valley Girls': movieGenres.addGenre('Teen') movieGenres.addGenre('Ebony') elif siteName == 'Thickumz': movieGenres.addGenre('Thick') elif siteName == 'Dyked': movieGenres.addGenre('Hardcore') movieGenres.addGenre('Teen') movieGenres.addGenre('Lesbian') elif siteName == 'Teens Love Black Cocks': movieGenres.addGenre('Teens') movieGenres.addGenre('BBC') elif siteName == 'Teen Curves': movieGenres.addGenre('Big Ass') elif siteName == 'Titty Attack': movieGenres.addGenre('Big T**s') elif siteName == 'Teeny Black': movieGenres.addGenre('Teen') movieGenres.addGenre('Ebony') elif siteName == 'Teens Do P**n': movieGenres.addGenre('Teen') elif siteName == 'Teen Pies': movieGenres.addGenre('Teen') movieGenres.addGenre('Creampie') elif siteName == 'POV Life': movieGenres.addGenre('POV') elif siteName == 'Ginger Patch': movieGenres.addGenre('Redhead') elif siteName == 'Innocent High': movieGenres.addGenre('School Girl') elif siteName == 'Oye Loca': movieGenres.addGenre('Latina') # Actors movieActors.clearActors() actors = detailsPageElements['models'] for actorLink in actors: actorData = getDataFromAPI(dbURL, 'modelscontent', actorLink['modelId'], siteNum) if actorData: actorName = actorData['name'] actorPhotoURL = actorData['img'] movieActors.addActor(actorName, actorPhotoURL) # Posters art = [detailsPageElements['img']] 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: # 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