Из python2 в python3
Использую Kodi19 Нужно переделать скрипт из python2 в python3
import xbmcaddon,os,requests,xbmc,xbmcgui,urllib,re,xbmcplugin
import urllib.request
def CATEGORIES():
addDir3('Live Tv','https://dl.dropbox.com/s/xzyoyz7aewc13q8/Hits2.txt',3,'','')
addDir3('Movies','https://dl.dropbox.com/s/xzyoyz7aewc13q8/Hits2.txt',4,'','')
# addDir3 = addDir3.decode('utf-8')
def channel():
r = requests.get('https://dl.dropbox.com/s/xzyoyz7aewc13q8/Hits2.txt')
match = re.compile('name= (.+?) url= "(.+?)" logo= "(.+?)"').findall(r.content)
for name,link, logo in match:
addLink(name,link,logo,'','')
def Moviess():
r = requests.get('https://dl.dropbox.com/s/xzyoyz7aewc13q8/Hits2.txt')
match = re.compile('name= (.+?) url= "(.+?)" logo= "(.+?)"').findall(r.content)
for name,link, logo in match:
addLink(name,link,logo,'','')
def addLink(name,url,image,urlType,fanart):
ok=True
liz=xbmcgui.ListItem(name)
liz.setInfo( type="Video", infoLabels={ "Title": name } )
liz.setProperty('IsPlayable','true')
liz.setProperty('fanart_image',fanart)
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=url,listitem=liz)
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
#################################################################################################################
# NEED BELOW CHANGED
def addDir(name,url,mode):
u=sys.argv[0]+"?url="+urllib.parse.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.parse.quote_plus(name)
ok=True
liz=xbmcgui.ListItem(name)
liz.setInfo( type="Video", infoLabels={ "Title": name } )
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
return ok
def addDir2(name,url,mode):
u=sys.argv[0]+"?url="+urllib.parse.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.parse.quote_plus(name)
ok=True
liz=xbmcgui.ListItem(name)
liz.setInfo( type="Video", infoLabels={ "Title": name } )
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=False)
return ok
###############################################################################################################
def addDir3(name,url,mode,fanart,description):
u=sys.argv[0]+"?url="+urllib.parse.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.parse.quote_plus(name)+"&fanart="+urllib.parse.quote_plus(fanart)+"&description="+urllib.parse.quote_plus(description)
ok=True
liz=xbmcgui.ListItem(name)
liz.setInfo( type="Video", infoLabels={ "Title": name, "Plot": description } )
liz.setProperty( "Fanart_Image", fanart )
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
return ok
def setView(content, viewType):
# set content type so library shows more views and info
if content:
xbmcplugin.setContent(int(sys.argv[1]), content)
if ADDON.getSetting('auto-view')=='true':
xbmc.executebuiltin("Container.SetViewMode(%s)" % viewType )
params=get_params()
url=None
name=None
mode=None
iconimage=None
fanart=None
description=None
try:
url=urllib.parse.unquote_plus(params["url"])
except:
pass
try:
name=urllib.parse.unquote_plus(params["name"])
except:
pass
try:
iconimage=urllib.parse.unquote_plus(params["iconimage"])
except:
pass
try:
mode=int(params["mode"])
except:
pass
try:
fanart=urllib.parse.unquote_plus(params["fanart"])
except:
pass
try:
description=urllib.parse.unquote_plus(params["description"])
except:
pass
print ("Mode: "+str(mode))
print ("URL: "+str(url))
print ("Name: "+str(name))
if mode==None or url==None or len(url)<1:
print ("")
CATEGORIES()
elif mode==1:
OPEN_URL(url)
elif mode==3:
channel()
elif mode==4:
Moviess()
xbmcplugin.endOfDirectory(int(sys.argv[1]))
Выдает ошибку
Error Contents: cannot use a string pattern on a bytes-like object TypeError: cannot use a string pattern on a bytes-like object
Ответы (1 шт):
Автор решения: beats
→ Ссылка
Есть ответ! Нужно добавить b
b'name= (.+?) url= "(.+?)" logo= "(.+?)"').findall(r.content)