Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Bellesa/Rework Bellesa to New Site #1877

Merged
merged 1 commit into from
Jan 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions Contents/Code/PAsiteList.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@
import siteSexSelector
import siteXevUnleashed
import networkPKJMedia
import networkBellesa

searchSites = {
0: ('BlackedRaw', 'https://www.blackedraw.com', '/graphql'),
Expand Down Expand Up @@ -990,7 +991,7 @@
796: ('Moms On Moms', 'https://www.girlsway.com', '/en/video/1/1/'),
797: ('We Like Girls', 'https://www.girlsway.com', '/en/video/1/1/'),
798: ('Lil Humpers', 'https://www.realitykings.com', 'https://site-api.project1service.com'),
799: ('Bellesa Films', 'https://www.bellesafilms.com', 'https://site-api.project1service.com'),
799: ('Bellesa Films', 'https://bellesaplus.co', 'https://bellesaplus.co/api/rest/v1'),
800: ('ClubSweethearts', 'https://adultprime.com', '/studios/search?type='),
801: (),
802: ('Family Sinners', 'https://www.familysinners.com', 'https://site-api.project1service.com'),
Expand Down Expand Up @@ -1067,7 +1068,7 @@
873: ('SubmissiveX', 'http://www.kink.com', '/search?channelIds=submissivex&q='),
874: ('Filthy Femdom', 'http://www.kink.com', '/search?channelIds=filthyfemdom&q='),
875: ('Anal Mom', 'https://analmom.com', '/movies/'),
876: ('Bellesa House', 'https://www.bellesafilms.com', 'https://site-api.project1service.com'),
876: ('Bellesa House', 'https://bellesaplus.co', 'https://bellesaplus.co/api/rest/v1'),
877: ('Reality Lovers', 'https://realitylovers.com', '/videos/search'),
878: ('Adult Time', 'https://adulttime.com', 'https://tsmkfa364q-dsn.algolia.net/1/indexes/*/queries'),
879: ('RealJamVR', 'https://realjamvr.com', '/scene/'),
Expand Down Expand Up @@ -2673,9 +2674,9 @@ def getProviderFromSiteNum(siteNum):
elif siteNum == 798:
provider = network1service

# Bellesa Films
# Bellesa
elif siteNum == 799 or siteNum == 876:
provider = network1service
provider = networkBellesa

# Adult Prime
elif siteNum == 800 or (1601 <= siteNum <= 1672) or siteNum == 1749:
Expand Down
136 changes: 136 additions & 0 deletions Contents/Code/networkBellesa.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
import PAsearchSites
import PAutils


def getJSONfromAPI(type, query, siteNum):
url = '%s/%s?%s' % (PAsearchSites.getSearchSearchURL(siteNum), type, query)
headers = {
'Content-Type': 'application/json',
'Referer': PAsearchSites.getSearchBaseURL(siteNum)
}
req = PAutils.HTTPRequest(url, headers=headers)
result = HTML.ElementFromString(req.text)

return json.loads(result.xpath('//body')[0].text_content())


def search(results, lang, siteNum, searchData):
sceneID = None
parts = searchData.title.split()
if unicode(parts[0], 'UTF-8').isdigit():
sceneID = parts[0]
searchData.title = searchData.title.replace(sceneID, '', 1).strip()

if sceneID:
scenePageElements = getJSONfromAPI('videos', 'filter[id]=%s' % sceneID, siteNum)[0]

titleNoFormatting = PAutils.parseTitle(scenePageElements['title'], siteNum)
curID = sceneID
subSite = scenePageElements['content_provider'][0]['name']

date = scenePageElements['posted_on']
if date:
releaseDate = datetime.fromtimestamp(date).strftime('%Y-%m-%d')
else:
releaseDate = searchData.dateFormat() if searchData.date else ''
displayDate = releaseDate if date else ''

if searchData.date:
score = 100 - Util.LevenshteinDistance(searchData.date, releaseDate)
else:
score = 100 - Util.LevenshteinDistance(searchData.title.lower(), titleNoFormatting.lower())

results.Append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [Bellesa/%s] %s' % (titleNoFormatting, subSite, displayDate), score=score, lang=lang))
else:
searchResults = getJSONfromAPI('search', 'limit=40&order[relevance]=DESC&q=%s&providers=bellesa' % searchData.title.replace(' ', '%20'), siteNum)

for searchResult in searchResults['videos']:
titleNoFormatting = PAutils.parseTitle(searchResult['title'], siteNum)
curID = searchResult['id']

date = searchResult['posted_on']
if date:
releaseDate = datetime.fromtimestamp(date).strftime('%Y-%m-%d')
else:
releaseDate = searchData.dateFormat() if searchData.date else ''
displayDate = releaseDate if date else ''

if searchData.date:
score = 100 - Util.LevenshteinDistance(searchData.date, releaseDate)
else:
score = 100 - Util.LevenshteinDistance(searchData.title.lower(), titleNoFormatting.lower())

results.Append(MetadataSearchResult(id='%s|%d|%s' % (curID, siteNum, releaseDate), name='%s [Bellesa] %s' % (titleNoFormatting, displayDate), score=score, lang=lang))

return results


def update(metadata, lang, siteNum, movieGenres, movieActors, art):
metadata_id = metadata.id.split('|')
sceneDate = metadata_id[2]
sceneID = metadata_id[0]

detailsPageElements = getJSONfromAPI('videos', 'filter[id]=%s' % sceneID, siteNum)[0]

# Title
metadata.title = PAutils.parseTitle(detailsPageElements['title'], siteNum)

# Summary
metadata.summary = detailsPageElements['description']

# Studio
metadata.studio = 'Bellesa'

# Tagline and Collection(s)
tagline = detailsPageElements['content_provider'][0]['name']
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
genres = detailsPageElements['tags'].split(',')
for genreLink in genres:
genreName = genreLink.strip()

movieGenres.addGenre(genreName)

# Actor(s)
actors = detailsPageElements['performers']

for actor in actors:
actorName = actor['name']
actorPhotoURL = ''

if actor['image']:
actorPhotoURL = actor['image']

movieActors.addActor(actorName, actorPhotoURL)

# Posters
art.append(detailsPageElements['image'])

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
5 changes: 3 additions & 2 deletions docs/sitelist.md
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,9 @@ If you're having difficulty finding the SceneID, double-check [PAsiteList.py](..
- MonroeLee
- See Him Fuck
- TaliaShepard
+ #### Bellesa | ✅ - **Flaresolverr Required**
- Bellesa Films
- Bellesa House
+ #### Black PayBack | ✓
+ #### Black Valley Girls | ❌ - **SceneID**
+ #### Blowpass | ✅
Expand Down Expand Up @@ -792,8 +795,6 @@ If you're having difficulty finding the SceneID, double-check [PAsiteList.py](..
- SweetheartVideo
- SweetSinner
+ #### MileHighNetwork Other Sites | ✅
- BellesaFilms
- BellesaHouse
- Dilfed
- FamilySinners
- Gilfed
Expand Down
Loading