# -*- coding: utf-8 -*-
'''
Genesis Add-on
Copyright (C) 2015 lambda
-Mofidied by The Crew
-Copyright (C) 2019 lambda
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
'''
import xbmc, xbmcaddon, xbmcgui, xbmcplugin,os,base64,sys,xbmcvfs,time
import base64,hashlib,os,random,re,requests,shutil,string,sys,urllib,urllib2,json,resolveurl,ssl,zipfile,urlparse
AddonTitle = "[COLOR yellow]The Crew[/COLOR]"
dialog = xbmcgui.Dialog()
addon_id = 'plugin.video.thecrew'
fanart = xbmc.translatePath(os.path.join('special://home/addons/' + addon_id , 'fanart.jpg'))
icon = xbmc.translatePath(os.path.join('special://home/addons/' + addon_id, 'icon.png'))
s = requests.session()
User_Agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
def TextBoxes(announce):
class TextBox():
WINDOW=10147
CONTROL_LABEL=1
CONTROL_TEXTBOX=5
def __init__(self,*args,**kwargs):
xbmc.executebuiltin("ActivateWindow(%d)" % (self.WINDOW, )) # activate the text viewer window
self.win=xbmcgui.Window(self.WINDOW) # get window
xbmc.sleep(500) # give window time to initialize
self.setControls()
def setControls(self):
self.win.getControl(self.CONTROL_LABEL).setLabel('The Crew') # set heading
try: f=open(announce); text=f.read()
except: text=announce
self.win.getControl(self.CONTROL_TEXTBOX).setText(str(text))
return
TextBox()
while xbmc.getCondVisibility('Window.IsVisible(10147)'):
time.sleep(.5)
def GET_KODI_VERSION():
xbmc_version=xbmc.getInfoLabel("System.BuildVersion")
version=float(xbmc_version[:4])
if version >= 11.0 and version <= 11.9:
codename = 'Eden'
elif version >= 12.0 and version <= 12.9:
codename = 'Frodo'
elif version >= 13.0 and version <= 13.9:
codename = 'Gotham'
elif version >= 14.0 and version <= 14.9:
codename = 'Helix'
elif version >= 15.0 and version <= 15.9:
codename = 'Isengard'
elif version >= 16.0 and version <= 16.9:
codename = 'Jarvis'
elif version >= 17.0 and version <= 17.9:
codename = 'Krypton'
else: codename = "Decline"
return codename
def GET_M3U_LIST(url):
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36')
response = urllib2.urlopen(req)
link=response.read()
response.close()
link=link.replace('\n','').replace('\r','').replace('','x').replace('','x').replace('','https://www.youtube.com/watch?v=').replace('','')#.replace('>','>x')
url = re.compile('(.+?)').findall(link)[0]
response = open_url(url)
response = response.replace('#AAASTREAM:','#A:')
response = response.replace('#EXTINF:','#A:')
matches=re.compile('^#A:-?[0-9]*(.*?),(.*?)\n(.*?)$',re.I+re.M+re.U+re.S).findall(response)
li = []
for params, display_name, url in matches:
item_data = {"params": params, "display_name": display_name, "url": url}
li.append(item_data)
m3u_list = []
for channel in li:
item_data = {"display_name": channel["display_name"], "url": channel["url"]}
matches=re.compile(' (.+?)="(.+?)"',re.I+re.M+re.U+re.S).findall(channel["params"])
for field, value in matches:
item_data[field.strip().lower().replace('-', '_')] = value.strip()
m3u_list.append(item_data)
for channel in sorted(m3u_list):
name = GetEncodeString(channel["display_name"])
url = GetEncodeString(channel["url"])
url = url.replace('\\n','').replace('\n','').replace('\\r','').replace('\\t','').replace('\r','').replace('\t','').replace(' ','').replace('m3u8','m3u8')
addLink('[COLOR pink]'+name.title()+'[/COLOR]',url,996,icon,fanart)
def GetEncodeString(str):
try:
import chardet
str = str.decode(chardet.detect(str)["encoding"]).encode("utf-8")
except:
try:
str = str.encode("utf-8")
except:
pass
return str
def CLEANUP(text):
text = str(text)
text = text.replace('\\r','')
text = text.replace('\\n','')
text = text.replace('\\t','')
text = text.replace('\\','')
text = text.replace(' ','\n')
text = text.replace('
','')
text = text.replace(''',"'")
text = text.replace('"','"')
text = text.replace('’',"'")
text = text.replace('&',"&")
text = text.replace(''',"'")
text = text.replace('–',"&")
text = text.replace('’',"'")
text = text.replace('&',"&")
text = text.lstrip(' ')
text = text.lstrip(' ')
return text
def _get_keyboard( default="", heading="", hidden=False ):
""" shows a keyboard and returns a value """
keyboard = xbmc.Keyboard( default, heading, hidden )
keyboard.doModal()
if ( keyboard.isConfirmed() ):
return unicode( keyboard.getText(), "utf-8" )
return default
def open_url(url):
req = urllib2.Request(url)
if not "referer" in url.lower():
req.add_header('Referer', 'https://www.google.com/')
if not "user-agent" in url.lower():
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36')
response = urllib2.urlopen(req, timeout = 10)
link=response.read()
response.close()
return link
#TC 2/01/19 started
def addDir(name,url,mode,iconimage,fanartimage):
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&iconimage="+urllib.quote_plus(iconimage)+"&fanartimage="+urllib.quote_plus(fanartimage)
ok=True
liz=xbmcgui.ListItem(name, iconImage=iconimage, thumbnailImage=iconimage)
liz.setProperty( "fanart_Image", fanartimage )
liz.setProperty( "icon_Image", iconimage )
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
return ok