')
+ patron = '
'
+
matches = scrapertools.find_multiple_matches(data, patron)
- # Paginacion
- num_items_x_pagina = 30
- min = item.page * num_items_x_pagina
- min=min-item.page
- max = min + num_items_x_pagina - 1
- b=0
- for link, img, name in matches[min:max]:
- b=b+1
+
+ for link, img, name in matches:
if " y " in name:
title=name.replace(" y "," & ")
else:
@@ -80,17 +78,15 @@ def lista(item):
context2 = autoplay.context
context.extend(context2)
- itemlist.append(item.clone(title=title, url=url, action="episodios", thumbnail=scrapedthumbnail, show=title,contentSerieName=title,
- context=context))
- if b<29:
- a=a+1
- url=host+"/p/pag-"+str(a)
- if b>10:
- itemlist.append(
- Item(channel=item.channel, contentSerieName=item.contentSerieName, title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=url, action="lista", page=0))
- else:
- itemlist.append(
- Item(channel=item.channel, contentSerieName=item.contentSerieName, title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=item.url, action="lista", page=item.page + 1))
+ itemlist.append(Item(channel=item.channel, title=title, url=url, action="episodios", thumbnail=scrapedthumbnail,
+ contentSerieName=title, context=context))
+
+ # Paginacion
+
+ next_page = scrapertools.find_single_match(full_data, '\d+\d+')
+ if next_page != '':
+ itemlist.append(Item(channel=item.channel, contentSerieName=item.contentSerieName,
+ title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=host+next_page, action="lista"))
tmdb.set_infoLabels(itemlist)
return itemlist
@@ -211,6 +207,48 @@ def findvideos(item):
return itemlist
+def search_results(item):
+ logger.info()
+ itemlist = []
+ data = httptools.downloadpage(item.url, post=item.post).data
+ if len(data) > 0:
+ results = eval(data)
+ else:
+ return itemlist
+
+ for result in results:
+ try:
+ thumbnail = host + "/tb/%s.jpg" % result[0]
+ title = u'%s' % result[1]
+ logger.debug(title)
+ url = host + "/s/%s" % result[2]
+ itemlist.append(Item(channel=item.channel, thumbnail=thumbnail, title=title, url=url, contentSerieName=title,
+ action='episodios'))
+ except:
+ pass
+
+ tmdb.set_infoLabels(itemlist, seekTmdb=True)
+ return itemlist
+
+def search(item, texto):
+ logger.info()
+ import urllib
+
+ if texto != "":
+ texto = texto.replace(" ", "+")
+ item.url = host+"/b.php"
+ post = {'k':texto, "pe":"", "te":""}
+ item.post = urllib.urlencode(post)
+
+ try:
+ return search_results(item)
+ except:
+ import sys
+ for line in sys.exc_info():
+ logger.error("%s" % line)
+ return []
+
+
def golink(ida,sl):
a=ida
b=[3,10,5,22,31]
diff --git a/plugin.video.alfa/channels/homecine.json b/plugin.video.alfa/channels/homecine.json
new file mode 100644
index 00000000..81bef526
--- /dev/null
+++ b/plugin.video.alfa/channels/homecine.json
@@ -0,0 +1,70 @@
+{
+ "id": "homecine",
+ "name": "HomeCine",
+ "active": true,
+ "adult": false,
+ "language": ["lat","cast"],
+ "thumbnail": "https://homecine.net/wp-content/uploads/2018/05/homedark-1-3.png",
+ "banner": "",
+ "version": 1,
+ "categories": [
+ "movie",
+ "direct"
+ ],
+ "settings": [
+ {
+ "id": "include_in_global_search",
+ "type": "bool",
+ "label": "Incluir en busqueda global",
+ "default": false,
+ "enabled": false,
+ "visible": false
+ },
+ {
+ "id": "filter_languages",
+ "type": "list",
+ "label": "Mostrar enlaces en idioma...",
+ "default": 0,
+ "enabled": true,
+ "visible": true,
+ "lvalues": [
+ "No filtrar",
+ "LAT",
+ "CAST",
+ "VOSE"
+ ]
+ },
+ {
+ "id": "include_in_newest_peliculas",
+ "type": "bool",
+ "label": "Incluir en Novedades - Peliculas",
+ "default": true,
+ "enabled": true,
+ "visible": true
+ },
+ {
+ "id": "include_in_newest_infantiles",
+ "type": "bool",
+ "label": "Incluir en Novedades - Infantiles",
+ "default": true,
+ "enabled": true,
+ "visible": true
+ },
+ {
+ "id": "include_in_newest_terror",
+ "type": "bool",
+ "label": "Incluir en Novedades - terror",
+ "default": true,
+ "enabled": true,
+ "visible": true
+ },
+ {
+ "id": "include_in_newest_latino",
+ "type": "bool",
+ "label": "Incluir en Novedades - Latino",
+ "default": true,
+ "enabled": true,
+ "visible": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/plugin.video.alfa/channels/homecine.py b/plugin.video.alfa/channels/homecine.py
new file mode 100644
index 00000000..b6fd9274
--- /dev/null
+++ b/plugin.video.alfa/channels/homecine.py
@@ -0,0 +1,358 @@
+# -*- coding: utf-8 -*-
+
+import re
+import urllib
+import urlparse
+
+from channels import autoplay
+from channels import filtertools
+from core import httptools
+from core import jsontools
+from core import scrapertools
+from core import servertools
+from core import tmdb
+from core.item import Item
+from platformcode import config, logger
+from channelselector import get_thumb
+
+IDIOMAS = {'Latino': 'LAT', 'Castellano': 'CAST', 'Subtitulado': 'VOSE'}
+list_language = IDIOMAS.values()
+list_quality = ['HD 720p', 'HD 1080p', '480p', '360p']
+list_servers = ['cinemaupload']
+
+host = 'https://homecine.net'
+
+
+def mainlist(item):
+ logger.info()
+
+ autoplay.init(item.channel, list_servers, list_quality)
+
+ itemlist = []
+
+ itemlist.append(Item(channel=item.channel, title="Ultimas",
+ action="list_all",
+ thumbnail=get_thumb('last', auto=True),
+ url='%s%s' % (host, '/release-year/2019'),
+ first=0
+ ))
+
+ itemlist.append(Item(channel=item.channel,title="Películas",
+ action="sub_menu",
+ thumbnail=get_thumb('movies', auto=True),
+ ))
+
+ itemlist.append(Item(channel=item.channel,title="Series",
+ action="list_all",
+ thumbnail=get_thumb('tvshows', auto=True),
+ url='%s%s'%(host,'/series/'),
+ first=0
+ ))
+
+ itemlist.append(Item(channel=item.channel, title="Documentales",
+ action="list_all",
+ thumbnail=get_thumb('documentaries', auto=True),
+ url='%s%s' % (host, '/documentales/'),
+ first=0
+ ))
+
+ itemlist.append(Item(channel=item.channel,title="Buscar",
+ action="search",
+ url=host+'/?s=',
+ thumbnail=get_thumb('search', auto=True),
+ ))
+
+ autoplay.show_option(item.channel, itemlist)
+
+ return itemlist
+
+def sub_menu(item):
+ logger.info()
+
+ itemlist = []
+
+
+
+ itemlist.append(Item(channel=item.channel,title="Todas",
+ action="list_all",
+ thumbnail=get_thumb('all', auto=True),
+ url='%s%s' % (host, '/peliculas/'),
+ first=0
+ ))
+
+ itemlist.append(Item(channel=item.channel, title="Mas vistas",
+ action="list_all",
+ thumbnail=get_thumb('more watched', auto=True),
+ url='%s%s' % (host, '/most-viewed/'),
+ first=0
+ ))
+
+ itemlist.append(Item(channel=item.channel,title="Generos",
+ action="seccion",
+ thumbnail=get_thumb('genres', auto=True),
+ fanart='https://s3.postimg.cc/5s9jg2wtf/generos.png',
+ url=host,
+ ))
+
+ return itemlist
+
+def get_source(url, referer=None):
+ logger.info()
+ if referer is None:
+ data = httptools.downloadpage(url).data
+ else:
+ data = httptools.downloadpage(url, headers={'Referer':referer}).data
+ data = re.sub(r'\n|\r|\t| |
|\s{2,}', "", data)
+ return data
+
+def list_all(item):
+ logger.info()
+
+ itemlist = []
+ next = False
+
+ data = get_source(item.url)
+ patron = 'movie-id="\d+".*?
([^<]+).*?jtip(.*?)clearfix'
+
+ matches = re.compile(patron, re.DOTALL).findall(data)
+
+ first = item.first
+ last = first + 19
+ if last > len(matches):
+ last = len(matches)
+ next = True
+
+ for scrapedurl, scrapedthumbnail, scrapedtitle, extra_info in matches[first:last]:
+
+ year = scrapertools.find_single_match(extra_info, '"tag">(\d{4})<')
+ url = host+scrapedurl
+ thumbnail = host+scrapedthumbnail.strip()
+ title = scrapedtitle
+ new_item = Item(channel=item.channel,
+ title=title,
+ url=url,
+ thumbnail=thumbnail,
+ infoLabels = {'year': year}
+ )
+ if 'series' in scrapedurl:
+ new_item.action = 'seasons'
+ new_item.contentSerieName = title
+ else:
+ new_item.action = 'findvideos'
+ new_item.contentTitle = title
+
+
+
+ itemlist.append(new_item)
+
+ tmdb.set_infoLabels_itemlist(itemlist, seekTmdb = True)
+
+ if not next:
+ url_next_page = item.url
+ first = last
+ else:
+ url_next_page = scrapertools.find_single_match(data, ".*?class='page larger' href='([^']+)'")
+ url_next_page = host+url_next_page
+ first = 0
+
+ if url_next_page:
+ itemlist.append(Item(channel=item.channel,title="Siguiente >>", url=url_next_page, action='list_all',
+ first=first))
+
+ return itemlist
+
+
+def seccion(item):
+ logger.info()
+
+ itemlist = []
+ duplicado = []
+ data = get_source(item.url)
+
+ patron = 'menu-item-object-category menu-item-\d+">([^<]+)<\/a><\/li>'
+
+ matches = re.compile(patron, re.DOTALL).findall(data)
+
+ for scrapedurl, scrapedtitle in matches:
+ url = host+scrapedurl
+ title = scrapedtitle
+ thumbnail = ''
+ if url not in duplicado:
+ itemlist.append(Item(channel=item.channel,
+ action='list_all',
+ title=title,
+ url=url,
+ thumbnail=thumbnail,
+ first=0
+ ))
+ return itemlist
+
+
+def seasons(item):
+ logger.info()
+ itemlist = []
+
+ data = get_source(item.url)
+
+ patron = 'Season (\d+)'
+
+ matches = re.compile(patron, re.DOTALL).findall(data)
+ infoLabels = item.infoLabels
+ for scrapedseason in matches:
+ contentSeasonNumber = scrapedseason
+ title = 'Temporada %s' % scrapedseason
+ infoLabels['season'] = contentSeasonNumber
+
+ itemlist.append(Item(channel=item.channel,
+ action='episodesxseason',
+ url=item.url,
+ title=title,
+ contentSeasonNumber=contentSeasonNumber,
+ infoLabels=infoLabels
+ ))
+ tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
+
+ if config.get_videolibrary_support() and len(itemlist) > 0:
+ itemlist.append(Item(channel=item.channel,
+ title='[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]',
+ url=item.url,
+ action="add_serie_to_library",
+ extra="episodios",
+ contentSerieName=item.contentSerieName,
+ extra1='library'
+ ))
+
+ return itemlist
+
+def episodios(item):
+ logger.info()
+ itemlist = []
+ templist = seasons(item)
+ for tempitem in templist:
+ itemlist += episodesxseason(tempitem)
+ return itemlist
+
+def episodesxseason(item):
+ logger.info()
+ itemlist = []
+ season = item.contentSeasonNumber
+ data = get_source(item.url)
+ data = scrapertools.find_single_match(data, 'Season %s.*?class="les-content"(.*?) ' % season)
+ patron = '