From f90b24bbac2250b5e883c56487285d1fc44d1fc0 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Wed, 28 Mar 2018 16:37:01 -0500 Subject: [PATCH] doramasmp4; nuevo canal --- plugin.video.alfa/channels/doramasmp4.json | 34 ++++ plugin.video.alfa/channels/doramasmp4.py | 222 +++++++++++++++++++++ 2 files changed, 256 insertions(+) create mode 100644 plugin.video.alfa/channels/doramasmp4.json create mode 100644 plugin.video.alfa/channels/doramasmp4.py diff --git a/plugin.video.alfa/channels/doramasmp4.json b/plugin.video.alfa/channels/doramasmp4.json new file mode 100644 index 00000000..c28e266f --- /dev/null +++ b/plugin.video.alfa/channels/doramasmp4.json @@ -0,0 +1,34 @@ +{ + "id": "doramasmp4", + "name": "DoramasMP4", + "active": true, + "adult": false, + "language": [], + "thumbnail": "https://s14.postimg.org/ibh4znkox/doramasmp4.png", + "banner": "", + "categories": [ + "tvshow" + ], + "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", + "VOSE" + ] + } + ] +} \ No newline at end of file diff --git a/plugin.video.alfa/channels/doramasmp4.py b/plugin.video.alfa/channels/doramasmp4.py new file mode 100644 index 00000000..5e8c7480 --- /dev/null +++ b/plugin.video.alfa/channels/doramasmp4.py @@ -0,0 +1,222 @@ +# -*- coding: utf-8 -*- +# -*- Channel DoramasMP4 -*- +# -*- Created for Alfa-addon -*- +# -*- By the Alfa Develop Group -*- + +import re + +from channels import autoplay +from channels import filtertools +from core import httptools +from core import scrapertools +from core import servertools +from core import jsontools +from core import tmdb +from core.item import Item +from platformcode import config, logger +from channelselector import get_thumb + +host = 'https://www.doramasmp4.com/' + +IDIOMAS = {'sub': 'VOSE'} +list_language = IDIOMAS.values() +list_quality = [] +list_servers = ['openload', 'streamango', 'netutv', 'okru', 'directo', 'mp4upload'] + +def get_source(url): + logger.info() + data = httptools.downloadpage(url).data + data = re.sub(r'"|\n|\r|\t| |
|\s{2,}', "", data) + return data + +def mainlist(item): + logger.info() + + autoplay.init(item.channel, list_servers, list_quality) + itemlist = [] + + itemlist.append(Item(channel= item.channel, title="Doramas", action="doramas_menu", + thumbnail=get_thumb('doramas', auto=True), type='dorama')) + itemlist.append(Item(channel=item.channel, title="PelĂ­culas", action="list_all", + url=host + 'catalogue?type[]=pelicula', thumbnail=get_thumb('movies', auto=True), + type='movie')) + itemlist.append(Item(channel=item.channel, title = 'Buscar', action="search", url= host+'search?q=', + thumbnail=get_thumb('search', auto=True))) + + autoplay.show_option(item.channel, itemlist) + + return itemlist + +def doramas_menu(item): + logger.info() + + itemlist =[] + + itemlist.append(Item(channel=item.channel, title="Todas", action="list_all", url=host + 'catalogue', + thumbnail=get_thumb('all', auto=True), type='dorama')) + itemlist.append(Item(channel=item.channel, title="Nuevos capitulos", action="latest_episodes", + url=host + 'latest-episodes', thumbnail=get_thumb('new episodes', auto=True), type='dorama')) + return itemlist + +def list_all(item): + logger.info() + + itemlist = [] + data = get_source(item.url) + + patron = '(.*?)' + patron += '
(.*?)' + + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedtype in matches: + url = scrapedurl + scrapedtype = scrapedtype.lower() + scrapedtitle = scrapedtitle + thumbnail = scrapedthumbnail + new_item = Item(channel=item.channel, title=scrapedtitle, url=url, + thumbnail=thumbnail, type=scrapedtype) + if scrapedtype != 'dorama': + new_item.action = 'findvideos' + new_item.contentTitle = scrapedtitle + + else: + new_item.contentSerieName=scrapedtitle + new_item.action = 'episodes' + itemlist.append(new_item) + + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + # Paginacion + + if itemlist != []: + if item.type != 'dorama': + page_base = host+'catalogue?type[]=pelicula' + else: + page_base = host + 'catalogue' + next_page = scrapertools.find_single_match(data, '') + if next_page != '': + itemlist.append(Item(channel=item.channel, action="list_all", title='Siguiente >>>', + url=page_base+next_page, thumbnail='https://s16.postimg.org/9okdu7hhx/siguiente.png', + type=item.type)) + return itemlist + + +def latest_episodes(item): + logger.info() + itemlist = [] + infoLabels = dict() + data = get_source(item.url) + + patron = '(.*?)
.*?episode>(.*?)' + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedep in matches: + title = '%s %s' % (scrapedtitle, scrapedep) + contentSerieName = scrapedtitle + itemlist.append(Item(channel=item.channel, action='findvideos', url=scrapedurl, thumbnail=scrapedthumbnail, + title=title, contentSerieName=contentSerieName, type='episode')) + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + return itemlist + + +def episodes(item): + logger.info() + itemlist = [] + data = get_source(item.url) + patron = '' + + matches = re.compile(patron, re.DOTALL).findall(data) + infoLabels = item.infoLabels + + for scrapedurl, scrapedtitle, scrapedep in matches: + url = scrapedurl + contentEpisodeNumber = scrapedep + + infoLabels['season'] = 1 + infoLabels['episode'] = contentEpisodeNumber + + if scrapedtitle != '': + title = scrapedtitle + else: + title = 'episodio %s' % scrapedep + + infoLabels = item.infoLabels + + itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=url, + contentEpisodeNumber=contentEpisodeNumber, type='episode', infoLabels=infoLabels)) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + return itemlist + +def findvideos(item): + logger.info() + + itemlist = [] + duplicated = [] + data = get_source(item.url) + if item.type !='episode' and '' not in data: + item.type = 'dorama' + item.contentSerieName = item.contentTitle + item.contentTitle = '' + return episodes(item) + else: + itemlist.extend(servertools.find_video_items(data=data)) + for video_item in itemlist: + if 'sgl.php' in video_item.url: + headers = {'referer': item.url} + patron_gvideo = "'file':'(.*?)','type'" + data_gvideo = httptools.downloadpage(video_item.url, headers=headers).data + video_item.url = scrapertools.find_single_match(data_gvideo, patron_gvideo) + + duplicated.append(video_item.url) + video_item.channel = item.channel + video_item.infoLabels = item.infoLabels + video_item.language=IDIOMAS['sub'] + + patron = 'var item = {id: (\d+), episode: (\d+),' + matches = re.compile(patron, re.DOTALL).findall(data) + + for id, episode in matches: + data_json=jsontools.load(httptools.downloadpage(host+'/api/stream/?id=%s&episode=%s' %(id, episode)).data) + sources = data_json['options'] + for src in sources: + url = sources[src] + + if 'sgl.php' in url: + headers = {'referer':item.url} + patron_gvideo = "'file':'(.*?)','type'" + data_gvideo = httptools.downloadpage(url, headers = headers).data + url = scrapertools.find_single_match(data_gvideo, patron_gvideo) + + new_item = Item(channel=item.channel, title='%s', url=url, language=IDIOMAS['sub'], action='play', + infoLabels=item.infoLabels) + if url != '' and url not in duplicated: + itemlist.append(new_item) + duplicated.append(url) + try: + itemlist = servertools.get_servers_itemlist(itemlist, lambda x: x.title % x.server.capitalize()) + except: + pass + + + # Requerido para FilterTools + + itemlist = filtertools.get_links(itemlist, item, list_language) + + # Requerido para AutoPlay + + autoplay.start(itemlist, item) + + return itemlist + + +def search(item, texto): + logger.info() + texto = texto.replace(" ", "+") + item.url = item.url + texto + item.type = 'search' + if texto != '': + return list_all(item)