Skip to content

Commit 1875e0d

Browse files
committed
Add search feature
1 parent 72e02da commit 1875e0d

6 files changed

Lines changed: 2389 additions & 5 deletions

File tree

addon.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<addon id="plugin.video.primaplay" name="Prima Play" version="0.1.2" provider-name="Ladislav Dokulil">
2+
<addon id="plugin.video.primaplay" name="Prima Play" version="0.1.3" provider-name="Ladislav Dokulil">
33
<requires>
44
<import addon="xbmc.python" version="2.1.0"/>
55
</requires>

changelog.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
2016-07-01 [0.1.3]
2+
* Add search feature
3+
14
2016-06-01 [0.1.2]
25
* Add filter lists for Seasons and others
36

default.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ def _toString(text):
4444
_baseurl_ = sys.argv[0]
4545
_play_parser = PrimaPlay.Parser()
4646

47+
48+
def first_menu():
49+
li = list_item('Hledej')
50+
url = get_menu_link( pagesearch = '1' )
51+
xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True)
52+
4753
def main_menu(pageurl):
4854
page = _play_parser.get_page(pageurl)
4955
if page.player: add_player(page.player)
@@ -64,6 +70,18 @@ def next_menu(nexturl):
6470

6571
xbmcplugin.endOfDirectory(_handle_, updateListing=True)
6672

73+
def search():
74+
keyboard = xbmc.Keyboard('','Hledej')
75+
keyboard.doModal()
76+
if (not keyboard.isConfirmed()):
77+
xbmcplugin.endOfDirectory(_handle_)
78+
return
79+
search_query = keyboard.getText()
80+
if len(search_query) <= 1:
81+
xbmcplugin.endOfDirectory(_handle_)
82+
return
83+
main_menu(_play_parser.get_search_url(search_query))
84+
6785
def add_title(video_list):
6886
li = list_item('[B]'+video_list.title+'[/B]')
6987
url = '#'
@@ -115,18 +133,25 @@ def assign_params(params):
115133
pass
116134

117135

118-
pageurl = "http://play.iprima.cz"
136+
pageurl = None
119137
nexturl = None
138+
pagesearch = None
120139
params = get_params()
121140
assign_params(params)
122141
logDbg("PrimaPlay Parameters!!!")
123142
logDbg("PAGE: "+str(pageurl))
124143
logDbg("NEXT PAGE: "+str(nexturl))
144+
logDbg("PAGE SEARCH: "+str(pagesearch))
125145
try:
126146
if nexturl:
127147
next_menu(nexturl)
128-
else:
148+
elif pagesearch:
149+
search()
150+
elif pageurl:
129151
main_menu(pageurl)
152+
else:
153+
first_menu()
154+
main_menu("http://play.iprima.cz")
130155
except Exception as ex:
131156
exc_type, exc_value, exc_traceback = sys.exc_info()
132157
_exception_log(exc_type, exc_value, exc_traceback)

libPrimaPlay/PrimaPlay.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class Parser:
3535
def __init__(self, ua = UserAgent(), time_obj = time):
3636
self.ua = ua
3737
self.player_init_url = 'http://play.iprima.cz/prehravac/init?'
38+
self.search_url = 'http://play.iprima.cz/vysledky-hledani-vse?'
3839
self.time = time_obj
3940

4041
def get_player_init_url(self, productID):
@@ -45,6 +46,11 @@ def get_player_init_url(self, productID):
4546
})
4647
#http://play.iprima.cz/prehravac/init?_infuse=1&_ts=1450864235286&productId=p135603
4748

49+
def get_search_url(self, query):
50+
return self.search_url + urllib.urlencode({
51+
'query': query
52+
})
53+
4854
def get_video_link(self, productID):
4955
content = self.ua.get(self.get_player_init_url(productID))
5056
link_re = re.compile("'src'\s*:\s+'(https?://[^']+\\.m3u8)'")
@@ -147,8 +153,10 @@ def get_items_from_wrapper(self, content, src_link):
147153

148154
def get_filter_lists(self, content, src_link):
149155
list = []
150-
before_wrapper_re = re.compile('(.*)<div class="loading-wrapper">', re.S)
151-
before_content = before_wrapper_re.search(content).group(1)
156+
before_wrapper_re = re.compile('^(.*)<div class="loading-wrapper">', re.S)
157+
before_wrapper_result = before_wrapper_re.search(content)
158+
if before_wrapper_result is None: return list
159+
before_content = before_wrapper_result.group(1)
152160

153161
filter_wrappers = re.split('<li class="hamburger-parent[^"]*">', before_content)
154162

libPrimaPlay/PrimaPlay_unittest.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,5 +109,20 @@ def test_get_page__episodes(self):
109109
self.assertEqual(page.filter_lists[0].item_list[0].link,
110110
'http://play.iprima.cz/prostreno?season=p14883&sort[]=Rord&sort[]=latest')
111111

112+
def test_get_page__search(self):
113+
prima_play = PrimaPlay.Parser(mockUserAgent(['test_search_page.html']), mockTime())
114+
page = prima_play.get_page('http://play.iprima.cz')
115+
116+
self.assertEqual(page.player, None)
117+
self.assertEqual(len(page.video_lists), 3)
118+
self.assertEqual(page.video_lists[0].title, u'Mezi seriály')
119+
self.assertEqual(page.video_lists[0].link,
120+
'http://play.iprima.cz/vysledky-hledani?query=prostreno&searchGroup=SERIES')
121+
self.assertEqual(len(page.video_lists[0].item_list), 2)
122+
self.assertEqual(page.video_lists[0].item_list[0].title,
123+
u'VIP PROSTŘENO! 3 Řady , 32 Epizod')
124+
self.assertEqual(page.video_lists[0].item_list[0].link,
125+
'http://play.iprima.cz/vip-prostreno')
126+
112127
if __name__ == '__main__':
113128
unittest.main()

0 commit comments

Comments
 (0)