From 13a5912b8c7f5448a4f8c7f4d1a144ff78aa44b1 Mon Sep 17 00:00:00 2001 From: macr0dev Date: Sun, 14 Oct 2018 16:40:34 -0500 Subject: [PATCH 1/3] Update __init__.py --- Contents/Code/__init__.py | 119 +++++++++++++++++++++++++++++--------- 1 file changed, 91 insertions(+), 28 deletions(-) diff --git a/Contents/Code/__init__.py b/Contents/Code/__init__.py index 75c0490..bdb757c 100755 --- a/Contents/Code/__init__.py +++ b/Contents/Code/__init__.py @@ -1,11 +1,12 @@ # Kink.com +# coding: utf-8 import re # URLS -EXC_BASEURL = 'http://www.kink.com/' -EXC_SEARCH_MOVIES = EXC_BASEURL + 'search?q=%s' -EXC_MOVIE_INFO = EXC_BASEURL + 'shoot/%s' -EXC_MODEL_INFO = EXC_BASEURL + 'model/%s' +EXC_BASEURL = 'http://www.kink.com' +EXC_SEARCH_MOVIES = EXC_BASEURL + '/search?q=%s' +EXC_MOVIE_INFO = EXC_BASEURL + '/shoot/%s' +EXC_MODEL_INFO = EXC_BASEURL + '/model/%s' def Start(): HTTP.CacheTime = CACHE_1DAY @@ -16,6 +17,24 @@ class KinkAgent(Agent.Movies): accepts_from = ['com.plexapp.agents.localmedia'] primary_provider = True + def Log(self, message, *args): + Log(message, *args) + + def getStringContentFromXPath(self, source, query): + return source.xpath('string(' + query + ')') + + def getAnchorUrlFromXPath(self, source, query): + anchor = source.xpath(query) + + if len(anchor) == 0: + return None + + return anchor[0].get('href') + + def getStringContentFromXPath(self, source, query): + return source.xpath('string(' + query + ')') + + def search(self, results, media, lang): title = media.name @@ -44,24 +63,25 @@ def update(self, metadata, media, lang): if link.strip(): metadata.studio = link.strip() metadata.genres.add(metadata.studio) + metadata.collections.add(metadata.studio) break except: pass # add channels to genres # add other tags to collections - metadata.collections.clear() + #metadata.collections.clear() tags = html.xpath('//div[@class="shoot-info"]//a[starts-with(@href,"/tag/")]') for tag in tags: if tag.get('href').endswith(':channel'): if not metadata.studio: metadata.studio = tag.text_content().strip() - metadata.genres.add(tag.text_content().strip()) - else: metadata.collections.add(tag.text_content().strip()) + else: + metadata.genres.add(tag.text_content().strip()) # set movie title to shoot title - metadata.title = html.xpath('//div[@class="shoot-info"]//h1/text()')[0] + " (" + metadata.id + ")" + metadata.title = html.xpath('//div[@class="shoot-info"]//h1/text()')[0] + " (" + metadata.id + ")" # set content rating to XXX metadata.content_rating = 'XXX' @@ -77,12 +97,21 @@ def update(self, metadata, media, lang): except: pass # set poster to the image that kink.com chose as preview + #try: + # thumbpUrl = html.xpath('//video/@poster')[0] + # thumbp = HTTP.Request(thumbpUrl) + # metadata.posters[thumbpUrl] = Proxy.Media(thumbp) + #except: pass + + # fill poster art with all images, so they can be used as options try: - thumbpUrl = html.xpath('//video/@poster')[0] - thumbp = HTTP.Request(thumbpUrl) - metadata.posters[thumbpUrl] = Proxy.Media(thumbp) + imgs = html.xpath('//div[@id="previewImages"]//img') + for img in imgs: + thumbUrl = re.sub(r'/h/[0-9]{3,3}/', r'/h/830/', img.get('src')) + thumb = HTTP.Request(thumbUrl) + metadata.posters[thumbUrl] = Proxy.Media(thumb) except: pass - + # fill movie art with all images, so they can be used as backdrops try: imgs = html.xpath('//div[@id="previewImages"]//img') @@ -102,40 +131,74 @@ def update(self, metadata, media, lang): metadata.summary.strip() except: pass - # director - try: - metadata.directors.clear() - director_id = html.xpath('//div[@class="shoot-page"]/@data-director')[0] - director_html = HTML.ElementFromURL(EXC_MODEL_INFO % director_id, - headers={'Cookie': 'viewing-preferences=straight%2Cgay'}) - director_name = director_html.xpath('//h1[@class="page-title"]')[0].text_content() - try: - director = metadata.directors.new() - director.name = director_name - except: - try: - metadata.directors.add(director_name) - except: pass - except: pass + # starring try: starring = html.xpath('//p[@class="starring"]/*[@class="names"]/a') metadata.roles.clear() + modelcount = 0 for member in starring: role = metadata.roles.new() lename = member.text_content().strip() + modelurl = EXC_BASEURL + member.attrib['href'] + self.Log('modelurl = %s', modelurl) + modelhtml = HTML.ElementFromURL(modelurl, headers={'Cookie': 'viewing-preferences=straight%2Cgay'}) + model = modelhtml.xpath('//div[@id="modelImage"]/img[@src]') + modelimage = model[0].attrib['src'] + self.Log('model image = %s', modelimage) + modelcount = modelcount +1 try: role.name = lename + role.photo = modelimage except: try: role.actor = lename + role.photo = modelimage except: pass except: pass + + # new starring + starring = html.xpath('//p[@class="starring"]/*[@class="names"]/a') + self.Log('---------------------------new starring attempt--------------------------------') + for member in starring: + + testlink = EXC_BASEURL + member.attrib['href'] + self.Log('testlink = %s', testlink) + modelhtml = HTML.ElementFromURL(testlink, headers={'Cookie': 'viewing-preferences=straight%2Cgay'}) + model = modelhtml.xpath('//div[@id="modelImage"]/img[@src]') + modelimage = model[0].attrib['src'] + self.Log('model image = %s', modelimage) + try: + role.name = lename + except: + try: + role.actor = lename + except: pass + + + # director + try: + htmldirector = html.xpath('//p[@class="director"]/a') + metadata.directors.clear() + for member in htmldirector: + dirname = member.text_content().strip() + self.Log('dirname variable = %s',dirname) + try: + director = metadata.directors.new() + director.name = dirname + except: + try: + director = metadata.directors.new() + metadata.directors.add(dirname) + except: pass + except: pass + + # rating try: rating_dict = JSON.ObjectFromURL(url=EXC_BASEURL + 'api/ratings/%s' % metadata.id, headers={'Cookie': 'viewing-preferences=straight%2Cgay'}) - metadata.rating = float(rating_dict['avgRating']) * 2 + metadata.rating = float(rating_dict['average']) * 2 except: pass From bf2c47e9c1b19d2de788c553f1ac437cb3832331 Mon Sep 17 00:00:00 2001 From: macr0dev Date: Sun, 14 Oct 2018 17:01:16 -0500 Subject: [PATCH 2/3] Update __init__.py --- Contents/Code/__init__.py | 55 +-------------------------------------- 1 file changed, 1 insertion(+), 54 deletions(-) diff --git a/Contents/Code/__init__.py b/Contents/Code/__init__.py index bdb757c..e6ddbb5 100755 --- a/Contents/Code/__init__.py +++ b/Contents/Code/__init__.py @@ -1,5 +1,4 @@ # Kink.com -# coding: utf-8 import re # URLS @@ -17,24 +16,6 @@ class KinkAgent(Agent.Movies): accepts_from = ['com.plexapp.agents.localmedia'] primary_provider = True - def Log(self, message, *args): - Log(message, *args) - - def getStringContentFromXPath(self, source, query): - return source.xpath('string(' + query + ')') - - def getAnchorUrlFromXPath(self, source, query): - anchor = source.xpath(query) - - if len(anchor) == 0: - return None - - return anchor[0].get('href') - - def getStringContentFromXPath(self, source, query): - return source.xpath('string(' + query + ')') - - def search(self, results, media, lang): title = media.name @@ -96,14 +77,7 @@ def update(self, metadata, media, lang): metadata.year = metadata.originally_available_at.year except: pass - # set poster to the image that kink.com chose as preview - #try: - # thumbpUrl = html.xpath('//video/@poster')[0] - # thumbp = HTTP.Request(thumbpUrl) - # metadata.posters[thumbpUrl] = Proxy.Media(thumbp) - #except: pass - - # fill poster art with all images, so they can be used as options + # fill poster art with all images, so the vertical images can be used as options try: imgs = html.xpath('//div[@id="previewImages"]//img') for img in imgs: @@ -131,23 +105,17 @@ def update(self, metadata, media, lang): metadata.summary.strip() except: pass - - # starring try: starring = html.xpath('//p[@class="starring"]/*[@class="names"]/a') metadata.roles.clear() - modelcount = 0 for member in starring: role = metadata.roles.new() lename = member.text_content().strip() modelurl = EXC_BASEURL + member.attrib['href'] - self.Log('modelurl = %s', modelurl) modelhtml = HTML.ElementFromURL(modelurl, headers={'Cookie': 'viewing-preferences=straight%2Cgay'}) model = modelhtml.xpath('//div[@id="modelImage"]/img[@src]') modelimage = model[0].attrib['src'] - self.Log('model image = %s', modelimage) - modelcount = modelcount +1 try: role.name = lename role.photo = modelimage @@ -158,33 +126,12 @@ def update(self, metadata, media, lang): except: pass except: pass - - # new starring - starring = html.xpath('//p[@class="starring"]/*[@class="names"]/a') - self.Log('---------------------------new starring attempt--------------------------------') - for member in starring: - - testlink = EXC_BASEURL + member.attrib['href'] - self.Log('testlink = %s', testlink) - modelhtml = HTML.ElementFromURL(testlink, headers={'Cookie': 'viewing-preferences=straight%2Cgay'}) - model = modelhtml.xpath('//div[@id="modelImage"]/img[@src]') - modelimage = model[0].attrib['src'] - self.Log('model image = %s', modelimage) - try: - role.name = lename - except: - try: - role.actor = lename - except: pass - - # director try: htmldirector = html.xpath('//p[@class="director"]/a') metadata.directors.clear() for member in htmldirector: dirname = member.text_content().strip() - self.Log('dirname variable = %s',dirname) try: director = metadata.directors.new() director.name = dirname From 55fbe257208d94beaaa38432e2cee2667dc45f9b Mon Sep 17 00:00:00 2001 From: macr0dev Date: Sun, 14 Oct 2018 17:03:34 -0500 Subject: [PATCH 3/3] Update __init__.py --- Contents/Code/__init__.py | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/Contents/Code/__init__.py b/Contents/Code/__init__.py index e6ddbb5..a574ffe 100755 --- a/Contents/Code/__init__.py +++ b/Contents/Code/__init__.py @@ -105,6 +105,22 @@ def update(self, metadata, media, lang): metadata.summary.strip() except: pass + # director + try: + htmldirector = html.xpath('//p[@class="director"]/a') + metadata.directors.clear() + for member in htmldirector: + dirname = member.text_content().strip() + try: + director = metadata.directors.new() + director.name = dirname + except: + try: + director = metadata.directors.new() + metadata.directors.add(dirname) + except: pass + except: pass + # starring try: starring = html.xpath('//p[@class="starring"]/*[@class="names"]/a') @@ -126,23 +142,6 @@ def update(self, metadata, media, lang): except: pass except: pass - # director - try: - htmldirector = html.xpath('//p[@class="director"]/a') - metadata.directors.clear() - for member in htmldirector: - dirname = member.text_content().strip() - try: - director = metadata.directors.new() - director.name = dirname - except: - try: - director = metadata.directors.new() - metadata.directors.add(dirname) - except: pass - except: pass - - # rating try: rating_dict = JSON.ObjectFromURL(url=EXC_BASEURL + 'api/ratings/%s' % metadata.id,