# -*- coding: utf-8 -*-
import sys
try:
import cookielib
except ImportError:
import http.cookiejar as cookielib
try:
import urllib.parse as urllib
except ImportError:
import urllib
try:
import urllib2
except ImportError:
import urllib.request as urllib2
import datetime
from datetime import datetime
import re
import os
import base64
import codecs
import xbmc
import xbmcplugin
import xbmcgui
import xbmcaddon
import xbmcvfs
import traceback
import time
try:
import json
except:
import simplejson as json
##CONFIGURAÇÕES
#### TITULO DO MENU #################################################################
title_menu = ''
### DESCRIÇÃO DO ADDON ###############################################################
title_descricao = 'Descrição do addon'
#### LINK DO TITULO DE MENU #########################################################
## OBS: POR PADRÃO JÁ TEM UM MENU EM BRANCO PARA NÃO TER ERRO AO CLICAR ###############
url_b64_title = ''
#url_title = base64.b64decode(url_b64_title).decode('utf-8')
url_title = ''
##### PESQUISA - get.php
#url_b64_pesquisa = ''
#url_pesquisa = base64.b64decode(url_b64_pesquisa).decode('utf-8')
url_pesquisa = 'http://teste.com/get.php'
menu_pesquisar = '[COLOR white][B]PESQUISAR...[/B][/COLOR]'
thumb_pesquisar = ''
fanart_pesquisar = ''
#### Descrição Pesquisa
desc_pesquisa = 'Pesquise por filme'
## MENU CONFIGURAÇÕES
menu_configuracoes = '[B][COLOR white]CONFIGURAÇÕES[/COLOR][/B]'
thumb_icon_config = ''
desc_configuracoes = ''
## FAVORITOS
menu_favoritos = '[B][COLOR white]FAVORITOS[/COLOR][/B]'
thumb_favoritos = ''
desc_favoritos = ''
#### MENU VIP ################################################################
titulo_vip = '[COLOR white][B]ÁREA DE ACESSO[/B][/COLOR] [COLOR gold][B](VIP)[/B][/COLOR]'
thumbnail_vip = ''
fanart_vip = ''
#### DESCRIÇÃO VIP ###########################################################
vip_descricao = ''
#### DIALOGO VIP - SERVIDOR DESATIVADO - CLICK ###################################
vip_dialogo = 'No Kodi só canais pelo vip, use o app'
##SERIVODR VIP
url_server_vip = ''
## MULTLINK
## nome para $nome, padrão: lsname para $lsname
playlist_command = 'nome'
dialog_playlist = 'Selecione um item'
# user agent - Padrão: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36
useragent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
# Base - seu link principal
url_b64_principal = 'url base 64 encode'
url_principal = 'https://raw.githubusercontent.com/franciscosilvar/Horizonhd/main/README.md'
#name - mensagem suporte
addon_name = xbmcaddon.Addon().getAddonInfo('name')
if sys.argv[1] == 'limparFavoritos':
Path = xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo('profile')).decode("utf-8")
arquivo = os.path.join(Path, "favorites.dat")
exists = os.path.isfile(arquivo)
if exists:
try:
os.remove(arquivo)
except:
pass
xbmcgui.Dialog().ok('Sucesso', '[B][COLOR red]Favoritos limpo com sucesso![/COLOR][/B]')
xbmc.sleep(2000)
exit()
if sys.argv[1] == 'SetPassword':
addonID = xbmcaddon.Addon().getAddonInfo('id')
addon_data_path = xbmcvfs.translatePath(os.path.join('special://home/userdata/addon_data', addonID))
if os.path.exists(addon_data_path)==False:
os.mkdir(addon_data_path)
xbmc.sleep(4)
#Path = xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo('profile')).decode("utf-8")
#arquivo = os.path.join(Path, "password.txt")
arquivo = os.path.join(addon_data_path, "password.txt")
exists = os.path.isfile(arquivo)
keyboard = xbmcaddon.Addon().getSetting("keyboard")
if exists == False:
password = '0069'
p_encoded = base64.b64encode(password.encode()).decode('utf-8')
p_file1 = open(arquivo,'w')
p_file1.write(p_encoded)
p_file1.close()
xbmc.sleep(4)
p_file = open(arquivo,'r+')
p_file_read = p_file.read()
p_file_b64_decode = base64.b64decode(p_file_read).decode('utf-8')
dialog = xbmcgui.Dialog()
if int(keyboard) == 0:
ps = dialog.numeric(0, 'Insira a senha atual:')
else:
ps = dialog.input('Insira a senha atual:', option=xbmcgui.ALPHANUM_HIDE_INPUT)
if ps == p_file_b64_decode:
if int(keyboard) == 0:
ps2 = dialog.numeric(0, 'Insira a nova senha:')
else:
ps2 = dialog.input('Insira a senha atual:', option=xbmcgui.ALPHANUM_HIDE_INPUT)
if ps2 != '':
ps2_b64 = base64.b64encode(ps2.encode()).decode('utf-8')
p_file = open(arquivo,'w')
p_file.write(ps2_b64)
p_file.close()
xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','A Senha foi alterada com sucesso!')
else:
xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','Não foi possivel alterar a senha!')
else:
xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','Senha invalida!, se não alterou utilize a senha padrão')
else:
p_file = open(arquivo,'r+')
p_file_read = p_file.read()
p_file_b64_decode = base64.b64decode(p_file_read).decode('utf-8')
dialog = xbmcgui.Dialog()
if int(keyboard) == 0:
ps = dialog.numeric(0, 'Insira a senha atual:')
else:
ps = dialog.input('Insira a senha atual:', option=xbmcgui.ALPHANUM_HIDE_INPUT)
if ps == p_file_b64_decode:
if int(keyboard) == 0:
ps2 = dialog.numeric(0, 'Insira a nova senha:')
else:
ps2 = dialog.input('Insira a senha atual:', option=xbmcgui.ALPHANUM_HIDE_INPUT)
if ps2 != '':
ps2_b64 = base64.b64encode(ps2.encode()).decode('utf-8')
p_file = open(arquivo,'w')
p_file.write(ps2_b64)
p_file.close()
xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','A Senha foi alterada com sucesso!')
else:
xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','Não foi possivel alterar a senha!')
else:
xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','Senha invalida!, se não alterou utilize a senha padrão')
exit()
addon_handle = int(sys.argv[1])
__addon__ = xbmcaddon.Addon()
addon = __addon__
__addonname__ = __addon__.getAddonInfo('name')
__icon__ = __addon__.getAddonInfo('icon')
addon_version = __addon__.getAddonInfo('version')
try:
profile = xbmcvfs.translatePath(__addon__.getAddonInfo('profile').decode('utf-8'))
except:
profile = xbmcvfs.translatePath(__addon__.getAddonInfo('profile'))
try:
home = xbmcvfs.translatePath(__addon__.getAddonInfo('path').decode('utf-8'))
except:
home = xbmcvfs.translatePath(__addon__.getAddonInfo('path'))
favorites = os.path.join(profile, 'favorites.dat')
favoritos = xbmcaddon.Addon().getSetting("favoritos")
if os.path.exists(favorites)==True:
FAV = open(favorites).read()
else:
FAV = []
def notify(message, timeShown=5000):
xbmc.executebuiltin('Notification(%s, %s, %d, %s)' % (__addonname__, message, timeShown, __icon__))
def to_unicode(text, encoding='utf-8', errors='strict'):
"""Force text to unicode"""
if isinstance(text, bytes):
return text.decode(encoding, errors=errors)
return text
def get_search_string(heading='', message=''):
"""Ask the user for a search string"""
search_string = None
keyboard = xbmc.Keyboard(message, heading)
keyboard.doModal()
if keyboard.isConfirmed():
search_string = to_unicode(keyboard.getText())
return search_string
def getRequest(url, count):
proxy_mode = addon.getSetting('proxy')
if proxy_mode == 'true':
try:
import requests
import random
headers={'User-agent': useragent,
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Content-Type': 'text/html'}
if int(count) > 0:
attempt = int(count)-1
else:
attempt = 0
#print('tentativa: '+str(attempt)+'')
### https://proxyscrape.com/free-proxy-list
##http
data_proxy1 = getRequest2('https://api.proxyscrape.com/?request=getproxies&proxytype=http&timeout=10000&country=BR&ssl=no&anonymity=all', '')
list1 = data_proxy1.splitlines()
total1 = len(list1)
number_http = random.randint(0,total1-1)
proxy_http = 'http://'+list1[number_http]
##https
data_proxy2 = getRequest2('https://api.proxyscrape.com/?request=getproxies&proxytype=http&timeout=10000&country=BR&ssl=yes&anonymity=all', '')
list2 = data_proxy2.splitlines()
total2 = len(list2)
number_https = random.randint(0,total2-1)
proxy_https = 'https://'+list2[number_https]
#print(proxy_https)
proxyDict = {"http" : proxy_http, "https" : proxy_https}
req = requests.get(url, headers=headers, proxies=proxyDict)
req.encoding = 'utf-8'
#status = req.status_code
response = req.text
return response
except:
proxy_number = addon.getSetting('proxy_try')
if int(attempt) > 0:
limit = int(attempt)
elif int(count) == 1 and int(attempt) == 0:
limit = int(proxy_number)+1+1
if int(limit) > 1:
#print('ativar outro proxy')
data = getRequest(url, int(limit))
return data
else:
notify('[COLOR red]Erro ao utilizar o proxy ou servidor![/COLOR]')
response = ''
return response
else:
try:
try:
import urllib.request as urllib2
except ImportError:
import urllib2
request_headers = {
"Accept-Language": "pt-BR,pt;q=0.9,en;q=0.8,ru;q=0.7,de-DE;q=0.6,de;q=0.5,de-AT;q=0.4,de-CH;q=0.3,ja;q=0.2,zh-CN;q=0.1,zh;q=0.1,zh-TW;q=0.1,es;q=0.1,ar;q=0.1,en-GB;q=0.1,hi;q=0.1,cs;q=0.1,el;q=0.1,he;q=0.1,en-US;q=0.1",
"User-Agent": useragent,
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
}
request = urllib2.Request(url, headers=request_headers)
response = urllib2.urlopen(request).read().decode('utf-8')
return response
except urllib2.URLError as e:
if hasattr(e, 'code'):
xbmc.executebuiltin("XBMC.Notification(Falha, código de erro - "+str(e.code)+",10000,"+__icon__+")")
elif hasattr(e, 'reason'):
xbmc.executebuiltin("XBMC.Notification(Falha, motivo - "+str(e.reason)+",10000,"+__icon__+")")
response = ''
return response
def getRequest2(url,ref,userargent=False):
try:
if ref > '':
ref2 = ref
else:
ref2 = url
if userargent:
client_user = userargent
else:
client_user = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[('Accept-Language', 'pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7'),('User-Agent', client_user),('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'), ('Referer', ref2)]
data = opener.open(url).read()
response = data.decode('utf-8')
return response
except:
pass
def regex_get_all(text, start_with, end_with):
r = re.findall("(?i)(" + start_with + "[\S\s]+?" + end_with + ")", text)
return r
def re_me(data, re_patten):
match = ''
m = re.search(re_patten, data)
if m != None:
match = m.group(1)
else:
match = ''
return match
def resolve_data(url):
try:
data = getRequest(url, 1)
import gzip, binascii
#k = base64.b32decode('').decode('utf-8')
k = base64.b32decode('').decode('utf-8')
try:
from StringIO import StringIO as BytesIO ## for Python 2
except ImportError:
from io import BytesIO ## for Python 3
if k in data:
data = data.split(k)
buf = BytesIO(binascii.unhexlify(data[0]))
f = gzip.GzipFile(fileobj=buf)
data = f.read()
except:
data = getRequest(url, 1)
return data
def getData(url,fanart,pesquisa=False):
adult = xbmcaddon.Addon().getSetting("adult")
adult2 = xbmcaddon.Addon().getSetting("adult2")
uhdtv = addon.getSetting('uhdtv')
fhdtv = addon.getSetting('fhdtv')
hdtv = addon.getSetting('hdtv')
sdtv = addon.getSetting('sdtv')
filtrar = addon.getSetting('filtrar')
data = resolve_data(url)
if isinstance(data, (int, str, list)):
channels = re.compile('(.+?)',re.MULTILINE|re.DOTALL).findall(data)
channel = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(data)
item = re.compile('- (.*?)
',re.MULTILINE|re.DOTALL).findall(data)
if len(channels) >0:
for channel in channel:
linkedUrl=''
lcount=0
try:
linkedUrl = re.compile('(.*?)').findall(channel)[0]
lcount=len(re.compile('(.*?)').findall(channel))
except: pass
try:
linkedUrl = base64.b32decode(linkedUrl).decode('utf-8')
except:
pass
name = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
try:
thumbnail = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
except:
thumbnail = ''
try:
fanart1 = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
except:
fanart1 = ''
if not fanart1:
if __addon__.getSetting('use_thumb') == "true":
fanArt = thumbnail
else:
fanArt = fanart
else:
fanArt = fanart1
if fanArt == None:
#raise
fanArt = ''
try:
desc = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if desc == None:
#raise
desc = ''
except:
desc = ''
try:
genre = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if genre == None:
#raise
genre = ''
except:
genre = ''
try:
date = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if date == None:
#raise
date = ''
except:
date = ''
try:
credits = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if credits == None:
#raise
credits = ''
except:
credits = ''
try:
year = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if year == None:
#raise
year = ''
except:
year = ''
try:
director = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if director == None:
#raise
director = ''
except:
director = ''
try:
writer = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if writer == None:
#raise
writer = ''
except:
writer = ''
try:
duration = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if duration == None:
#raise
duration = ''
except:
duration = ''
try:
premiered = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if premiered == None:
#raise
premiered = ''
except:
premiered = ''
try:
studio = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if studio == None:
#raise
studio = ''
except:
studio = ''
try:
rate = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if rate == None:
#raise
rate = ''
except:
rate = ''
try:
originaltitle = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if originaltitle == None:
#raise
originaltitle = ''
except:
originaltitle = ''
try:
country = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if country == None:
#raise
country = ''
except:
country = ''
try:
rating = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if rating == None:
#raise
rating = ''
except:
rating = ''
try:
userrating = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if userrating == None:
#raise
userrating = ''
except:
userrating = ''
try:
votes = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if votes == None:
#raise
votes = ''
except:
votes = ''
try:
aired = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(channel)[0]
if aired == None:
#raise
aired = ''
except:
aired = ''
try:
if linkedUrl=='':
#addDir(name.encode('utf-8', 'ignore'),url.encode('utf-8'),2,thumbnail,fanArt,desc,genre,date,credits,True)
#addDir(name.encode('utf-8', 'ignore'),url.encode('utf-8'),2,thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
addDir(name.encode('utf-8', 'ignore'),'',1,thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
else:
#print linkedUrl
#addDir(name.encode('utf-8'),linkedUrl.encode('utf-8'),1,thumbnail,fanArt,desc,genre,date,None,'source')
if adult == 'false' and re.search("ADULTOS",name,re.IGNORECASE) and name.find('(+18)') >=0:
pass
else:
addDir(name.encode('utf-8', 'ignore'),linkedUrl,1,thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
except:
notify('[COLOR red]Erro ao Carregar os dados![/COLOR]')
elif re.search("#EXTM3U",data) or re.search("#EXTINF",data):
content = data.rstrip()
match = re.compile(r'#EXTINF:(.+?),(.*?)[\n\r]+([^\r\n]+)').findall(content)
for other,channel_name,stream_url in match:
if 'tvg-logo' in other:
thumbnail = re_me(other,'tvg-logo=[\'"](.*?)[\'"]')
if thumbnail:
if thumbnail.startswith('http'):
thumbnail = thumbnail
#elif not addon.getSetting('logo-folderPath') == "":
# logo_url = addon.getSetting('logo-folderPath')
# thumbnail = logo_url + thumbnail
else:
thumbnail = ''
else:
thumbnail = ''
else:
thumbnail = ''
if 'group-title' in other:
cat = re_me(other,'group-title=[\'"](.*?)[\'"]')
else:
cat = ''
try:
#resolver_final = resolver(stream_url, channel_name, thumbnail)
if uhdtv == 'false' and re.search("4K",channel_name):
pass
elif fhdtv == 'false' and re.search("FHD",channel_name):
pass
elif hdtv == 'false' and re.search("HD",channel_name) and not re.search("FHD",channel_name):
pass
elif sdtv == 'false' and re.search("SD",channel_name):
pass
elif sdtv == 'false' and not re.search("SD",channel_name) and not re.search("HD",channel_name) and not re.search("4K",channel_name):
pass
#Futebol
elif int(filtrar) == 1 and re.search("Praia",channel_name,re.IGNORECASE):
pass
elif int(filtrar) == 1 and not re.search("SPORTV",channel_name,re.IGNORECASE) and not re.search("DAZN",channel_name,re.IGNORECASE) and not re.search("ESPN Brasil",channel_name,re.IGNORECASE) and not re.search("PREMIERE",channel_name,re.IGNORECASE) and not re.search("COPA",channel_name,re.IGNORECASE):
pass
#Esportes
elif int(filtrar) == 2 and re.search("Praia",channel_name,re.IGNORECASE):
pass
elif int(filtrar) == 2 and not re.search("Band Sports",channel_name,re.IGNORECASE) and not re.search("Combate",channel_name,re.IGNORECASE) and not re.search("Fox Sports",channel_name,re.IGNORECASE) and not re.search("SPORTV",channel_name,re.IGNORECASE) and not re.search("DAZN",channel_name,re.IGNORECASE) and not re.search("ESPN",channel_name,re.IGNORECASE) and not re.search("PREMIERE",channel_name,re.IGNORECASE) and not re.search("COPA",channel_name,re.IGNORECASE):
pass
#Filmes e Series
elif int(filtrar) == 3 and re.search("Sports",channel_name,re.IGNORECASE):
pass
elif int(filtrar) == 3 and re.search("XY Max",channel_name,re.IGNORECASE):
pass
elif int(filtrar) == 3 and not re.search("AMC",channel_name,re.IGNORECASE) and not re.search("Canal Brasil",channel_name,re.IGNORECASE) and not re.search("Cinemax",channel_name,re.IGNORECASE) and not re.search("HBO",channel_name,re.IGNORECASE) and not re.search("Max",channel_name,re.IGNORECASE) and not re.search("Megapix",channel_name,re.IGNORECASE) and not re.search("Paramount",channel_name,re.IGNORECASE) and not re.search("SPACE",channel_name,re.IGNORECASE) and not re.search("TCM",channel_name,re.IGNORECASE) and not re.search("Telecine Action",channel_name,re.IGNORECASE) and not re.search("TC Action",channel_name,re.IGNORECASE) and not re.search("Telecine Cult",channel_name,re.IGNORECASE) and not re.search("TC Cult",channel_name,re.IGNORECASE) and not re.search("TC Cult",channel_name,re.IGNORECASE) and not re.search("Telecine Fun",channel_name,re.IGNORECASE) and not re.search("TC Fun",channel_name,re.IGNORECASE) and not re.search("Telecine Pipoca",channel_name,re.IGNORECASE) and not re.search("TC Pipoca",channel_name,re.IGNORECASE) and not re.search("Telecine Premium",channel_name,re.IGNORECASE) and not re.search("TC Premium",channel_name,re.IGNORECASE) and not re.search("Telecine Touch",channel_name,re.IGNORECASE) and not re.search("TC Touch",channel_name,re.IGNORECASE) and not re.search("TNT",channel_name,re.IGNORECASE) and not re.search("A&E",channel_name,re.IGNORECASE) and not re.search("AXN",channel_name,re.IGNORECASE) and not re.search("AXN",channel_name,re.IGNORECASE) and not re.search("FOX",channel_name,re.IGNORECASE) and not re.search("FX",channel_name,re.IGNORECASE) and not re.search("SONY",channel_name,re.IGNORECASE) and not re.search("Studio Universal",channel_name,re.IGNORECASE) and not re.search("SyFy",channel_name,re.IGNORECASE) and not re.search("Universal Channel",channel_name,re.IGNORECASE) and not re.search("Universal TV",channel_name,re.IGNORECASE) and not re.search("Warner",channel_name,re.IGNORECASE):
pass
#Infantil
elif int(filtrar) == 4 and re.search("FM",channel_name,re.IGNORECASE):
pass
elif int(filtrar) == 4 and not re.search("Baby TV",channel_name,re.IGNORECASE) and not re.search("BOOMERANG",channel_name,re.IGNORECASE) and not re.search("CARTOON NETWORK",channel_name,re.IGNORECASE) and not re.search("DISCOVERY KIDS",channel_name,re.IGNORECASE) and not re.search("DISNEY",channel_name,re.IGNORECASE) and not re.search("GLOOB",channel_name,re.IGNORECASE) and not re.search("NAT GEO KIDS",channel_name,re.IGNORECASE) and not re.search("NICKELODEON",channel_name,re.IGNORECASE) and not re.search("NICK JR",channel_name,re.IGNORECASE) and not re.search("PLAYKIDS",channel_name,re.IGNORECASE) and not re.search("TOONCAST",channel_name,re.IGNORECASE) and not re.search("ZOOMOO",channel_name,re.IGNORECASE):
pass
#Documentario
elif int(filtrar) == 5 and re.search("Kids",channel_name,re.IGNORECASE):
pass
elif int(filtrar) == 5 and not re.search("Discovery",channel_name,re.IGNORECASE) and not re.search("H2 HD",channel_name,re.IGNORECASE) and not re.search("H2 SD",channel_name,re.IGNORECASE) and not re.search("H2 FHD",channel_name,re.IGNORECASE) and not re.search("History",channel_name,re.IGNORECASE) and not re.search("Nat Geo Wild",channel_name,re.IGNORECASE) and not re.search("National Geographic",channel_name,re.IGNORECASE):
pass
#Abertos
elif int(filtrar) == 6 and re.search("Brasileirinhas",channel_name,re.IGNORECASE):
pass
elif int(filtrar) == 6 and re.search("News",channel_name,re.IGNORECASE) or int(filtrar) == 6 and re.search("Sat",channel_name,re.IGNORECASE) or int(filtrar) == 6 and re.search("FM",channel_name,re.IGNORECASE):
pass
elif int(filtrar) == 6 and not re.search("Globo",channel_name,re.IGNORECASE) and not re.search("RECORD",channel_name,re.IGNORECASE) and not re.search("RedeTV",channel_name,re.IGNORECASE) and not re.search("Rede Vida",channel_name,re.IGNORECASE) and not re.search("SBT",channel_name,re.IGNORECASE) and not re.search("TV Brasil",channel_name,re.IGNORECASE) and not re.search("TV Cultura",channel_name,re.IGNORECASE) and not re.search("TV Diario",channel_name,re.IGNORECASE) and not re.search("BAND",channel_name,re.IGNORECASE):
pass
#Reality show
elif int(filtrar) == 7 and not re.search("BBB",channel_name,re.IGNORECASE) and not re.search("Big Brother Brasil",channel_name,re.IGNORECASE) and not re.search("A Fazenda",channel_name,re.IGNORECASE):
pass
#Noticias
elif int(filtrar) == 8 and re.search("FM",channel_name,re.IGNORECASE):
pass
elif int(filtrar) == 8 and not re.search("CNN",channel_name,re.IGNORECASE) and not re.search("NEWS",channel_name,re.IGNORECASE):
pass
elif adult2 == 'false' and re.search("Adult",cat,re.IGNORECASE) or adult2 == 'false' and re.search("ADULT",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Blue Hustler",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("PlayBoy",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Redlight",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Sextreme",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("SexyHot",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Venus",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("AST TV",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("ASTTV",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("AST.TV",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("BRAZZERS",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("CANDY",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("CENTOXCENTO",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("DORCEL",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("EROXX",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("PASSION",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("PENTHOUSE",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("PINK-O",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("PINK O",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("PRIVATE",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("RUSNOCH",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("SCT",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("SEXT6SENSO",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("SHALUN TV",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("VIVID RED",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Porn",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("XY Plus",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("XY Mix",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("XY Mad",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("XXL",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Desire",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Bizarre",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Sexy HOT",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Reality Kings",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Prive TV",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Hustler TV",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Extasy",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Evil Angel",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Erox",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("DUSK",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Brazzers",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Brasileirinhas",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Pink Erotic",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Passion",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Passie",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Meiden Van Holland Hard",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Sext & Senso",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Super One",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Vivid TV",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Hustler HD",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("SCT",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Sex Ation",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Hot TV",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Hot HD",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("MILF",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("ANAL",channel_name,re.IGNORECASE) and not re.search("CANAL",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("PUSSY",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("ROCCO",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("BABES",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("BABIE",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("XY Max",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("TUSHY",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("BLACKED",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("FAKE TAXI",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("XXX",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("18",channel_name,re.IGNORECASE) or adult2 == 'false' and re.search("Porno",channel_name,re.IGNORECASE):
pass
elif re.search("Adult",cat,re.IGNORECASE) or re.search("ADULT",channel_name,re.IGNORECASE) or re.search("Blue Hustler",channel_name,re.IGNORECASE) or re.search("PlayBoy",channel_name,re.IGNORECASE) or re.search("Redlight",channel_name,re.IGNORECASE) or re.search("Sextreme",channel_name,re.IGNORECASE) or re.search("SexyHot",channel_name,re.IGNORECASE) or re.search("Venus",channel_name,re.IGNORECASE) or re.search("AST TV",channel_name,re.IGNORECASE) or re.search("ASTTV",channel_name,re.IGNORECASE) or re.search("AST.TV",channel_name,re.IGNORECASE) or re.search("BRAZZERS",channel_name,re.IGNORECASE) or re.search("CANDY",channel_name,re.IGNORECASE) or re.search("CENTOXCENTO",channel_name,re.IGNORECASE) or re.search("DORCEL",channel_name,re.IGNORECASE) or re.search("EROXX",channel_name,re.IGNORECASE) or re.search("PASSION",channel_name,re.IGNORECASE) or re.search("PENTHOUSE",channel_name,re.IGNORECASE) or re.search("PINK-O",channel_name,re.IGNORECASE) or re.search("PINK O",channel_name,re.IGNORECASE) or re.search("PRIVATE",channel_name,re.IGNORECASE) or re.search("RUSNOCH",channel_name,re.IGNORECASE) or re.search("SCT",channel_name,re.IGNORECASE) or re.search("SEXT6SENSO",channel_name,re.IGNORECASE) or re.search("SHALUN TV",channel_name,re.IGNORECASE) or re.search("VIVID RED",channel_name,re.IGNORECASE) or re.search("Porn",channel_name,re.IGNORECASE) or re.search("XY Plus",channel_name,re.IGNORECASE) or re.search("XY Mix",channel_name,re.IGNORECASE) or re.search("XY Mad",channel_name,re.IGNORECASE) or re.search("XXL",channel_name,re.IGNORECASE) or re.search("Desire",channel_name,re.IGNORECASE) or re.search("Bizarre",channel_name,re.IGNORECASE) or re.search("Sexy HOT",channel_name,re.IGNORECASE) or re.search("Reality Kings",channel_name,re.IGNORECASE) or re.search("Prive TV",channel_name,re.IGNORECASE) or re.search("Hustler TV",channel_name,re.IGNORECASE) or re.search("Extasy",channel_name,re.IGNORECASE) or re.search("Evil Angel",channel_name,re.IGNORECASE) or re.search("Erox",channel_name,re.IGNORECASE) or re.search("DUSK",channel_name,re.IGNORECASE) or re.search("Brazzers",channel_name,re.IGNORECASE) or re.search("Brasileirinhas",channel_name,re.IGNORECASE) or re.search("Pink Erotic",channel_name,re.IGNORECASE) or re.search("Passion",channel_name,re.IGNORECASE) or re.search("Passie",channel_name,re.IGNORECASE) or re.search("Meiden Van Holland Hard",channel_name,re.IGNORECASE) or re.search("Sext & Senso",channel_name,re.IGNORECASE) or re.search("Super One",channel_name,re.IGNORECASE) or re.search("Vivid TV",channel_name,re.IGNORECASE) or re.search("Hustler HD",channel_name,re.IGNORECASE) or re.search("SCT",channel_name,re.IGNORECASE) or re.search("Sex Ation",channel_name,re.IGNORECASE) or re.search("Hot TV",channel_name,re.IGNORECASE) or re.search("Hot HD",channel_name,re.IGNORECASE) or re.search("MILF",channel_name,re.IGNORECASE) or re.search("ANAL",channel_name,re.IGNORECASE) and not re.search("CANAL",channel_name,re.IGNORECASE) or re.search("PUSSY",channel_name,re.IGNORECASE) or re.search("ROCCO",channel_name,re.IGNORECASE) or re.search("BABES",channel_name,re.IGNORECASE) or re.search("BABIE",channel_name,re.IGNORECASE) or re.search("XY Max",channel_name,re.IGNORECASE) or re.search("TUSHY",channel_name,re.IGNORECASE) or re.search("FAKE TAXI",channel_name,re.IGNORECASE) or re.search("BLACKED",channel_name,re.IGNORECASE) or re.search("XXX",channel_name,re.IGNORECASE) or re.search("18",channel_name,re.IGNORECASE) or re.search("Porno",channel_name,re.IGNORECASE):
addDir2(channel_name.encode('utf-8', 'ignore'),stream_url,10,'',thumbnail,'','','','','','','','','','','','','','','','','','',False)
else:
#addLink(name1.encode('utf-8', 'ignore'),resolver_final.encode('utf-8'),'',cleaname,thumbnail,'',desc1)
addDir2(channel_name.encode('utf-8', 'ignore'),stream_url,18,'',thumbnail,'','','','','','','','','','','','','','','','','','',False)
except:
#notify('[COLOR red]Erro ao Carregar os dados![/COLOR]')
pass
else:
#getItems(soup('item'),fanart)
getItems(item,fanart,pesquisa)
else:
#parse_m3u(soup)
notify('[COLOR red]Erro ao Carregar os dados![/COLOR]')
if '' in data:
try:
content=re.findall('(.*?)<',data)[0]
xbmcplugin.setContent(addon_handle, str(content))
except:
xbmcplugin.setContent(addon_handle, 'movies')
else:
xbmcplugin.setContent(addon_handle, 'movies')
if '' in data:
try:
viewmode=re.findall('(.*?)<',data)[0]
xbmc.executebuiltin("Container.SetViewMode(%s)"%viewmode)
#print 'done setview',viewmode
except: pass
def getItems(items,fanart,pesquisa=False):
use_thumb = addon.getSetting('use_thumb')
for item in items:
try:
name = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0].replace(';','')
if name == None or name == '':
#raise
name = 'unknown?'
except:
name = ''
try:
thumbnail = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if thumbnail == None:
#raise
thumbnail = ''
except:
thumbnail = ''
try:
fanart1 = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
except:
fanart1 = ''
if not fanart1:
if __addon__.getSetting('use_thumb') == "true":
fanArt = thumbnail
else:
fanArt = fanart
else:
fanArt = fanart1
if fanArt == None:
#raise
fanArt = ''
try:
desc = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if desc == None:
#raise
desc = ''
except:
desc = ''
try:
category = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if category == None:
#raise
category = ''
except:
category = ''
try:
subtitle1 = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)
if len(subtitle1)>0:
subtitle = subtitle1[0]
subs = []
for sub in subtitle1:
subs.append(''+sub+'')
#subtitle2 = subtitle1
subtitle2 = subs
else:
subtitle = ''
subtitle2 = ''
except:
subtitle = ''
subtitle2 = ''
try:
utube = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)
if len(utube)>0:
utube = utube[0]
else:
utube = ''
except:
utube = ''
try:
utubelive = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)
if len(utubelive)>0:
utubelive = utubelive[0]
else:
utubelive = ''
except:
utubelive = ''
try:
jsonrpc = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)
externallink = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)
link = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)
if len(jsonrpc)>0:
url = jsonrpc[0]
url2 = ''
elif len(externallink)>0:
url = externallink[0]
url2 = ''
elif len(link)>0:
try:
url = link[0]
mylinks = []
for link in link:
mylinks.append(''+link+'')
#url2 = link
url2 = mylinks
except:
url = link[0]
url2 = ''
else:
url = ''
url2 = ''
except:
url = ''
url2 = ''
try:
genre = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if genre == None:
#raise
genre = ''
except:
genre = ''
try:
date = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if date == None:
#raise
date = ''
except:
date = ''
try:
credits = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if credits == None:
#raise
credits = ''
except:
credits = ''
try:
year = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if year == None:
#raise
year = ''
except:
year = ''
try:
director = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if director == None:
#raise
director = ''
except:
director = ''
try:
writer = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if writer == None:
#raise
writer = ''
except:
writer = ''
try:
duration = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if duration == None:
#raise
duration = ''
except:
duration = ''
try:
premiered = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if premiered == None:
#raise
premiered = ''
except:
premiered = ''
try:
studio = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if studio == None:
#raise
studio = ''
except:
studio = ''
try:
rate = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if rate == None:
#raise
rate = ''
except:
rate = ''
try:
originaltitle = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if originaltitle == None:
#raise
originaltitle = ''
except:
originaltitle = ''
try:
country = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if country == None:
#raise
country = ''
except:
country = ''
try:
rating = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if rating == None:
#raise
rating = ''
except:
rating = ''
try:
userrating = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if userrating == None:
#raise
userrating = ''
except:
userrating = ''
try:
votes = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if votes == None:
#raise
votes = ''
except:
votes = ''
try:
aired = re.compile('(.*?)',re.MULTILINE|re.DOTALL).findall(item)[0]
if aired == None:
#raise
aired = ''
except:
aired = ''
#try:
# xbmcgui.Dialog().textviewer('Informação: ', item('director')[0].string)
#except:
# pass
#xbmcgui.Dialog().textviewer('Informação:', name)
try:
if name > '' and url == '' and not utube > '' and not utubelive > '':
addLink(name.encode('utf-8', 'ignore'),'None','',thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
elif name > '' and url == None and not utube > '' and not utubelive > '':
addLink(name.encode('utf-8', 'ignore'),'None','',thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
elif category == 'Adult' and url.find('redecanais') >= 0 and url.find('m3u8') >= 0:
addDir2(name.encode('utf-8', 'ignore'),url,10,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif category == 'Adult' and url.find('canaismax') >= 0:
addDir2(name.encode('utf-8', 'ignore'),url,10,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif url.find('canaismax') >= 0 and url.find('page') >= 0:
addDir2(name.encode('utf-8', 'ignore'),url,16,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif url.find('ultracine_page') >= 0 and not len(url2) >1:
addDir2(name.encode('utf-8', 'ignore'),url,16,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif url.find('streamtape.com') >= 0 and not len(url2) >1:
addDir2(name.encode('utf-8', 'ignore'),url,16,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif url.find('netcine2_page') >= 0 and not len(url2) >1:
addDir2(name.encode('utf-8', 'ignore'),url,16,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif url.find('series_canaismax') >= 0 and not len(url2) >1:
addDir2(name.encode('utf-8', 'ignore'),url,16,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif url.find('filmes_canaismax') >= 0 and not len(url2) >1:
addDir2(name.encode('utf-8', 'ignore'),url,16,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif utube > '' and len(utube) == 11:
link_youtube = 'plugin://plugin.video.youtube/play/?video_id='+utube
addLink(name.encode('utf-8', 'ignore'), link_youtube,subtitle,thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
elif utubelive > '' and len(utubelive) == 11:
link_live = 'https://www.youtube.com/watch?v='+utubelive
addDir2(name.encode('utf-8', 'ignore'),link_live,17,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif len(externallink)>0:
addDir(name.encode('utf-8', 'ignore'),resolver(url),1,thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
##Multilink
elif len(url2) >1 and len(subtitle2) >1 and re.search(playlist_command,url,re.IGNORECASE):
name_resolve = name+'[COLOR red] ('+str(len(url2))+' itens)[/COLOR]'
addDir2(name_resolve.encode('utf-8', 'ignore'),str(url2).replace(',','||').replace('$'+playlist_command+'','#'+playlist_command+''),11,str(subtitle2).replace(',','||'),thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif len(url2) >1 and re.search(playlist_command,url,re.IGNORECASE):
name_resolve = name+'[COLOR red] ('+str(len(url2))+' itens)[/COLOR]'
addDir2(name_resolve.encode('utf-8', 'ignore'),str(url2).replace(',','||').replace('$'+playlist_command+'','#'+playlist_command+''),11,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
#addLink(name.encode('utf-8', 'ignore'),resolver(url),subtitle,thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
elif category == 'Adult':
addDir2(name.encode('utf-8', 'ignore'),url,10,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
elif resolver(url).startswith('plugin://plugin.video.youtube/playlist') == True or resolver(url).startswith('plugin://plugin.video.youtube/channel') == True or resolver(url).startswith('plugin://plugin.video.youtube/user') == True or resolver(url).startswith('Plugin://plugin.video.youtube/playlist') == True:
addDir(name.encode('utf-8', 'ignore'),resolver(url),6,thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
elif pesquisa:
addDir2(name.encode('utf-8', 'ignore'),url,16,subtitle,thumbnail,fanArt,desc.encode('utf-8'),genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,False)
else:
#xbmcgui.Dialog().textviewer('Informação:', 'ok')
#addLink(name.encode('utf-8', 'ignore'),resolver(url, name, thumbnail).encode('utf-8'),subtitle,thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
addLink(name.encode('utf-8', 'ignore'),resolver(url),subtitle,thumbnail,fanArt,desc,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired)
except:
notify('[COLOR red]Erro ao Carregar os items![/COLOR]')
def adult(name, url, iconimage, description, subtitle):
try:
Path = xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo('profile')).decode("utf-8")
except:
Path = xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo('profile'))
arquivo = os.path.join(Path, "password.txt")
exists = os.path.isfile(arquivo)
keyboard = xbmcaddon.Addon().getSetting("keyboard")
if exists == False:
parental_password()
xbmc.sleep(10)
p_file = open(arquivo,'r+')
p_file_read = p_file.read()
p_file_b64_decode = base64.b64decode(p_file_read).decode('utf-8')
dialog = xbmcgui.Dialog()
if int(keyboard) == 0:
ps = dialog.numeric(0, 'Insira a senha atual:')
else:
ps = dialog.input('Insira a senha atual:', option=xbmcgui.ALPHANUM_HIDE_INPUT)
if ps == p_file_b64_decode:
urlresolver = resolver(url)
#if urlresolver.startswith("plugin://") and not 'elementum' in str(urlresolver):
# xbmc.executebuiltin('RunPlugin(' + urlresolver + ')')
#elif urlresolver.startswith('plugin://plugin.video.youtube/playlist') == True or urlresolver.startswith('plugin://plugin.video.youtube/channel') == True or urlresolver.startswith('plugin://plugin.video.youtube/user') == True or urlresolver.startswith('Plugin://plugin.video.youtube/playlist') == True:
if urlresolver.startswith('plugin://plugin.video.youtube/playlist') == True or urlresolver.startswith('plugin://plugin.video.youtube/channel') == True or urlresolver.startswith('plugin://plugin.video.youtube/user') == True or urlresolver.startswith('Plugin://plugin.video.youtube/playlist') == True:
xbmc.executebuiltin("ActivateWindow(10025," + urlresolver + ",return)")
else:
li = xbmcgui.ListItem(name, path=urlresolver)
li.setArt({"icon": iconimage, "thumb": iconimage})
li.setInfo(type='video', infoLabels={'Title': name, 'plot': description })
if subtitle > '':
li.setSubtitles([subtitle])
xbmc.Player().play(item=urlresolver, listitem=li)
else:
xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','Senha invalida!, se não alterou utilize a senha padrão')
else:
p_file = open(arquivo,'r+')
p_file_read = p_file.read()
p_file_b64_decode = base64.b64decode(p_file_read).decode('utf-8')
dialog = xbmcgui.Dialog()
if int(keyboard) == 0:
ps = dialog.numeric(0, 'Insira a senha atual:')
else:
ps = dialog.input('Insira a senha atual:', option=xbmcgui.ALPHANUM_HIDE_INPUT)
if ps == p_file_b64_decode:
urlresolver = resolver(url)
#if urlresolver.startswith("plugin://") and not 'elementum' in str(urlresolver):
# xbmc.executebuiltin('RunPlugin(' + urlresolver + ')')
#elif urlresolver.startswith('plugin://plugin.video.youtube/playlist') == True or urlresolver.startswith('plugin://plugin.video.youtube/channel') == True or urlresolver.startswith('plugin://plugin.video.youtube/user') == True or urlresolver.startswith('Plugin://plugin.video.youtube/playlist') == True:
if urlresolver.startswith('plugin://plugin.video.youtube/playlist') == True or urlresolver.startswith('plugin://plugin.video.youtube/channel') == True or urlresolver.startswith('plugin://plugin.video.youtube/user') == True or urlresolver.startswith('Plugin://plugin.video.youtube/playlist') == True:
xbmc.executebuiltin("ActivateWindow(10025," + urlresolver + ",return)")
else:
li = xbmcgui.ListItem(name, path=urlresolver)
li.setArt({"icon": iconimage, "thumb": iconimage})
li.setInfo(type='video', infoLabels={'Title': name, 'plot': description })
if subtitle > '':
li.setSubtitles([subtitle])
xbmc.Player().play(item=urlresolver, listitem=li)
else:
xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','Senha invalida!, se não alterou utilize a senha padrão')
def playlist(name, url, iconimage, description, subtitle):
playlist_command1 = playlist_command
dialog = xbmcgui.Dialog()
links = re.compile('([\s\S]*?)#'+playlist_command1+'', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(url)
names = re.compile('#'+playlist_command1+'=([\s\S]*?)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(url)
names2 = []
subtitles = re.compile('([\s\S]*?)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(subtitle)
for name in names:
myname = name.replace('+', ' ')
names2.append(myname)
if links !=[] and names2 !=[]:
index = dialog.select(dialog_playlist, names2)
if index >= 0:
playname=names2[index]
if playname > '':
playname1 = playname
else:
playname1 = 'Desconhecido'
playlink=links[index]
if subtitles !=[]:
playsub=subtitles[index]
else:
playsub = ''
urlresolver = resolver(playlink)
#if urlresolver.startswith("plugin://") and not 'elementum' in str(urlresolver):
# xbmc.executebuiltin('RunPlugin(' + urlresolver + ')')
#elif urlresolver.startswith('plugin://plugin.video.youtube/playlist') == True or urlresolver.startswith('plugin://plugin.video.youtube/channel') == True or urlresolver.startswith('plugin://plugin.video.youtube/user') == True or urlresolver.startswith('Plugin://plugin.video.youtube/playlist') == True:
if urlresolver.startswith('plugin://plugin.video.youtube/playlist') == True or urlresolver.startswith('plugin://plugin.video.youtube/channel') == True or urlresolver.startswith('plugin://plugin.video.youtube/user') == True or urlresolver.startswith('Plugin://plugin.video.youtube/playlist') == True:
xbmc.executebuiltin("ActivateWindow(10025," + urlresolver + ",return)")
else:
li = xbmcgui.ListItem(playname1, path=urlresolver)
li.setArt({"icon": iconimage, "thumb": iconimage})
li.setInfo(type='video', infoLabels={'Title': playname1, 'plot': description })
if subtitle > '':
li.setSubtitles([playsub])
xbmc.Player().play(item=urlresolver, listitem=li)
def individual_player(name, url, iconimage, description, subtitle):
urlresolver = resolver(url)
#if urlresolver.startswith("plugin://") and not 'elementum' in str(urlresolver):
# xbmc.executebuiltin('RunPlugin(' + urlresolver + ')')
#else:
li = xbmcgui.ListItem(name, path=urlresolver)
li.setArt({"icon": iconimage, "thumb": iconimage})
li.setInfo(type='video', infoLabels={'Title': name, 'plot': description })
if subtitle > '':
li.setSubtitles([subtitle])
xbmc.Player().play(item=urlresolver, listitem=li)
def m3u8_player(name, url, iconimage, description, subtitle):
#if url.startswith("plugin://") and not 'elementum' in str(url):
# xbmc.executebuiltin('RunPlugin(' + url + ')')
#else:
li = xbmcgui.ListItem(name, path=url)
li.setArt({"icon": iconimage, "thumb": iconimage})
li.setInfo(type='video', infoLabels={'Title': name, 'plot': description })
if subtitle > '':
li.setSubtitles([subtitle])
xbmc.Player().play(item=url, listitem=li)
def ascii(string):
if isinstance(string, basestring):
if isinstance(string, unicode):
string = string.encode('ascii', 'ignore')
return string
def uni(string, encoding = 'utf-8'):
if isinstance(string, basestring):
if not isinstance(string, unicode):
string = unicode(string, encoding, 'ignore')
return string
def removeNonAscii(s): return "".join(filter(lambda x: ord(x)<128, s))
def sendJSON(command):
data = ''
try:
data = xbmc.executeJSONRPC(uni(command))
except UnicodeEncodeError:
data = xbmc.executeJSONRPC(ascii(command))
return uni(data)
def pluginquerybyJSON(url):
json_query = uni('{"jsonrpc":"2.0","method":"Files.GetDirectory","params":{"directory":"%s","media":"video","properties":["thumbnail","title","year","dateadded","fanart","rating","season","episode","studio"]},"id":1}') %url
json_folder_detail = json.loads(sendJSON(json_query))
for i in json_folder_detail['result']['files'] :
url = i['file']
name = removeNonAscii(i['label'])
thumbnail = removeNonAscii(i['thumbnail'])
try:
fanart = removeNonAscii(i['fanart'])
except Exception:
fanart = ''
try:
date = i['year']
except Exception:
date = ''
try:
episode = i['episode']
season = i['season']
if episode == -1 or season == -1:
description = ''
else:
description = '[COLOR yellow] S' + str(season)+'[/COLOR][COLOR hotpink] E' + str(episode) +'[/COLOR]'
except Exception:
description = ''
try:
studio = i['studio']
if studio:
description += '\n Studio:[COLOR steelblue] ' + studio[0] + '[/COLOR]'
except Exception:
studio = ''
desc = description+'\n\nDate: '+str(date)
if i['filetype'] == 'file':
#addLink(url,name,thumbnail,fanart,description,'',date,'',None,'',total=len(json_folder_detail['result']['files']))
addLink(name.encode('utf-8', 'ignore'),url.encode('utf-8'),'',thumbnail,fanart,desc,'','','','','','','','','','','','','','','','')
#xbmc.executebuiltin("Container.SetViewMode(500)")
else:
#addDir(name,url,53,thumbnail,fanart,description,'',date,'')
addDir(name.encode('utf-8', 'ignore'),url.encode('utf-8'),6,iconimage,fanart,desc,'','','','','','','','','','','','','','','','')
#xbmc.executebuiltin("Container.SetViewMode(500)")
def youtube_live(url):
data = getRequest2(url, 'https://www.youtube.com/')
#print(data)
match = re.compile('"hlsManifestUrl.+?"(.+?).m3u8', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data)
if match !=[]:
stream = match[0].replace(':\\"https:', 'https:').replace('\/', '/').replace('\n', '')+'.m3u8|Referer=https://www.youtube.com/|User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
#print(stream)
return stream
else:
stream = ''
return stream
def youtube_live_player(name, url, iconimage, description, subtitle):
li = xbmcgui.ListItem(name, path=youtube_live(url))
li.setArt({"icon": iconimage, "thumb": iconimage})
li.setInfo(type='video', infoLabels={'Title': name, 'plot': description })
if subtitle > '':
li.setSubtitles([subtitle])
xbmc.Player().play(item=youtube_live(url), listitem=li)
def youtube(url):
plugin_url = url
xbmc.executebuiltin("ActivateWindow(10025," + plugin_url + ",return)")
def youtube_resolver(url):
link_youtube = url
if link_youtube.startswith('https://www.youtube.com/watch?v') == True or link_youtube.startswith('https://youtube.com/watch?v') == True:
get_id1 = re.compile('v=(.+?)&', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(link_youtube)
get_id2 = re.compile('v=(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(link_youtube)
if get_id1 !=[]:
#print('tem')
id_video = get_id1[0]
#print(id)
resolve = 'plugin://plugin.video.youtube/play/?video_id='+id_video
elif get_id2 !=[]:
#print('tem2')
id_video = get_id2[0]
#print(id)
resolve = 'plugin://plugin.video.youtube/play/?video_id='+id_video
else:
resolve = ''
elif link_youtube.startswith('https://www.youtube.com/playlist?') == True or link_youtube.startswith('https://youtube.com/playlist?') == True:
get_id1 = re.compile('list=(.+?)&', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(link_youtube)
get_id2 = re.compile('list=(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(link_youtube)
if get_id1 !=[]:
#print('tem')
id_video = get_id1[0]
#print(id)
resolve = 'plugin://plugin.video.youtube/playlist/'+id_video+'/?page=0'
elif get_id2 !=[]:
#print('tem2')
id_video = get_id2[0]
#print(id)
resolve = 'plugin://plugin.video.youtube/playlist/'+id_video+'/?page=0'
else:
resolve = ''
elif link_youtube.startswith('https://www.youtube.com/channel') == True or link_youtube.startswith('https://youtube.com/channel') == True:
get_id1 = re.compile('channel/(.+?)&', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(link_youtube)
get_id2 = re.compile('channel/(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(link_youtube)
if get_id1 !=[]:
#print('tem')
id_video = get_id1[0]
#print(id)
resolve = 'plugin://plugin.video.youtube/channel/'+id_video+'/'
elif get_id2 !=[]:
#print('tem2')
id_video = get_id2[0]
#print(id)
resolve = 'plugin://plugin.video.youtube/channel/'+id_video+'/'
else:
resolve = ''
elif link_youtube.startswith('https://www.youtube.com/user') == True or link_youtube.startswith('https://youtube.com/user') == True:
get_id1 = re.compile('user/(.+?)&', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(link_youtube)
get_id2 = re.compile('user/(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(link_youtube)
if get_id1 !=[]:
#print('tem')
id_video = get_id1[0]
#print(id)
resolve = 'plugin://plugin.video.youtube/user/'+id_video+'/'
elif get_id2 !=[]:
#print('tem2')
id_video = get_id2[0]
#print(id)
resolve = 'plugin://plugin.video.youtube/user/'+id_video+'/'
else:
resolve = ''
else:
resolve = ''
return resolve
def youtube_restore(url):
if url.find('/?video_id=') >= 0:
find_id = re.compile('/?video_id=(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(url)
normal_url = 'https://www.youtube.com/watch?v='+str(find_id[0])
elif url.find('youtube/playlist/') >= 0:
find_id = re.compile('/playlist/(.+?)/', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(url)
normal_url = 'https://www.youtube.com/playlist?list='+str(find_id[0])
else:
normal_url = ''
return normal_url
def data_youtube(url, ref):
try:
try:
import cookielib
except ImportError:
import http.cookiejar as cookielib
try:
import urllib2
except ImportError:
import urllib.request as urllib2
if ref > '':
ref2 = ref
else:
ref2 = url
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[('Accept-Language', 'en-US,en;q=0.9;q=0.8'),('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'),('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'), ('Referer', ref2)]
data = opener.open(url).read()
response = data.decode('utf-8')
return response
except:
#pass
response = ''
return response
def getPlaylistLinksYoutube(url):
try:
sourceCode = data_youtube(youtube_restore(url), '')
except:
sourceCode = ''
ytb_re = re.compile('url":"https://i.ytimg.com/vi/(.+?)/hqdefault.+?"width":.+?,"height":.+?}]},"title".+?"text":"(.+?)"}],', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(sourceCode)
for video_id,name in ytb_re:
original_name = str(name).replace(r"\u0026","&").replace('\\', '')
thumbnail = "https://img.youtube.com/vi/%s/0.jpg" % video_id
fanart = "https://i.ytimg.com/vi/%s/hqdefault.jpg" % video_id
plugin_url = 'plugin://plugin.video.youtube/play/?video_id='+video_id
urlfinal = str(plugin_url)
description = ''
addLink(original_name.encode('utf-8', 'ignore'),urlfinal,'',str(thumbnail),str(fanart),description,'','','','','','','','','','','','','','','','')
def canaismax(url):
try:
page = str(re.compile('canaismax_page=(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(url)[0])
data = getRequest2(page,'')
source = re.compile('source.+?"(.+?)"', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data)
source2 = re.compile('var.+?url.+?=.+?"(.+?)";', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data)
if source2 !=[]:
link = source2[0].replace('\n','').replace('\r','')
if '.m3u8' in str(link):
stream = str(link)
else:
stream = ''
elif source !=[]:
link = source[0].replace('\n','').replace('\r','')
if '.m3u8' in str(link):
stream = str(link)
else:
stream = ''
else:
stream = ''
return stream
except:
stream = ''
return stream
def netcine2(url):
try:
page = str(re.compile('netcine2_page=(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(url)[0])
data = getRequest2(page,'')
source = re.compile('source.+?"(.+?)"', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data)
if source !=[]:
link = source[0].replace('\n','').replace('\r','')
else:
link = ''
return link
except:
link = ''
return link
def ultracine(url):
try:
page = str(re.compile('ultracine_page=(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(url)[0])
data = getRequest2(page,'')
source = re.compile('.log.+?"(.+?)"', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data)
if source !=[]:
link = source[0].replace('\n','').replace('\r','')
else:
link = ''
return link
except:
link = ''
return link
def streamtape(url):
correct_url = url.replace('streamtape.com/v/', 'streamtape.com/e/')
data = getRequest2(correct_url,'')
link_part1_re = re.compile('videolink.+?style="display:none;">(.*?)&token=').findall(data)
link_part2_re = re.compile("").findall(data)
if link_part1_re !=[] and link_part2_re !=[]:
#link = 'https:'+link_re[0]+'&stream=1'
#link = 'https:'+link_part1_re[0]+'&token='+link_part2_re[0]
link = 'https:'+link_part1_re[0]+'&token='+link_part2_re[0]+'|User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
else:
link = ''
return link
def series_canaismax(url):
try:
page = re.compile('series_canaismax=(.+?)&idioma=(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(url)
link = page[0][0]
idioma = page[0][1]
if 'leg' in idioma or 'Leg' in idioma or 'LEG' in idioma:
data = getRequest2(link,'')
tags = re.compile('javascript.+?data-id="(.+?)".+?data-episodio="(.+?)".+?data-player="(.+?)".+?(.+?)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data)
tags2 = []
for id,episodio,player,lang in tags:
if 'LEG' in lang:
tags2.append((id,episodio,player))
if tags2 !=[]:
data_id = tags2[0][0]
data_episodio = tags2[0][1]
data_player = tags2[0][2]
data2 = getRequest2('https://canaismax.com/embed/'+data_id+'/'+data_episodio+'/'+data_player,'')
source = str(re.compile('source.+?"(.*?)"', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data2)[0])+'|Referer=https://canaismax.com/'
else:
source = ''
elif 'dub' in idioma or 'Dub' in idioma or 'DUB' in idioma:
data = getRequest2(link,'')
tags = re.compile('javascript.+?data-id="(.+?)".+?data-episodio="(.+?)".+?data-player="(.+?)".+?(.+?)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data)
tags2 = []
for id,episodio,player,lang in tags:
if 'DUB' in lang:
tags2.append((id,episodio,player))
if tags2 !=[]:
data_id = tags2[0][0]
data_episodio = tags2[0][1]
data_player = tags2[0][2]
data2 = getRequest2('https://canaismax.com/embed/'+data_id+'/'+data_episodio+'/'+data_player,'')
source = str(re.compile('source.+?"(.*?)"', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data2)[0])+'|Referer=https://canaismax.com/'
else:
source = ''
else:
source = ''
return source
except:
source = ''
return source
def filmes_canaismax(url):
try:
page = re.compile('filmes_canaismax=(.+?)&idioma=(.*)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(url)
link = page[0][0]
idioma = page[0][1]
if 'leg' in idioma or 'Leg' in idioma or 'LEG' in idioma:
data = getRequest2(link,'')
tags = re.compile('javascript.+?data-id="(.+?)".+?data-player="(.+?)".+?(.+?)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data)
tags2 = []
for id,player,lang in tags:
if 'LEG' in lang:
tags2.append((id,player))
if tags2 !=[]:
data_id = tags2[0][0]
data_player = tags2[0][1]
data2 = getRequest2('https://canaismax.com/embed/'+data_id+'/'+data_player,'')
source = str(re.compile('source.+?"(.*?)"', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data2)[0])+'|Referer=https://canaismax.com/'
else:
source = ''
elif 'dub' in idioma or 'Dub' in idioma or 'DUB' in idioma:
data = getRequest2(link,'')
tags = re.compile('javascript.+?data-id="(.+?)".+?data-player="(.+?)".+?(.+?)', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data)
tags2 = []
for id,player,lang in tags:
if 'DUB' in lang:
tags2.append((id,player))
if tags2 !=[]:
data_id = tags2[0][0]
data_player = tags2[0][1]
data2 = getRequest2('https://canaismax.com/embed/'+data_id+'/'+data_player,'')
source = str(re.compile('source.+?"(.*?)"', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(data2)[0])+'|Referer=https://canaismax.com/'
else:
source = ''
else:
source = ''
return source
except:
source = ''
return source
def resolver(link):
link_decoded = link
try:
if not link_decoded.startswith("plugin://plugin") and link_decoded.startswith('https://drive.google.com') == True:
#print('verdadeiro')
resolved = link_decoded.replace('http','plugin://plugin.video.gdrive?mode=streamURL&url=http')
#print(resolved)
elif not link_decoded.startswith("plugin://plugin") and link_decoded.startswith('http://drive.google.com') == True:
#print('verdadeiro')
resolved = link_decoded.replace('http','plugin://plugin.video.gdrive?mode=streamURL&url=http')
#print(resolved)
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('streamtape.com') >= 0:
link = streamtape(link_decoded)
resolved = link
#print(resolved)
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('ultracine_page') >= 0:
link = ultracine(link_decoded)
resolved = link
#print(resolved)
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('netcine2_page') >= 0:
link = netcine2(link_decoded)
resolved = link
#print(resolved)
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('series_canaismax') >= 0:
link_corrigido = link_decoded.replace('idioma;', 'idioma')
link = series_canaismax(link_corrigido)
resolved = link
#print(resolved)
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('filmes_canaismax') >= 0:
link_corrigido = link_decoded.replace('idioma;', 'idioma')
link = filmes_canaismax(link_corrigido)
resolved = link
#print(resolved)
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('eu-central-1.edge.mycdn.live') >= 0:
#print('verdadeiro')
resolved = link_decoded
#print(resolved)
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('canaismax_page') >= 0:
stream = canaismax(link_decoded)
resolved = stream+'|Referer=https://canaismax.com/|User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
elif not link_decoded.startswith("plugin://plugin") and link_decoded.startswith('https://youtube.com/') == True or link_decoded.startswith('https://www.youtube.com/') == True:
try:
resultado = youtube_resolver(link_decoded)
if resultado==None:
#print('vazio')
resolved = ''
else:
resolved = resultado
except:
resolved = ''
elif not link_decoded.startswith("plugin://plugin") and link_decoded.startswith('https://photos.app') == True:
try:
data = getRequest2(link_decoded, 'https://photos.google.com/')
result = re.compile('= 0:
resolved = 'plugin://plugin.video.elementum/play?uri='+link_decoded
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('.mp4') >= 0 and not link_decoded.startswith('magnet:?xt=') == True and not link_decoded.find('.torrent') >= 0:
resolved = link_decoded
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('.mkv') >= 0 and not link_decoded.startswith('magnet:?xt=') == True and not link_decoded.find('.torrent') >= 0:
resolved = link_decoded
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('.wmv') >= 0 and not link_decoded.startswith('magnet:?xt=') == True and not link_decoded.find('.torrent') >= 0:
resolved = link_decoded
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('.wma') >= 0 and not link_decoded.startswith('magnet:?xt=') == True and not link_decoded.find('.torrent') >= 0:
resolved = link_decoded
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('.avi') >= 0 and not link_decoded.startswith('magnet:?xt=') == True and not link_decoded.find('.torrent') >= 0:
resolved = link_decoded
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('.mp3') >= 0 and not link_decoded.startswith('magnet:?xt=') == True and not link_decoded.find('.torrent') >= 0:
resolved = link_decoded
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('.ac3') >= 0 and not link_decoded.startswith('magnet:?xt=') == True and not link_decoded.find('.torrent') >= 0:
resolved = link_decoded
elif not link_decoded.startswith("plugin://plugin") and link_decoded.find('.rmvb') >= 0 and not link_decoded.startswith('magnet:?xt=') == True and not link_decoded.find('.torrent') >= 0:
resolved = link_decoded
elif not link_decoded.startswith("plugin://plugin"):
resolved = link_decoded
elif link_decoded.startswith("plugin://plugin"):
resolved = link_decoded
return resolved
except:
resolved = ''
return resolved
#pass
#notify('[COLOR red]Não foi possivel resolver um link![/COLOR]')
def getFavorites():
try:
try:
items = json.loads(open(favorites).read())
except:
items = ''
total = len(items)
if int(total) > 0:
for i in items:
name = i[0]
url = i[1]
try:
urldecode = base64.b64decode(base64.b16decode(url))
except:
urldecode = url
try:
url2 = urldecode.decode('utf-8')
except:
url2 = urldecode
mode = i[2]
subtitle = i[3]
try:
subtitledecode = base64.b64decode(base64.b16decode(subtitle))
except:
subtitledecode = subtitle
try:
sub2 = subtitledecode.decode('utf-8')
except:
sub2 = subtitledecode
iconimage = i[4]
try:
fanArt = i[5]
if fanArt == None:
raise
except:
if addon.getSetting('use_thumb') == "true":
fanArt = iconimage
else:
fanArt = fanart
description = i[6]
if mode == 0:
try:
#addLink(name.encode('utf-8', 'ignore'),url2,sub2,iconimage,fanArt,description.encode('utf-8'),'','','','','','','','','','','','','','','','')
addLink(name.encode('utf-8', 'ignore'),url2,sub2,iconimage,fanArt,description.encode('utf-8'),'','','','','','','','','','','','','','','','')
except:
pass
elif mode == 11 or mode == 16 or mode == 17 or mode == 18:
try:
addDir2(str(name).encode('utf-8', 'ignore'),url2,mode,sub2,iconimage,fanArt,description.encode('utf-8'),'','','','','','','','','','','','','','','','',False)
except:
pass
elif mode > 0 and mode < 7:
try:
addDir(name.encode('utf-8', 'ignore'),url2,mode,iconimage,fanArt,description.encode('utf-8'),'','','','','','','','','','','','','','','','')
except:
pass
else:
try:
addDir2(name.encode('utf-8', 'ignore'),url2,mode,sub2,iconimage,fanArt,description.encode('utf-8'),'','','','','','','','','','','','','','','','')
except:
pass
xbmcplugin.setContent(addon_handle, 'movies')
xbmcplugin.endOfDirectory(addon_handle)
else:
xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]','Nada Adicionado nos Favoritos')
except:
pass
def addFavorite(name,url,fav_mode,subtitle,iconimage,fanart,description):
favList = []
if os.path.exists(favorites)==False:
addonID = xbmcaddon.Addon().getAddonInfo('id')
addon_data_path = xbmcvfs.translatePath(os.path.join('special://home/userdata/addon_data', addonID))
if os.path.exists(addon_data_path)==False:
os.mkdir(addon_data_path)
xbmc.sleep(7)
favList.append((name,url,fav_mode,subtitle,iconimage,fanart,description))
a = open(favorites, "w")
a.write(json.dumps(favList))
a.close()
notify('Adicionado aos Favoritos do '+__addonname__)
#xbmc.executebuiltin("XBMC.Container.Refresh")
else:
a = open(favorites).read()
data = json.loads(a)
data.append((name,url,fav_mode,subtitle,iconimage,fanart,description))
b = open(favorites, "w")
b.write(json.dumps(data))
b.close()
notify('Adicionado aos Favoritos do '+__addonname__)
#xbmc.executebuiltin("XBMC.Container.Refresh")
def rmFavorite(name):
data = json.loads(open(favorites).read())
for index in range(len(data)):
if data[index][0]==name:
del data[index]
b = open(favorites, "w")
b.write(json.dumps(data))
b.close()
break
notify('Removido dos Favoritos do '+__addonname__)
#xbmc.executebuiltin("XBMC.Container.Refresh")
def addDir(name,url,mode,iconimage,fanart,description,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,folder=True):
if mode == 1:
if url > '':
#u=sys.argv[0]+"?url="+urllib.quote_plus(base64.b64encode(url))+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
#u=sys.argv[0]+"?url="+urllib.quote_plus(codecs.encode(base64.b32encode(base64.b16encode(url)), '\x72\x6f\x74\x31\x33'))+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
#u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
#u=sys.argv[0]+"?url="+urllib.quote_plus(base64.b32encode(url.encode('utf-8')))+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
#u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
u=sys.argv[0]+"?url="+urllib.quote_plus(base64.b16encode(base64.b64encode(url.encode('utf-8'))))+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
else:
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(5)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
else:
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
li=xbmcgui.ListItem(name)
if folder:
li.setArt({"icon": "DefaultFolder.png", "thumb": iconimage})
else:
li.setArt({"icon": "DefaultVideo.png", "thumb": iconimage})
if date == '':
date = None
else:
description += '\n\nDate: %s' %date
li.setInfo('video', { 'title': name, 'plot': description })
try:
li.setInfo('video', { 'genre': str(genre) })
except:
pass
try:
li.setInfo('video', { 'dateadded': str(date) })
except:
pass
try:
li.setInfo('video', { 'credits': str(credits) })
except:
pass
try:
li.setInfo('video', { 'year': int(year) })
except:
pass
try:
li.setInfo('video', { 'year': int(year) })
except:
pass
try:
li.setInfo('video', { 'director': str(director) })
except:
pass
try:
li.setInfo('video', { 'writer': str(writer) })
except:
pass
try:
li.setInfo('video', { 'duration': int(duration) })
except:
pass
try:
li.setInfo('video', { 'premiered': str(premiered) })
except:
pass
try:
li.setInfo('video', { 'studio': str(studio) })
except:
pass
try:
li.setInfo('video', { 'mpaa': str(rate) })
except:
pass
try:
li.setInfo('video', { 'originaltitle': str(originaltitle) })
except:
pass
try:
li.setInfo('video', { 'country': str(country) })
except:
pass
try:
li.setInfo('video', { 'rating': float(rating) })
except:
pass
try:
li.setInfo('video', { 'userrating': int(userrating) })
except:
pass
try:
li.setInfo('video', { 'votes': str(votes) })
except:
pass
try:
li.setRating("imdb", float(rating), int(votes), True)
except:
pass
try:
li.setInfo('video', { 'aired': str(aired) })
except:
pass
if fanart > '':
li.setProperty('fanart_image', fanart)
else:
li.setProperty('fanart_image', ''+home+'/fanart.jpg')
try:
name_decode = name.decode('utf-8')
except:
name_decode = name
try:
name_fav = json.dumps(name_decode)
except:
name_fav = name_decode
try:
contextMenu = []
if favoritos == 'true' and mode !=4 and mode !=7 and mode !=8 and mode !=9 and mode !=10 and mode !=12 and mode !=15:
if name_fav in FAV:
contextMenu.append(('Remover dos Favoritos do '+__addonname__,'RunPlugin(%s?mode=14&name=%s)'%(sys.argv[0], urllib.quote_plus(name))))
else:
fav_params = ('%s?mode=13&name=%s&url=%s&subtitle=%s&iconimage=%s&fanart=%s&description=%s&fav_mode=%s'%(sys.argv[0], urllib.quote_plus(name), urllib.quote_plus(base64.b16encode(base64.b64encode(url.encode('utf-8')))), '', urllib.quote_plus(iconimage), urllib.quote_plus(fanart), urllib.quote_plus(description), str(mode)))
contextMenu.append(('Adicionar aos Favoritos do '+__addonname__,'RunPlugin(%s)' %fav_params))
contextMenu.append(('Informação', 'RunPlugin(%s?mode=19&name=%s&description=%s)' % (sys.argv[0], urllib.quote_plus(name), urllib.quote_plus(description))))
li.addContextMenuItems(contextMenu)
except:
pass
xbmcplugin.addDirectoryItem(handle=addon_handle,url=u,listitem=li, isFolder=folder)
def addDir2(name,url,mode,subtitle,iconimage,fanart,description,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,folder=True):
if mode == 1:
if url > '':
u=sys.argv[0]+"?url="+urllib.quote_plus(base64.b16encode(base64.b64encode(url.encode('utf-8'))))+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
else:
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(5)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)
else:
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&fanart="+urllib.quote_plus(fanart)+"&iconimage="+urllib.quote_plus(iconimage)+"&subtitle="+urllib.quote_plus(subtitle)+"&description="+urllib.quote_plus(description)
li=xbmcgui.ListItem(name)
if folder:
li.setArt({"icon": "DefaultFolder.png", "thumb": iconimage})
else:
li.setArt({"icon": "DefaultVideo.png", "thumb": iconimage})
if date == '':
date = None
else:
description += '\n\nDate: %s' %date
li.setInfo('video', { 'title': name, 'plot': description })
try:
li.setInfo('video', { 'genre': str(genre) })
except:
pass
try:
li.setInfo('video', { 'dateadded': str(date) })
except:
pass
try:
li.setInfo('video', { 'credits': str(credits) })
except:
pass
try:
li.setInfo('video', { 'year': int(year) })
except:
pass
try:
li.setInfo('video', { 'year': int(year) })
except:
pass
try:
li.setInfo('video', { 'director': str(director) })
except:
pass
try:
li.setInfo('video', { 'writer': str(writer) })
except:
pass
try:
li.setInfo('video', { 'duration': int(duration) })
except:
pass
try:
li.setInfo('video', { 'premiered': str(premiered) })
except:
pass
try:
li.setInfo('video', { 'studio': str(studio) })
except:
pass
try:
li.setInfo('video', { 'mpaa': str(rate) })
except:
pass
try:
li.setInfo('video', { 'originaltitle': str(originaltitle) })
except:
pass
try:
li.setInfo('video', { 'country': str(country) })
except:
pass
try:
li.setInfo('video', { 'rating': float(rating) })
except:
pass
try:
li.setInfo('video', { 'userrating': int(userrating) })
except:
pass
try:
li.setInfo('video', { 'votes': str(votes) })
except:
pass
try:
li.setRating("imdb", float(rating), int(votes), True)
except:
pass
try:
li.setInfo('video', { 'aired': str(aired) })
except:
pass
if fanart > '':
li.setProperty('fanart_image', fanart)
else:
li.setProperty('fanart_image', ''+home+'/fanart.jpg')
try:
name_decode = name.decode('utf-8')
except:
name_decode = name
try:
name_fav = json.dumps(name_decode)
except:
name_fav = name_decode
try:
contextMenu = []
if favoritos == 'true' and mode !=4 and mode !=7 and mode !=8 and mode !=9 and mode !=10 and mode !=12 and mode !=15:
if name_fav in FAV:
contextMenu.append(('Remover dos Favoritos do '+__addonname__,'RunPlugin(%s?mode=14&name=%s)'%(sys.argv[0], urllib.quote_plus(name))))
else:
fav_params = ('%s?mode=13&name=%s&url=%s&subtitle=%s&iconimage=%s&fanart=%s&description=%s&fav_mode=%s'%(sys.argv[0], urllib.quote_plus(name), urllib.quote_plus(base64.b16encode(base64.b64encode(url.encode('utf-8')))), urllib.quote_plus(base64.b16encode(base64.b64encode(subtitle.encode('utf-8')))), urllib.quote_plus(iconimage), urllib.quote_plus(fanart), urllib.quote_plus(description), str(mode)))
contextMenu.append(('Adicionar aos Favoritos do '+__addonname__,'RunPlugin(%s)' %fav_params))
contextMenu.append(('Informação', 'RunPlugin(%s?mode=19&name=%s&description=%s)' % (sys.argv[0], urllib.quote_plus(name), urllib.quote_plus(description))))
li.addContextMenuItems(contextMenu)
except:
pass
xbmcplugin.addDirectoryItem(handle=addon_handle,url=u,listitem=li, isFolder=folder)
def addLink(name,url,subtitle,iconimage,fanart,description,genre,date,credits,year,director,writer,duration,premiered,studio,rate,originaltitle,country,rating,userrating,votes,aired,folder=False):
if date == '':
date = None
else:
description += '\n\nDate: %s' %date
if iconimage > '':
thumbnail = iconimage
else:
thumbnail = 'DefaultVideo.png'
li=xbmcgui.ListItem(name)
li.setArt({"icon": "DefaultVideo.png", "thumb": thumbnail})
if url.startswith("plugin://plugin.video.f4mTester"):
li.setProperty('IsPlayable', 'false')
else:
li.setProperty('IsPlayable', 'true')
if fanart > '':
li.setProperty('fanart_image', fanart)
else:
li.setProperty('fanart_image', ''+home+'/fanart.jpg')
try:
name_fav = json.dumps(name)
except:
name_fav = name
name2_fav = name
desc_fav = description
li.setInfo('video', { 'plot': description })
try:
li.setInfo('video', { 'genre': str(genre) })
except:
pass
try:
li.setInfo('video', { 'dateadded': str(date) })
except:
pass
try:
li.setInfo('video', { 'credits': str(credits) })
except:
pass
try:
li.setInfo('video', { 'year': int(year) })
except:
pass
try:
li.setInfo('video', { 'year': int(year) })
except:
pass
try:
li.setInfo('video', { 'director': str(director) })
except:
pass
try:
li.setInfo('video', { 'writer': str(writer) })
except:
pass
try:
li.setInfo('video', { 'duration': int(duration) })
except:
pass
try:
li.setInfo('video', { 'premiered': str(premiered) })
except:
pass
try:
li.setInfo('video', { 'studio': str(studio) })
except:
pass
try:
li.setInfo('video', { 'mpaa': str(rate) })
except:
pass
try:
li.setInfo('video', { 'originaltitle': str(originaltitle) })
except:
pass
try:
li.setInfo('video', { 'country': str(country) })
except:
pass
try:
li.setInfo('video', { 'rating': float(rating) })
except:
pass
try:
li.setInfo('video', { 'userrating': int(userrating) })
except:
pass
try:
li.setInfo('video', { 'votes': str(votes) })
except:
pass
try:
li.setRating("imdb", float(rating), int(votes), True)
except:
pass
try:
li.setInfo('video', { 'aired': str(aired) })
except:
pass
if subtitle > '':
li.setSubtitles([subtitle])
try:
name_decode = name.decode('utf-8')
except:
name_decode = name
try:
name_fav = json.dumps(name_decode)
except:
name_fav = name_decode
try:
contextMenu = []
if favoritos == 'true':
if name_fav in FAV:
contextMenu.append(('Remover dos Favoritos do '+__addonname__,'RunPlugin(%s?mode=14&name=%s)'%(sys.argv[0], urllib.quote_plus(name))))
else:
fav_params = ('%s?mode=13&name=%s&url=%s&subtitle=%s&iconimage=%s&fanart=%s&description=%s&fav_mode=0'%(sys.argv[0], urllib.quote_plus(name), urllib.quote_plus(base64.b16encode(base64.b64encode(url.encode('utf-8')))), urllib.quote_plus(base64.b16encode(base64.b64encode(subtitle.encode('utf-8')))), urllib.quote_plus(iconimage), urllib.quote_plus(fanart), urllib.quote_plus(description)))
contextMenu.append(('Adicionar aos Favoritos do '+__addonname__,'RunPlugin(%s)' %fav_params))
contextMenu.append(('Informação', 'RunPlugin(%s?mode=19&name=%s&description=%s)' % (sys.argv[0], urllib.quote_plus(name), urllib.quote_plus(description))))
li.addContextMenuItems(contextMenu)
except:
pass
xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=folder)
def parental_password():
try:
addonID = xbmcaddon.Addon().getAddonInfo('id')
addon_data_path = xbmcvfs.translatePath(os.path.join('special://home/userdata/addon_data', addonID))
if os.path.exists(addon_data_path)==False:
os.mkdir(addon_data_path)
xbmc.sleep(7)
#Path = xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo('profile')).decode("utf-8")
#arquivo = os.path.join(Path, "password.txt")
arquivo = os.path.join(addon_data_path, "password.txt")
exists = os.path.isfile(arquivo)
if exists == False:
password = '0069'
p_encoded = base64.b64encode(password.encode()).decode('utf-8')
p_file = open(arquivo,'w')
p_file.write(p_encoded)
p_file.close()
except:
pass
def check_addon():
try:
check_file = xbmcvfs.translatePath(home+'/check.txt')
exists = os.path.isfile(check_file)
check_addon = addon.getSetting('check_addon')
#check_file = 'check.txt'
if exists == True:
#print('existe')
fcheck = open(check_file,'r+')
elementum = addon.getSetting('elementum')
youtube = addon.getSetting('youtube')
if fcheck and fcheck.read() == '1' and check_addon == 'true':
#print('valor 1')
fcheck.close()
link = getRequest2('https://raw.githubusercontent.com/zoreu/zoreu.github.io/master/kodi/verificar_addons_matrix.txt','').replace('\n','').replace('\r','')
match = re.compile('addon_name="(.+?)".+?ddon_id="(.+?)".+?ir="(.+?)".+?rl_zip="(.+?)".+?escription="(.+?)"').findall(link)
for addon_name,addon_id,directory,url_zip,description in match:
if addon_id == 'plugin.video.elementum' and elementum == 'false':
pass
elif addon_id == 'script.module.six' and youtube == 'false':
pass
elif addon_id == 'plugin.video.youtube' and youtube == 'false':
pass
else:
existe = xbmcvfs.translatePath(directory)
#print('Path dir:'+existe)
if os.path.exists(existe)==False:
install_wizard(addon_name,addon_id,url_zip,directory,description)
if addon_id == 'plugin.video.elementum':
xbmcgui.Dialog().ok()
else:
pass
elif check_addon == 'true':
#print('nao existe')
fcheck = open(check_file,'w')
fcheck.write('1')
fcheck.close()
xbmcgui.Dialog().ok()
except:
pass
def install_wizard(name,addon_id,url,directory,description):
try:
import downloader
import extract
import ntpath
path = xbmcvfs.translatePath(os.path.join('special://','home/','addons', 'packages'))
filename = ntpath.basename(url)
dp = xbmcgui.DialogProgress()
dp.create("Install addons","Baixando "+name+", por favor aguarde....")
lib=os.path.join(path, filename)
try:
os.remove(lib)
except:
pass
downloader.download(url, lib, dp)
addonfolder = xbmcvfs.translatePath(os.path.join('special://','home/','addons'))
xbmc.sleep(100)
dp.update(0,"Instalando "+name+", Por Favor Espere")
try:
xbmc.executebuiltin("Extract("+lib+","+addonfolder+")")
except:
extract.all(lib,addonfolder,dp)
#############
#time.sleep(2)
xbmc.sleep(100)
xbmc.executebuiltin("XBMC.UpdateLocalAddons()")
notify(name+' Instalado com Sucesso!')
import database
database.enable_addon(addon_id)
if addon_id == 'plugin.video.elementum':
database.enable_addon('repository.elementum')
#xbmc.executebuiltin("XBMC.Container.Refresh()")
xbmc.executebuiltin("XBMC.Container.Update()")
#xbmcgui.Dialog().ok('[B][COLOR white]AVISO[/COLOR][/B]',''+name+' instalado, feche e abra o Kodi novamente')
except:
notify('Erro ao baixar o complemento')
def time_convert(timestamp):
try:
if timestamp > '':
dt_object = datetime.fromtimestamp(int(timestamp))
time_br = dt_object.strftime('%d/%m/%Y às %H:%M:%S')
return str(time_br)
else:
valor = ''
return valor
except:
valor = ''
return valor
def info_vip():
username_vip = addon.getSetting('username')
password_vip = addon.getSetting('password')
if username_vip > '' and password_vip > '':
try:
url_info = url_server_vip.replace('/get.php', '')+'/player_api.php?username=%s&password=%s'%(username_vip,password_vip)
dados_vip = getRequest2(url_info, '')
filtrar_info = re.compile('"status":"(.+?)".+?"exp_date":"(.+?)".+?"is_trial":"(.+?)".+?"created_at":"(.+?)".+?max_connections":"(.+?)"', re.MULTILINE|re.DOTALL|re.IGNORECASE).findall(dados_vip)
if filtrar_info !=[]:
status = str(filtrar_info[0][0])
exp_date = str(filtrar_info[0][1])
trial = str(filtrar_info[0][2])
created = str(filtrar_info[0][3])
max_connection = str(filtrar_info[0][4])
#status do usuario
if status > '' and status == 'Active':
status_result = 'Ativo'
else:
status_result = 'Expirado'
#Validade do vip
if exp_date > '':
expires = time_convert(str(exp_date))
else:
expires = ''
#usuario de teste
if trial > '' and trial == '0':
vip_trial = 'Não'
else:
vip_trial = 'Sim'
#criado
if created > '':
created_time = time_convert(str(created))
else:
created_time = ''
#limite de conexoes
if max_connection > '':
limite_conexao = max_connection
else:
limite_conexao = ''
try:
xbmcaddon.Addon().setSetting("status_vip", status_result)
xbmcaddon.Addon().setSetting("created_at", created_time)
xbmcaddon.Addon().setSetting("exp_date", expires)
xbmcaddon.Addon().setSetting("is_trial", vip_trial)
xbmcaddon.Addon().setSetting("max_connection", limite_conexao)
except:
pass
except:
try:
xbmcaddon.Addon().setSetting("status_vip", '')
xbmcaddon.Addon().setSetting("created_at", '')
xbmcaddon.Addon().setSetting("exp_date", '')
xbmcaddon.Addon().setSetting("is_trial", '')
xbmcaddon.Addon().setSetting("max_connection", '')
except:
pass
def vip():
username_vip = addon.getSetting('username')
password_vip = addon.getSetting('password')
#tipo_servidor = addon.getSetting('servidor')
vip_menu = addon.getSetting('exibirvip')
saida_transmissao = addon.getSetting('saida')
if username_vip > '' and password_vip > '':
info_vip()
if int(saida_transmissao) == 1:
saida_canal = 'm3u8'
else:
saida_canal = 'ts'
if vip_menu == 'true':
if username_vip > '' and password_vip > '':
url = ''+url_server_vip+'?username=%s&password=%s&type=m3u_plus&output=%s'%(username_vip,password_vip,saida_canal)
#addDir(name,url,mode,iconimage,fanart,description)
addDir(titulo_vip,url,1,thumbnail_vip,fanart_vip,vip_descricao,'','','','','','','','','','','','','','','','')
else:
#if tipo_servidor=='Desativado':
#addDir(name,url,mode,iconimage,fanart,description)
addDir(titulo_vip,'',9,thumbnail_vip,fanart_vip,vip_descricao,'','','','','','','','','','','','','','','','')
def Pesquisa():
vq = get_search_string(heading="Digite algo para pesquisar")
if ( not vq ): return False, 0
title = urllib.quote_plus(vq)
addDir('[COLOR white][B]PESQUISAR NOVAMENTE...[/B][/COLOR]','',7,thumb_pesquisar,fanart_pesquisar,desc_pesquisa,'','','','','','','','','','','','','','','','')
try:
getData(url_pesquisa+'?pesquisar='+title, '')
except:
pass
xbmcplugin.endOfDirectory(addon_handle)
def SetView(name):
if name == 'Wall':
try:
xbmc.executebuiltin('Container.SetViewMode(500)')
except:
pass
if name == 'List':
try:
xbmc.executebuiltin('Container.SetViewMode(50)')
except:
pass
if name == 'Poster':
try:
xbmc.executebuiltin('Container.SetViewMode(51)')
except:
pass
if name == 'Shift':
try:
xbmc.executebuiltin('Container.SetViewMode(53)')
except:
pass
if name == 'InfoWall':
try:
xbmc.executebuiltin('Container.SetViewMode(54)')
except:
pass
if name == 'WideList':
try:
xbmc.executebuiltin('Container.SetViewMode(55)')
except:
pass
if name == 'Fanart':
try:
xbmc.executebuiltin('Container.SetViewMode(502)')
except:
pass
def SKindex():
getData(url_principal, '')
xbmcplugin.endOfDirectory(addon_handle)
def get_params():
param=[]
paramstring=sys.argv[2]
if len(paramstring)>=2:
params=sys.argv[2]
cleanedparams=params.replace('?','')
if (params[len(params)-1]=='/'):
params=params[0:len(params)-2]
pairsofparams=cleanedparams.split('&')
param={}
for i in range(len(pairsofparams)):
splitparams={}
splitparams=pairsofparams[i].split('=')
if (len(splitparams))==2:
param[splitparams[0]]=splitparams[1]
return param
params=get_params()
url=None
name=None
mode=None
iconimage=None
fanart=None
description=None
subtitle=None
try:
url=urllib.unquote(params["url"])
#url=urllib.unquote_plus(params["url"]).decode('utf-8')
except:
pass
try:
#name=urllib.unquote(params["name"])
name=urllib.unquote_plus(params["name"])
except:
pass
try:
#iconimage=urllib.unquote(params["iconimage"])
iconimage=urllib.unquote_plus(params["iconimage"])
except:
pass
try:
mode=int(params["mode"])
except:
pass
try:
#fanart=urllib.unquote(params["fanart"])
fanart=urllib.unquote_plus(params["fanart"])
except:
pass
try:
#description=urllib.unquote(params["description"])
description=urllib.unquote_plus(params["description"])
except:
pass
try:
subtitle=urllib.unquote_plus(params["subtitle"])
except:
pass
try:
fav_mode=int(params["fav_mode"])
except:
pass
if mode==None:
xbmcplugin.setContent(addon_handle, 'movies')
check_addon()
parental_password()
SKindex()
SetView('List')
elif mode==1:
#url = base64.b16decode(base64.b32decode(codecs.decode(url, '\x72\x6f\x74\x31\x33')))
#url = base64.b64decode(url)
url = base64.b64decode(base64.b16decode(url))
try:
url = url.decode('utf-8')
except:
pass
getData(url, fanart)
xbmcplugin.endOfDirectory(addon_handle)
#elif mode==2:
# getChannelItems(name,url,fanart)
# xbmcplugin.endOfDirectory(addon_handle)
#elif mode==3:
# getSubChannelItems(name,url,fanart)
# xbmcplugin.endOfDirectory(addon_handle)
#Configurações
elif mode==4:
xbmcaddon.Addon().openSettings()
xbmcgui.Dialog().ok()
xbmc.executebuiltin("XBMC.Container.Refresh()")
#Link Vazio
elif mode==5:
xbmc.executebuiltin("XBMC.Container.Refresh()")
elif mode==6:
ytbmode = addon.getSetting('ytbmode')
if int(ytbmode) == 0:
pluginquerybyJSON(url)
elif int(ytbmode) == 1:
getPlaylistLinksYoutube(url)
else:
youtube(url)
xbmcplugin.endOfDirectory(addon_handle)
#elif mode==7:
# Pesquisa()
elif mode==9:
xbmcgui.Dialog().ok(titulo_vip, vip_dialogo)
xbmcaddon.Addon().openSettings()
xbmcgui.Dialog().ok()
xbmc.executebuiltin("XBMC.Container.Refresh()")
elif mode==10:
adult(name, url, iconimage, description, subtitle)
xbmcplugin.endOfDirectory(addon_handle)
elif mode==11:
playlist(name, url, iconimage, description, subtitle)
xbmcplugin.endOfDirectory(addon_handle)
#elif mode==12:
# CheckUpdate(True)
# xbmc.executebuiltin("XBMC.Container.Refresh()")
elif mode==13:
try:
name = name.split('\\ ')[1]
except:
pass
try:
name = name.split(' - ')[0]
except:
pass
addFavorite(name,url,fav_mode,subtitle,iconimage,fanart,description)
elif mode==14:
try:
name = name.split('\\ ')[1]
except:
pass
try:
name = name.split(' - ')[0]
except:
pass
rmFavorite(name)
elif mode==15:
#xbmcplugin.setContent(addon_handle, 'movies')
getFavorites()
#xbmcplugin.endOfDirectory(addon_handle)
elif mode==16:
individual_player(name, url, iconimage, description, subtitle)
#xbmcplugin.endOfDirectory(addon_handle)
elif mode==17:
youtube_live_player(name, url, iconimage, description, subtitle)
#xbmcplugin.endOfDirectory(addon_handle)
elif mode==18:
m3u8_player(name, url, iconimage, description, subtitle)
#xbmcplugin.endOfDirectory(addon_handle)
elif mode==19:
xbmcgui.Dialog().textviewer('Informação: '+name, description)