aggiornamento canali per adulti (by alfa addon)
This commit is contained in:
+20
-15
@@ -1,16 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.likuoo.video'
|
||||
host = 'https://www.likuoo.video'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
@@ -83,13 +81,20 @@ def lista(item):
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
itemlist = servertools.find_video_items(data=data)
|
||||
for videoitem in itemlist:
|
||||
videoitem.title = item.fulltitle
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
videochannel=item.channel
|
||||
data = re.sub(r"\n|\r|\t|amp;|\s{2}| ", "", data)
|
||||
patron = 'url:\'([^\']+)\'.*?'
|
||||
patron += 'data:\'([^\']+)\''
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl,post in matches:
|
||||
post = post.replace("%3D", "=")
|
||||
scrapedurl = host + scrapedurl
|
||||
logger.debug( item.url +" , "+ scrapedurl +" , " +post )
|
||||
datas = httptools.downloadpage(scrapedurl, post=post, headers={'Referer':item.url}).data
|
||||
datas = datas.replace("\\", "")
|
||||
url = scrapertools.find_single_match(datas, '<iframe src="([^"]+)"')
|
||||
itemlist.append( Item(channel=item.channel, action="play", title = "%s", url=url ))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
return itemlist
|
||||
|
||||
|
||||
+5
-7
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urllib
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.txxx.com'
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.absoluporn.es'
|
||||
|
||||
@@ -90,7 +89,7 @@ def play(item):
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for servervideo,path,filee in matches:
|
||||
scrapedurl = servervideo + path + "56ea912c4df934c216c352fa8d623af3" + filee
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, fulltitle=item.fulltitle, url=scrapedurl,
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo", folder=False))
|
||||
return itemlist
|
||||
|
||||
|
||||
+21
-13
@@ -1,13 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
import base64
|
||||
|
||||
host = 'http://www.alsoporn.com'
|
||||
|
||||
@@ -66,8 +66,9 @@ def lista(item):
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + scrapedtitle
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot, contentTitle = scrapedtitle))
|
||||
if not "0:00" in scrapedtime:
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot, contentTitle = scrapedtitle))
|
||||
|
||||
next_page = scrapertools.find_single_match(data,'<li><a href="([^"]+)" target="_self"><span class="alsoporn_page">NEXT</span></a>')
|
||||
if next_page!="":
|
||||
@@ -81,11 +82,18 @@ def play(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
scrapedurl = scrapertools.find_single_match(data,'<iframe frameborder=0 scrolling="no" src=\'([^\']+)\'')
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = httptools.downloadpage(scrapedurl).data
|
||||
scrapedurl1 = scrapertools.find_single_match(data,'<iframe src="(.*?)"')
|
||||
scrapedurl1 = scrapedurl1.replace("//www.playercdn.com/ec/i2.php?", "https://www.trinitytube.xyz/ec/i2.php?")
|
||||
data = httptools.downloadpage(item.url).data
|
||||
scrapedurl2 = scrapertools.find_single_match(data,'<source src="(.*?)"')
|
||||
itemlist.append(item.clone(action="play", title=item.title, fulltitle = item.title, url=scrapedurl2))
|
||||
scrapedurl1 = scrapedurl1.replace("//www.playercdn.com/ec/i2.php?url=", "")
|
||||
scrapedurl1 = base64.b64decode(scrapedurl1 + "=")
|
||||
logger.debug(scrapedurl1)
|
||||
data = httptools.downloadpage(scrapedurl1).data
|
||||
if "xvideos" in scrapedurl1:
|
||||
scrapedurl2 = scrapertools.find_single_match(data, 'html5player.setVideoHLS\(\'([^\']+)\'\)')
|
||||
if "xhamster" in scrapedurl1:
|
||||
scrapedurl2 = scrapertools.find_single_match(data, '"[0-9]+p":"([^"]+)"').replace("\\", "")
|
||||
|
||||
logger.debug(scrapedurl2)
|
||||
itemlist.append(item.clone(action="play", title=item.title, url=scrapedurl2))
|
||||
return itemlist
|
||||
|
||||
|
||||
+7
-7
@@ -1,13 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
|
||||
host = 'https://www.analdin.com/es'
|
||||
|
||||
@@ -108,6 +108,6 @@ def play(item):
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl in matches:
|
||||
url = scrapedurl
|
||||
itemlist.append(item.clone(action="play", title=url, fulltitle = item.title, url=url))
|
||||
itemlist.append(item.clone(action="play", title=url, url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"id": "beeg",
|
||||
"name": "Beeg",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "beeg.png",
|
||||
"banner": "beeg.png",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
Executable
+122
@@ -0,0 +1,122 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
import urllib
|
||||
|
||||
from core import jsontools as json
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from core import httptools
|
||||
|
||||
|
||||
url_api = ""
|
||||
Host = "https://beeg.com"
|
||||
|
||||
|
||||
def get_api_url():
|
||||
global url_api
|
||||
data = httptools.downloadpage(Host).data
|
||||
version = re.compile('var beeg_version = ([\d]+)').findall(data)[0]
|
||||
url_api = Host + "/api/v6/" + version
|
||||
|
||||
|
||||
get_api_url()
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
get_api_url()
|
||||
itemlist = []
|
||||
itemlist.append(Item(channel=item.channel, action="videos", title="Útimos videos", url=url_api + "/index/main/0/pc",
|
||||
viewmode="movie"))
|
||||
itemlist.append(Item(channel=item.channel, action="canal", title="Canal",
|
||||
url=url_api + "/channels"))
|
||||
itemlist.append(Item(channel=item.channel, action="listcategorias", title="Categorias",
|
||||
url=url_api + "/index/main/0/pc", extra="nonpopular"))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="search", title="Buscar"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = url_api + "/index/tag/0/pc?tag=%s" % (texto)
|
||||
|
||||
try:
|
||||
return videos(item)
|
||||
# Se captura la excepción, para no interrumpir al buscador global si un canal falla
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
def videos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
JSONData = json.load(data)
|
||||
for Video in JSONData["videos"]:
|
||||
thumbnail = "http://img.beeg.com/236x177/" + str(Video["id"]) + ".jpg"
|
||||
url= '%s/video/%s?v=2&s=%s&e=%s' % (url_api, Video['svid'], Video['start'], Video['end'])
|
||||
title = Video["title"]
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail, plot="", show="",
|
||||
folder=True, contentType="movie"))
|
||||
# Paginador
|
||||
Actual = int(scrapertools.find_single_match(item.url, url_api + '/index/[^/]+/([0-9]+)/pc'))
|
||||
if JSONData["pages"] - 1 > Actual:
|
||||
scrapedurl = item.url.replace("/" + str(Actual) + "/", "/" + str(Actual + 1) + "/")
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="videos", title="Página Siguiente", url=scrapedurl, thumbnail="",
|
||||
viewmode="movie"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def listcategorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
JSONData = json.load(data)
|
||||
for Tag in JSONData["tags"]:
|
||||
url = url_api + "/index/tag/0/pc?tag=" + Tag["tag"]
|
||||
url = url.replace("%20", "-")
|
||||
title = '%s (%s)' % (str(Tag["tag"]), str(Tag["videos"]))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="videos", title=title, url=url, viewmode="movie", type="item"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def canal(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
JSONData = json.load(data)
|
||||
for Tag in JSONData["channels"]:
|
||||
url = url_api + "/index/channel/0/pc?channel=" + Tag["channel"]
|
||||
url = url.replace("%20", "-")
|
||||
title = '%s (%s)' % (str(Tag["ps_name"]), str(Tag["videos"]))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="videos", title=title, url=url, viewmode="movie", type="item"))
|
||||
return itemlist
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
JSONData = json.load(data)
|
||||
for key in JSONData:
|
||||
videourl = re.compile("([0-9]+p)", re.DOTALL).findall(key)
|
||||
if videourl:
|
||||
videourl = videourl[0]
|
||||
if not JSONData[videourl] == None:
|
||||
url = JSONData[videourl]
|
||||
url = url.replace("{DATA_MARKERS}", "data=pc.ES")
|
||||
if not url.startswith("https:"): url = "https:" + url
|
||||
title = videourl
|
||||
itemlist.append(["%s %s [directo]" % (title, url[-4:]), url])
|
||||
itemlist.sort(key=lambda item: item[0])
|
||||
return itemlist
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.bravoporn.com'
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.camwhoresbay.com'
|
||||
|
||||
@@ -66,7 +65,7 @@ def lista(item):
|
||||
for scrapedurl,scrapedtitle,scrapedthumbnail,scrapedtime in matches:
|
||||
url = urlparse.urljoin(item.url,scrapedurl)
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + scrapedtitle
|
||||
thumbnail = scrapedthumbnail
|
||||
thumbnail = "http:" + scrapedthumbnail + "|Referer=%s" % item.url
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail, plot=plot,
|
||||
contentTitle = scrapedtitle, fanart=thumbnail))
|
||||
@@ -108,7 +107,7 @@ def play(item):
|
||||
if scrapedurl == "" :
|
||||
scrapedurl = scrapertools.find_single_match(data, 'video_url: \'([^\']+)\'')
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=scrapedurl, fulltitle=item.title, url=scrapedurl,
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=scrapedurl, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo"))
|
||||
return itemlist
|
||||
|
||||
|
||||
+50
-46
@@ -1,9 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import urlparse,re
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = "http://www.canalporno.com"
|
||||
|
||||
@@ -11,20 +11,21 @@ host = "http://www.canalporno.com"
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append(item.clone(action="findvideos", title="Útimos videos", url=host))
|
||||
itemlist.append(item.clone(action="categorias", title="Listado Categorias",
|
||||
itemlist.append(item.clone(action="lista", title="Útimos videos", url=host + "/ajax/homepage/?page=1"))
|
||||
itemlist.append(item.clone(action="categorias", title="Canal", url=host + "/ajax/list_producers/?page=1"))
|
||||
itemlist.append(item.clone(action="categorias", title="PornStar", url=host + "/ajax/list_pornstars/?page=1"))
|
||||
itemlist.append(item.clone(action="categorias", title="Categorias",
|
||||
url=host + "/categorias"))
|
||||
itemlist.append(item.clone(action="search", title="Buscar", url=host + "/search/?q=%s"))
|
||||
itemlist.append(item.clone(action="search", title="Buscar"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/ajax/new_search/?q=%s&page=1" % texto
|
||||
try:
|
||||
item.url = item.url % texto
|
||||
itemlist = findvideos(item)
|
||||
return sorted(itemlist, key=lambda it: it.title)
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
@@ -32,57 +33,60 @@ def search(item, texto):
|
||||
return []
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
patron = '<img src="([^"]+)".*?alt="([^"]+)".*?<h2><a href="([^"]+)">.*?' \
|
||||
'<div class="duracion"><span class="ico-duracion sprite"></span> ([^"]+) min</div>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for thumbnail, title, url, time in matches:
|
||||
scrapedtitle = time + " - " + title
|
||||
scrapedurl = host + url
|
||||
scrapedthumbnail = thumbnail
|
||||
itemlist.append(item.clone(action="play", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail))
|
||||
|
||||
patron = '<div class="paginacion">.*?<span class="selected">.*?<a href="([^"]+)">([^"]+)</a>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for url, title in matches:
|
||||
url = host + url
|
||||
title = "Página %s" % title
|
||||
itemlist.append(item.clone(action="findvideos", title=title, url=url))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
bloque = scrapertools.find_single_match(data, '<ul class="ordenar-por ordenar-por-categoria">'
|
||||
'(.*?)<\/ul>')
|
||||
if "pornstars" in item.url:
|
||||
patron = '<div class="muestra.*?href="([^"]+)".*?src=\'([^\']+)\'.*?alt="([^"]+)".*?'
|
||||
else:
|
||||
patron = '<div class="muestra.*?href="([^"]+)".*?src="([^"]+)".*?alt="([^"]+)".*?'
|
||||
if "Categorias" in item.title:
|
||||
patron += '<div class="numero">([^<]+)</div>'
|
||||
else:
|
||||
patron += '</span> (\d+) vídeos</div>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for url, scrapedthumbnail, scrapedtitle, cantidad in matches:
|
||||
title= "%s [COLOR yellow] %s [/COLOR]" % (scrapedtitle, cantidad)
|
||||
url= url.replace("/videos-porno/", "/ajax/show_category/").replace("/sitio/", "/ajax/show_producer/").replace("/pornstar/", "/ajax/show_pornstar/")
|
||||
url = host + url + "?page=1"
|
||||
itemlist.append(item.clone(action="lista", title=title, url=url, thumbnail=scrapedthumbnail))
|
||||
if "/?page=" in item.url:
|
||||
next_page=item.url
|
||||
num= int(scrapertools.find_single_match(item.url,".*?/?page=(\d+)"))
|
||||
num += 1
|
||||
next_page = "?page=" + str(num)
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append(item.clone(action="categorias", title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
return itemlist
|
||||
|
||||
#patron = '<div class="muestra-categorias">.*?<a class="thumb" href="([^"]+)".*?<img class="categorias" src="([^"]+)".*?<div class="nombre">([^"]+)</div>'
|
||||
patron = "<li><a href='([^']+)'\s?title='([^']+)'>.*?<\/a><\/li>"
|
||||
matches = scrapertools.find_multiple_matches(bloque, patron)
|
||||
for url, title in matches:
|
||||
url = host + url
|
||||
#thumbnail = "http:" + thumbnail
|
||||
itemlist.append(item.clone(action="findvideos", title=title, url=url))
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = 'data-src="([^"]+)" alt="([^"]+)".*?<h2><a href="([^"]+)">.*?' \
|
||||
'<div class="duracion"><span class="ico-duracion sprite"></span> ([^"]+) min</div>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedthumbnail, scrapedtitle, scrapedurl, duration in matches:
|
||||
title = "[COLOR yellow] %s [/COLOR] %s" % (duration, scrapedtitle)
|
||||
url = host + scrapedurl
|
||||
itemlist.append(item.clone(action="play", title=title, url=url, thumbnail=scrapedthumbnail))
|
||||
last=scrapertools.find_single_match(item.url,'(.*?)page=\d+')
|
||||
num= int(scrapertools.find_single_match(item.url,".*?/?page=(\d+)"))
|
||||
num += 1
|
||||
next_page = "page=" + str(num)
|
||||
if next_page!="":
|
||||
next_page = last + next_page
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
url = scrapertools.find_single_match(data, '<source src="([^"]+)"')
|
||||
itemlist.append(item.clone(url=url, server="directo"))
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
"banner": "https://i.imgur.com/bXUyk6m.png",
|
||||
"categories": [
|
||||
"movie",
|
||||
"vo"
|
||||
"vos"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
|
||||
|
||||
import re
|
||||
|
||||
import urllib
|
||||
import urlparse
|
||||
from channelselector import get_thumb
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
@@ -83,7 +84,7 @@ def search(item, texto):
|
||||
logger.info()
|
||||
if texto != "":
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/search?q=" + texto
|
||||
item.url = host + "search?q=" + texto
|
||||
item.extra = "busqueda"
|
||||
try:
|
||||
return list_all(item)
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
import os
|
||||
import re
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
|
||||
host = 'https://www.cliphunter.com'
|
||||
|
||||
@@ -84,9 +84,8 @@ def lista(item):
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + scrapedtitle
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
year = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail, plot=plot,
|
||||
fanart=thumbnail, contentTitle = title, infoLabels={'year':year} ))
|
||||
fanart=thumbnail, contentTitle = title ))
|
||||
next_page = scrapertools.find_single_match(data,'<li class="arrow"><a rel="next" href="([^"]+)">»</a>')
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
@@ -103,7 +102,7 @@ def play(item):
|
||||
for scrapedurl in matches:
|
||||
scrapedurl = scrapedurl.replace("\/", "/")
|
||||
title = scrapedurl
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, fulltitle=item.fulltitle, url=scrapedurl,
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo"))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host ='http://www.coomelonitas.com'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
@@ -57,7 +56,7 @@ def lista(item):
|
||||
url = scrapertools.find_single_match(match,'<a href="([^"]+)"')
|
||||
plot = scrapertools.find_single_match(match,'<p class="summary">(.*?)</p>')
|
||||
thumbnail = scrapertools.find_single_match(match,'<img src="([^"]+)"')
|
||||
itemlist.append( Item(channel=item.channel, action="findvideos", title=title, fulltitle=title, url=url,
|
||||
itemlist.append( Item(channel=item.channel, action="findvideos", title=title, url=url,
|
||||
fanart=thumbnail, thumbnail=thumbnail, plot=plot, viewmode="movie") )
|
||||
next_page = scrapertools.find_single_match(data,'<a href="([^"]+)" class="siguiente">')
|
||||
if next_page!="":
|
||||
|
||||
+44
-75
@@ -2,7 +2,6 @@
|
||||
|
||||
import re
|
||||
import urllib
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
@@ -11,23 +10,22 @@ from core.item import Item
|
||||
from platformcode import config, logger
|
||||
|
||||
|
||||
host = 'https://www.cumlouder.com'
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
config.set_setting("url_error", False, "cumlouder")
|
||||
itemlist.append(item.clone(title="Últimos videos", action="videos", url="https://www.cumlouder.com/"))
|
||||
itemlist.append(item.clone(title="Categorias", action="categorias", url="https://www.cumlouder.com/categories/"))
|
||||
itemlist.append(item.clone(title="Pornstars", action="pornstars_list", url="https://www.cumlouder.com/girls/"))
|
||||
itemlist.append(item.clone(title="Listas", action="series", url="https://www.cumlouder.com/series/"))
|
||||
itemlist.append(item.clone(title="Buscar", action="search", url="https://www.cumlouder.com/search?q=%s"))
|
||||
|
||||
itemlist.append(item.clone(title="Últimos videos", action="videos", url= host + "/porn/"))
|
||||
itemlist.append(item.clone(title="Pornstars", action="pornstars_list", url=host + "/girls/"))
|
||||
itemlist.append(item.clone(title="Listas", action="series", url= host + "/series/"))
|
||||
itemlist.append(item.clone(title="Categorias", action="categorias", url= host + "/categories/"))
|
||||
itemlist.append(item.clone(title="Buscar", action="search", url= host + "/search?q=%s"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
|
||||
item.url = item.url % texto
|
||||
item.action = "videos"
|
||||
try:
|
||||
@@ -41,21 +39,20 @@ def search(item, texto):
|
||||
def pornstars_list(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append(item.clone(title="Mas Populares", action="pornstars", url=host + "/girls/1/"))
|
||||
for letra in "abcdefghijklmnopqrstuvwxyz":
|
||||
itemlist.append(item.clone(title=letra.upper(), url=urlparse.urljoin(item.url, letra), action="pornstars"))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def pornstars(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = get_data(item.url)
|
||||
patron = '<a girl-url="[^"]+" class="[^"]+" href="([^"]+)" title="([^"]+)">[^<]+'
|
||||
patron += '<img class="thumb" src="([^"]+)" [^<]+<h2[^<]+<span[^<]+</span[^<]+</h2[^<]+'
|
||||
patron += '<span[^<]+<span[^<]+<span[^<]+</span>([^<]+)</span>'
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<a girl-url=.*?'
|
||||
patron += 'href="([^"]+)" title="([^"]+)">.*?'
|
||||
patron += 'data-lazy="([^"]+)".*?'
|
||||
patron += '<span class="ico-videos sprite"></span>([^<]+)</span>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for url, title, thumbnail, count in matches:
|
||||
if "go.php?" in url:
|
||||
@@ -65,8 +62,7 @@ def pornstars(item):
|
||||
url = urlparse.urljoin(item.url, url)
|
||||
if not thumbnail.startswith("https"):
|
||||
thumbnail = "https:%s" % thumbnail
|
||||
itemlist.append(item.clone(title="%s (%s)" % (title, count), url=url, action="videos", thumbnail=thumbnail))
|
||||
|
||||
itemlist.append(item.clone(title="%s (%s)" % (title, count), url=url, action="videos", fanart=thumbnail, thumbnail=thumbnail))
|
||||
# Paginador
|
||||
matches = re.compile('<li[^<]+<a href="([^"]+)" rel="nofollow">Next[^<]+</a[^<]+</li>', re.DOTALL).findall(data)
|
||||
if matches:
|
||||
@@ -74,18 +70,19 @@ def pornstars(item):
|
||||
url = urllib.unquote(matches[0].split("/go.php?u=")[1].split("&")[0])
|
||||
else:
|
||||
url = urlparse.urljoin(item.url, matches[0])
|
||||
itemlist.append(item.clone(title="Pagina Siguiente", url=url))
|
||||
|
||||
itemlist.append(item.clone(title="Página Siguiente >>", url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = get_data(item.url)
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
patron = '<a tag-url=.*?href="([^"]+)" title="([^"]+)".*?<img class="thumb" src="([^"]+)".*?<span class="cantidad">([^<]+)</span>'
|
||||
patron = '<a tag-url=.*?'
|
||||
patron += 'href="([^"]+)" title="([^"]+)".*?'
|
||||
patron += 'data-lazy="([^"]+)".*?'
|
||||
patron += '<span class="cantidad">([^<]+)</span>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for url, title, thumbnail, count in matches:
|
||||
if "go.php?" in url:
|
||||
@@ -96,8 +93,7 @@ def categorias(item):
|
||||
if not thumbnail.startswith("https"):
|
||||
thumbnail = "https:%s" % thumbnail
|
||||
itemlist.append(
|
||||
item.clone(title="%s (%s videos)" % (title, count), url=url, action="videos", thumbnail=thumbnail))
|
||||
|
||||
item.clone(title="%s (%s videos)" % (title, count), url=url, action="videos", fanart=thumbnail, thumbnail=thumbnail))
|
||||
# Paginador
|
||||
matches = re.compile('<li[^<]+<a href="([^"]+)" rel="nofollow">Next[^<]+</a[^<]+</li>', re.DOTALL).findall(data)
|
||||
if matches:
|
||||
@@ -105,22 +101,20 @@ def categorias(item):
|
||||
url = urllib.unquote(matches[0].split("/go.php?u=")[1].split("&")[0])
|
||||
else:
|
||||
url = urlparse.urljoin(item.url, matches[0])
|
||||
itemlist.append(item.clone(title="Pagina Siguiente", url=url))
|
||||
|
||||
itemlist.append(item.clone(title="Página Siguiente >>", url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
def series(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = get_data(item.url)
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
patron = '<a onclick=.*?href="([^"]+)".*?\<img src="([^"]+)".*?h2 itemprop="name">([^<]+).*?p>([^<]+)</p>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for url, thumbnail, title, count in matches:
|
||||
itemlist.append(
|
||||
item.clone(title="%s (%s) " % (title, count), url=urlparse.urljoin(item.url, url), action="videos", thumbnail=thumbnail))
|
||||
|
||||
item.clone(title="%s (%s) " % (title, count), url=urlparse.urljoin(item.url, url), action="videos", fanart=thumbnail, thumbnail=thumbnail))
|
||||
# Paginador
|
||||
matches = re.compile('<li[^<]+<a href="([^"]+)" rel="nofollow">Next[^<]+</a[^<]+</li>', re.DOTALL).findall(data)
|
||||
if matches:
|
||||
@@ -128,29 +122,33 @@ def series(item):
|
||||
url = urllib.unquote(matches[0].split("/go.php?u=")[1].split("&")[0])
|
||||
else:
|
||||
url = urlparse.urljoin(item.url, matches[0])
|
||||
itemlist.append(item.clone(title="Pagina Siguiente", url=url))
|
||||
|
||||
itemlist.append(item.clone(title="Página Siguiente >>", url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
def videos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = get_data(item.url)
|
||||
patron = '<a class="muestra-escena" href="([^"]+)" title="([^"]+)"[^<]+<img class="thumb" src="([^"]+)".*?<span class="minutos"> <span class="ico-minutos sprite"></span> ([^<]+)</span>'
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<a class="muestra-escena" href="([^"]+)" title="([^"]+)".*?'
|
||||
patron += 'data-lazy="([^"]+)".*?'
|
||||
patron += '<span class="ico-minutos sprite"></span>([^<]+)</span>(.*?)</a>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for url, title, thumbnail, duration in matches:
|
||||
for url, title, thumbnail, duration,calidad in matches:
|
||||
if "hd sprite" in calidad:
|
||||
title="[COLOR yellow] %s [/COLOR][COLOR red] HD [/COLOR] %s" % (duration, title)
|
||||
else:
|
||||
title="[COLOR yellow] %s [/COLOR] %s" % (duration, title)
|
||||
if "go.php?" in url:
|
||||
url = urllib.unquote(url.split("/go.php?u=")[1].split("&")[0])
|
||||
thumbnail = urllib.unquote(thumbnail.split("/go.php?u=")[1].split("&")[0])
|
||||
else:
|
||||
url = urlparse.urljoin("https://www.cumlouder.com", url)
|
||||
url = urlparse.urljoin(host, url)
|
||||
if not thumbnail.startswith("https"):
|
||||
thumbnail = "https:%s" % thumbnail
|
||||
itemlist.append(item.clone(title="%s (%s)" % (title, duration), url=urlparse.urljoin(item.url, url),
|
||||
itemlist.append(item.clone(title=title, url=url,
|
||||
action="play", thumbnail=thumbnail, contentThumbnail=thumbnail,
|
||||
contentType="movie", contentTitle=title))
|
||||
|
||||
fanart=thumbnail, contentType="movie", contentTitle=title))
|
||||
# Paginador
|
||||
nextpage = scrapertools.find_single_match(data, '<ul class="paginador"(.*?)</ul>')
|
||||
matches = re.compile('<a href="([^"]+)" rel="nofollow">Next »</a>', re.DOTALL).findall(nextpage)
|
||||
@@ -161,51 +159,22 @@ def videos(item):
|
||||
url = urllib.unquote(matches[0].split("/go.php?u=")[1].split("&")[0])
|
||||
else:
|
||||
url = urlparse.urljoin(item.url, matches[0])
|
||||
|
||||
itemlist.append(item.clone(title="Pagina Siguiente", url=url))
|
||||
|
||||
itemlist.append(item.clone(title="Página Siguiente >>", url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = get_data(item.url)
|
||||
patron = '<source src="([^"]+)" type=\'video/([^\']+)\' label=\'[^\']+\' res=\'([^\']+)\' />'
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<source src="([^"]+)" type=\'video/([^\']+)\' label=\'[^\']+\' res=\'([^\']+)\''
|
||||
url, type, res = re.compile(patron, re.DOTALL).findall(data)[0]
|
||||
if "go.php?" in url:
|
||||
url = urllib.unquote(url.split("/go.php?u=")[1].split("&")[0])
|
||||
elif not url.startswith("http"):
|
||||
url = "http:" + url.replace("&", "&")
|
||||
url = "https:" + url.replace("&", "&")
|
||||
itemlist.append(
|
||||
Item(channel='cumlouder', action="play", title='Video' + res, fulltitle=type.upper() + ' ' + res, url=url,
|
||||
Item(channel='cumlouder', action="play", title='Video' + res, contentTitle=type.upper() + ' ' + res, url=url,
|
||||
server="directo", folder=False))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def get_data(url_orig):
|
||||
try:
|
||||
if config.get_setting("url_error", "cumlouder"):
|
||||
raise Exception
|
||||
response = httptools.downloadpage(url_orig)
|
||||
if not response.data or "urlopen error [Errno 1]" in str(response.code):
|
||||
raise Exception
|
||||
except:
|
||||
config.set_setting("url_error", True, "cumlouder")
|
||||
import random
|
||||
server_random = ['nl', 'de', 'us']
|
||||
server = server_random[random.randint(0, 2)]
|
||||
url = "https://%s.hideproxy.me/includes/process.php?action=update" % server
|
||||
post = "u=%s&proxy_formdata_server=%s&allowCookies=1&encodeURL=0&encodePage=0&stripObjects=0&stripJS=0&go=" \
|
||||
% (urllib.quote(url_orig), server)
|
||||
while True:
|
||||
response = httptools.downloadpage(url, post, follow_redirects=False)
|
||||
if response.headers.get("location"):
|
||||
url = response.headers["location"]
|
||||
post = ""
|
||||
else:
|
||||
break
|
||||
|
||||
return response.data
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "czechvideo",
|
||||
"name": "Czechvideo",
|
||||
"active": true,
|
||||
"active": false,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "http://czechvideo.org/templates/Default/images/black75.png",
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://czechvideo.org'
|
||||
|
||||
@@ -82,7 +80,7 @@ def play(item):
|
||||
itemlist = servertools.find_video_items(data=data)
|
||||
for videoitem in itemlist:
|
||||
videoitem.title = item.title
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.contentTitle = item.contentTitle
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
videoitem.channel = item.channel
|
||||
return itemlist
|
||||
|
||||
+15
-26
@@ -4,8 +4,7 @@ import re
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
@@ -26,49 +25,39 @@ def search(item, texto):
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
# Descarga la pagina
|
||||
data = re.sub(r"\n|\r|\t|\s{2}|(<!--.*?-->)", "", httptools.downloadpage(item.url).data)
|
||||
|
||||
# Extrae las entradas
|
||||
patron = '<div class="videobox">\s*<a href="([^"]+)".*?url\(\'([^\']+)\'.*?<span>(.*?)<\/span><\/div><\/a>.*?class="title">(.*?)<\/a><span class="views">.*?<\/a><\/span><\/div> '
|
||||
patron = '<div class="videobox">\s*<a href="([^"]+)".*?'
|
||||
patron += 'url\(\'([^\']+)\'.*?'
|
||||
patron += '<span>(.*?)<\/span>.*?'
|
||||
patron += 'class="title">(.*?)<\/a>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedthumbnail, duration, scrapedtitle in matches:
|
||||
if "/embed-" not in scrapedurl:
|
||||
#scrapedurl = scrapedurl.replace("dato.porn/", "dato.porn/embed-") + ".html"
|
||||
scrapedurl = scrapedurl.replace("datoporn.co/", "datoporn.co/embed-") + ".html"
|
||||
if duration:
|
||||
scrapedtitle = "%s - %s" % (duration, scrapedtitle)
|
||||
scrapedtitle += ' gb'
|
||||
scrapedtitle = scrapedtitle.replace(":", "'")
|
||||
|
||||
#logger.debug(scrapedurl + ' / ' + scrapedthumbnail + ' / ' + duration + ' / ' + scrapedtitle)
|
||||
itemlist.append(item.clone(action="play", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail,
|
||||
server="datoporn", fanart=scrapedthumbnail.replace("_t.jpg", ".jpg")))
|
||||
|
||||
# Extrae la marca de siguiente página
|
||||
#next_page = scrapertools.find_single_match(data, '<a href=["|\']([^["|\']+)["|\']>Next')
|
||||
if not config.get_setting('unify'):
|
||||
scrapedtitle = '[COLOR yellow] %s [/COLOR] %s' % (duration , scrapedtitle)
|
||||
else:
|
||||
scrapedtitle += ' gb'
|
||||
scrapedtitle = "[COLOR yellow]" + duration + "[/COLOR] " + scrapedtitle
|
||||
scrapedtitle = scrapedtitle.replace(":", "'")
|
||||
# logger.debug(scrapedurl + ' / ' + scrapedthumbnail + ' / ' + duration + ' / ' + scrapedtitle)
|
||||
itemlist.append(item.clone(action="play", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail, server="datoporn",
|
||||
fanart=scrapedthumbnail.replace("_t.jpg", ".jpg"), plot = ""))
|
||||
next_page = scrapertools.find_single_match(data, '<a class=["|\']page-link["|\'] href=["|\']([^["|\']+)["|\']>Next')
|
||||
if next_page and itemlist:
|
||||
itemlist.append(item.clone(action="lista", title=">> Página Siguiente", url=next_page))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
# Descarga la pagina
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
# Extrae las entradas (carpetas)
|
||||
patron = '<div class="vid_block">\s*<a href="([^"]+)".*?url\((.*?)\).*?<span>(.*?)</span>.*?<b>(.*?)</b>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedthumbnail, numero, scrapedtitle in matches:
|
||||
if numero:
|
||||
scrapedtitle = "%s (%s)" % (scrapedtitle, numero)
|
||||
|
||||
itemlist.append(item.clone(action="lista", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
+44
-50
@@ -1,38 +1,37 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import jsontools
|
||||
from core import scrapertools
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = 'http://www.eporner.com'
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
itemlist.append(item.clone(title="Últimos videos", action="videos", url="http://www.eporner.com/0/"))
|
||||
itemlist.append(item.clone(title="Categorias", action="categorias", url="http://www.eporner.com/categories/"))
|
||||
itemlist.append(item.clone(title="Pornstars", action="pornstars_list", url="http://www.eporner.com/pornstars/"))
|
||||
itemlist.append(item.clone(title="Buscar", action="search", url="http://www.eporner.com/search/%s/"))
|
||||
|
||||
itemlist.append(item.clone(title="Últimos videos", action="videos", url=host + "/0/"))
|
||||
itemlist.append(item.clone(title="Más visto", action="videos", url=host + "/most-viewed/"))
|
||||
itemlist.append(item.clone(title="Mejor valorado", action="videos", url=host + "/top-rated/"))
|
||||
itemlist.append(item.clone(title="Categorias", action="categorias", url=host + "/categories/"))
|
||||
itemlist.append(item.clone(title="Pornstars", action="pornstars", url=host + "/pornstars/"))
|
||||
itemlist.append(item.clone(title=" Alfabetico", action="pornstars_list", url=host + "/pornstars/"))
|
||||
itemlist.append(item.clone(title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
|
||||
item.url = item.url % texto
|
||||
item.action = "videos"
|
||||
|
||||
texto = texto.replace(" ", "-")
|
||||
item.url = host + "/search/%s/" % texto
|
||||
try:
|
||||
return videos(item)
|
||||
except:
|
||||
import traceback
|
||||
logger.error(traceback.format_exc())
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
@@ -41,71 +40,67 @@ def pornstars_list(item):
|
||||
itemlist = []
|
||||
for letra in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
|
||||
itemlist.append(item.clone(title=letra, url=urlparse.urljoin(item.url, letra), action="pornstars"))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def pornstars(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
patron = '<div class="mbtit" itemprop="name"><a href="([^"]+)" title="([^"]+)">[^<]+</a></div> '
|
||||
patron += '<a href="[^"]+" title="[^"]+"> <img src="([^"]+)" alt="[^"]+" style="width:190px;height:152px;" /> </a> '
|
||||
patron = '<div class="mbprofile">.*?'
|
||||
patron += '<a href="([^"]+)" title="([^"]+)">.*?'
|
||||
patron += '<img src="([^"]+)".*?'
|
||||
patron += '<div class="mbtim"><span>Videos: </span>([^<]+)</div>'
|
||||
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for url, title, thumbnail, count in matches:
|
||||
itemlist.append(
|
||||
item.clone(title="%s (%s videos)" % (title, count), url=urlparse.urljoin(item.url, url), action="videos",
|
||||
thumbnail=thumbnail))
|
||||
|
||||
# Paginador
|
||||
patron = "<span style='color:#FFCC00;'>[^<]+</span></a> <a href='([^']+)' title='[^']+'><span>[^<]+</span></a>"
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
if matches:
|
||||
itemlist.append(item.clone(title="Pagina siguiente", url=urlparse.urljoin(item.url, matches[0])))
|
||||
|
||||
# Paginador
|
||||
next_page = scrapertools.find_single_match(data,"<a href='([^']+)' class='nmnext' title='Next page'>")
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append(item.clone(action="pornstars", title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
patron = '<div class="categoriesbox" id="[^"]+"> <div class="ctbinner"> <a href="([^"]+)" title="[^"]+"> <img src="([^"]+)" alt="[^"]+"> <h2>([^"]+)</h2> </a> </div> </div>'
|
||||
|
||||
patron = '<span class="addrem-cat">.*?'
|
||||
patron += '<a href="([^"]+)" title="([^"]+)">.*?'
|
||||
patron +='<div class="cllnumber">([^<]+)</div>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for url, thumbnail, title in matches:
|
||||
itemlist.append(
|
||||
item.clone(title=title, url=urlparse.urljoin(item.url, url), action="videos", thumbnail=thumbnail))
|
||||
|
||||
for url, title, cantidad in matches:
|
||||
url = urlparse.urljoin(item.url, url)
|
||||
title = title + " " + cantidad
|
||||
thumbnail = ""
|
||||
if not thumbnail:
|
||||
thumbnail = scrapertools.find_single_match(data,'<img src="([^"]+)" alt="%s"> % title')
|
||||
itemlist.append(item.clone(title=title, url=url, action="videos", thumbnail=thumbnail))
|
||||
return sorted(itemlist, key=lambda i: i.title)
|
||||
|
||||
|
||||
def videos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
patron = '<a href="([^"]+)" title="([^"]+)" id="[^"]+">.*?<img id="[^"]+" src="([^"]+)"[^>]+>.*?<div class="mbtim">([^<]+)</div>'
|
||||
|
||||
patron = '<div class="mvhdico"><span>([^<]+)</span>.*?'
|
||||
patron += '<a href="([^"]+)" title="([^"]+)" id="[^"]+">.*?'
|
||||
patron += 'src="([^"]+)"[^>]+>.*?'
|
||||
patron += '<div class="mbtim">([^<]+)</div>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for url, title, thumbnail, duration in matches:
|
||||
itemlist.append(item.clone(title="%s (%s)" % (title, duration), url=urlparse.urljoin(item.url, url),
|
||||
for quality, url, title, thumbnail, duration in matches:
|
||||
title = "[COLOR yellow]" + duration + "[/COLOR] " + "[COLOR red]" + quality + "[/COLOR] " +title
|
||||
itemlist.append(item.clone(title=title, url=urlparse.urljoin(item.url, url),
|
||||
action="play", thumbnail=thumbnail, contentThumbnail=thumbnail,
|
||||
contentType="movie", contentTitle=title))
|
||||
|
||||
# Paginador
|
||||
patron = "<span style='color:#FFCC00;'>[^<]+</span></a> <a href='([^']+)' title='[^']+'><span>[^<]+</span></a>"
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
if matches:
|
||||
itemlist.append(item.clone(title="Página siguiente", url=urlparse.urljoin(item.url, matches[0])))
|
||||
|
||||
next_page = scrapertools.find_single_match(data,"<a href='([^']+)' class='nmnext' title='Next page'>")
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append(item.clone(action="videos", title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -135,8 +130,7 @@ def play(item):
|
||||
int(hash[16:24], 16)) + int_to_base36(int(hash[24:32], 16))
|
||||
|
||||
url = "https://www.eporner.com/xhr/video/%s?hash=%s" % (vid, hash)
|
||||
data = httptools.downloadpage(url).data
|
||||
jsondata = jsontools.load(data)
|
||||
jsondata = httptools.downloadpage(url).json
|
||||
|
||||
for source in jsondata["sources"]["mp4"]:
|
||||
url = jsondata["sources"]["mp4"][source]["src"]
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.eroticage.net'
|
||||
|
||||
|
||||
@@ -10,13 +10,5 @@
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
+16
-42
@@ -1,7 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
@@ -9,7 +8,6 @@ from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = "https://www.youfreeporntube.net"
|
||||
|
||||
@@ -17,11 +15,12 @@ def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title="Útimos videos",
|
||||
url= host + "/new-clips.html?&page=1"))
|
||||
url= host + "/newvideos.html?&page=1"))
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title="Populares",
|
||||
url=host + "/topvideos.html?page=1"))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="categorias", title="Categorias", url=host + "/browse.html"))
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title="Populares",
|
||||
url=host + "/topvideo.html?page=1"))
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="search", title="Buscar",
|
||||
url=host + "/search.php?keywords="))
|
||||
return itemlist
|
||||
@@ -49,7 +48,7 @@ def categorias(item):
|
||||
patron = '<div class="pm-li-category"><a href="([^"]+)">.*?.<h3>(.*?)</h3></a>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for url, actriz in matches:
|
||||
itemlist.append(Item(channel=item.channel, action="listacategoria", title=actriz, url=url))
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title=actriz, url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -58,7 +57,9 @@ def lista(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}", "", data)
|
||||
patron = '<li><div class=".*?<a href="([^"]+)".*?>.*?.img src="([^"]+)".*?alt="([^"]+)".*?>'
|
||||
patron = '<li><div class=".*?'
|
||||
patron += '<a href="([^"]+)".*?'
|
||||
patron += '<img src="([^"]+)".*?alt="([^"]+)"'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
itemlist = []
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle in matches:
|
||||
@@ -66,36 +67,14 @@ def lista(item):
|
||||
thumbnail = urlparse.urljoin(item.url, scrapedthumbnail)
|
||||
title = scrapedtitle.strip()
|
||||
itemlist.append(Item(channel=item.channel, action="play", thumbnail=thumbnail, fanart=thumbnail, title=title,
|
||||
fulltitle=title, url=url,
|
||||
url=url,
|
||||
viewmode="movie", folder=True))
|
||||
paginacion = scrapertools.find_single_match(data,
|
||||
'<li class="active"><a href="#" onclick="return false;">\d+</a></li><li class=""><a href="([^"]+)">')
|
||||
'<li class="active">.*?</li>.*?<a href="([^"]+)">')
|
||||
if paginacion:
|
||||
paginacion = urlparse.urljoin(item.url,paginacion)
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title=">> Página Siguiente",
|
||||
url=host + "/" + paginacion))
|
||||
return itemlist
|
||||
|
||||
|
||||
def listacategoria(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}", "", data)
|
||||
patron = '<li><div class=".*?<a href="([^"]+)".*?>.*?.img src="([^"]+)".*?alt="([^"]+)".*?>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
itemlist = []
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle in matches:
|
||||
url = urlparse.urljoin(item.url, scrapedurl)
|
||||
thumbnail = urlparse.urljoin(item.url, scrapedthumbnail)
|
||||
title = scrapedtitle.strip()
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="play", thumbnail=thumbnail, title=title, fulltitle=title, url=url,
|
||||
viewmode="movie", folder=True))
|
||||
paginacion = scrapertools.find_single_match(data,
|
||||
'<li class="active"><a href="#" onclick="return false;">\d+</a></li><li class=""><a href="([^"]+)">')
|
||||
if paginacion:
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="listacategoria", title=">> Página Siguiente", url=paginacion))
|
||||
url= paginacion))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -103,14 +82,9 @@ def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
item.url = scrapertools.find_single_match(data, '(?i)Playerholder.*?src="([^"]+)"')
|
||||
if "tubst.net" in item.url:
|
||||
url = scrapertools.find_single_match(data, 'itemprop="embedURL" content="([^"]+)')
|
||||
data = httptools.downloadpage(url).data
|
||||
url = scrapertools.find_single_match(data, '<iframe.*?src="([^"]+)"')
|
||||
data = httptools.downloadpage(url).data
|
||||
url = scrapertools.find_single_match(data, '<source src="([^"]+)"')
|
||||
item.url = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers.get("location", "")
|
||||
itemlist.append(item.clone())
|
||||
url = scrapertools.find_single_match(data, '<div id="video-wrapper">.*?<iframe.*?src="([^"]+)"')
|
||||
itemlist.append(item.clone(action="play", title=url, url=url ))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist)
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "",
|
||||
"thumbnail": "https://i.imgur.com/Orguh85.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://fapality.com'
|
||||
|
||||
@@ -93,6 +92,6 @@ def play(item):
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl in matches:
|
||||
url = scrapedurl
|
||||
itemlist.append(item.clone(action="play", title=url, fulltitle = item.title, url=url))
|
||||
itemlist.append(item.clone(action="play", title=url, contentTitle = item.title, url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.fetishshrine.com'
|
||||
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
# BLOQUEO ESET INTERNET SECURITY
|
||||
def mainlist(item):
|
||||
@@ -43,7 +40,6 @@ def play(item):
|
||||
itemlist = servertools.find_video_items(data=data)
|
||||
for videoitem in itemlist:
|
||||
videoitem.title = item.title
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
videoitem.channel = item.channel
|
||||
return itemlist
|
||||
|
||||
+38
-9
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://es.foxtube.com'
|
||||
|
||||
@@ -15,7 +14,9 @@ def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Ultimos" , action="lista", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="PornStar" , action="catalogo", url=host + '/actrices/'))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host))
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
@@ -33,6 +34,31 @@ def search(item, texto):
|
||||
return []
|
||||
|
||||
|
||||
def catalogo(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<a class="tco5" href="([^"]+)">.*?'
|
||||
patron += 'data-origen="([^"]+)" alt="([^"]+)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
scrapertools.printMatches(matches)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle in matches:
|
||||
scrapedplot = ""
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail, plot=scrapedplot) )
|
||||
# <a class="bgco2 tco3" rel="next" href="/actrices/2/">></a>
|
||||
next_page = scrapertools.find_single_match(data,'<a class="bgco2 tco3" rel="next" href="([^"]+)">></a>')
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append(item.clone(action="lista" , title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
@@ -54,6 +80,8 @@ def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
if "/actrices/" in item.url:
|
||||
data=scrapertools.find_single_match(data,'<section class="container">(.*?)>Actrices similares</h3>')
|
||||
patron = '<a class="thumb tco1" href="([^"]+)">.*?'
|
||||
patron += 'src="([^"]+)".*?'
|
||||
patron += 'alt="([^"]+)".*?'
|
||||
@@ -71,7 +99,7 @@ def lista(item):
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot, contentTitle = contentTitle))
|
||||
next_page = scrapertools.find_single_match(data,'<a class="bgco2 tco3" rel="next" href="([^"]+)">></a>')
|
||||
next_page = scrapertools.find_single_match(data,'<a class="bgco2 tco3" rel="next" href="([^"]+)">></a>')
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append(item.clone(action="lista" , title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
@@ -82,13 +110,14 @@ def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
url = scrapertools.find_single_match(data,'<iframe src="([^"]+)"')
|
||||
url = scrapertools.find_single_match(data,'<iframe title="video" src="([^"]+)"')
|
||||
url = url.replace("https://flashservice.xvideos.com/embedframe/", "https://www.xvideos.com/video") + "/"
|
||||
data = httptools.downloadpage(url).data
|
||||
patron = 'html5player.setVideoHLS\\(\'([^\']+)\''
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl in matches:
|
||||
scrapedurl = scrapedurl.replace("\/", "/")
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, fulltitle=item.fulltitle, url=scrapedurl,
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo", folder=False))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://frprn.com'
|
||||
|
||||
@@ -97,6 +96,6 @@ def play(item):
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl in matches:
|
||||
title = scrapedurl
|
||||
itemlist.append(item.clone(action="play", title=title, fulltitle = scrapedurl, url=scrapedurl))
|
||||
itemlist.append(item.clone(action="play", title=title, contentTitle = scrapedurl, url=scrapedurl))
|
||||
return itemlist
|
||||
|
||||
|
||||
+33
-43
@@ -1,16 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://freepornstreams.org'
|
||||
host = 'http://freepornstreams.org' #es http://xxxstreams.org
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
@@ -18,8 +16,8 @@ def mainlist(item):
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Peliculas" , action="lista", url=host + "/free-full-porn-movies/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Videos" , action="lista", url=host + "/free-stream-porn/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Canal" , action="catalogo", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Categoria" , action="categorias", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Canal" , action="categorias", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
@@ -37,35 +35,24 @@ def search(item, texto):
|
||||
return []
|
||||
|
||||
|
||||
def catalogo(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = scrapertools.find_single_match(data,'>Top Sites</a>(.*?)</aside>')
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<li id="menu-item-\d+".*?<a href="([^"]+)">([^"]+)</a></li>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle in matches:
|
||||
scrapedplot = ""
|
||||
scrapedthumbnail = ""
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail, plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = scrapertools.find_single_match(data,'Top Tags(.*?)</ul>')
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
if item.title == "Categorias" :
|
||||
data = scrapertools.find_single_match(data,'>Top Tags(.*?)</ul>')
|
||||
else:
|
||||
data = scrapertools.find_single_match(data,'>Top Sites</a>(.*?)</aside>')
|
||||
patron = '<a href="([^"]+)">(.*?)</a>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle in matches:
|
||||
scrapedplot = ""
|
||||
scrapedthumbnail = ""
|
||||
scrapedurl = scrapedurl.replace ("http://freepornstreams.org/freepornst/stout.php?s=100,75,65:*&u=" , "")
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail, plot=scrapedplot) )
|
||||
if not "Featured" in scrapedtitle:
|
||||
scrapedplot = ""
|
||||
scrapedthumbnail = ""
|
||||
scrapedurl = scrapedurl.replace ("http://freepornstreams.org/freepornst/stout.php?s=100,75,65:*&u=" , "")
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail, plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -79,12 +66,15 @@ def lista(item):
|
||||
patron += '<img src="([^"]+)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,scrapedthumbnail in matches:
|
||||
calidad = scrapertools.find_single_match(scrapedtitle, '(\(.*?\))')
|
||||
title = "[COLOR yellow]" + calidad + "[/COLOR] " + scrapedtitle.replace( "%s" % calidad, "")
|
||||
if '/HD' in scrapedtitle : title= "[COLOR red]" + "HD" + "[/COLOR] " + scrapedtitle
|
||||
elif 'SD' in scrapedtitle : title= "[COLOR red]" + "SD" + "[/COLOR] " + scrapedtitle
|
||||
elif 'FullHD' in scrapedtitle : title= "[COLOR red]" + "FullHD" + "[/COLOR] " + scrapedtitle
|
||||
elif '1080' in scrapedtitle : title= "[COLOR red]" + "1080p" + "[/COLOR] " + scrapedtitle
|
||||
else: title = scrapedtitle
|
||||
thumbnail = scrapedthumbnail.replace("jpg#", "jpg")
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=scrapedurl, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot, fulltitle=title) )
|
||||
itemlist.append( Item(channel=item.channel, action="findvideos", title=title, url=scrapedurl, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot, contentTitle=title) )
|
||||
next_page = scrapertools.find_single_match(data, '<div class="nav-previous"><a href="([^"]+)"')
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
@@ -92,14 +82,14 @@ def lista(item):
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
def findvideos(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
itemlist = servertools.find_video_items(data=data)
|
||||
for videoitem in itemlist:
|
||||
videoitem.title = item.fulltitle
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
videochannel=item.channel
|
||||
data = re.sub(r"\n|\r|\t|amp;|\s{2}| ", "", data)
|
||||
patron = '<a href="([^"]+)" rel="nofollow"[^<]+>(?:Streaming|Download)'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for url in matches:
|
||||
if not "ubiqfile" in url:
|
||||
itemlist.append(item.clone(action='play',title="%s", url=url))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
return itemlist
|
||||
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "gotporn",
|
||||
"name": "gotporn",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://cdn2-static-cf.gotporn.com/desktop/img/gotporn-logo.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
|
||||
Executable
+129
@@ -0,0 +1,129 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.gotporn.com'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host + "/?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorados" , action="lista", url=host + "/top-rated?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistos" , action="lista", url=host + "/most-viewed?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Longitud" , action="lista", url=host + "/longest?page=1"))
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Canal" , action="catalogo", url=host + "/channels?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/categories"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/results?search_query=%s" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
|
||||
|
||||
patron = '<a href="([^"]+)">'
|
||||
patron += '<span class="text">([^<]+)</span>'
|
||||
patron += '<span class="num">([^<]+)</span>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,cantidad in matches:
|
||||
scrapedplot = ""
|
||||
scrapedtitle = "%s %s" % (scrapedtitle,cantidad)
|
||||
scrapedurl = scrapedurl + "?page=1"
|
||||
thumbnail = ""
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=thumbnail , plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def catalogo(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
logger.debug(data)
|
||||
patron = '<header class="clearfix" itemscope>.*?'
|
||||
patron += '<a href="([^"]+)".*?'
|
||||
patron += '<img src="([^"]+)" alt="([^"]+)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle in matches:
|
||||
scrapedplot = ""
|
||||
scrapedurl = scrapedurl + "?page=1"
|
||||
thumbnail = "https:" + scrapedthumbnail
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=thumbnail , plot=scrapedplot) )
|
||||
next_page = scrapertools.find_single_match(data, '<a href="([^"]+)" class="btn btn-secondary"><span class="text">Next')
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="catalogo", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<li class="video-item poptrigger".*?'
|
||||
patron += 'href="([^"]+)" data-title="([^"]+)".*?'
|
||||
patron += '<span class="duration">(.*?)</span>.*?'
|
||||
patron += 'src=\'([^\']+)\'.*?'
|
||||
patron += '<h3 class="video-thumb-title(.*?)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,scrapedtime,scrapedthumbnail,quality in matches:
|
||||
scrapedtime = scrapedtime.strip()
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + scrapedtitle
|
||||
if quality:
|
||||
title = "[COLOR yellow]%s[/COLOR] [COLOR red]HD[/COLOR] %s" % (scrapedtime,scrapedtitle)
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=scrapedurl, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot,))
|
||||
next_page = scrapertools.find_single_match(data, '<a href="([^"]+)" class="btn btn-secondary')
|
||||
if "categories" in item.url:
|
||||
next_page = scrapertools.find_single_match(data, '<a href="([^"]+)" class="btn btn-secondary paginate-show-more')
|
||||
if "search_query" in item.url:
|
||||
next_page = scrapertools.find_single_match(data, '<link rel=\'next\' href="([^"]+)">')
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<source src="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for url in matches:
|
||||
url += "|Referer=%s" % host
|
||||
itemlist.append(item.clone(action="play", title = item.title, url=url ))
|
||||
return itemlist
|
||||
|
||||
+5
-7
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urllib
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.hclips.com'
|
||||
|
||||
|
||||
+5
-7
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urllib
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.hdzog.com'
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://hellporno.com'
|
||||
|
||||
@@ -61,7 +60,7 @@ def lista(item):
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<div class="video-thumb"><a href="([^"]+)" class="title".*?>([^"]+)</a>.*?'
|
||||
patron += '<span class="time">([^<]+)</span>.*?'
|
||||
patron += '<video poster="([^"]+)"'
|
||||
patron += '<video muted poster="([^"]+)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,duracion,scrapedthumbnail in matches:
|
||||
url = scrapedurl
|
||||
@@ -85,6 +84,6 @@ def play(item):
|
||||
scrapedurl = scrapertools.find_single_match(data,'<source data-fluid-hd src="([^"]+)/?br=\d+"')
|
||||
if scrapedurl=="":
|
||||
scrapedurl = scrapertools.find_single_match(data,'<source src="([^"]+)/?br=\d+"')
|
||||
itemlist.append(item.clone(action="play", title=scrapedurl, fulltitle = item.title, url=scrapedurl))
|
||||
itemlist.append(item.clone(action="play", title=scrapedurl, url=scrapedurl))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://dl.dropboxusercontent.com/u/30248079/hentai_id.png",
|
||||
"banner": "https://dl.dropboxusercontent.com/u/30248079/hentai_id2.png",
|
||||
"thumbnail": "http://www.hentai-id.tv/wp-content/themes/moviescript/assets/img/logo.png",
|
||||
"banner": "http://www.hentai-id.tv/wp-content/themes/moviescript/assets/img/background.jpg",
|
||||
"categories": [
|
||||
"adult"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
+22
-11
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
CHANNEL_HOST = "http://hentai-id.tv/"
|
||||
|
||||
@@ -70,11 +68,11 @@ def series(item):
|
||||
action = "episodios"
|
||||
|
||||
for url, thumbnail, title in matches:
|
||||
fulltitle = title
|
||||
contentTitle = title
|
||||
show = title
|
||||
# logger.debug("title=[{0}], url=[{1}], thumbnail=[{2}]".format(title, url, thumbnail))
|
||||
itemlist.append(Item(channel=item.channel, action=action, title=title, url=url, thumbnail=thumbnail,
|
||||
show=show, fulltitle=fulltitle, fanart=thumbnail, folder=True))
|
||||
show=show, fanart=thumbnail, folder=True))
|
||||
|
||||
if pagination:
|
||||
page = scrapertools.find_single_match(pagination, '>(?:Page|Página)\s*(\d+)\s*(?:of|de)\s*\d+<')
|
||||
@@ -106,7 +104,7 @@ def episodios(item):
|
||||
|
||||
# logger.debug("title=[{0}], url=[{1}], thumbnail=[{2}]".format(title, url, thumbnail))
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=url,
|
||||
thumbnail=thumbnail, plot=plot, show=item.show, fulltitle="%s %s" % (item.show, title),
|
||||
thumbnail=thumbnail, plot=plot,
|
||||
fanart=thumbnail))
|
||||
|
||||
return itemlist
|
||||
@@ -116,20 +114,33 @@ def findvideos(item):
|
||||
logger.info()
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
video_urls = []
|
||||
down_urls = []
|
||||
patron = '<(?:iframe)?(?:IFRAME)?\s*(?:src)?(?:SRC)?="([^"]+)"'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
|
||||
for url in matches:
|
||||
if 'goo.gl' in url:
|
||||
if 'goo.gl' in url or 'tinyurl' in url:
|
||||
video = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers["location"]
|
||||
matches.remove(url)
|
||||
matches.append(video)
|
||||
video_urls.append(video)
|
||||
else:
|
||||
video_urls.append(url)
|
||||
paste = scrapertools.find_single_match(data, 'https://gpaste.us/([a-zA-Z0-9]+)')
|
||||
if paste:
|
||||
try:
|
||||
new_data = httptools.downloadpage('https://gpaste.us/'+paste).data
|
||||
|
||||
bloq = scrapertools.find_single_match(new_data, 'id="input_text">(.*?)</div>')
|
||||
matches = bloq.split('<br>')
|
||||
for url in matches:
|
||||
down_urls.append(url)
|
||||
except:
|
||||
pass
|
||||
video_urls.extend(down_urls)
|
||||
from core import servertools
|
||||
itemlist = servertools.find_video_items(data=",".join(matches))
|
||||
itemlist = servertools.find_video_items(data=",".join(video_urls))
|
||||
for videoitem in itemlist:
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.contentTitle = item.contentTitle
|
||||
videoitem.channel = item.channel
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
|
||||
|
||||
+5
-7
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urllib
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://hotmovs.com'
|
||||
|
||||
|
||||
@@ -109,8 +109,7 @@ def menu_info(item):
|
||||
itemlist = []
|
||||
video_urls, data = play(item.clone(extra="play_menu"))
|
||||
itemlist.append(item.clone(action="play", title="Ver -- %s" % item.title, video_urls=video_urls))
|
||||
bloque = scrapertools.find_single_match(data, '<div class="carousel-inner"(.*?)<div class="container">')
|
||||
matches = scrapertools.find_multiple_matches(bloque, 'src="([^"]+)"')
|
||||
matches = scrapertools.find_multiple_matches(data, '<a href="([^"]+)" class="item" rel="screenshots"')
|
||||
for i, img in enumerate(matches):
|
||||
if i == 0:
|
||||
continue
|
||||
|
||||
@@ -10,13 +10,5 @@
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": false,
|
||||
"enabled": false,
|
||||
"visible": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -6,7 +6,6 @@ from core import httptools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = 'http://javus.net/'
|
||||
|
||||
|
||||
+12
-8
@@ -1,13 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
|
||||
host = 'https://www.javwhores.com/'
|
||||
|
||||
@@ -74,9 +74,13 @@ def lista(item):
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail,
|
||||
plot=plot, contentTitle = title))
|
||||
next_page = scrapertools.find_single_match(data, '<li class="next"><a href="([^"]+)"')
|
||||
if "#videos" in next_page:
|
||||
next_page = scrapertools.find_single_match(data, 'data-parameters="sort_by:post_date;from:(\d+)">Next')
|
||||
next = scrapertools.find_single_match(item.url, '(.*?/)\d+')
|
||||
next_page = next + "%s/" % next_page
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>" , text_color="blue", url=next_page ) )
|
||||
itemlist.append(item.clone(action="lista", title= next_page, text_color="blue", url=next_page ) )
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -92,7 +96,7 @@ def play(item):
|
||||
if scrapedurl == "" :
|
||||
scrapedurl = scrapertools.find_single_match(data, 'video_url: \'([^\']+)\'')
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=scrapedurl, fulltitle=item.title, url=scrapedurl,
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=scrapedurl, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo", folder=False))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://jizzbunker.com/es'
|
||||
|
||||
@@ -87,7 +86,7 @@ def play(item):
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl in matches:
|
||||
scrapedurl = scrapedurl.replace("https", "http")
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, fulltitle=item.fulltitle, url=scrapedurl,
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo", folder=False))
|
||||
return itemlist
|
||||
|
||||
|
||||
+6
-11
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://xxx.justporno.tv'
|
||||
|
||||
@@ -93,10 +92,6 @@ def lista(item):
|
||||
next_page = "%s?mode=async&function=get_block&block_id=list_videos_common_videos_list" \
|
||||
"&sort_by=post_date&from=%s" % (item.url, next_page)
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page))
|
||||
|
||||
# if next_page!="":
|
||||
# next_page = urlparse.urljoin(item.url,next_page)
|
||||
# itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -109,6 +104,6 @@ def play(item):
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl in matches:
|
||||
scrapedplot = ""
|
||||
itemlist.append(item.clone(channel=item.channel, action="play", title=scrapedurl , url=scrapedurl , plot="" , folder=True) )
|
||||
itemlist.append(item.clone(channel=item.channel, action="play", title=item.title , url=scrapedurl , plot="" , folder=True) )
|
||||
return itemlist
|
||||
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "kingsizetits",
|
||||
"name": "Kingsizetits",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "http://cdn.images.kingsizetits.com/resources/kingsizetits.com/rwd_5/default/images/logo.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
|
||||
Executable
+95
@@ -0,0 +1,95 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://kingsizetits.com'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host + "/most-recent/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistos" , action="lista", url=host + "/most-viewed-week/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorada" , action="lista", url=host + "/top-rated/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas largos" , action="lista", url=host + "/longest/"))
|
||||
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/categories/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/search/videos/%s/" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<a href="([^"]+)" class="video-box.*?'
|
||||
patron += 'src=\'([^\']+)\' alt=\'([^\']+)\'.*?'
|
||||
patron += 'data-video-count="(\d+)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle,cantidad in matches:
|
||||
scrapedplot = ""
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl)
|
||||
title = scrapedtitle + " (" + cantidad + ")"
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=title, url=scrapedurl,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail, plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<script>stat.*?'
|
||||
patron += '<a href="([^"]+)".*?'
|
||||
patron += 'src="([^"]+)".*?'
|
||||
patron += '<span class="video-length">([^<]+)</span>.*?'
|
||||
patron += '<span class="pic-name">([^<]+)</span>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtime,scrapedtitle in matches:
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + scrapedtitle
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl)
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=scrapedurl,
|
||||
fanart=thumbnail, thumbnail=thumbnail, plot=plot, contentTitle = scrapedtitle))
|
||||
next_page = scrapertools.find_single_match(data, '<a class="btn default-btn page-next page-nav" href="([^"]+)"')
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
return itemlist
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
logger.debug(data)
|
||||
url = scrapertools.find_single_match(data,'label:"\d+", file\:"([^"]+)"')
|
||||
itemlist.append(item.clone(action="play", server="directo", url=url ))
|
||||
return itemlist
|
||||
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "mangovideo",
|
||||
"name": "mangovideo",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://mangovideo.pw/images/logo.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
|
||||
Executable
+109
@@ -0,0 +1,109 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
|
||||
server = {'1': 'https://www.mangovideo.pw/contents/videos', '7' : 'https://server9.mangovideo.pw/contents/videos/',
|
||||
'8' : 'https://s10.mangovideo.pw/contents/videos/', '9' : 'https://server2.mangovideo.pw/contents/videos/',
|
||||
'10' : 'https://server217.mangovideo.pw/contents/videos/', '11' : 'https://234.mangovideo.pw/contents/videos/'
|
||||
}
|
||||
|
||||
host = 'http://mangovideo.pw'
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host + "/latest-updates/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistos" , action="lista", url=host + "/most-popular/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorada" , action="lista", url=host + "/top-rated/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Sitios" , action="categorias", url=host + "/sites/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/categories/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/search/%s/" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<a class="item" href="([^"]+)" title="([^"]+)".*?'
|
||||
patron += '<div class="videos">(\d+) videos</div>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,cantidad in matches:
|
||||
scrapedplot = ""
|
||||
scrapedthumbnail = ""
|
||||
title = scrapedtitle + " (" + cantidad + ")"
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=title, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail , plot=scrapedplot) )
|
||||
|
||||
next_page = scrapertools.find_single_match(data, '<li class="next"><a href="([^"]+)"')
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="categorias", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<div class="item\s+">.*?'
|
||||
patron += '<a href="([^"]+)" title="([^"]+)".*?'
|
||||
patron += 'data-original="([^"]+)".*?'
|
||||
patron += '<div class="duration">([^<]+)</div>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,scrapedthumbnail,scrapedtime in matches:
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + scrapedtitle
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=scrapedurl,
|
||||
thumbnail=thumbnail, fanart=thumbnail, plot=plot, contentTitle = scrapedtitle))
|
||||
next_page = scrapertools.find_single_match(data, '<li class="next"><a href="([^"]+)"')
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|amp;|\s{2}| ", "", data)
|
||||
scrapedtitle = ""
|
||||
patron = 'video_url: \'function/0/https://mangovideo.pw/get_file/(\d+)/\w+/(.*?)/\''
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedtitle,url in matches:
|
||||
scrapedtitle = server.get(scrapedtitle, scrapedtitle)
|
||||
url = scrapedtitle + url
|
||||
if not scrapedtitle:
|
||||
url = scrapertools.find_single_match(data, '<div class="embed-wrap".*?<iframe src="([^"]+)\?ref=')
|
||||
itemlist.append(item.clone(action="play", title="%s", url=url))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
|
||||
return itemlist
|
||||
|
||||
+21
-16
@@ -1,23 +1,22 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://mporno.tv'
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Novedades" , action="peliculas", url=host + "/most-recent/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valoradas" , action="peliculas", url=host + "/top-rated/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistas" , action="peliculas", url=host + "/most-viewed/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Longitud" , action="peliculas", url=host + "/longest/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Novedades" , action="lista", url=host + "/most-recent/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valoradas" , action="lista", url=host + "/top-rated/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistas" , action="lista", url=host + "/most-viewed/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Longitud" , action="lista", url=host + "/longest/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/channels/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
@@ -28,7 +27,7 @@ def search(item, texto):
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/search/videos/%s/page1.html" % texto
|
||||
try:
|
||||
return peliculas(item)
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
@@ -46,12 +45,12 @@ def categorias(item):
|
||||
scrapedplot = ""
|
||||
scrapedthumbnail = ""
|
||||
scrapedtitle = scrapedtitle + " " + cantidad
|
||||
itemlist.append( Item(channel=item.channel, action="peliculas", title=scrapedtitle, url=scrapedurl,
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail , plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def peliculas(item):
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
@@ -61,15 +60,21 @@ def peliculas(item):
|
||||
for scrapedurl,scrapedtitle,scrapedthumbnail in matches:
|
||||
contentTitle = scrapedtitle
|
||||
title = scrapedtitle
|
||||
scrapedurl = scrapedurl.replace("/thumbs/", "/videos/") + ".mp4"
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=scrapedurl, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot, contentTitle=contentTitle))
|
||||
fanart=thumbnail, plot=plot, server= "directo", contentTitle=contentTitle))
|
||||
next_page_url = scrapertools.find_single_match(data,'<a href=\'([^\']+)\' class="next">Next >></a>')
|
||||
if next_page_url!="":
|
||||
next_page_url = urlparse.urljoin(item.url,next_page_url)
|
||||
itemlist.append(item.clone(action="peliculas", title="Página Siguiente >>", text_color="blue", url=next_page_url) )
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page_url) )
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
url = item.url.replace("/thumbs/", "/videos/") + ".mp4"
|
||||
itemlist.append( Item(channel=item.channel, action="play", title= item.title, server= "directo", url=url))
|
||||
return itemlist
|
||||
+10
-10
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.pornburst.xxx'
|
||||
|
||||
@@ -43,20 +42,21 @@ def categorias(item):
|
||||
if "/sites/" in item.url:
|
||||
patron = '<div class="muestra-escena muestra-canales">.*?'
|
||||
patron += 'href="([^"]+)">.*?'
|
||||
patron += 'src="([^"]+)".*?'
|
||||
patron += 'data-src="([^"]+)".*?'
|
||||
patron += '<a title="([^"]+)".*?'
|
||||
patron += '</span> (\d+) videos</span>'
|
||||
if "/pornstars/" in item.url:
|
||||
patron = '<a class="muestra-escena muestra-pornostar" href="([^"]+)">.*?'
|
||||
patron += 'src="([^"]+)".*?'
|
||||
patron += 'data-src="([^"]+)".*?'
|
||||
patron += 'alt="([^"]+)".*?'
|
||||
patron += '</span> (\d+) videos</span>'
|
||||
else:
|
||||
patron = '<a class="muestra-escena muestra-categoria" href="([^"]+)" title="[^"]+">.*?'
|
||||
patron += 'src="([^"]+)".*?'
|
||||
patron += 'data-src="([^"]+)".*?'
|
||||
patron += '</span> ([^"]+) </h2>(.*?)>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle,cantidad in matches:
|
||||
logger.debug(scrapedurl + ' / ' + scrapedthumbnail + ' / ' + cantidad + ' / ' + scrapedtitle)
|
||||
scrapedplot = ""
|
||||
cantidad = " (" + cantidad + ")"
|
||||
if "</a" in cantidad:
|
||||
@@ -107,6 +107,6 @@ def play(item):
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl in matches:
|
||||
title = scrapedurl
|
||||
itemlist.append(item.clone(action="play", title=title, fulltitle = item.title, url=scrapedurl))
|
||||
itemlist.append(item.clone(action="play", title=title, url=scrapedurl))
|
||||
return itemlist
|
||||
|
||||
|
||||
+2
-4
@@ -2,13 +2,11 @@
|
||||
|
||||
import base64
|
||||
import hashlib
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = "https://www.nuvid.com"
|
||||
|
||||
@@ -53,7 +51,7 @@ def lista(item):
|
||||
data = httptools.downloadpage(item.url, headers=header, cookies=False).data
|
||||
|
||||
# Extrae las entradas
|
||||
patron = '<div class="box-tumb related_vid">.*?href="([^"]+)" title="([^"]+)".*?src="([^"]+)"(.*?)<i class="time">([^<]+)<'
|
||||
patron = '<div class="box-tumb related_vid.*?href="([^"]+)" title="([^"]+)".*?src="([^"]+)"(.*?)<i class="time">([^<]+)<'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail, quality, duration in matches:
|
||||
scrapedurl = urlparse.urljoin(host, scrapedurl)
|
||||
@@ -85,7 +83,7 @@ def categorias(item):
|
||||
for cat, b in bloques:
|
||||
cat = cat.replace("Straight", "Hetero")
|
||||
itemlist.append(item.clone(action="", title=cat, text_color="gold"))
|
||||
matches = scrapertools.find_multiple_matches(b, '<li.*?href="([^"]+)">(.*?)</span>')
|
||||
matches = scrapertools.find_multiple_matches(b, '<li>.*?href="([^"]+)" >(.*?)</span>')
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
scrapedtitle = " " + scrapedtitle.replace("<span>", "")
|
||||
scrapedurl = urlparse.urljoin(host, scrapedurl)
|
||||
|
||||
+37
-8
@@ -1,18 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# ------------------------------------------------------------
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
import re
|
||||
import base64
|
||||
|
||||
from core import httptools
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import httptools
|
||||
|
||||
host = 'https://pandamovies.pw'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
@@ -62,7 +61,7 @@ def lista(item):
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<div data-movie-id="\d+".*?'
|
||||
patron += '<a href="([^"]+)".*?oldtitle="([^"]+)".*?'
|
||||
patron += '<img src="([^"]+)".*?'
|
||||
patron += '<img data-original="([^"]+)".*?'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail in matches:
|
||||
url = urlparse.urljoin(item.url, scrapedurl)
|
||||
@@ -71,7 +70,6 @@ def lista(item):
|
||||
plot = ""
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=url, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot, contentTitle=title))
|
||||
# <li class='active'><a class=''>1</a></li><li><a rel='nofollow' class='page larger' href='https://pandamovies.pw/movies/page/2'>
|
||||
next_page = scrapertools.find_single_match(data, '<li class=\'active\'>.*?href=\'([^\']+)\'>')
|
||||
if next_page == "":
|
||||
next_page = scrapertools.find_single_match(data, '<a.*?href="([^"]+)" >Next »</a>')
|
||||
@@ -79,3 +77,34 @@ def lista(item):
|
||||
next_page = urlparse.urljoin(item.url, next_page)
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page))
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|amp;|\s{2}| ", "", data)
|
||||
patron = '- on ([^"]+)" href="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedtitle,url in matches:
|
||||
if 'aHR0' in url:
|
||||
n = 3
|
||||
while n > 0:
|
||||
url= url.replace("https://vshares.tk/goto/", "").replace("https://waaws.tk/goto/", "").replace("https://openloads.tk/goto/", "")
|
||||
logger.debug (url)
|
||||
url = base64.b64decode(url)
|
||||
n -= 1
|
||||
if "mangovideo" in url: #Aparece como directo
|
||||
data = httptools.downloadpage(url).data
|
||||
patron = 'video_url: \'function/0/https://mangovideo.pw/get_file/(\d+)/\w+/(.*?)/\?embed=true\''
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedtitle,url in matches:
|
||||
if scrapedtitle =="1": scrapedtitle= "https://www.mangovideo.pw/contents/videos/"
|
||||
if scrapedtitle =="7": scrapedtitle= "https://server9.mangovideo.pw/contents/videos/"
|
||||
if scrapedtitle =="8": scrapedtitle= "https://s10.mangovideo.pw/contents/videos/"
|
||||
if scrapedtitle =="10": scrapedtitle= "https://server217.mangovideo.pw/contents/videos/"
|
||||
if scrapedtitle =="11": scrapedtitle= "https://234.mangovideo.pw/contents/videos/"
|
||||
url = scrapedtitle + url
|
||||
itemlist.append( Item(channel=item.channel, action="play", title = "%s", url=url ))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -10,13 +10,5 @@
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": false,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
+59
-37
@@ -1,63 +1,85 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import urlparse
|
||||
import re
|
||||
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
|
||||
|
||||
host = 'http://www.pelisxporno.com'
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
itemlist.append(item.clone(action="lista", title="Novedades", url="http://www.pelisxporno.com/?order=date"))
|
||||
itemlist.append(item.clone(action="categorias", title="Categorías", url="http://www.pelisxporno.com/categorias/"))
|
||||
itemlist.append(item.clone(action="search", title="Buscar", url="http://www.pelisxporno.com/?s=%s"))
|
||||
|
||||
itemlist.append(item.clone(action="lista", title="Novedades", url= host + "/?order=date"))
|
||||
itemlist.append(item.clone(action="categorias", title="Categorías", url=host + "/categorias/"))
|
||||
itemlist.append(item.clone(action="search", title="Buscar"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info("")
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/?s=%s" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
item.url = item.url % texto
|
||||
return lista(item)
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
# Descarga la pagina
|
||||
data = httptools.downloadpage(item.url).data
|
||||
# Extrae las entradas (carpetas)
|
||||
patron = '<div class="video.".*?<a href="(.*?)" title="(.*?)">.*?<img src="(.*?)".*?\/>.*?duration.*?>(.*?)<'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail, duration in matches:
|
||||
if duration:
|
||||
scrapedtitle += " (%s)" % duration
|
||||
|
||||
itemlist.append(item.clone(action="findvideos", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail,
|
||||
fanart=scrapedthumbnail))
|
||||
|
||||
# Extrae la marca de siguiente página
|
||||
next_page = scrapertools.find_single_match(data, '<a class="nextpostslink" rel="next" href="([^"]+)"')
|
||||
if next_page:
|
||||
itemlist.append(item.clone(action="lista", title=">> Página Siguiente", url=next_page))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
# Descarga la pagina
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
# Extrae las entradas (carpetas)
|
||||
patron = '<li class="cat-item cat-item-.*?"><a href="(.*?)".*?>(.*?)<'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
itemlist.append(item.clone(action="lista", title=scrapedtitle, url=scrapedurl))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<div class="video.".*?<a href="(.*?)" title="(.*?)">.*?<img src="(.*?)".*?\/>.*?duration.*?>(.*?)<'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail, duration in matches:
|
||||
if duration:
|
||||
scrapedtitle = "[COLOR yellow]" + duration + "[/COLOR] " + scrapedtitle
|
||||
itemlist.append(item.clone(action="findvideos", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail,
|
||||
fanart=scrapedthumbnail))
|
||||
next_page = scrapertools.find_single_match(data, '<a class="nextpostslink" rel="next" href="([^"]+)"')
|
||||
if next_page:
|
||||
itemlist.append(item.clone(action="lista", title=">> Página Siguiente", url=next_page))
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = scrapertools.find_single_match(data, '<div class="video_code">(.*?)<h3')
|
||||
patron = '(?:src|SRC)="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl in matches:
|
||||
if not 'mixdrop' in scrapedurl: #el base64 es netu.tv
|
||||
url = "https://hqq.tv/player/embed_player.php?vid=RODE5Z2Hx3hO&autoplay=none"
|
||||
else:
|
||||
url = "https:" + scrapedurl
|
||||
headers = {'Referer': item.url}
|
||||
data = httptools.downloadpage(url, headers=headers).data
|
||||
url = scrapertools.find_single_match(data, 'vsrc = "([^"]+)"')
|
||||
url= "https:" + url
|
||||
itemlist.append(item.clone(action="play", title = "%s", url=url ))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.perfectgirls.net'
|
||||
|
||||
|
||||
@@ -10,13 +10,5 @@
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": false,
|
||||
"enabled": false,
|
||||
"visible": false
|
||||
}
|
||||
]
|
||||
}
|
||||
+58
-34
@@ -1,18 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import servertools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
import base64
|
||||
|
||||
host = "https://watchfreexxx.net/"
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
itemlist = []
|
||||
|
||||
@@ -22,47 +21,17 @@ def mainlist(item):
|
||||
itemlist.append(Item(channel=item.channel, title="Escenas", action="lista",
|
||||
url = urlparse.urljoin(host, "category/xxx-scenes/")))
|
||||
|
||||
itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host + '/?s=',
|
||||
itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host+'?s=',
|
||||
thumbnail='https://s30.postimg.cc/pei7txpa9/buscar.png',
|
||||
fanart='https://s30.postimg.cc/pei7txpa9/buscar.png'))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
if item.url == '': item.url = host
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r'\n|\r|\t| |<br>|\s{2,}', "", data)
|
||||
|
||||
patron = '<article id=.*?<a href="([^"]+)".*?<img data-src="([^"]+)" alt="([^"]+)"'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
|
||||
for data_1, data_2, data_3 in matches:
|
||||
url = data_1
|
||||
thumbnail = data_2
|
||||
title = data_3
|
||||
itemlist.append(Item(channel=item.channel, action='findvideos', title=title, url=url, thumbnail=thumbnail))
|
||||
|
||||
#Paginacion
|
||||
if itemlist != []:
|
||||
actual_page_url = item.url
|
||||
next_page = scrapertools.find_single_match(data, '<a href="([^"]+)">Next</a>')
|
||||
if next_page != '':
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title='Siguiente >>>', url=next_page,
|
||||
thumbnail='https://s16.postimg.cc/9okdu7hhx/siguiente.png', extra=item.extra))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = item.url + texto
|
||||
|
||||
try:
|
||||
if texto != '':
|
||||
item.extra = 'Buscar'
|
||||
@@ -74,3 +43,58 @@ def search(item, texto):
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
if item.url == '': item.url = host
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r'\n|\r|\t| |<br>|\s{2,}', "", data)
|
||||
patron = '<article id=.*?<a href="([^"]+)".*?<img data-src="([^"]+)" alt="([^"]+)"'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for data_1, data_2, data_3 in matches:
|
||||
url = data_1
|
||||
thumbnail = data_2
|
||||
title = data_3
|
||||
itemlist.append(Item(channel=item.channel, action='findvideos', title=title, url=url, thumbnail=thumbnail))
|
||||
#Paginacion
|
||||
if itemlist != []:
|
||||
actual_page_url = item.url
|
||||
next_page = scrapertools.find_single_match(data, '<a href="([^"]+)">Next</a>')
|
||||
if next_page != '':
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title='Siguiente >>>', url=next_page,
|
||||
thumbnail='https://s16.postimg.cc/9okdu7hhx/siguiente.png', extra=item.extra))
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|amp;|\s{2}| ", "", data)
|
||||
patron = '- on ([^"]+)" href="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedtitle,url in matches:
|
||||
if "tk/goto/" in url:
|
||||
n = 3
|
||||
while n > 0:
|
||||
url= url.replace("https://vshares.tk/goto/", "").replace("https://waaws.tk/goto/", "").replace("https://openloads.tk/goto/", "")
|
||||
logger.debug (url)
|
||||
url = base64.b64decode(url)
|
||||
n -= 1
|
||||
if "mangovideo" in url: #Aparece como directo
|
||||
data = httptools.downloadpage(url).data
|
||||
patron = 'video_url: \'function/0/https://mangovideo.pw/get_file/(\d+)/\w+/(.*?)/\?embed=true\''
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedtitle,url in matches:
|
||||
if scrapedtitle =="1": scrapedtitle= "https://www.mangovideo.pw/contents/videos/"
|
||||
if scrapedtitle =="7": scrapedtitle= "https://server9.mangovideo.pw/contents/videos/"
|
||||
if scrapedtitle =="8": scrapedtitle= "https://s10.mangovideo.pw/contents/videos/"
|
||||
if scrapedtitle =="10": scrapedtitle= "https://server217.mangovideo.pw/contents/videos/"
|
||||
if scrapedtitle =="11": scrapedtitle= "https://234.mangovideo.pw/contents/videos/"
|
||||
url = scrapedtitle + url
|
||||
itemlist.append(item.clone(action="play", title = "%s", url=url ))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
+36
-35
@@ -1,35 +1,31 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.porn300.com'
|
||||
|
||||
#BLOQUEO ANTIVIRUS STREAMCLOUD
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevas" , action="lista", url=host + "/es/videos/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas Vistas" , action="lista", url=host + "/es/mas-vistos/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorada" , action="lista", url=host + "/es/mas-votados/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Canal" , action="categorias", url=host + "/es/canales/?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Pornstars" , action="categorias", url=host + "/es/pornostars/?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/es/categorias/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevas" , action="lista", url=host + "/en_US/ajax/page/list_videos/?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Canal" , action="categorias", url=host + "/channels/?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Pornstars" , action="categorias", url=host + "/pornstars/?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/categories/?page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
# view-source:https://www.porn300.com/en_US/ajax/page/show_search?q=big+tit&page=1
|
||||
# https://www.porn300.com/en_US/ajax/page/show_search?page=2
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/es/buscar/?q=%s" % texto
|
||||
item.url = host + "/en_US/ajax/page/show_search?q=%s&?page=1" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
@@ -44,20 +40,18 @@ def categorias(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<a itemprop="url" href="([^"]+)".*?'
|
||||
patron += 'title="([^"]+)">.*?'
|
||||
if "/pornostars/" in item.url:
|
||||
patron += '<img itemprop="image" src=([^"]+) alt=.*?'
|
||||
patron += '</svg>([^<]+)<'
|
||||
else:
|
||||
patron += '<img itemprop="image" src="([^"]+)" alt=.*?'
|
||||
patron += '</svg>([^<]+)<'
|
||||
patron = '<a itemprop="url" href="/([^"]+)".*?'
|
||||
patron += 'data-src="([^"]+)" alt=.*?'
|
||||
patron += 'itemprop="name">([^<]+)</h3>.*?'
|
||||
patron += '</svg>([^<]+)<'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,scrapedthumbnail,cantidad in matches:
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle,cantidad in matches:
|
||||
scrapedplot = ""
|
||||
cantidad = re.compile("\s+", re.DOTALL).sub(" ", cantidad)
|
||||
scrapedtitle = scrapedtitle + " (" + cantidad +")"
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl) + "/?sort=latest"
|
||||
scrapedurl = scrapedurl.replace("channel/", "producer/")
|
||||
scrapedurl = "/en_US/ajax/page/show_" + scrapedurl + "?page=1"
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail, plot=scrapedplot) )
|
||||
next_page = scrapertools.find_single_match(data,'<link rel="next" href="([^"]+)" />')
|
||||
@@ -75,22 +69,29 @@ def lista(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<a itemprop="url" href="([^"]+)" data-video-id="\d+" title="([^"]+)">.*?'
|
||||
patron += '<img itemprop="thumbnailUrl" src="([^"]+)".*?'
|
||||
patron = '<a itemprop="url" href="([^"]+)".*?'
|
||||
patron += 'data-src="([^"]+)".*?'
|
||||
patron += 'itemprop="name">([^<]+)<.*?'
|
||||
patron += '</svg>([^<]+)<'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,scrapedthumbnail,cantidad in matches:
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle,scrapedtime in matches:
|
||||
url = urlparse.urljoin(item.url,scrapedurl)
|
||||
cantidad = re.compile("\s+", re.DOTALL).sub(" ", cantidad)
|
||||
title = "[COLOR yellow]" + cantidad + "[/COLOR] " + scrapedtitle
|
||||
scrapedtime = scrapedtime.strip()
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + scrapedtitle
|
||||
contentTitle = title
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play" , title=title , url=url, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot, contentTitle = contentTitle) )
|
||||
next_page = scrapertools.find_single_match(data,'<link rel="next" href="([^"]+)" />')
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
prev_page = scrapertools.find_single_match(item.url,"(.*?)page=\d+")
|
||||
num= int(scrapertools.find_single_match(item.url,".*?page=(\d+)"))
|
||||
num += 1
|
||||
num_page = "?page=" + str(num)
|
||||
if num_page!="":
|
||||
next_page = urlparse.urljoin(item.url,num_page)
|
||||
if "show_search" in next_page:
|
||||
next_page = prev_page + num_page
|
||||
next_page = next_page.replace("&?", "&")
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
return itemlist
|
||||
|
||||
@@ -101,6 +102,6 @@ def play(item):
|
||||
patron = '<source src="([^"]+)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for url in matches:
|
||||
itemlist.append(item.clone(action="play", title=url, fulltitle = item.title, url=url))
|
||||
itemlist.append(item.clone(action="play", title=url, url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
+34
-30
@@ -1,13 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import jsontools as json
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://pornboss.org'
|
||||
|
||||
@@ -15,13 +15,11 @@ def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Peliculas" , action="lista", url=host + "/category/movies/"))
|
||||
itemlist.append( Item(channel=item.channel, title=" categorias" , action="categorias", url=host + "/category/movies/"))
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Videos" , action="lista", url=host + "/category/clips/"))
|
||||
itemlist.append( Item(channel=item.channel, title=" categorias" , action="categorias", url=host + "/category/clips/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
@@ -40,13 +38,9 @@ def categorias(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
if "/category/movies/" in item.url:
|
||||
data = scrapertools.find_single_match(data,'>Movies</a>(.*?)</ul>')
|
||||
else:
|
||||
data = scrapertools.find_single_match(data,'>Clips</a>(.*?)</ul>')
|
||||
patron = '<a href=([^"]+)>([^"]+)</a>'
|
||||
data = scrapertools.find_single_match(data,'<div class="uk-panel uk-panel-box widget_nav_menu">(.*?)</ul>')
|
||||
patron = '<li><a href=(.*?) class>([^<]+)</a>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
scrapertools.printMatches(matches)
|
||||
for scrapedurl,scrapedtitle in matches:
|
||||
scrapedplot = ""
|
||||
scrapedthumbnail = ""
|
||||
@@ -59,29 +53,39 @@ def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<article id=post-\d+.*?'
|
||||
patron += '<img class="center cover" src=([^"]+) alt="([^"]+)".*?'
|
||||
patron += '<blockquote><p> <a href=(.*?) target=_blank'
|
||||
patron = '<article id=item-\d+.*?'
|
||||
patron += '<img class=.*?src=(.*?) alt="([^"]+)".*?'
|
||||
patron += 'Duration:</strong>(.*?) / <strong>.*?'
|
||||
patron += '>SHOW<.*?href=([^"]+) target='
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
scrapertools.printMatches(matches)
|
||||
for scrapedthumbnail,scrapedtitle,scrapedurl in matches:
|
||||
for scrapedthumbnail,scrapedtitle,duration,scrapedurl in matches:
|
||||
scrapedplot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=scrapedtitle, url=scrapedurl,
|
||||
title = "[COLOR yellow]" + duration + "[/COLOR] " + scrapedtitle
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=scrapedurl,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail, plot=scrapedplot) )
|
||||
next_page = scrapertools.find_single_match(data,'<a class=nextpostslink rel=next href=(.*?)>')
|
||||
next_page = scrapertools.find_single_match(data,'<li><a href=([^<]+)><i class=uk-icon-angle-double-right>')
|
||||
next_page = next_page.replace('"', '')
|
||||
if next_page!="":
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
data = httptools.downloadpage(item.url).data
|
||||
itemlist = servertools.find_video_items(data=item.url)
|
||||
for videoitem in itemlist:
|
||||
videoitem.title = item.title
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
videoitem.channel = item.channel
|
||||
itemlist = []
|
||||
if "streamcloud" in item.url:
|
||||
itemlist.append(item.clone(action="play", url=item.url ))
|
||||
else:
|
||||
data = httptools.downloadpage(item.url).data
|
||||
url=scrapertools.find_single_match(data,'<span class="bottext">Streamcloud.eu</span>.*?href="([^"]+)"')
|
||||
url= "https://tolink.to" + url
|
||||
data = httptools.downloadpage(url).data
|
||||
patron = '<input type="hidden" name="id" value="([^"]+)">.*?'
|
||||
patron += '<input type="hidden" name="fname" value="([^"]+)">'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for id, url in matches:
|
||||
url= "http://streamcloud.eu/" + id
|
||||
itemlist.append(item.clone(action="play", url=url ))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist)
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "porndish",
|
||||
"name": "porndish",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://www.porndish.com/wp-content/uploads/2015/09/logo.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
|
||||
Executable
+78
@@ -0,0 +1,78 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.porndish.com'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Canal" , action="categorias", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/?s=%s" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<li id="menu-item-\d+".*?'
|
||||
patron += '<a href="([^"]+)">([^<]+)<'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle in matches:
|
||||
scrapedplot = ""
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl)
|
||||
scrapedthumbnail = ""
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail , plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
data = scrapertools.find_single_match(data, 'archive-body">(.*?)<div class="g1-row g1-row-layout-page g1-prefooter">')
|
||||
patron = '<article class=.*?'
|
||||
patron += 'src="([^"]+)".*?'
|
||||
patron += 'title="([^"]+)".*?'
|
||||
patron += '<a href="([^"]+)" rel="bookmark">'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedthumbnail,scrapedtitle,scrapedurl in matches:
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="findvideos", title=scrapedtitle, url=scrapedurl,
|
||||
fanart=thumbnail, thumbnail=thumbnail, plot=plot, contentTitle = scrapedtitle))
|
||||
next_page = scrapertools.find_single_match(data, '<a class="g1-delta g1-delta-1st next" href="([^"]+)">Next</a>')
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
|
||||
+12
-6
@@ -1,12 +1,16 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# ------------------------------------------------------------
|
||||
import urlparse
|
||||
import urllib2
|
||||
import urllib
|
||||
import re
|
||||
|
||||
from core import httptools
|
||||
import os
|
||||
import sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://porneq.com'
|
||||
|
||||
@@ -17,7 +21,7 @@ def mainlist(item):
|
||||
itemlist.append(Item(channel=item.channel, title="Ultimos", action="lista", url=host + "/videos/browse/"))
|
||||
itemlist.append(Item(channel=item.channel, title="Mas Vistos", action="lista", url=host + "/videos/most-viewed/"))
|
||||
itemlist.append(Item(channel=item.channel, title="Mas Votado", action="lista", url=host + "/videos/most-liked/"))
|
||||
itemlist.append(Item(channel=item.channel, title="Big Tits", action="lista", url=host + "/show/big+tits&sort=w"))
|
||||
itemlist.append(Item(channel=item.channel, title="Big Tits", action="lista", url=host + "/show/big+tit"))
|
||||
itemlist.append(Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
@@ -46,6 +50,7 @@ def lista(item):
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for scrapedtitle, scrapedurl, scrapedthumbnail, scrapedtime in matches:
|
||||
scrapedplot = ""
|
||||
scrapedthumbnail = scrapedthumbnail.replace("https:", "http:")
|
||||
scrapedtitle = "[COLOR yellow]" + (scrapedtime) + "[/COLOR] " + scrapedtitle
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=scrapedtitle, url=scrapedurl,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail, plot=scrapedplot))
|
||||
@@ -60,7 +65,8 @@ def play(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
scrapedurl = scrapertools.find_single_match(data, '<source src="([^"]+)"')
|
||||
scrapedurl = scrapedurl.replace("X20", "-")
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="play", title=item.title, fulltitle=item.fulltitle, url=scrapedurl,
|
||||
Item(channel=item.channel, action="play", title=item.title, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo", folder=False))
|
||||
return itemlist
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
import base64
|
||||
import re
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.pornhive.tv/en'
|
||||
|
||||
# Algunos link caidos
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
|
||||
@@ -11,13 +11,5 @@
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
+12
-21
@@ -1,20 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import servertools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append(Item(channel=item.channel, action="peliculas", title="Novedades", fanart=item.fanart,
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title="Novedades", fanart=item.fanart,
|
||||
url="http://es.pornhub.com/video?o=cm"))
|
||||
itemlist.append(Item(channel=item.channel, action="categorias", title="Categorias", fanart=item.fanart,
|
||||
url="http://es.pornhub.com/categories"))
|
||||
@@ -28,8 +26,7 @@ def search(item, texto):
|
||||
|
||||
item.url = item.url % texto
|
||||
try:
|
||||
return peliculas(item)
|
||||
# Se captura la excepción, para no interrumpir al buscador global si un canal falla
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
@@ -53,13 +50,13 @@ def categorias(item):
|
||||
else:
|
||||
url = urlparse.urljoin(item.url, scrapedurl + "?o=cm")
|
||||
scrapedtitle = scrapedtitle + " (" + cantidad + ")"
|
||||
itemlist.append(Item(channel=item.channel, action="peliculas", title=scrapedtitle, url=url,
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title=scrapedtitle, url=url,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail))
|
||||
itemlist.sort(key=lambda x: x.title)
|
||||
return itemlist
|
||||
|
||||
|
||||
def peliculas(item):
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
@@ -70,10 +67,11 @@ def peliculas(item):
|
||||
patron += '<var class="duration">([^<]+)</var>(.*?)</div>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(videodata)
|
||||
for url, scrapedtitle, thumbnail, duration, scrapedhd in matches:
|
||||
title = "(" + duration + ") " + scrapedtitle.replace("&amp;", "&")
|
||||
scrapedhd = scrapertools.find_single_match(scrapedhd, '<span class="hd-thumbnail">(.*?)</span>')
|
||||
if scrapedhd == 'HD':
|
||||
title += ' [HD]'
|
||||
if scrapedhd == 'HD':
|
||||
title = "[COLOR yellow]" +duration+ "[/COLOR] " + "[COLOR red]" +scrapedhd+ "[/COLOR] "+scrapedtitle
|
||||
else:
|
||||
title = "[COLOR yellow]" + duration + "[/COLOR] " + scrapedtitle
|
||||
url = urlparse.urljoin(item.url, url)
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="play", title=title, url=url, fanart=thumbnail, thumbnail=thumbnail))
|
||||
@@ -84,19 +82,12 @@ def peliculas(item):
|
||||
if matches:
|
||||
url = urlparse.urljoin(item.url, matches[0].replace('&', '&'))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="peliculas", title=">> Página siguiente", fanart=item.fanart,
|
||||
Item(channel=item.channel, action="lista", title=">> Página siguiente", fanart=item.fanart,
|
||||
url=url))
|
||||
return itemlist
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '"defaultQuality":true,"format":"mp4","quality":"\d+","videoUrl":"(.*?)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl in matches:
|
||||
url = scrapedurl.replace("\/", "/")
|
||||
itemlist.append(item.clone(action="play", title=url, fulltitle = item.title, url=url))
|
||||
logger.info(item)
|
||||
itemlist = servertools.find_video_items(item.clone(url = item.url))
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "pornohdmega",
|
||||
"name": "pornohdmega",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://www.pornohdmega.com/wp-content/uploads/2018/11/dftyu.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
|
||||
Executable
+108
@@ -0,0 +1,108 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.pornohdmega.com'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host + "/?order=recent"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorados" , action="lista", url=host + "/?order=top-rated"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistos" , action="lista", url=host + "/?order=most-viewed"))
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Canal" , action="catalogo", url=host + "/categories/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/?s=%s" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<li><a href=\'([^\']+)\' title=\'([^\']+) Tag\'>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle in matches:
|
||||
scrapedplot = ""
|
||||
if not "tag" in scrapedurl:
|
||||
scrapedurl = ""
|
||||
thumbnail = ""
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=thumbnail , plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def catalogo(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<h2><a href="([^"]+)">([^<]+)</a></h2>.*?'
|
||||
patron += '<strong>(\d+) Videos</strong>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,cantidad in matches:
|
||||
scrapedplot = ""
|
||||
scrapedtitle = "%s (%s)" % (scrapedtitle,cantidad)
|
||||
thumbnail = ""
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=thumbnail , plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<figure class="video-preview"><a href="([^"]+)".*?'
|
||||
patron += '<img src="([^"]+)".*?'
|
||||
patron += 'title="([^"]+)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle in matches:
|
||||
title = scrapedtitle
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=scrapedurl, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot,))
|
||||
next_page = scrapertools.find_single_match(data, '<a class="nextpostslink" rel="next" href="([^"]+)"')
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<iframe src="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for url in matches:
|
||||
itemlist.append(item.clone(action="play", title= "%s", url=url))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
return itemlist
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.pornrewind.com'
|
||||
|
||||
# hacer funcionar conector Kt player
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
+39
-37
@@ -2,14 +2,12 @@
|
||||
|
||||
import re
|
||||
import urllib
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
from platformcode import config
|
||||
|
||||
host = "https://www.porntrex.com"
|
||||
perpage = 20
|
||||
@@ -27,6 +25,7 @@ def mainlist(item):
|
||||
itemlist.append(item.clone(action="categorias", title="Modelos",
|
||||
url=host + "/models/?mode=async&function=get_block&block_id=list_models_models" \
|
||||
"_list&sort_by=total_videos"))
|
||||
itemlist.append(item.clone(action="categorias", title="Canal", url=host + "/channels/"))
|
||||
itemlist.append(item.clone(action="playlists", title="Listas", url=host + "/playlists/"))
|
||||
itemlist.append(item.clone(action="tags", title="Tags", url=host + "/tags/"))
|
||||
itemlist.append(item.clone(title="Buscar...", action="search"))
|
||||
@@ -59,15 +58,14 @@ def search(item, texto):
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
# Descarga la pagina
|
||||
data = get_data(item.url)
|
||||
|
||||
action = "play"
|
||||
if config.get_setting("menu_info", "porntrex"):
|
||||
action = "menu_info"
|
||||
# Quita las entradas, que no son private
|
||||
patron = '<div class="video-preview-screen video-item thumb-item ".*?<a href="([^"]+)".*?'
|
||||
# Quita las entradas, que no son private <div class="video-preview-screen video-item thumb-item private "
|
||||
patron = '<div class="video-preview-screen video-item thumb-item ".*?'
|
||||
patron += '<a href="([^"]+)".*?'
|
||||
patron += 'data-src="([^"]+)".*?'
|
||||
patron += 'alt="([^"]+)".*?'
|
||||
patron += '<span class="quality">(.*?)<.*?'
|
||||
@@ -120,21 +118,25 @@ def lista(item):
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
# Descarga la pagina
|
||||
data = get_data(item.url)
|
||||
|
||||
# Extrae las entradas
|
||||
patron = '<a class="item" href="([^"]+)" title="([^"]+)".*?src="([^"]+)".*?<div class="videos">([^<]+)<'
|
||||
if "/channels/" in item.url:
|
||||
patron = '<div class="video-item ">.*?<a href="([^"]+)" title="([^"]+)".*?src="([^"]+)".*?<li>([^<]+)<'
|
||||
else:
|
||||
patron = '<a class="item" href="([^"]+)" title="([^"]+)".*?src="([^"]+)".*?<div class="videos">([^<]+)<'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail, videos in matches:
|
||||
if "go.php?" in scrapedurl:
|
||||
scrapedurl = urllib.unquote(scrapedurl.split("/go.php?u=")[1].split("&")[0])
|
||||
scrapedthumbnail = urllib.unquote(scrapedthumbnail.split("/go.php?u=")[1].split("&")[0])
|
||||
scrapedthumbnail += "|Referer=https://www.porntrex.com/"
|
||||
else:
|
||||
scrapedurl = urlparse.urljoin(host, scrapedurl)
|
||||
if not scrapedthumbnail.startswith("https"):
|
||||
scrapedthumbnail = "https:%s" % scrapedthumbnail
|
||||
scrapedthumbnail += "|Referer=https://www.porntrex.com/"
|
||||
scrapedthumbnail = scrapedthumbnail.replace(" " , "%20")
|
||||
if videos:
|
||||
scrapedtitle = "%s (%s)" % (scrapedtitle, videos)
|
||||
itemlist.append(item.clone(action="lista", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail,
|
||||
@@ -158,7 +160,10 @@ def playlists(item):
|
||||
# Descarga la pagina
|
||||
data = get_data(item.url)
|
||||
# Extrae las entradas
|
||||
patron = '<div class="item.*?href="([^"]+)" title="([^"]+)".*?data-original="([^"]+)".*?<div class="totalplaylist">([^<]+)<'
|
||||
patron = '<div class="item.*?'
|
||||
patron += 'href="([^"]+)" title="([^"]+)".*?'
|
||||
patron += 'data-original="([^"]+)".*?'
|
||||
patron += '<div class="totalplaylist">([^<]+)<'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail, videos in matches:
|
||||
if "go.php?" in scrapedurl:
|
||||
@@ -168,6 +173,8 @@ def playlists(item):
|
||||
scrapedurl = urlparse.urljoin(host, scrapedurl)
|
||||
if not scrapedthumbnail.startswith("https"):
|
||||
scrapedthumbnail = "https:%s" % scrapedthumbnail
|
||||
scrapedthumbnail += "|Referer=https://www.porntrex.com/"
|
||||
scrapedthumbnail = scrapedthumbnail.replace(" " , "%20")
|
||||
if videos:
|
||||
scrapedtitle = "%s [COLOR red](%s)[/COLOR]" % (scrapedtitle, videos)
|
||||
itemlist.append(item.clone(action="videos", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail,
|
||||
@@ -195,7 +202,12 @@ def videos(item):
|
||||
if config.get_setting("menu_info", "porntrex"):
|
||||
action = "menu_info"
|
||||
# Extrae las entradas
|
||||
patron = '<div class="video-item.*?href="([^"]+)".*?title="([^"]+)".*?src="([^"]+)"(.*?)<div class="durations">.*?</i>([^<]+)</div>'
|
||||
# Quita las entradas, que no son private <div class="video-item private ">
|
||||
patron = '<div class="video-item ".*?'
|
||||
patron += 'href="([^"]+)".*?'
|
||||
patron += 'title="([^"]+)".*?'
|
||||
patron += 'src="([^"]+)"(.*?)<div class="durations">.*?'
|
||||
patron += '</i>([^<]+)</div>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
count = 0
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail, quality, duration in matches:
|
||||
@@ -209,60 +221,51 @@ def videos(item):
|
||||
scrapedurl = urlparse.urljoin(host, scrapedurl)
|
||||
if not scrapedthumbnail.startswith("https"):
|
||||
scrapedthumbnail = "https:%s" % scrapedthumbnail
|
||||
if duration:
|
||||
scrapedtitle = "%s - %s" % (duration, scrapedtitle)
|
||||
if '>HD<' in quality:
|
||||
scrapedtitle += " [COLOR red][HD][/COLOR]"
|
||||
scrapedthumbnail += "|Referer=https://www.porntrex.com/"
|
||||
scrapedthumbnail = scrapedthumbnail.replace(" " , "%20")
|
||||
if 'k4"' in quality:
|
||||
quality = "4K"
|
||||
scrapedtitle = "%s - [COLOR yellow]%s[/COLOR] %s" % (duration, quality, scrapedtitle)
|
||||
else:
|
||||
quality = scrapertools.find_single_match(quality, '<span class="quality">(.*?)<.*?')
|
||||
scrapedtitle = "%s - [COLOR red]%s[/COLOR] %s" % (duration, quality, scrapedtitle)
|
||||
if len(itemlist) >= perpage:
|
||||
break;
|
||||
itemlist.append(item.clone(action=action, title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail, contentThumbnail=scrapedthumbnail,
|
||||
fanart=scrapedthumbnail))
|
||||
itemlist.append(item.clone(action=action, title=scrapedtitle, url=scrapedurl, contentThumbnail=scrapedthumbnail,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail))
|
||||
#Extrae la marca de siguiente página
|
||||
if item.channel and len(itemlist) >= perpage:
|
||||
itemlist.append( item.clone(title = "Página siguiente >>>", indexp = count + 1) )
|
||||
|
||||
return itemlist
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = get_data(item.url)
|
||||
patron = '(?:video_url|video_alt_url[0-9]*)\s*:\s*\'([^\']+)\'.*?(?:video_url_text|video_alt_url[0-9]*_text)\s*:\s*\'([^\']+)\''
|
||||
patron = '(?:video_url|video_alt_url[0-9]*):\s*\'([^\']+)\'.*?'
|
||||
patron += '(?:video_url_text|video_alt_url[0-9]*_text):\s*\'([^\']+)\''
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
if not matches:
|
||||
patron = '<iframe.*?height="(\d+)".*?video_url\s*:\s*\'([^\']+)\''
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
scrapertools.printMatches(matches)
|
||||
for url, quality in matches:
|
||||
if "https" in quality:
|
||||
calidad = url
|
||||
url = quality
|
||||
quality = calidad + "p"
|
||||
|
||||
quality = quality.replace(" HD" , "").replace(" 4k", "")
|
||||
itemlist.append(['.mp4 %s [directo]' % quality, url])
|
||||
|
||||
if item.extra == "play_menu":
|
||||
return itemlist, data
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def menu_info(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
video_urls, data = play(item.clone(extra="play_menu"))
|
||||
itemlist.append(item.clone(action="play", title="Ver -- %s" % item.title, video_urls=video_urls))
|
||||
|
||||
matches = scrapertools.find_multiple_matches(data, '<img class="thumb lazy-load".*?data-original="([^"]+)"')
|
||||
matches = scrapertools.find_multiple_matches(data, '<img class="thumb lazy-load" src="([^"]+)"')
|
||||
for i, img in enumerate(matches):
|
||||
if i == 0:
|
||||
continue
|
||||
img = urlparse.urljoin(host, img)
|
||||
img += "|Referer=https://www.porntrex.com/"
|
||||
img = "https:" + img + "|Referer=https://www.porntrex.com/"
|
||||
title = "Imagen %s" % (str(i))
|
||||
itemlist.append(item.clone(action="", title=title, thumbnail=img, fanart=img))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -321,5 +324,4 @@ def get_data(url_orig):
|
||||
post = ""
|
||||
else:
|
||||
break
|
||||
|
||||
return response.data
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "porntv",
|
||||
"name": "porntv",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://www.porntv.com/images/dart/logo.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
|
||||
Executable
+104
@@ -0,0 +1,104 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.porntv.com'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host + "/videos/straight/all-recent.html"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistos" , action="lista", url=host + "/videos/straight/all-view.html"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorada" , action="lista", url=host + "/videos/straight/all-rate.html"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas popular" , action="lista", url=host + "/videos/straight/all-popular.html"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas largos" , action="lista", url=host + "/videos/straight/all-length.html"))
|
||||
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/categories/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "")
|
||||
item.url = host + "/videos/straight/%s-recent.html" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
data = scrapertools.find_single_match(data, '<h1>Popular Categories</h1>(.*?)<h1>Community</h1>')
|
||||
patron = '<h2><a href="([^"]+)">([^<]+)</a>.*?'
|
||||
patron += 'src="([^"]+)".*?'
|
||||
patron += '<span class="contentquantity">([^<]+)</span>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,scrapedthumbnail,cantidad in matches:
|
||||
scrapedplot = ""
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl)
|
||||
title = scrapedtitle + " " + cantidad
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=title, url=scrapedurl,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail , plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<div class="item" style="width: 320px">.*?'
|
||||
patron += '<a href="([^"]+)".*?'
|
||||
patron += '<img src="([^"]+)".*?'
|
||||
patron += '>(.*?)<div class="trailer".*?'
|
||||
patron += 'title="([^"]+)".*?'
|
||||
patron += 'clock"></use></svg>([^<]+)</span>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedthumbnail,quality,scrapedtitle,scrapedtime in matches:
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + scrapedtitle
|
||||
if "flag-hd" in quality:
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + "[COLOR red]" + "HD" + "[/COLOR] " + scrapedtitle
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl)
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=scrapedurl,
|
||||
fanart=thumbnail, thumbnail=thumbnail, plot=plot, contentTitle = scrapedtitle))
|
||||
|
||||
next_page = scrapertools.find_single_match(data, '<a href="([^"]+)" class="next"')
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
data = scrapertools.find_single_match(data, 'sources: \[(.*?)\]')
|
||||
patron = 'file: "([^"]+)",.*?label: "([^"]+)",'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for url,quality in matches:
|
||||
itemlist.append(["%s %s [directo]" % (quality, url), url])
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "http://qwertty.net/wp-content/uploads/2018/05/favicon.ico",
|
||||
"thumbnail": "https://qwertty.net/wp-content/uploads/2019/07/favicon.ico",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
|
||||
+30
-62
@@ -1,14 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urllib
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
from channels import pornhub, xvideos,youporn
|
||||
|
||||
host = 'http://qwertty.net'
|
||||
|
||||
@@ -56,7 +55,6 @@ def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = scrapertools.find_single_match(data,'<div class="videos-list">(.*?)<div class="videos-list">')
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<article id="post-\d+".*?'
|
||||
patron += '<a href="([^"]+)" title="([^"]+)">.*?'
|
||||
@@ -73,7 +71,7 @@ def lista(item):
|
||||
fanart=thumbnail, thumbnail=thumbnail, plot=scrapedplot) )
|
||||
next_page = scrapertools.find_single_match(data,'<li><a href="([^"]+)">Next</a>')
|
||||
if next_page=="":
|
||||
next_page = scrapertools.find_single_match(data,'<li><a class="current">.*?<li><a href=\'([^\']+)\' class="inactive">')
|
||||
next_page = scrapertools.find_single_match(data,'<li><a class="current">.*?<li><a href="([^"]+)" class="inactive">')
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
@@ -84,65 +82,35 @@ def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
url = scrapertools.find_single_match(data,'<meta itemprop="embedURL" content="([^"]+)"')
|
||||
url = url.replace("pornhub.com/embed/", "pornhub.com/view_video.php?viewkey=")
|
||||
data = httptools.downloadpage(url).data
|
||||
if "spankwire" in url :
|
||||
url1 = scrapertools.find_single_match(data,'<meta itemprop="embedURL" content="([^"]+)"')
|
||||
if "spankwire" in url1:
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = scrapertools.find_single_match(data,'Copy Embed Code(.*?)For Desktop')
|
||||
data = scrapertools.get_match(data,'Copy Embed Code(.*?)For Desktop')
|
||||
patron = '<div class="shareDownload_container__item__dropdown">.*?<a href="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl in matches:
|
||||
url = scrapedurl
|
||||
if url=="#":
|
||||
scrapedurl = scrapertools.find_single_match(data,'playerData.cdnPath480 = \'([^\']+)\'')
|
||||
itemlist.append(item.clone(action="play", title=scrapedurl, fulltitle = scrapedurl, url=scrapedurl))
|
||||
|
||||
if "xvideos" in url :
|
||||
scrapedurl = scrapertools.find_single_match(data,'setVideoHLS\(\'([^\']+)\'')
|
||||
if "pornhub" in url :
|
||||
scrapedurl = scrapertools.find_single_match(data,'"defaultQuality":true,"format":"mp4","quality":"\d+","videoUrl":"(.*?)"')
|
||||
if "txx" in url :
|
||||
video_url = scrapertools.find_single_match(data, 'var video_url="([^"]*)"')
|
||||
video_url += scrapertools.find_single_match(data, 'video_url\+="([^"]*)"')
|
||||
partes = video_url.split('||')
|
||||
video_url = decode_url(partes[0])
|
||||
video_url = re.sub('/get_file/\d+/[0-9a-z]{32}/', partes[1], video_url)
|
||||
video_url += '&' if '?' in video_url else '?'
|
||||
video_url += 'lip=' + partes[2] + '<=' + partes[3]
|
||||
scrapedurl = video_url
|
||||
url = scrapertools.find_single_match(data,'playerData.cdnPath480 = \'([^\']+)\'')
|
||||
itemlist.append(item.clone(action="play", title=url, contentTitle = url, url=url))
|
||||
elif "xvideos1" in url1:
|
||||
item1 = item.clone(url=url1)
|
||||
itemlist = xvideos.play(item1)
|
||||
return itemlist
|
||||
elif "pornhub" in url1 :
|
||||
url = url1
|
||||
elif "txx" in url1:# Falta conector
|
||||
url = ""
|
||||
elif "youporn" in url1:
|
||||
item1 = item.clone(url=url1)
|
||||
itemlist = youporn.play(item1)
|
||||
return itemlist
|
||||
else:
|
||||
scrapedurl = scrapertools.find_single_match(data,'"quality":"\d+","videoUrl":"(.*?)"')
|
||||
scrapedurl = scrapedurl.replace("\/", "/")
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, fulltitle=item.fulltitle, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo", folder=False))
|
||||
data = httptools.downloadpage(url1).data
|
||||
url = scrapertools.find_single_match(data,'"quality":"\d+","videoUrl":"([^"]+)"')
|
||||
url = url.replace("\/", "/")
|
||||
|
||||
itemlist.append(item.clone(action="play", title= "%s " + url1, contentTitle = item.title, url=url))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
return itemlist
|
||||
|
||||
|
||||
def decode_url(txt):
|
||||
_0x52f6x15 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,~'
|
||||
reto = ''; n = 0
|
||||
# En las dos siguientes líneas, ABCEM ocupan 2 bytes cada letra! El replace lo deja en 1 byte. !!!!: АВСЕМ (10 bytes) ABCEM (5 bytes)
|
||||
txt = re.sub('[^АВСЕМA-Za-z0-9\.\,\~]', '', txt)
|
||||
txt = txt.replace('А', 'A').replace('В', 'B').replace('С', 'C').replace('Е', 'E').replace('М', 'M')
|
||||
|
||||
while n < len(txt):
|
||||
a = _0x52f6x15.index(txt[n])
|
||||
n += 1
|
||||
b = _0x52f6x15.index(txt[n])
|
||||
n += 1
|
||||
c = _0x52f6x15.index(txt[n])
|
||||
n += 1
|
||||
d = _0x52f6x15.index(txt[n])
|
||||
n += 1
|
||||
|
||||
a = a << 2 | b >> 4
|
||||
b = (b & 15) << 4 | c >> 2
|
||||
e = (c & 3) << 6 | d
|
||||
reto += chr(a)
|
||||
if c != 64: reto += chr(b)
|
||||
if d != 64: reto += chr(e)
|
||||
|
||||
return urllib.unquote(reto)
|
||||
|
||||
|
||||
|
||||
+1
-4
@@ -2,14 +2,11 @@
|
||||
#------------------------------------------------------------
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = 'https://es.redtube.com'
|
||||
|
||||
@@ -117,6 +114,6 @@ def play(item):
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl in matches:
|
||||
url = scrapedurl.replace("\/", "/")
|
||||
itemlist.append(item.clone(action="play", title=url, fulltitle = item.title, url=url))
|
||||
itemlist.append(item.clone(action="play", title=url, url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -10,13 +10,5 @@
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
+10
-8
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = "https://www.serviporno.com"
|
||||
|
||||
@@ -47,7 +45,9 @@ def search(item, texto):
|
||||
def get_last_page(url):
|
||||
logger.info()
|
||||
data = httptools.downloadpage(url).data
|
||||
last_page= int(scrapertools.find_single_match(data,'data-ajax-last-page="(\d+)"'))
|
||||
last_page= scrapertools.find_single_match(data,'data-ajax-last-page="(\d+)"')
|
||||
if last_page:
|
||||
last_page= int(last_page)
|
||||
return last_page
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ def videos(item):
|
||||
patron += '<div class="box-escena">.*?'
|
||||
patron += '<a\s*href="([^"]+)".*?'
|
||||
patron += 'data-stats-video-name="([^"]+)".*?'
|
||||
patron += '<img\s*src="([^"]+)".*?'
|
||||
patron += 'data-src="([^"]+)".*?'
|
||||
patron += '<div class="duracion">([^"]+) min</div>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for url, title, thumbnail,duration in matches:
|
||||
@@ -114,15 +114,17 @@ def categorias(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<div class="wrap-box-escena.*?'
|
||||
patron += 'href="([^"]+)"><img src="([^"]+)".*?'
|
||||
patron += '<h4.*?<a href="[^"]+">([^<]+)</a></h4>'
|
||||
patron += '<img src="([^"]+)".*?'
|
||||
patron += '<h4.*?<a href="([^"]+)">([^<]+)<'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for url, thumbnail, title in matches:
|
||||
for thumbnail, url, title in matches:
|
||||
last = urlparse.urljoin(item.url, url)
|
||||
url= last.replace("/videos-porno", "/ajax/show_category").replace("/sitio","/ajax/show_producer") + "?page=1"
|
||||
itemlist.append(Item(channel=item.channel, action='videos', title=title, url=url, last=last, thumbnail=thumbnail, plot=""))
|
||||
# Paginador "Página Siguiente >>"
|
||||
current_page = int(scrapertools.find_single_match(item.url, "/?page=(\d+)"))
|
||||
current_page = scrapertools.find_single_match(item.url, "/?page=(\d+)")
|
||||
if current_page:
|
||||
current_page = int(current_page)
|
||||
if not item.last_page:
|
||||
last_page = get_last_page(item.last)
|
||||
else:
|
||||
|
||||
+5
-19
@@ -1,19 +1,15 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = 'http://sexgalaxy.net'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
@@ -42,7 +38,7 @@ def canales(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(host).data
|
||||
data = scrapertools.find_single_match(data, 'Top Networks</a>(.*?)</ul>')
|
||||
data = scrapertools.find_single_match(data, '>TopSites</a>(.*?)</ul>')
|
||||
patron = '<li id=.*?<a href="(.*?)">(.*?)</a></li>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
@@ -59,8 +55,8 @@ def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = scrapertools.find_single_match(data, 'More Categories</a>(.*?)</ul>')
|
||||
patron = '<li id=.*?<a href="(.*?)">(.*?)</a></li>'
|
||||
data = scrapertools.find_single_match(data, '>Popular Categories<(.*?)</p>')
|
||||
patron = '<a href="(.*?)">(.*?)</a>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
scrapedplot = ""
|
||||
@@ -83,21 +79,11 @@ def lista(item):
|
||||
calidad = scrapertools.find_single_match(scrapedtitle, '\(.*?/(\w+)\)')
|
||||
if calidad:
|
||||
scrapedtitle = "[COLOR red]" + calidad + "[/COLOR] " + scrapedtitle
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=scrapedtitle, url=scrapedurl,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail, fulltitle=scrapedtitle, plot=scrapedplot))
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos", title=scrapedtitle, url=scrapedurl,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail, plot=scrapedplot))
|
||||
next_page = scrapertools.find_single_match(data, '<a class="next page-numbers" href="([^"]+)"')
|
||||
if next_page != "":
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page))
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
data = httptools.downloadpage(item.url).data
|
||||
itemlist = servertools.find_video_items(data=data)
|
||||
for videoitem in itemlist:
|
||||
videoitem.title = item.title
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
videoitem.channel = item.channel
|
||||
return itemlist
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = 'http://sexkino.to'
|
||||
|
||||
@@ -134,7 +131,6 @@ def play(item):
|
||||
itemlist = servertools.find_video_items(data=data)
|
||||
for videoitem in itemlist:
|
||||
videoitem.title = item.title
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
videoitem.channel = item.channel
|
||||
return itemlist
|
||||
|
||||
+18
-15
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
from core import httptools
|
||||
|
||||
host = 'http://sexofilm.com'
|
||||
|
||||
@@ -44,7 +42,7 @@ def categorias(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
if item.title == "Canal" :
|
||||
data = scrapertools.find_single_match(data,'>Adult Porn Parodies</a></li>(.*?)</ul>')
|
||||
data = scrapertools.find_single_match(data,'>Best Porn Studios</a>(.*?)</ul>')
|
||||
else:
|
||||
data = scrapertools.find_single_match(data,'<div class="nav-wrap">(.*?)<ul class="sub-menu">')
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title="Big tit", url="https://sexofilm.com/?s=big+tits"))
|
||||
@@ -72,14 +70,17 @@ def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<div class="post-thumbnail.*?<a href="([^"]+)".*?src="([^"]+)".*?title="([^"]+)"'
|
||||
patron = '<article id="post-\d+".*?'
|
||||
patron += '<a href="([^"]+)".*?'
|
||||
patron += 'data-src="([^"]+)".*?'
|
||||
patron += '<h2 class="post-title.*?title="([^"]+)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle in matches:
|
||||
plot = ""
|
||||
title = scrapedtitle.replace(" Porn DVD", "").replace("Permalink to ", "").replace(" Porn Movie", "")
|
||||
itemlist.append(item.clone(action="play", title=title, url=scrapedurl, thumbnail=scrapedthumbnail,
|
||||
fanart=scrapedthumbnail, plot=plot) )
|
||||
next_page = scrapertools.find_single_match(data,'<a class="nextpostslink" rel="next" href="([^"]+)">»</a>')
|
||||
next_page = scrapertools.find_single_match(data,'<a class="nextpostslink" rel="next" href="([^"]+)">')
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page) )
|
||||
@@ -88,12 +89,14 @@ def lista(item):
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
itemlist = servertools.find_video_items(data=data)
|
||||
for videoitem in itemlist:
|
||||
videoitem.title = item.title
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
videoitem.channel = item.channel
|
||||
url = scrapertools.find_single_match(data,'<div class="entry-inner">.*?<source src="([^"]+)"')
|
||||
if not url:
|
||||
url = scrapertools.find_single_match(data,'<div class="entry-inner">.*?<source src=\'([^\']+)\'')
|
||||
itemlist = servertools.find_video_items(item.clone(url = item.url))
|
||||
if url:
|
||||
itemlist.append(item.clone(action="play", title=url, url=url))
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"id": "shameless",
|
||||
"name": "Shameless",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://www.shameless.com/favicon/apple-touch-icon.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
Executable
+95
@@ -0,0 +1,95 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.shameless.com'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host + "/videos/1/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas popular" , action="lista", url=host + "/videos/popular/week/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorada" , action="lista", url=host + "/videos/rated/week/"))
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/categories/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/search/?q=%s" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<a href="(https://www.shameless.com/categories/[^"]+)".*?'
|
||||
patron += '<span itemprop="name">(.*?)</span> <sup>(.*?)</sup>.*?'
|
||||
patron += 'src="([^"]+)"'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,cantidad,scrapedthumbnail in matches:
|
||||
scrapedplot = ""
|
||||
title = scrapedtitle + " " + cantidad
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=title, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail , plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<div class="icnt.*?'
|
||||
patron += '<a href="([^"]+)".*?'
|
||||
patron += 'data-src="([^"]+)" alt="([^"]+)".*?'
|
||||
patron += '<div class="bg"></div>([^<]+)</time>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle,scrapedtime in matches:
|
||||
title = "[COLOR yellow]" + scrapedtime + "[/COLOR] " + scrapedtitle
|
||||
thumbnail = scrapedthumbnail + "|Referer=https://www.shameless.com/"
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=scrapedurl,
|
||||
fanart=thumbnail, thumbnail=thumbnail, plot=plot, contentTitle = scrapedtitle))
|
||||
next_page = scrapertools.find_single_match(data, 'class="active">.*?<a href="([^"]+)"')
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '(?:video_url|video_alt_url[0-9]*):\s*\'([^\']+)\'.*?'
|
||||
patron += '(?:video_url_text|video_alt_url[0-9]*_text):\s*\'([^\']+)\''
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for url, quality in matches:
|
||||
headers = {'Referer': item.url}
|
||||
url = httptools.downloadpage(url, headers=headers , follow_redirects=False, only_headers=True).headers.get("location", "")
|
||||
itemlist.append(["%s %s [directo]" % (quality, url), url])
|
||||
return itemlist
|
||||
|
||||
|
||||
+10
-11
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://www.siska.tv/'
|
||||
|
||||
@@ -16,11 +15,11 @@ def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host + "/newVideo.php?language=en"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistos" , action="lista", url=host + "/MostViewed.php?views=month&language=en"))
|
||||
itemlist.append( Item(channel=item.channel, title="Canal" , action="categorias", url=host + "/Channel.php?language=en"))
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host + "newVideo.php?language=en"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistos" , action="lista", url=host + "MostViewed.php?views=month&language=en"))
|
||||
itemlist.append( Item(channel=item.channel, title="Canal" , action="categorias", url=host + "Channel.php?language=en"))
|
||||
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/index.php?category=1&language=en"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "index.php?category=1&language=en"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
@@ -28,7 +27,7 @@ def mainlist(item):
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/search.php?q=%s&language=en&search=Search" % texto
|
||||
item.url = host + "search.php?q=%s&language=en&search=Search" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
"fanart": "https://i.imgur.com/NRdQvFW.jpg",
|
||||
"categories": [
|
||||
"movie",
|
||||
"vo"
|
||||
"vos"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
# -*- By Sculkurt -*-
|
||||
|
||||
import re
|
||||
|
||||
from channelselector import get_thumb
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
@@ -71,7 +70,7 @@ def search(item, texto):
|
||||
logger.info()
|
||||
if texto != "":
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/?s=" + texto
|
||||
item.url = host + "?s=" + texto
|
||||
item.extra = "busqueda"
|
||||
try:
|
||||
return list_all(item)
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://es.spankbang.com'
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "spankwire",
|
||||
"name": "spankwire",
|
||||
"active": false,
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://cdn1-static-spankwire.spankcdn.net/apple-touch-icon-precomposed.png",
|
||||
|
||||
+82
-51
@@ -1,24 +1,27 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
import urlparse,urllib2,urllib,re
|
||||
|
||||
from core import httptools
|
||||
from core import jsontools as json
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.spankwire.com'
|
||||
|
||||
url_api = host + "/api/video/list.json?segment=Straight&limit=33&sortby="
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevas" , action="lista", url=host + "/recentvideos/straight"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas Vistas" , action="lista", url=host + "/home1/Straight/Month/Views"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorada" , action="lista", url=host + "/home1/Straight/Month/Rating"))
|
||||
itemlist.append( Item(channel=item.channel, title="Longitud" , action="lista", url=host + "/home1/Straight/Month/Duration"))
|
||||
#itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/categories/Straight"))
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevas" , action="lista", url=url_api + "recent&page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas Vistas" , action="lista", url=url_api + "views&period=Month&page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorada" , action="lista", url=url_api + "rating&period=Month&page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Longitud" , action="lista", url=url_api + "duration&period=Month&page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Pornstar" , action="catalogo", url=host + "/api/pornstars?limit=48&sort=popular&page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/api/categories/list.json?segmentId=0&limit=100&sort=abc&page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
@@ -26,7 +29,7 @@ def mainlist(item):
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = host + "/search/?q=%s" % texto
|
||||
item.url = host + "/api/video/search.json?segment=Straight&limit=33&query=%s&page=1" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
@@ -41,18 +44,46 @@ def categorias(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<div class="category-thumb"><a href="([^"]+)".*?'
|
||||
patron += '<img src="([^"]+)" alt="([^"]+)" />.*?'
|
||||
patron += '<span>([^"]+)</span>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
scrapertools.printMatches(matches)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle,cantidad in matches:
|
||||
scrapedplot = ""
|
||||
scrapedthumbnail = "http:" + scrapedthumbnail
|
||||
scrapedtitle = scrapedtitle + " (" + cantidad +")"
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl) + "/Submitted/59"
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=scrapedurl,
|
||||
fanart=scrapedthumbnail, thumbnail=scrapedthumbnail, plot=scrapedplot) )
|
||||
JSONData = json.load(data)
|
||||
for Video in JSONData["items"]:
|
||||
title = Video["name"]
|
||||
id = Video["id"]
|
||||
cantidad = Video["videosNumber"]
|
||||
thumbnail = Video["image"]
|
||||
title = "%s (%s)" % (title,cantidad)
|
||||
thumbnail = thumbnail.replace("\/", "/").replace(".webp", ".jpg")
|
||||
url = url_api + "recent&category=%s&page=1" % id
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=title, url=url,
|
||||
fanart=thumbnail, thumbnail=thumbnail, plot=plot) )
|
||||
Actual = int(scrapertools.find_single_match(item.url, '&page=([0-9]+)'))
|
||||
if JSONData["pages"] - 1 > Actual:
|
||||
scrapedurl = item.url.replace("&page=" + str(Actual), "&page=" + str(Actual + 1))
|
||||
itemlist.append(item.clone(action="categorias", title="Página Siguiente >>", text_color="blue", url=scrapedurl))
|
||||
return itemlist
|
||||
|
||||
|
||||
def catalogo(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
JSONData = json.load(data)
|
||||
for Video in JSONData["items"]:
|
||||
title = Video["name"]
|
||||
id = Video["id"]
|
||||
cantidad = Video["videos"]
|
||||
thumbnail = Video["thumb"]
|
||||
title = "%s (%s)" % (title,cantidad)
|
||||
thumbnail = thumbnail.replace("\/", "/").replace(".webp", ".jpg")
|
||||
url = host + "/api/video/list.json?pornstarId=%s&limit=25&sortby=recent&page=1" % id
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=title, url=url,
|
||||
fanart=thumbnail, thumbnail=thumbnail, plot=plot) )
|
||||
Actual = int(scrapertools.find_single_match(item.url, '&page=([0-9]+)'))
|
||||
if JSONData["pages"] - 1 > Actual:
|
||||
scrapedurl = item.url.replace("&page=" + str(Actual), "&page=" + str(Actual + 1))
|
||||
itemlist.append(item.clone(action="catalogo", title="Página Siguiente >>", text_color="blue", url=scrapedurl))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -61,27 +92,34 @@ def lista(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<div class="video_thumb_wrapper">.*?'
|
||||
patron += '<a href="([^"]+)".*?data-original="([^"]+)".*?'
|
||||
patron += 'title="([^"]+)".*?'
|
||||
patron += '<div class="video_thumb_wrapper__thumb_info video_thumb_wrapper__duration">(.*?)</div>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedthumbnail,scrapedtitle,duracion in matches:
|
||||
url = urlparse.urljoin(item.url,scrapedurl)
|
||||
title = "[COLOR yellow]" + duracion + "[/COLOR] " + scrapedtitle
|
||||
contentTitle = title
|
||||
thumbnail = scrapedthumbnail
|
||||
JSONData = json.load(data)
|
||||
for Video in JSONData["items"]:
|
||||
segundos = Video["duration"]
|
||||
horas=int(segundos/3600)
|
||||
segundos-=horas*3600
|
||||
minutos=int(segundos/60)
|
||||
segundos-=minutos*60
|
||||
if segundos < 10:
|
||||
segundos = "0%s" %segundos
|
||||
if minutos < 10:
|
||||
minutos = "0%s" %minutos
|
||||
if horas == 00:
|
||||
duration = "%s:%s" % (minutos,segundos)
|
||||
else:
|
||||
duration = "%s:%s:%s" % (horas,minutos,segundos)
|
||||
title = Video["title"]
|
||||
thumbnail = Video["flipBookPath"]
|
||||
url = host + Video["url"]
|
||||
title = "[COLOR yellow]" + duration + "[/COLOR] " + title
|
||||
thumbnail = thumbnail.replace("\/", "/").replace("{index}", "2")
|
||||
url = url.replace("\/", "/")
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play" , title=title , url=url, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot, contentTitle = contentTitle))
|
||||
next_page = scrapertools.find_single_match(data,'<link rel="next" href="([^"]+)" />')
|
||||
#Para el buscador
|
||||
if next_page=="":
|
||||
next_page = scrapertools.find_single_match(data,'<div class="paginator_wrapper__buttons"><a class="" href="([^"]+)"')
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
if next_page!="":
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel , action="lista" , title="Página Siguiente >>" , text_color="blue", url=next_page) )
|
||||
fanart=thumbnail, plot=plot))
|
||||
Actual = int(scrapertools.find_single_match(item.url, '&page=([0-9]+)'))
|
||||
if JSONData["pages"] - 1 > Actual:
|
||||
scrapedurl = item.url.replace("&page=" + str(Actual), "&page=" + str(Actual + 1))
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=scrapedurl))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -89,14 +127,7 @@ def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = scrapertools.find_single_match(data,'Copy Embed Code(.*?)For Desktop')
|
||||
patron = '<div class="shareDownload_container__item__dropdown">.*?<a href="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl in matches:
|
||||
url = scrapedurl
|
||||
if url=="#":
|
||||
scrapedurl = scrapertools.find_single_match(data,'playerData.cdnPath480 = \'([^\']+)\'')
|
||||
itemlist.append(item.clone(action="play", title=scrapedurl, fulltitle = scrapedurl, url=scrapedurl))
|
||||
|
||||
scrapedurl = scrapertools.find_single_match(data,'<div class="shareDownload_container__item__dropdown">.*?<a href="([^"]+)"')
|
||||
itemlist.append(item.clone(action="play", server = "directo", url=scrapedurl))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://streamingporn.xyz'
|
||||
|
||||
@@ -90,7 +88,7 @@ def lista(item):
|
||||
contentTitle = title
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play" , title=title , url=url, thumbnail=thumbnail,
|
||||
itemlist.append( Item(channel=item.channel, action="findvideos" , title=title , url=url, thumbnail=thumbnail,
|
||||
fanart=scrapedthumbnail, plot=plot, contentTitle = contentTitle) )
|
||||
next_page_url = scrapertools.find_single_match(data,'<div class="loadMoreInfinite"><a href="(.*?)" >Load More')
|
||||
if next_page_url!="":
|
||||
@@ -99,15 +97,3 @@ def lista(item):
|
||||
text_color="blue", url=next_page_url) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
data = httptools.downloadpage(item.url).data
|
||||
itemlist = servertools.find_video_items(data=data)
|
||||
for videoitem in itemlist:
|
||||
videoitem.title = item.title
|
||||
videoitem.fulltitle = item.fulltitle
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
videoitem.channel = item.channel
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'http://streamporno.eu'
|
||||
|
||||
@@ -42,7 +41,7 @@ def categorias(item):
|
||||
patron = '<li id="menu-item-.*?<a href="([^"]+)">([^"]+)</a>'
|
||||
if item.title == "Categorias":
|
||||
itemlist.append( Item(channel=item.channel, title="Big Tits" , action="lista", url=host + "/?s=big+tits"))
|
||||
patron = '<li class="cat-item.*?<a href="([^"]+)" >([^"]+)</a>'
|
||||
patron = '<li class="cat-item.*?<a href="([^"]+)">([^"]+)</a>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
scrapertools.printMatches(matches)
|
||||
for scrapedurl,scrapedtitle in matches:
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"id": "streamtime",
|
||||
"name": "streamtime",
|
||||
"name": "StreamTime",
|
||||
"language": ["ita"],
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"thumbnail": "",
|
||||
"banner": "",
|
||||
"banner": "streamtime.png",
|
||||
"categories": ["tvshow", "movie"],
|
||||
"settings": [
|
||||
{
|
||||
|
||||
+119
-23
@@ -1,45 +1,141 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from core import support, httptools, scrapertoolsV2
|
||||
from core.item import Item
|
||||
from platformcode import config
|
||||
from platformcode import config, logger
|
||||
|
||||
__channel__ = "streamtime"
|
||||
host = config.get_channel_url(__channel__)
|
||||
headers = [['Referer', host]]
|
||||
headers = [['Referer', 'org.telegram.messenger']]
|
||||
list_servers = ['directo']
|
||||
list_quality = ['default']
|
||||
|
||||
downPrefix = 'https://stsh.ml/Down-'
|
||||
|
||||
@support.menu
|
||||
def mainlist(item):
|
||||
film = []
|
||||
tvshow = []
|
||||
film = ['?q=%23Film']
|
||||
tvshow = ['?q=%23SerieTv']
|
||||
return locals()
|
||||
|
||||
|
||||
@support.scrape
|
||||
def peliculas(item):
|
||||
patron = """tgme_widget_message_photo_wrap blured.*?image:url\(\"(?P<thumbnail>[^"]+).*?🎥.*?<b>(?P<title>.*?)</b>.*?Genere(?P<genre>.*?)<b>Anno</b>: (?P<year>[0-9]{4}).*?<b>Stream</b>: (?P<quality>[^<]+).*?tgme_widget_message_inline_button url_button" href="(?P<url>[^"]+)"""
|
||||
patronBlock = '<div class="tgme_widget_message force_userpic js-widget_message"(?P<block>.*?)</div></div>'
|
||||
patron = """tgme_widget_message_photo_wrap blured.*?image:url\("(?P<thumbnail>[^"]+).*?(?:🎥|🎬)(?P<title>.*?)(?:🎥|🎬).*?(?:Audio(?:</b>)?: (?P<lang>.*?<br>))?.*?Anno(?:</b>)?: (?P<year>[0-9]{4}).*?(?:<b>Stream</b>|Risoluzione|<b>Tipo</b>): (?P<quality>[^<]+).*?tgme_widget_message_inline_button url_button" href="(?P<url>[^"]+)"""
|
||||
def itemlistHook(itemlist):
|
||||
return itemlist[::-1]
|
||||
retItemlist = []
|
||||
# filtro per tipo
|
||||
for i in itemlist:
|
||||
if item.contentType == 'movie':
|
||||
if '/Film/' in i.url or 'Stream-' in i.url:
|
||||
retItemlist.append(i)
|
||||
else:
|
||||
if '/SerieTv/' in i.url:
|
||||
retItemlist.append(i)
|
||||
# rimuovo duplicati
|
||||
if item.contentType != 'movie':
|
||||
nonDupl = []
|
||||
# support.dbg()
|
||||
for i in retItemlist:
|
||||
for nd in nonDupl:
|
||||
if i.title == nd.title:
|
||||
break
|
||||
else:
|
||||
daAgg = i
|
||||
spl1 = i.url.split('-')
|
||||
stagione1 = spl1[-2]
|
||||
nEp1 = int(spl1[-1])
|
||||
|
||||
for i2 in retItemlist[1:]:
|
||||
if i.title == i2.title:
|
||||
spl2 = i2.url.split('-')
|
||||
stagione2 = spl2[-2]
|
||||
nEp2 = int(spl2[-1])
|
||||
if stagione1 == stagione2 and nEp2 > nEp1:
|
||||
daAgg = i2
|
||||
nonDupl.append(daAgg)
|
||||
retItemlist = nonDupl
|
||||
return retItemlist[::-1]
|
||||
# debug = True
|
||||
patronNext = 'tgme_widget_message_photo_wrap blured" href="([^"]+)'
|
||||
def fullItemlistHook(itemlist):
|
||||
msgId = int(itemlist[-1].url.split('/')[-1])
|
||||
itemlist[-1].url = host + '?before=' + str(msgId) + '&after=' + str(msgId-20)
|
||||
return itemlist
|
||||
|
||||
if item.contentType == 'tvshow':
|
||||
action = 'episodios'
|
||||
return locals()
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
id = item.url.split('/')[-1]
|
||||
url = scrapertoolsV2.find_single_match(item.url, 'https?://[a-z0-9.-]+') + '/play_f.php?f=' + id
|
||||
res = support.match(item, 'src="([^"]+)"></video>', url=url)
|
||||
def search(item, texto):
|
||||
item.url = host + "/?q=" + texto
|
||||
try:
|
||||
return peliculas(item)
|
||||
# Continua la ricerca in caso di errore
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
itemlist = [
|
||||
Item(channel=item.channel,
|
||||
action="play",
|
||||
title='stpgs.ml [COLOR blue]' + item.quality + '[/COLOR]',
|
||||
url=res[0][0],
|
||||
fulltitle=item.fulltitle,
|
||||
thumbnail=item.thumbnail,
|
||||
show=item.show,
|
||||
quality=item.quality,
|
||||
contentType=item.contentType,
|
||||
folder=False)]
|
||||
return support.controls(itemlist, item, True, False)
|
||||
|
||||
def episodios(item):
|
||||
domain, id, season, episode = scrapertoolsV2.find_single_match(item.url, r'(https?://[a-z0-9.-]+).*?/([^-/]+)-S([0-9]+)-([0-9]+)$')
|
||||
itemlist = []
|
||||
for n in range(1, int(episode)):
|
||||
url = domain + '/play_s.php?s=' + id + '-S' + season + '&e=' + str(n)
|
||||
itemlist.append(
|
||||
Item(channel=item.channel,
|
||||
action="findvideos",
|
||||
title=str(int(season)) + 'x' + str(n) + support.typo(item.quality, '-- [] color kod'),
|
||||
url=url,
|
||||
fulltitle=item.fulltitle,
|
||||
thumbnail=item.thumbnail,
|
||||
show=item.show,
|
||||
quality=item.quality,
|
||||
contentType=item.contentType,
|
||||
folder=False,
|
||||
args={'id': id, 'season': season, 'episode': episode}))
|
||||
|
||||
support.videolibrary(itemlist, item)
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
domain = scrapertoolsV2.find_single_match(item.url, 'https?://[a-z0-9.-]+')
|
||||
if item.contentType == 'movie':
|
||||
id = item.url.split('/')[-1]
|
||||
url = domain + '/play_f.php?f=' + id
|
||||
else:
|
||||
url = item.url
|
||||
id = item.args['id']
|
||||
season = item.args['season']
|
||||
episode = item.args['episode']
|
||||
res = support.match(item, 'src="([^"]+)">.*?</video>', url=url, headers=[['Referer', domain]])
|
||||
itemlist = []
|
||||
support.dbg()
|
||||
|
||||
if res[0]:
|
||||
itemlist.append(
|
||||
Item(channel=item.channel,
|
||||
action="play",
|
||||
title='stpgs.ml' + support.typo(item.quality, '-- [] color kod'),
|
||||
url=res[0][0],
|
||||
server='directo',
|
||||
fulltitle=item.fulltitle,
|
||||
thumbnail=item.thumbnail,
|
||||
show=item.show,
|
||||
quality=item.quality,
|
||||
contentType=item.contentType,
|
||||
folder=False))
|
||||
download = itemlist[0].clone()
|
||||
if item.contentType == 'movie':
|
||||
download.url = downPrefix + id
|
||||
else:
|
||||
download.url = downPrefix + id + 'S' + season + '-' + episode
|
||||
itemlist.append(download)
|
||||
else:
|
||||
# google drive...
|
||||
pass
|
||||
support.videolibrary(itemlist, item)
|
||||
return support.controls(itemlist, item, True, True)
|
||||
|
||||
@@ -10,13 +10,5 @@
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
|
||||
host = 'http://www.submityourflicks.com'
|
||||
|
||||
@@ -63,7 +61,7 @@ def play(item):
|
||||
data = httptools.downloadpage(item.url).data
|
||||
media_url = "https:" + scrapertools.find_single_match(data, 'source src="([^"]+)"')
|
||||
itemlist = []
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, fulltitle=item.fulltitle, url=media_url,
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, url=media_url,
|
||||
thumbnail=item.thumbnail, show=item.title, server="directo", folder=False))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
import urlparse,urllib2,urllib,re
|
||||
import os, sys
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
from platformcode import config
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.sunporno.com'
|
||||
|
||||
@@ -19,7 +18,7 @@ def mainlist(item):
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorada" , action="lista", url=host + "/top-rated/date-last-week/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas largas" , action="lista", url=host + "/long-movies/date-last-month/"))
|
||||
itemlist.append( Item(channel=item.channel, title="PornStars" , action="catalogo", url=host + "/pornstars/most-viewed/1/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/channels"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/channels/"))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
@@ -42,7 +41,7 @@ def categorias(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
patron = '<div class="thumb-container with-title moviec">.*?'
|
||||
patron = '<div class="thumb-container with-title moviec.*?'
|
||||
patron += '<a href="([^"]+)".*?'
|
||||
patron += 'src="([^"]+)".*?'
|
||||
patron += '<a title="([^"]+)".*?'
|
||||
@@ -113,6 +112,7 @@ def play(item):
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl in matches:
|
||||
scrapedurl = scrapedurl.replace("https:", "http:")
|
||||
scrapedurl += "|Referer=%s" % host
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=item.title, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, plot=item.plot, show=item.title, server="directo", folder=False))
|
||||
return itemlist
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "sxyprn",
|
||||
"name": "sxyprn",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://www.sxyprn.com/favicon.ico",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
|
||||
Executable
+99
@@ -0,0 +1,99 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,re
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://www.sxyprn.com'
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=host + "/blog/all/0.html?fl=all&sm=latest"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistos" , action="lista", url=host + "/popular/top-viewed.html"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorada" , action="lista", url=host + "/popular/top-rated.html"))
|
||||
itemlist.append( Item(channel=item.channel, title="Sitios" , action="categorias", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host))
|
||||
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "-")
|
||||
item.url = host + "/%s.html" % texto
|
||||
try:
|
||||
return lista(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
if "Sitios" in item.title:
|
||||
patron = "<a href='([^']+)' target='_blank'><div class='top_sub_el top_sub_el_sc'>.*?"
|
||||
patron += "<span class='top_sub_el_key_sc'>([^<]+)</span>"
|
||||
patron += "<span class='top_sub_el_count'>(\d+)</span>"
|
||||
else:
|
||||
patron = "<a class='tdn' href='([^']+)'.*?"
|
||||
patron += "<span class='htag_el_tag'>([^<]+)</span>"
|
||||
patron += "<span class='htag_el_count'>(\d+) videos</span>"
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle,cantidad in matches:
|
||||
scrapedplot = ""
|
||||
scrapedthumbnail = ""
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl)
|
||||
title = scrapedtitle + " (" + cantidad + ")"
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=title, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail , plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = "<img class=.*?"
|
||||
patron += " src='([^']+)'.*?"
|
||||
patron += "<span class='duration_small'.*?'>([^<]+)<.*?"
|
||||
patron += "<span class='shd_small'.*?>([^<]+)<.*?"
|
||||
patron += "post_time' href='([^']+)' title='([^']+)'"
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedthumbnail,scrapedtime,quality,scrapedurl,scrapedtitle in matches:
|
||||
title = "[COLOR yellow]%s[/COLOR] [COLOR red]%s[/COLOR] %s" % (scrapedtime,quality,scrapedtitle)
|
||||
thumbnail = "https:" + scrapedthumbnail
|
||||
scrapedurl = urlparse.urljoin(item.url,scrapedurl)
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="findvideos", title=title, url=scrapedurl,
|
||||
thumbnail=thumbnail, fanart=thumbnail, plot=plot, contentTitle = scrapedtitle))
|
||||
#
|
||||
next_page = scrapertools.find_single_match(data, "<div class='ctrl_el ctrl_sel'>.*?<a href='([^']+)'")
|
||||
if next_page:
|
||||
next_page = urlparse.urljoin(item.url,next_page)
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title="Página Siguiente >>", text_color="blue",
|
||||
url=next_page) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|amp;|\s{2}| ", "", data)
|
||||
url = scrapertools.find_single_match(data, 'data-vnfo=.*?":"([^"]+)"')
|
||||
url = url.replace("\/", "/").replace("/cdn/", "/cdn7/")
|
||||
url = urlparse.urljoin(item.url,url)
|
||||
itemlist.append( Item(channel=item.channel, action="play", title = "%s " + url, url=url))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
return itemlist
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
{
|
||||
"id": "modo_grafico",
|
||||
"type": "bool",
|
||||
"label": "Cerca informazioni extra",
|
||||
"label": "Buscar información extra",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
import urlparse
|
||||
|
||||
from channelselector import get_thumb
|
||||
from core import channeltools
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
from channelselector import get_thumb
|
||||
|
||||
__channel__ = "thumbzilla"
|
||||
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"id": "titsbox",
|
||||
"name": "titsbox",
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://titsbox.com/android-chrome-192x192.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
"settings": [
|
||||
]
|
||||
}
|
||||
|
||||
Executable
+71
@@ -0,0 +1,71 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#------------------------------------------------------------
|
||||
import urlparse,urllib2,urllib,re
|
||||
|
||||
from core import jsontools as json
|
||||
from platformcode import config, logger
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from core import servertools
|
||||
from core import httptools
|
||||
|
||||
host = 'https://titsbox.com' #titbox vivud zmovs
|
||||
|
||||
url_api = host + "/?ajax=1&type="
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append( Item(channel=item.channel, title="Nuevos" , action="lista", url=url_api + "most-recent&page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mejor valorados" , action="lista", url=url_api + "top-rated&page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Mas vistos" , action="lista", url=url_api + "long&page=1"))
|
||||
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host))
|
||||
return itemlist
|
||||
|
||||
|
||||
def categorias(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = scrapertools.find_single_match(data, '<ul class="sidebar-nav">(.*?)</ul>')
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
patron = '<a class="category-item" href="([^"]+)">([^"]+)</a>'
|
||||
matches = re.compile(patron,re.DOTALL).findall(data)
|
||||
for scrapedurl,scrapedtitle in matches:
|
||||
url = host + scrapedurl + "?ajax=1&type=most-recent&page=1"
|
||||
scrapedplot = ""
|
||||
thumbnail = ""
|
||||
itemlist.append( Item(channel=item.channel, action="lista", title=scrapedtitle, url=url,
|
||||
thumbnail=thumbnail , plot=scrapedplot) )
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>|<br/>", "", data)
|
||||
JSONData = json.load(data)
|
||||
for Video in JSONData["data"]:
|
||||
duration = Video["duration"]
|
||||
title = Video["videoTitle"]
|
||||
title = "[COLOR yellow]%s[/COLOR] %s" % (duration,title)
|
||||
src= Video["src"]
|
||||
domain=""
|
||||
thumbnail = src.get('domain', domain) + src.get('pathMedium', domain)+"1.jpg"
|
||||
url= Video["urls_CDN"]
|
||||
url= url.get('480', domain)
|
||||
url = url.replace("/\n/", "/")
|
||||
plot = ""
|
||||
itemlist.append( Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail,
|
||||
fanart=thumbnail, plot=plot,))
|
||||
Actual = int(scrapertools.find_single_match(item.url, '&page=([0-9]+)'))
|
||||
if JSONData["pagesLeft"] - 1 > Actual:
|
||||
scrapedurl = item.url.replace("&page=" + str(Actual), "&page=" + str(Actual + 1))
|
||||
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=scrapedurl))
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
return
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user