Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.55 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. #Библиотеки, които използват python и Kodi в тази приставка
  3. import re
  4. import sys
  5. import os
  6. import urllib
  7. import urllib2
  8. import xbmc
  9. import xbmcgui
  10. import xbmcplugin
  11. import xbmcaddon
  12.  
  13. #Място за дефиниране на константи, които ще се използват няколкократно из отделните модули
  14. __addon_id__= 'plugin.video.sportal'
  15. __Addon = xbmcaddon.Addon(__addon_id__)
  16. searchicon = xbmc.translatePath(__Addon.getAddonInfo('path') + "/resources/search.png")
  17.  
  18. 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' #За симулиране на заявка от мобилно устройство
  19. UA = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0' #За симулиране на заявка от  компютърен браузър
  20.  
  21.  
  22. #Меню с директории в приставката
  23. def CATEGORIES():
  24.         addDir('Търси в Спортал','https://www.sportal.bg/search.php=',2,searchicon)
  25.         addDir('БГ Футбол','https://www.sportal.bg/video.php?category=1&page=1&order=DESC',1,'DefaultVideo.png')
  26.         addDir('Всичко от Футбол','https://www.sportal.bg/video.php?category=169&page=1&order=DESC',1,'DefaultVideo.png')
  27.  
  28.         #addDir('','',1,'')
  29.  
  30.  
  31.  
  32.  
  33. #Разлистване видеата на първата подадена страница
  34. def INDEXPAGES(url):
  35.         req = urllib2.Request(url)
  36.         req.add_header('User-Agent', UA)
  37.         response = urllib2.urlopen(req)
  38.         print 'request page url:' + url
  39.         data=response.read()
  40.         response.close()
  41.  
  42.         #Начало на обхождането
  43.         br = 0 #Брояч на видеата в страницата
  44.         match = re.compile('video=(.+?)\">(.+?)</a>').findall(data)
  45.        
  46.  
  47.         for vid,title in match:
  48.             thumbnail = 'https://img4.sportal.bg/uploads/video_images/2019_10/big_player/00' + vid + '.jpg'
  49.             #print thumbnail
  50.             #print title
  51.             addLink(title,vid,3,thumbnail)
  52.             br = br + 1 #добавяме и това видео към общия брояч
  53.             #Край на обхождането
  54.        
  55.         #Ако резултатите са на повече от една страници
  56.         print 'Items counter: ' + str(br)
  57.         if br == 24: #тогава имаме следваща страница и конструираме нейния адрес
  58.             getpage=re.compile('(.+?)&page=(.+?)').findall(url)
  59.             for baseurl,page in getpage:
  60.                 newpage = int(page)+1
  61.                 url = baseurl + '&page=' + str(newpage)
  62.                 print 'URL OF THE NEXT PAGE IS' + url
  63.                 thumbnail='DefaultFolder.png'
  64.                 addDir('следваща страница>>',url,1,thumbnail)
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71. #Търсачка
  72. def SEARCH(url):
  73.         keyb = xbmc.Keyboard('', 'Търсачка')
  74.         keyb.doModal()
  75.         searchText = ''
  76.         if (keyb.isConfirmed()):
  77.             searchText = urllib.quote_plus(keyb.getText())
  78.             searchText=searchText.replace(' ','+')
  79.             searchurl = url + searchText + '&page=1'
  80.             searchurl = searchurl.encode('utf-8')
  81.             print 'SEARCHING:' + searchurl
  82.             INDEXPAGES(searchurl)
  83.         else:
  84.             addDir('Върнете се назад в главното меню за да продължите','','',"DefaultFolderBack.png")
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92. #Зареждане на видео
  93. def PLAY(name,url,iconimage):
  94.         url = 'https://www.sportal.bg/video.php?video=' + url #Конструираме адреса за достъп до видеото
  95.         li = xbmcgui.ListItem(iconImage=iconimage, thumbnailImage=iconimage, path=url)
  96.         li.setInfo('video', { 'title': name })
  97.         try:
  98.             xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path = url))
  99.         except:
  100.             xbmc.executebuiltin("Notification('Грешка','Видеото липсва на сървъра!')")
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107. #Модул за добавяне на отделно заглавие и неговите атрибути към съдържанието на показваната в Kodi директория - НЯМА НУЖДА ДА ПРОМЕНЯТЕ НИЩО ТУК
  108. def addLink(name,url,mode,iconimage):
  109.         u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)
  110.         ok=True
  111.         liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png", thumbnailImage=iconimage)
  112.         liz.setInfo( type="Video", infoLabels={ "Title": name } )
  113.         liz.setProperty("IsPlayable" , "true")
  114.         ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=False)
  115.         return ok
  116.  
  117. #Модул за добавяне на отделна директория и нейните атрибути към съдържанието на показваната в Kodi директория - НЯМА НУЖДА ДА ПРОМЕНЯТЕ НИЩО ТУК
  118. def addDir(name,url,mode,iconimage):
  119.         u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)
  120.         ok=True
  121.         liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png", thumbnailImage=iconimage)
  122.         liz.setInfo( type="Video", infoLabels={ "Title": name } )
  123.         ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
  124.         return ok
  125.  
  126.  
  127. #НЯМА НУЖДА ДА ПРОМЕНЯТЕ НИЩО ТУК
  128. def get_params():
  129.         param=[]
  130.         paramstring=sys.argv[2]
  131.         if len(paramstring)>=2:
  132.                 params=sys.argv[2]
  133.                 cleanedparams=params.replace('?','')
  134.                 if (params[len(params)-1]=='/'):
  135.                         params=params[0:len(params)-2]
  136.                 pairsofparams=cleanedparams.split('&')
  137.                 param={}
  138.                 for i in range(len(pairsofparams)):
  139.                         splitparams={}
  140.                         splitparams=pairsofparams[i].split('=')
  141.                         if (len(splitparams))==2:
  142.                                 param[splitparams[0]]=splitparams[1]
  143.                                
  144.         return param
  145.  
  146.  
  147.  
  148. params=get_params()
  149. url=None
  150. name=None
  151. iconimage=None
  152. mode=None
  153.  
  154. try:
  155.         url=urllib.unquote_plus(params["url"])
  156. except:
  157.         pass
  158. try:
  159.         name=urllib.unquote_plus(params["name"])
  160. except:
  161.         pass
  162. try:
  163.         name=urllib.unquote_plus(params["iconimage"])
  164. except:
  165.         pass
  166. try:
  167.         mode=int(params["mode"])
  168. except:
  169.         pass
  170.  
  171.  
  172. #Списък на отделните подпрограми/модули в тази приставка - трябва напълно да отговаря на кода отгоре
  173. if mode==None or url==None or len(url)<1:
  174.         print ""
  175.         CATEGORIES()
  176.    
  177. elif mode==1:
  178.         print ""+url
  179.         INDEXPAGES(url)
  180.  
  181. elif mode==2:
  182.         print ""+url
  183.         SEARCH(url)
  184.  
  185. elif mode==3:
  186.         print ""+url
  187.         PLAY(name,url,iconimage)
  188.  
  189.  
  190. xbmcplugin.endOfDirectory(int(sys.argv[1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement