Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- #Библиотеки, които използват python и Kodi в тази приставка
- import re
- import sys
- import os
- import urllib
- import urllib2
- import xbmc
- import xbmcgui
- import xbmcplugin
- import xbmcaddon
- #Място за дефиниране на константи, които ще се използват няколкократно из отделните модули
- __addon_id__= 'plugin.video.sportal'
- __Addon = xbmcaddon.Addon(__addon_id__)
- searchicon = xbmc.translatePath(__Addon.getAddonInfo('path') + "/resources/search.png")
- MUA = 'Mozilla/5.0 (Linux; Android 5.0.2; bg-bg; SAMSUNG GT-I9195 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' #За симулиране на заявка от мобилно устройство
- UA = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0' #За симулиране на заявка от компютърен браузър
- #Меню с директории в приставката
- def CATEGORIES():
- addDir('Търси в Спортал','https://www.sportal.bg/search.php=',2,searchicon)
- addDir('БГ Футбол','https://www.sportal.bg/video.php?category=1&page=1&order=DESC',1,'DefaultVideo.png')
- addDir('Всичко от Футбол','https://www.sportal.bg/video.php?category=169&page=1&order=DESC',1,'DefaultVideo.png')
- #addDir('','',1,'')
- #Разлистване видеата на първата подадена страница
- def INDEXPAGES(url):
- req = urllib2.Request(url)
- req.add_header('User-Agent', UA)
- response = urllib2.urlopen(req)
- print 'request page url:' + url
- data=response.read()
- response.close()
- #Начало на обхождането
- br = 0 #Брояч на видеата в страницата
- match = re.compile('video=(.+?)\">(.+?)</a>').findall(data)
- for vid,title in match:
- thumbnail = 'https://img4.sportal.bg/uploads/video_images/2019_10/big_player/00' + vid + '.jpg'
- #print thumbnail
- #print title
- addLink(title,vid,3,thumbnail)
- br = br + 1 #добавяме и това видео към общия брояч
- #Край на обхождането
- #Ако резултатите са на повече от една страници
- print 'Items counter: ' + str(br)
- if br == 24: #тогава имаме следваща страница и конструираме нейния адрес
- getpage=re.compile('(.+?)&page=(.+?)').findall(url)
- for baseurl,page in getpage:
- newpage = int(page)+1
- url = baseurl + '&page=' + str(newpage)
- print 'URL OF THE NEXT PAGE IS' + url
- thumbnail='DefaultFolder.png'
- addDir('следваща страница>>',url,1,thumbnail)
- #Търсачка
- def SEARCH(url):
- keyb = xbmc.Keyboard('', 'Търсачка')
- keyb.doModal()
- searchText = ''
- if (keyb.isConfirmed()):
- searchText = urllib.quote_plus(keyb.getText())
- searchText=searchText.replace(' ','+')
- searchurl = url + searchText + '&page=1'
- searchurl = searchurl.encode('utf-8')
- print 'SEARCHING:' + searchurl
- INDEXPAGES(searchurl)
- else:
- addDir('Върнете се назад в главното меню за да продължите','','',"DefaultFolderBack.png")
- #Зареждане на видео
- def PLAY(name,url,iconimage):
- url = 'https://www.sportal.bg/video.php?video=' + url #Конструираме адреса за достъп до видеото
- li = xbmcgui.ListItem(iconImage=iconimage, thumbnailImage=iconimage, path=url)
- li.setInfo('video', { 'title': name })
- try:
- xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path = url))
- except:
- xbmc.executebuiltin("Notification('Грешка','Видеото липсва на сървъра!')")
- #Модул за добавяне на отделно заглавие и неговите атрибути към съдържанието на показваната в Kodi директория - НЯМА НУЖДА ДА ПРОМЕНЯТЕ НИЩО ТУК
- def addLink(name,url,mode,iconimage):
- u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)
- ok=True
- liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png", thumbnailImage=iconimage)
- liz.setInfo( type="Video", infoLabels={ "Title": name } )
- liz.setProperty("IsPlayable" , "true")
- ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=False)
- return ok
- #Модул за добавяне на отделна директория и нейните атрибути към съдържанието на показваната в Kodi директория - НЯМА НУЖДА ДА ПРОМЕНЯТЕ НИЩО ТУК
- def addDir(name,url,mode,iconimage):
- u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)
- ok=True
- liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png", thumbnailImage=iconimage)
- liz.setInfo( type="Video", infoLabels={ "Title": name } )
- ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
- return ok
- #НЯМА НУЖДА ДА ПРОМЕНЯТЕ НИЩО ТУК
- 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
- iconimage=None
- mode=None
- try:
- url=urllib.unquote_plus(params["url"])
- except:
- pass
- try:
- name=urllib.unquote_plus(params["name"])
- except:
- pass
- try:
- name=urllib.unquote_plus(params["iconimage"])
- except:
- pass
- try:
- mode=int(params["mode"])
- except:
- pass
- #Списък на отделните подпрограми/модули в тази приставка - трябва напълно да отговаря на кода отгоре
- if mode==None or url==None or len(url)<1:
- print ""
- CATEGORIES()
- elif mode==1:
- print ""+url
- INDEXPAGES(url)
- elif mode==2:
- print ""+url
- SEARCH(url)
- elif mode==3:
- print ""+url
- PLAY(name,url,iconimage)
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement