From fd9544377372e4ea83da546da42cd03c2f809eec Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 16 Oct 2019 10:01:56 +0200 Subject: [PATCH 01/28] [plugin.video.iprima.cz] 0.4.4 --- addon.xml | 2 +- changelog.txt | 5 ++++- default.py | 5 +++-- libPrimaPlay/PrimaPlay.py | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/addon.xml b/addon.xml index c501c52..855aac3 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + diff --git a/changelog.txt b/changelog.txt index 2f91495..4daa564 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,7 @@ -2019-02-06 [0.4.2] +v0.4.3 (2019-09-17) + * Fixed episode loading + +v0.4.2 (2019-02-06) * Fixed episode loading * Fixed next link diff --git a/default.py b/default.py index 31c5724..8a270e4 100644 --- a/default.py +++ b/default.py @@ -12,7 +12,7 @@ import urllib from urlparse import parse_qs -_addon_ = xbmcaddon.Addon('plugin.video.primaplay') +_addon_ = xbmcaddon.Addon('plugin.video.iprima.cz') _scriptname_ = _addon_.getAddonInfo('name') _version_ = _addon_.getAddonInfo('version') @@ -141,6 +141,7 @@ def add_account_menu(): def add_show(video_list): url = '#' + thumbnail='' if video_list.link: url = get_menu_link( action = 'SHOW-NAV', linkurl = video_list.link ) if video_list.thumbnail: @@ -177,7 +178,7 @@ def play_video(link): product_id = _play_parser.get_productID(link) video = _play_parser.get_video(product_id) - if video.link is None: + if video is None: raise Exception('Video není dostupné') return diff --git a/libPrimaPlay/PrimaPlay.py b/libPrimaPlay/PrimaPlay.py index 2c68e20..167bd6a 100644 --- a/libPrimaPlay/PrimaPlay.py +++ b/libPrimaPlay/PrimaPlay.py @@ -18,7 +18,7 @@ __version__ = "1.0.0" __email__ = "alladdin@zemres.cz" -_addon_ = xbmcaddon.Addon('plugin.video.primaplay') +_addon_ = xbmcaddon.Addon('plugin.video.iprima.cz') _scriptname_ = _addon_.getAddonInfo('name') _version_ = _addon_.getAddonInfo('version') From 121a493f328b4f59be44aa216a5f59a76f3a59b6 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Sat, 26 Oct 2019 16:03:43 +0200 Subject: [PATCH 02/28] [plugin.video.iprima.cz] 0.4.5 --- addon.xml | 2 +- changelog.txt | 7 +++++++ default.py | 32 ++++++++++++++++++-------------- icon.png | Bin 3497 -> 6559 bytes libPrimaPlay/PrimaPlay.py | 28 +++++++++++++++++++--------- libPrimaPlay/PrimaPlay.pyo | Bin 0 -> 23372 bytes libPrimaPlay/__init__.pyo | Bin 0 -> 178 bytes 7 files changed, 45 insertions(+), 24 deletions(-) create mode 100644 libPrimaPlay/PrimaPlay.pyo create mode 100644 libPrimaPlay/__init__.pyo diff --git a/addon.xml b/addon.xml index 855aac3..4331f43 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + diff --git a/changelog.txt b/changelog.txt index 4daa564..ff73876 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,10 @@ +v0.4.5 (26.10.2019) +- Lepší rozlišení náhledů +- Nová ikona s lepším rozlíšením +- Položky pořadů zobrazeny v režimu "epizod" +- Úprava zobrazení titulku +- Úprava způsobu přehrávání + v0.4.3 (2019-09-17) * Fixed episode loading diff --git a/default.py b/default.py index 8a270e4..5faf16b 100644 --- a/default.py +++ b/default.py @@ -181,13 +181,13 @@ def play_video(link): if video is None: raise Exception('Video není dostupné') return - - video_item = xbmcgui.ListItem(video.title) - video_item.setInfo('video', {'Title': video.title}) + + video_item = xbmcgui.ListItem(path=video.link) + video_item.setProperty("IsPlayable", "true") + video_item.setInfo(type='video', infoLabels={'Title': video.title}) video_item.setThumbnailImage(video.image_url) - - player = xbmc.Player() - player.play(video.link, video_item) + xbmcplugin.setResolvedUrl(handle=_handle_, succeeded=True, listitem=video_item) + xbmc.Player().play(video.link, video_item) def list_item(label, thumbnail = None, description = None, broadcast_date = None, year = None): li = xbmcgui.ListItem(label) @@ -236,31 +236,35 @@ def assign_params(params): try: if action == "FILTER-REMOVE": remove_filter(linkurl) - xbmcplugin.endOfDirectory(_handle_, updateListing=True) + #xbmcplugin.endOfDirectory(_handle_, updateListing=True) if action == "FILTER-MANAGE": manage_filter(linkurl, int(filterid)) - xbmcplugin.endOfDirectory(_handle_, updateListing=True) + #xbmcplugin.endOfDirectory(_handle_, updateListing=True) elif action == "PAGE-NEXT": + xbmcplugin.setContent(_handle_, 'episodes') next_menu(linkurl) - xbmcplugin.endOfDirectory(_handle_, updateListing=True) + #xbmcplugin.endOfDirectory(_handle_, updateListing=True) elif action == "SEARCH": search() - xbmcplugin.endOfDirectory(_handle_) + #xbmcplugin.endOfDirectory(_handle_) elif action == "ACCOUNT": account() - xbmcplugin.endOfDirectory(_handle_) + #xbmcplugin.endOfDirectory(_handle_) elif action == "SHOW-NAV": + xbmcplugin.setContent(_handle_, 'episodes') show_navigation(linkurl) - xbmcplugin.endOfDirectory(_handle_) + #xbmcplugin.endOfDirectory(_handle_) elif action == "PAGE": + xbmcplugin.setContent(_handle_, 'episodes') main_menu(linkurl, list_only=True) - xbmcplugin.endOfDirectory(_handle_) + #xbmcplugin.endOfDirectory(_handle_) elif action == "PLAY": play_video(linkurl) else: ts = int(time.time()) shows_menu("https://prima.iprima.cz/iprima-api/ListWithFilter/Series/Content?ts="+ str(ts) +"&filter=all&featured_queue_name=iprima:hp-featured-series") - xbmcplugin.endOfDirectory(_handle_) + #xbmcplugin.endOfDirectory(_handle_) + xbmcplugin.endOfDirectory(_handle_) except Exception as ex: exc_type, exc_value, exc_traceback = sys.exc_info() _exception_log(exc_type, exc_value, exc_traceback) diff --git a/icon.png b/icon.png index f74d6b0f09651612d178bb17d653221672ec6490..52b2aae1c64b50ade7dfc5973f41a23f8ff1e8ff 100755 GIT binary patch literal 6559 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 E01lK$VE_OC literal 3497 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 H`zz|d46i!f diff --git a/libPrimaPlay/PrimaPlay.py b/libPrimaPlay/PrimaPlay.py index 167bd6a..1c41767 100644 --- a/libPrimaPlay/PrimaPlay.py +++ b/libPrimaPlay/PrimaPlay.py @@ -82,8 +82,8 @@ def sanitize_url(self, url): class Parser: def __init__(self, ua = UserAgent(), time_obj = time, hd_enabled = True): self.ua = ua - self.player_init_url = 'http://api.play-backend.iprima.cz/prehravac/init?' - self.search_url = 'http://play.iprima.cz/vysledky-hledani-vse?' + self.player_init_url = 'https://api.play-backend.iprima.cz/prehravac/init?' + self.search_url = 'https://play.iprima.cz/vysledky-hledani-vse?' self.time = time_obj self.hd_enabled = hd_enabled @@ -120,7 +120,7 @@ def get_productID(self, episode_link): def get_video(self, productID): if 'yt_' in productID: - yt_url = 'http://www.youtube.com/watch?v=' + productID.split('yt_',1)[1] + yt_url = 'https://www.youtube.com/watch?v=' + productID.split('yt_',1)[1] yt_video = YDStreamExtractor.getVideoInfo(yt_url, quality = 3) return Item(yt_video.title, yt_video.streamURL(), yt_video.thumbnail) else: @@ -205,7 +205,9 @@ def get_shows(self, src_link): thumb_result = thumb_re.search(wrapper_item) thumb = None - if thumb_result: thumb = thumb_result.group(1) + if thumb_result: thumb = re.sub('landscape_small_\d{1}', 'landscape_large', thumb_result.group(1)) + + items = self.get_items_from_wrapper(wrapper_item, src_link) list.append(PageVideoList(title, link, None, items, thumb)) @@ -299,7 +301,7 @@ def get_seasons(self, content, src_link): list.append(Item('[B]'+title+'[/B]' , link, None, description, isFolder = True)) return list - + def get_items_from_wrapper(self, content, src_link): list = [] @@ -318,7 +320,12 @@ def get_items_from_wrapper(self, content, src_link): description_result = item_description_re.search(item_content) if title_result is None: continue + #soup = BeautifulSoup(title_result.group(1)) title = self.strip_tags(title_result.group(1)) + + #title_result.group(1),convertEntities=BeautifulSoup.HTML_ENTITIES) + #title = lambda string: soup(title_result.group(1), convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES).contents[0] + #title = self.strip_tags(html.unescape(title_result.group(1))) if link_result is None: continue link = link_result.group(1) @@ -327,11 +334,12 @@ def get_items_from_wrapper(self, content, src_link): image_url = None description = '' - if img_result: image_url = img_result.group(1) + if img_result: image_url = re.sub('landscape_small_\d{1}', 'landscape_large', img_result.group(1)) if description_result: description = description_result.group(1).strip() - title = title+ ' | ' +description + title = title + if description: title= title+ ' | ' +description list.append(Item(title , link, image_url, description)) @@ -423,16 +431,18 @@ def make_full_link(self, target_link, src_link): return link + target_link def strip_tags(self, string): + result = re.sub('<[^>]+>', '', string) result = result.replace("\n",' ') result = result.replace("\t",' ') result = result.replace("\r",' ') result = re.sub('\s+', ' ', result) + return result.strip() class Account: def __init__(self, email, password, parser): - self.page_for_login = 'http://play.iprima.cz/' + self.page_for_login = 'https://play.iprima.cz/' self.auth_params = { 'nav_remember': 'true', 'nav_email': email, @@ -441,7 +451,7 @@ def __init__(self, email, password, parser): } self.parser = parser self.login_url_re = re.compile('action="(https://[^/]+(?:/tdi)?/login/(?:nav/)?form(?:ular)?[^"]+)"', re.S) - self.video_list_url = 'http://play.iprima.cz/moje-play' + self.video_list_url = 'https://play.iprima.cz/moje-play' def login(self): login_url = self.get_login_url() diff --git a/libPrimaPlay/PrimaPlay.pyo b/libPrimaPlay/PrimaPlay.pyo new file mode 100644 index 0000000000000000000000000000000000000000..d74fe8f49aa0e2aaa2fd97d20d99a816784921db GIT binary patch literal 23372 zcmd5^Yiu0XdA+lIQ z&pCHqq-57_p-o8c<()fs?%cWe`_6a1@7~$2?{6PmKL6W`WfT2$;r~Zfx6q}X#@lJuc9}|_4oBj{ejV;MUY}Xp zV=4pYHY)Eml|geG54F!!wi$2KEaQoWSaQplmlpP$%67Ai2i}ns-DfJpD%zP8-ES(p zR5X$lJzy%kRkSB5deBt%s%T$Q^fpt$9nt*$r05}2xlcv+Cq)l);O8eEz)VzsgrB)! zC$i^Cm1}NGwf0K2F}Yr?c+JUb%dgf;I2Cr|RHIb)!aiiyJwK>68|57G{P5%%e1hkZgvQ*! zFga!oL*|$(IpZH>$r|J!$MTzK3DvsH8YH00ggrWoNit?RXZGE2%&nYpDhAKShUaw4 zcB5KuRy;jJJ6z5`9q9tjr59tkFxR~N&LmKXNps90ogi^Z@P2VR5Ms>1c9dKtGi zrq)~uhgdNv`_)#c+PYJ*7=(VYIKc-~&3dqcKH>^*-K$L?W0VA!kUR54;l%)>QCO*a zjY{EEt2J8+O9i)Cs#hB;h3A`zmHjyT3T#GrGC9Xon_f;o2^(g{AX8g$v1M(Eu6XJ*fye({+J zw&xDA7CxPMHq8oVV0LNcA>1=yPmL1}AmwnLTJaiTnPvQ8-%sNc%p&oilaQ+z7j8rI zfhjpE1p%c?8K6nGGJujEWl+CYnSSHWPf$RD=a9Uw`EnI%F!i3vqhk{ntBp$YS}->E z!q_n=$&+Ij&tE+L*pp-a`V)`6d-CX^v1h#UmFCo=M~@xF-?6c$tG>6~ygtQ~Wpm2IbfC+(?Ks+ercbQ+?##`S+H-^lOE>qmD!X3&Fn^1tsbcDc& z3b!yzINTlG3GJdO_I!_NJd~-Qt>8ozD%5Do*<3)WT@Axl@Wj-Vg_s0sf?=H7QWjD^ z9zPoH#lL147R$}%m8uuue`C4o*S!h^-bj_1&@GUJt_!XYFBHOVzcEnJYNOR zzVO0@`DaUwN(}`ZR2JCIU+|k{F9`5_1QL6VU|Q%Jc(r9cTYx&S5XEZ6NJ|NH-XCV3=b{@oUuX#8(>#n;%FPn!F)SH1!`$pvzMFaHMmMCLVmUX#CN=23ceU*Wp?io0L<)|dGLXfJ zB&}R)2A-~P53^Pm5{euDjBXZVcndysT+cqtJr zs4%52AZBrV_hmnCFeUJqM}}+%9tYT1<)UzT@ zY`X@}!<|8y%OP@)Goe;X_Jmw6TTACtxqI$WkSS0t1unhL@W?>lK>tAZK#z3#Ldl2V zmT_J`e5BL(1b>Ib6Ych3@{sQ`o_zP)aJWIWotSD{77nUyS-9BiZCnUv-Li0SPs_sL ztoP|E`0M@3z-5Q$jmkS>&l`^WHkIs*Jnseg?%P!YHY&$^VK<#_UIoWpem5QWT`Ga& zF1LGOlrA^xz-gD)y#QBzuS(#c%jsTtfL;NGt=x@-pG3xKEFij2_Pg?U3%W%aH`dX> z%u8nH0xE7yb4#u2B*|lbsZ_oKUorKq!GOJ0zqDQ|Pm!+71nXBdfxa$;CPjyJOKA z%mNY%;D$^d$23;D&2b!!&TGu(++Aow(2T)aZi7sBp`aKBA`mSfs$34At5_JH!zq{d zbbpG;DJC3BA-~3M(^a#b8!~Zp5VInsB{T5|$)#x32P$#r7(Re1o5m2Lj$v}*Vd8+# z36Viv{S6Do=TVrBMEd;hMV#p1V-wH#*r{wUp(LRG5})<7lw?k-B<9zVu}=%ugy*yt z-7-=Lf$ri1{nXnF<|`fF`cJI#7!pkZh|YIt!>nX4;>5`KY}o>z^$A^ zH2R6LgVM%>?@|xK)pmWUQ9_9RiLnn}Dg=Xzhhd%LN`-eQ!i`AdBCF2^C98}^|RMQzf=wplA+HC8GJuu_s=z!n{vCJ3%$BDGOUIm*Yx8M;Kp??y61G1 z^dqC;??){+QFHea55;H61;jBzf1^lw2Zx|Ky9Jz>pfp<+@gnQd#|DOwf)Iw0)v|(n znJ4>@@JgyT&#HUL0mp_1tQFW>C?DSrN@2Z6^ys zxgRn62XhZV@$t(zlj+X&Is@hb#GSfx`;iAE019NM2m+j60l^hy632=$V<=7+qfZ-q zq*Jm@)(klp8&8^U%rrFq%AoO=4WYmx1jx6?`b$s{BH*xF%P~JARs9H-VI1=Tv=Unz zPS<2muhymlTGsq(K0H^AwkXTTsaL7mm?WK(1Ji=lQ2}6cweIHWEC*%5y z1Smr^1C+ZAF35^>(vz#>rk}<~3uatd>2mfU%<_=ao$E`ZfYf)*#tCHZWDP9IMgegM z{IS#kpeht5PI7!{L~R@}9jb5yg%q3yLe0>jfC=p4?mLRB(BMEiGKZ??P}34p*;S6N z6i`aVk&oI#Q}!IHqtx=UdrjVD$u~XJ=Wy%DV;-R%SXRcKZ5rQ1+L^&1f`e&rIi}WX zAcIq}af4F8npmS4trG@&(CGAm!lg5_r(QT!xCE>{R9Gx5o)nb3oJAY;OL2_^S>UD> z0rp#CU0n8?_2MKI##|C?$DD~?ypWT#lmz!|HR&MwDe_WTQ{&Yjb2S|nm&W=i+qFi{=26zVOf zmsT}BfdYb~H8XKFi9l3DW$d5`Kq<_Z@JX-?R1;QZKR!FtkX>R~j-V>_2!ESBAWT=J zU)J162VV!dII9=1CT7__BMylH6p#g(nB9kPRtCRwVlu0}A6R&7(A+JuL{)gFLd+mFjwoD-0rIMWPYr^FbNwYx#V+ z+VB9(q~WdAjWI3!zm+TUd90a|rswnGs0l9Nt|zsXCdH&nmkYr-+-I#ePPeM%uhWKFcHlL948TC(YgA;?sqJzr z$UfYUqJ}&Y8}*_x;n}Po@L@I~8%aHj9Qm-EwQ)Dbc0gNmRtw7%_9TJQKk-(7%N(3Ss zw*vkklVFi81pXw2idzA)h*v-hfRgq2fnauzi9G}moggI4F22VUpwYMov>Sh2ic#E> zf&=4J2(VK}#Lb+mw+#L+B7l%lZ;p}O(RH>}eYsiLkdt`2*=PqF0Z-0jf&44KQeE8; zr?FnT#&Nn)T8Abfq%|J-)OnOtS4w0Rd2GLGTS_oJh2oP|0b{N(HI=Z1m{dfZLDV#k z1x(P?r}}j_Dq%II5A~L@T?pFhzRGLpO-L;)wcrF=Y9XD zw@axd?H~}Qrxe_x%txnn+{JdWPX+%vMDJtggd&a|cJc84B|0E>Mq$UAwc=g-;q>l? z8+_m{E)~NtTMe!awJL^BQHFrS@z@|Eyw#D6#X`8}kF41*x)^18mR~(xe0k(r5h7YVHLqXb^v_27ZHU zbs_595^ix<8^z=esv>e}tD;^k8t3qE{}+eEM(JjzO8}y*7h=VU^M6;&nBfVEjX;2t zf@pbwO`)>283g$P>evP4!@Pu2<^B>AS=FCM4oqsZHzMQr3eRxH;&wlSeCJ@n{TOaH z1X32oyL+MkGH!@`kKog5jyMxJi5AC*;w91gGh}Gm-kfNG4nq>C|4%S8PbrjmF(wWB zC66=`O&G{tbG<={nO$5q2wc-hYH9jD#@3_d7??kl^)jX|!GjIFkM<3P{m4P$AY0ls z!|jgwna{6Ry=(b=Y{3*X4D!j@ zX#Nt4Svnbu+?3cR2@cq1n?f$f{_S*Y&fHF#Gwo&0hv03<`a5*go{2;EmEv*B86Oy)u{U*?3Xz-|Aynka&tr;ans=g!^4H=i`!wHDd_+(WtaK}U-*j-{onW$oZ?$( z2Q3V%lOw8t4J^3VjS(zQ4V$Z9j7`-JuAiVH{oq{&r*B#Fga@|(LceJ)pv}kv$en&| zw3?c)VHDv}& z-h`9Ax%+SIWIz9wJDs@f(QT4p5tcz|j0H62W`qXZATDPFYiR(#jQb(WO6teWGYliY zzSr*l0#6hE#%_#F&{kWZdyP4{;?FXduBUyHhoT0&2tJVd0%w0c-C$we@=vkmt4!GQ z38Fw6y-Znx&~P=Z*Q}c%?^!-W=rZW|Uc`Bj!NYO%Q~og?T9e$_BufmzXJNcVS8-a+t%=9*&!-)UqBzWeFD@E71q zZ^ka)!DY|w@1^5DjIH8u+`(!N;6H<{y=G5t%z`sVGXdux;$RCn6J0Ed0{`H;WTJWr$DmbeSo~RQ zv`&o6xf{RpO2qzF@G1i^;L_!3xPMquz=f95q;Hg2@BbNe^=^?fOGy}469p%UU#`|d z?zYnM9Mu>5%~LWjEU9>0`OK_~Z>IEG$6vx*M7|d*fOH6)P+B!mZQVZ#QoTKSJjvY~6Shbgx~fwb3CMSoS-z&A*)ffC2A zBk?~g#aRBf!KX1srq+UdSgGbE5_voLk-$>&4o|mhC$$9o|7jtXZ@u%g)V!WAH*4*B zBZzMF`fHpNtF3Zt*PQRW+nKoiOspf3UZKA%iWaURv$S>b6Aa_o{+&{tXn-nN& z2$%GSvHWGzB&3lnf_(^8-T;@cFK&Y7*~N1TefB7_0i1+1K{#T9OytC&V31xU;1N_B zSgLiDC@`hL^fV!jugWEDw5ZYHe}&LWB_yAj|=?LH7hf`6%RxkQa7rDbN+So z;Cede1d#^;7{kunEnLuHOy>NHIIwe$FgoK_h=jvvDQ<;Hx`H+A!;B%|6k@Iw*$>V||!%xCa>;Gf1KtfHXdgE!T-O(oQGR zct5KDuf}Ur%=*~qVnm(; ztHgi79{;%XR}Vp6w54m@8X|AR(h18>=?pS5_kdi#$lO@hj|MSer+*%mt}1XPNsx9ZaIl? z0d0-OjU@}cHYm5HId~eJ zjFBXE0%C)C;bt3TKwq>a3204rl9XWDx0E1g5SK(v!7f0EFz-oIkU+XPcEbB`(`gG> zHr$22n?YIkF>SpWP`X`lF6@A}dwMm2+CZZD{1mQ9w}HtS<{p#Ain73lj_%SHSpF90 zfXg!m5gs^}_}!bE;H0=5aQAs8^dIzEm-`fRc_!~?@&P8$XXA21rCVq65hgd8++gx? zCZA>Uc_zQXz?C{@zEv=Fc-cO z+A}aR@ZiAEKreEGctP~xfn5XR`0N=tGO&AqKidZO4(wE5^i;XrY-hf%g~D>0?Y$j| zhxaapg13>;b~TG?x|KLTxs%@|~xD2Kp?>V`28Av&Sw@2Xf z9h#ZKm*P|#Q#i)OQ-@{{8LH!;jqP8DW+HMCjNxYS;n&?$)wWbA2>)#_9p6=$?hATT31d(_g-0$Ha zmFRme%v9GupqkU@@Y_DRoId^T%ncA=DV!9sM9fa%z)I0Atl&uAV50%8HZsdoF?ces zm1ZI*4D<l_NglYtP~co>hY#gK{k4<52=I#bHsbBX^B z?)m%d9?1^gE*cu>(?+y14)sHyQ+WI~WFkCv=T-2D`_{zL4A~9#S%=-NBKvT@; zfXHKJfy8h?naMycCYL3^bTSAE$edt7NRz@v;C>sYEN8QEa|MAd{^+&kOq}t*QPurV zCjZ6c+ep%Jz2`&93H=s_v>%!HD}(GqWr)HI&WRqRJyY(UckiRP@i*B$&QPx-pD&qh zN`Yp344GuMInSE&Xu|RBi0On&a8Ns$aOt$2)nw+g6K+L7fd})#olpMRl@FC`2 zL1LHpxT}#f?$%Ib$^T*2fc=i5Hm@-E11741jGgp*KA@cMzvh5iu#3NN;3sFsKaCFl zRXXF+nG4dHWZnr!n)myW*)s1`aeen@tm2ewev%odo=1B8=4Kp0Bu>5J-pqhmr7|E$ z=e%k)IEDbcBl;DTX?a&vV#&t>V7Y|%-VlYc-_E#!FR4(JxzhHvuQz>x+zQH%*h12b z%kM&Tb4(m0sUmhnWd4COVwW3Yk>UTJ9I^Q!2J7$HNzOBX;%D(M5g3$Pf!T#jBruQ@ z(R9cOPix_%3z;#MIdS@F=z1sn95Q z&n1VG@Xwh^sp2@96l%_Ce6qfipxXjCQhfOihWj?YCRe@_$Gc3r$WJm&bm{J#ro=gl zYkANp=(8F@zoZHu6Hzb-%-eG{?SI zK^zl!*_}@~>LAq198KFV^*TwR2srLTh~nMx%UwbI#Rdla=7xI)y7nF0{Udx`>ixU> LcK7cd+}-m(b0V$R literal 0 HcmV?d00001 diff --git a/libPrimaPlay/__init__.pyo b/libPrimaPlay/__init__.pyo new file mode 100644 index 0000000000000000000000000000000000000000..945c7a6c15a918d3054cd8e16f1c6e94c247f502 GIT binary patch literal 178 zcmZSn%*!=beM@XI0~9arz0^NM2%a!S)P^YqFxQ&RKwG7E|_a}$m9 vlB;5JGLr&8oPeCf%9!~0%)HE!_;|g7$`THs`8K)vDWy57b|6<212F>te>yFe literal 0 HcmV?d00001 From 0571b23ad2a930d5c71d132d25c0f47135a36fcf Mon Sep 17 00:00:00 2001 From: Gabriel Date: Sun, 27 Oct 2019 22:05:23 +0100 Subject: [PATCH 03/28] [plugin.video.iprima.cz] 0.4.6 --- addon.xml | 2 +- changelog.txt | 5 ++++- libPrimaPlay/PrimaPlay.py | 11 ++--------- libPrimaPlay/PrimaPlay.pyo | Bin 23372 -> 23640 bytes libPrimaPlay/__init__.pyo | Bin 178 -> 177 bytes 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/addon.xml b/addon.xml index 4331f43..29fce3a 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + diff --git a/changelog.txt b/changelog.txt index ff73876..c231fb0 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,9 @@ +v0.4.6 (27.10.2019) +- Oprava zobrazení titulku + v0.4.5 (26.10.2019) - Lepší rozlišení náhledů -- Nová ikona s lepším rozlíšením +- Nová ikona s lepším rozlišením - Položky pořadů zobrazeny v režimu "epizod" - Úprava zobrazení titulku - Úprava způsobu přehrávání diff --git a/libPrimaPlay/PrimaPlay.py b/libPrimaPlay/PrimaPlay.py index 1c41767..1bee915 100644 --- a/libPrimaPlay/PrimaPlay.py +++ b/libPrimaPlay/PrimaPlay.py @@ -206,8 +206,6 @@ def get_shows(self, src_link): thumb_result = thumb_re.search(wrapper_item) thumb = None if thumb_result: thumb = re.sub('landscape_small_\d{1}', 'landscape_large', thumb_result.group(1)) - - items = self.get_items_from_wrapper(wrapper_item, src_link) list.append(PageVideoList(title, link, None, items, thumb)) @@ -320,12 +318,7 @@ def get_items_from_wrapper(self, content, src_link): description_result = item_description_re.search(item_content) if title_result is None: continue - #soup = BeautifulSoup(title_result.group(1)) title = self.strip_tags(title_result.group(1)) - - #title_result.group(1),convertEntities=BeautifulSoup.HTML_ENTITIES) - #title = lambda string: soup(title_result.group(1), convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES).contents[0] - #title = self.strip_tags(html.unescape(title_result.group(1))) if link_result is None: continue link = link_result.group(1) @@ -337,7 +330,7 @@ def get_items_from_wrapper(self, content, src_link): if img_result: image_url = re.sub('landscape_small_\d{1}', 'landscape_large', img_result.group(1)) if description_result: - description = description_result.group(1).strip() + description = self.strip_tags(description_result.group(1).strip()) title = title if description: title= title+ ' | ' +description @@ -431,11 +424,11 @@ def make_full_link(self, target_link, src_link): return link + target_link def strip_tags(self, string): - result = re.sub('<[^>]+>', '', string) result = result.replace("\n",' ') result = result.replace("\t",' ') result = result.replace("\r",' ') + result = re.sub("&#(\d+);", lambda m: chr(int(m.group(1))), result) result = re.sub('\s+', ' ', result) return result.strip() diff --git a/libPrimaPlay/PrimaPlay.pyo b/libPrimaPlay/PrimaPlay.pyo index d74fe8f49aa0e2aaa2fd97d20d99a816784921db..8ba63a38edc382ef5000ddfef66c2612842263b9 100644 GIT binary patch delta 768 zcmYjNOGuPa6h7zv|3A-kY)13d1AFM0q**XgiXcfN;qxEHMzO*iNT;lPpb;}Jn!-hk zij$iNG2Gdr6qV#S1INXmDu1KKvY0ngP4FmwH`v)4q^Qtsnm$ZO9s3STJ#rp*Z?4Zm$x-sR9M!I zs^HL71XT29D^PR#5cshI!pN^no`6>+jOf@$CotRI4=O{qS=pc>5DmvZ{$$G zz+9o4&1Y<$V$irW7<8o4`mV(OA1OOHYM^32&`fXx7igyG4t}M;iCJgDpeJ0kFI14M zlLP2+uYk)Xc308k)SPMVTBMBCN(!UHP;7WNYPtRQ>ZSsi&*4E z!H83L5lR<D`2gg6koQ3@0E5clg8@H;R1s3W?3hfp-qJ8iUt*2x#CpR6 z2KsQTFwhVN)T=uvBiq|FJR*Zd}oxYzv~V@Cp}^PH;?h?TXlXpF|02sIYa(rz442i zOH|iAq%SD>n8uT@{C~OmoAHP7p5JuMazux!ftJ(P^{Yy}q0!WwvCN(`m0a(rlpevi zlDc)QTjl-~<30n_eo8P9DVxdSCu-~+(O1;$BTe_N;v!8Syn$coSl^7hV#dk_wPnK9 sy1GoKGZ*j&eaPIyG8GRk)^P3=$4T8}tN;}cKXY4Vt!XzMrpwg-0qZfLfdBvi diff --git a/libPrimaPlay/__init__.pyo b/libPrimaPlay/__init__.pyo index 945c7a6c15a918d3054cd8e16f1c6e94c247f502..242eb57eec92c41d24e09229758ea1d94c7e1ae9 100644 GIT binary patch delta 22 dcmdnQxRH^K`7;M1& From 49458d77e63d8a5e84835dc3a1afa7379ee5d2f2 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:46:21 +0100 Subject: [PATCH 04/28] Delete changelog.txt --- changelog.txt | 84 --------------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 changelog.txt diff --git a/changelog.txt b/changelog.txt deleted file mode 100644 index c231fb0..0000000 --- a/changelog.txt +++ /dev/null @@ -1,84 +0,0 @@ -v0.4.6 (27.10.2019) -- Oprava zobrazení titulku - -v0.4.5 (26.10.2019) -- Lepší rozlišení náhledů -- Nová ikona s lepším rozlišením -- Položky pořadů zobrazeny v režimu "epizod" -- Úprava zobrazení titulku -- Úprava způsobu přehrávání - -v0.4.3 (2019-09-17) - * Fixed episode loading - -v0.4.2 (2019-02-06) - * Fixed episode loading - * Fixed next link - -2019-03-01 [0.4.1] - * Plugin now displays shows from all Prima channels - * Fixed bug when episode list wouldn't load when containing unavailable episodes - * YouTube embeds can now be played - -2019-02-01 [0.4.0] - * Changes to allow scraping new iPrima site - * New icon - -2017-08-03 [0.3.9] - * auto confirm adult content - -2017-04-20 [0.3.8] - * Don't verify certificates for SSL - -2017-01-31 [0.3.7] - * Fixed url for player init - * Fixed parsing of video player file - -2016-08-11 [0.3.6] - * Fixed login url - -2016-23-03 [0.3.5] - * Fixed parsing of video list title - -2016-23-03 [0.3.4] - * Fixed parsing video url - * Play SD when HD respond 403 HTTP status - - 2016-12-02 [0.3.3] - * Fix login to Account section - * Add integration tests - -2016-12-02 [0.3.2] - * add description and other media info for videos - * add content type tvshows for addon - lists could be switched to media info view - -2016-09-02 [0.3.1] - * fixed bug - play also videos without image - -2016-19-01 [0.3.0] - * add My Account section - display favorites from defined account - -2016-15-01 [0.2.3] - * add HD video quality - it's possible to disable it in addon settings - -2016-12-01 [0.2.2] - * add source link to addon.xml - -2016-10-01 [0.2.1] - * Filters reworked - better interface for filters - * added filter for genre - -2016-07-01 [0.2.0] - * Beta product stage - -2016-07-01 [0.1.3] - * Add search feature - -2016-06-01 [0.1.2] - * Add filter lists for Seasons and others - -2016-06-01 [0.1.1] - * Don't use BeautifulSoap - replaced by regexps - -2016-04-01 [0.1.0] - * First version of plugin From df7f774d6287e690e1fd1562b20ad970c1f077ae Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:48:29 +0100 Subject: [PATCH 05/28] Delete PrimaPlay.pyo --- libPrimaPlay/PrimaPlay.pyo | Bin 23640 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 libPrimaPlay/PrimaPlay.pyo diff --git a/libPrimaPlay/PrimaPlay.pyo b/libPrimaPlay/PrimaPlay.pyo deleted file mode 100644 index 8ba63a38edc382ef5000ddfef66c2612842263b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23640 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 From ad24e68c6a57d379bea83c372b42f12f5c2b0e63 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:48:38 +0100 Subject: [PATCH 06/28] Delete PrimaPlay_integrationtest.py --- libPrimaPlay/PrimaPlay_integrationtest.py | 127 ---------------------- 1 file changed, 127 deletions(-) delete mode 100644 libPrimaPlay/PrimaPlay_integrationtest.py diff --git a/libPrimaPlay/PrimaPlay_integrationtest.py b/libPrimaPlay/PrimaPlay_integrationtest.py deleted file mode 100644 index b00c19d..0000000 --- a/libPrimaPlay/PrimaPlay_integrationtest.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- - -import unittest -import os, sys -import PrimaPlay -import urllib, urllib2, urlparse - -os.chdir(os.path.dirname(sys.argv[0])) - -class UrlCmp(object): - def __init__(self, url): - parts = urlparse.urlparse(url) - _query = frozenset(urlparse.parse_qsl(parts.query)) - parts = parts._replace(query=_query) - self.parts = parts - self.url = url - - def __eq__(self, other): - return self.parts == other.parts - - def __hash__(self): - return hash(self.parts) - - def __str__(self): - return self.url - - def __repr__(self): - return self.url - -class CacheUserAgent(PrimaPlay.UserAgent): - def __init__(self, cache_dir = None): - super(CacheUserAgent, self).__init__() - self._init_cache_dir(cache_dir) - - def get(self, url): - content = super(CacheUserAgent, self).get(url) - if self.cache_dir: self._save_content(url, content) - return content - - def post(self, url, params): - content = super(CacheUserAgent, self).post(url, params) - if self.cache_dir: self._save_content(url, content) - return content - - def _init_cache_dir(self, cache_dir): - self.cache_dir = cache_dir - if not self.cache_dir: return - if not os.path.exists(self.cache_dir): - os.makedirs(self.cache_dir) - - def _save_content(self, url, content): - filename = self._generate_filename(url) - fl = open(filename, 'w') - fl.write(content) - fl.close() - - def _generate_filename(self, url): - return self.cache_dir + '/' + urllib.quote_plus(url) - -class PrimaPlayIntegrationTest(unittest.TestCase): - def setUp(self): - self.play_parser = PrimaPlay.Parser(CacheUserAgent()) - self.account_user = os.environ.get('PRIMA_USER') - self.account_password = os.environ.get('PRIMA_PASSWORD') - - def test_homepage(self): - page = self.play_parser.get_page('http://play.iprima.cz') - self.assertEqual(page.player, None) - self.assertTrue(len(page.video_lists)) - self.assertEqual(page.video_lists[0].title, u'Doporučujeme') - self.assertTrue(len(page.video_lists[0].item_list)) - self.assertEqual(len(page.filter_lists), 3) - self.assertEqual(page.filter_lists[0].title, u'Žánr') - self.assertTrue(len(page.filter_lists[0].item_list)) - page.filter_lists[0].item_list.sort(key=lambda elem: elem.title) - self.assertEqual(page.filter_lists[0].item_list[0].title, u'Akční') - self.assertEqual(page.filter_lists[0].item_list[0].link, - 'http://play.iprima.cz?genres[]=p14198') - - def test_prostreno(self): - page = self.play_parser.get_page('http://play.iprima.cz/prostreno') - self.assertEqual(page.player, None) - self.assertEqual(len(page.video_lists), 3) - self.assertRegexpMatches(page.video_lists[0].title, u'^Všechny epizody') - self.assertEqual(len(page.video_lists[0].item_list), 20) - - def test_prostreno_epizodes(self): - page = self.play_parser.get_page('http://play.iprima.cz/prostreno') - epizodes_page = self.play_parser.get_page(page.video_lists[0].link) - self.assertEqual(epizodes_page.player, None) - self.assertEqual(len(epizodes_page.video_lists), 1) - self.assertEqual(len(epizodes_page.video_lists[0].item_list), 18) - self.assertEqual(UrlCmp(epizodes_page.video_lists[0].next_link), - UrlCmp('https://play.iprima.cz/tdi/dalsi/prostreno?cat[]=EPISODE&src=p14877&sort[]=latest&sort[]=Rord&offset=18')) - - def test_prostreno_video(self): - page = self.play_parser.get_page('http://play.iprima.cz/prostreno') - video_page = self.play_parser.get_page(page.video_lists[0].item_list[0].link) - - self.assertRegexpMatches(video_page.player.title, u'Prostřeno!') - self.assertRegexpMatches(video_page.player.video_link, '-sd3-sd4.*\.m3u8') - self.assertRegexpMatches(video_page.player.image_url, '/l_xhdpi') - self.assertRegexpMatches(video_page.player.description, 'Prostřeno!') - self.assertRegexpMatches(video_page.player.broadcast_date, '^\d+\.\d+\.\d+$') - - def test_prostreno_epizodes_next_page(self): - page = self.play_parser.get_page('http://play.iprima.cz/prostreno') - epizodes_page = self.play_parser.get_page(page.video_lists[0].link) - next_page = self.play_parser.get_next_list(epizodes_page.video_lists[0].next_link) - self.assertEqual(UrlCmp(next_page.next_link), - UrlCmp('https://play.iprima.cz/tdi/dalsi/prostreno?cat[]=EPISODE&src=p14877&sort[]=Rord&sort[]=latest&offset=36')) - - def test_account(self): - if not self.account_user: return self.skipTest("Account credentials must be defined in environment (PRIMA_USER, PRIMA_PASSWORD) for account testing") - account = PrimaPlay.Account(self.account_user, self.account_password, self.play_parser) - try: - self.assertTrue(account.login()) - except urllib2.HTTPError, e: - print "URL: " + e.url - raise - self.assertTrue(self.play_parser.get_page(account.video_list_url)) - - - -if __name__ == '__main__': - unittest.main() - From 986e5218ad0efcec0eeb3f345102e72125be1253 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:48:47 +0100 Subject: [PATCH 07/28] Delete test_filters.html --- libPrimaPlay/test_filters.html | 973 --------------------------------- 1 file changed, 973 deletions(-) delete mode 100644 libPrimaPlay/test_filters.html diff --git a/libPrimaPlay/test_filters.html b/libPrimaPlay/test_filters.html deleted file mode 100644 index 600a75c..0000000 --- a/libPrimaPlay/test_filters.html +++ /dev/null @@ -1,973 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Prostřeno! | Prima PLAY - - - - - - - - - - - - - -
- -
- -
- - - -
-
- -
-
- -
- -
- - - -

-Prostřeno!

-

-

- -

- Více informací, fotografií a novinek naleznete na Stránce pořadu -

-

-Pořady, Dokumentární, Reality, Game-show - | ČR - | - -2015

-

- - - -

-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

- -
-
- - - -
-
-
- - - - -
-
-
-
- -
-
-
-
-
-
- - - -
-
- - - -
- -
-
-
-
-
-
-
-
- - - - -
-
-
-
-
-
-
- - -
-
-

Komentáře

-
-
-
-
-
- -
-
-
-
- -
-
- -
- - - -
- -
- - - - - - - - - - - - From 8d94b216729e5a54aa2f3d9b2173d6cc33e9d838 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:48:54 +0100 Subject: [PATCH 08/28] Delete test_moje_play.html --- libPrimaPlay/test_moje_play.html | 528 ------------------------------- 1 file changed, 528 deletions(-) delete mode 100644 libPrimaPlay/test_moje_play.html diff --git a/libPrimaPlay/test_moje_play.html b/libPrimaPlay/test_moje_play.html deleted file mode 100644 index 42e2472..0000000 --- a/libPrimaPlay/test_moje_play.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Můj PLAY | Prima PLAY - - - - - - - - - - - - -
- -
- - -
-
-
- - -   - - - - - -
- - - - -
-
- -
- - - -
- -
- - - - - - - - - - - From 0da04fe2c15ca10285fec339cc44c595ed7950bb Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:49:04 +0100 Subject: [PATCH 09/28] Delete test_prostreno_epizody.html --- libPrimaPlay/test_prostreno_epizody.html | 1552 ---------------------- 1 file changed, 1552 deletions(-) delete mode 100644 libPrimaPlay/test_prostreno_epizody.html diff --git a/libPrimaPlay/test_prostreno_epizody.html b/libPrimaPlay/test_prostreno_epizody.html deleted file mode 100644 index a1aa12d..0000000 --- a/libPrimaPlay/test_prostreno_epizody.html +++ /dev/null @@ -1,1552 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Prostřeno! | Prima PLAY - - - - - - - - - - - - - -
- -
- -
- - - -
-
- -
-
- -
- -
- - - -

-Prostřeno!

-

-

- -

- Více informací, fotografií a novinek naleznete na Stránce pořadu -

-

-Pořady, Dokumentární, Reality, Game-show - | ČR - | - -2015

-

- - - -

-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

- -
-
- - - -
-
-
- - - - -
-
-
-
- -
-
-
-
-
-
- - - -
-
- - - -
-
- -
-
-
-
-
-
-
-
-
- - - - - - - - - - - -
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 90

-
-
-

Prostřeno, jedna z nejoblíbenějších rodinných show o vaření!

-
-
- -
-
-
-
- -
- - -
-
- -
-Prostřeno -
-
-
- -
-
Prostřeno
-

Sezóna 12: Epizoda 89

-
-
-

Prostřeno

-
-
- -
-
-
-
- -
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 88

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
- -
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 87

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
-
-
-
-
-
-
-
- - -
-
-

Komentáře

-
-
-
-
-
- -
-
-
-
- -
-
- -
- - - -
- -
- - - - - - - - - - - - From 7b7142f6b7605bf5bfab683e67e61701e4c26357 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:49:11 +0100 Subject: [PATCH 10/28] Delete test_playlist.m3u8 --- libPrimaPlay/test_playlist.m3u8 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 libPrimaPlay/test_playlist.m3u8 diff --git a/libPrimaPlay/test_playlist.m3u8 b/libPrimaPlay/test_playlist.m3u8 deleted file mode 100644 index e69de29..0000000 From 350813cb88a9db7b0d181cb331bab52fdff15ce6 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:49:22 +0100 Subject: [PATCH 11/28] Delete test_search_page.html --- libPrimaPlay/test_search_page.html | 2333 ---------------------------- 1 file changed, 2333 deletions(-) delete mode 100644 libPrimaPlay/test_search_page.html diff --git a/libPrimaPlay/test_search_page.html b/libPrimaPlay/test_search_page.html deleted file mode 100644 index adc0c73..0000000 --- a/libPrimaPlay/test_search_page.html +++ /dev/null @@ -1,2333 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Seriály a pořady TV Prima | Prima PLAY - - - - - - - - - - - - -
- -
- - -
-
-
-
-
-
-
-

Výsledky vyhledávání pro prostreno

-
- -
-
-
-
- - - -
-
- -
- - - -
- -
- - - - - - - - - - From 1762af228dd00470e583fac7cc79742659ee1e04 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:50:05 +0100 Subject: [PATCH 12/28] Delete test_video_page.html --- libPrimaPlay/test_video_page.html | 2179 ----------------------------- 1 file changed, 2179 deletions(-) delete mode 100644 libPrimaPlay/test_video_page.html diff --git a/libPrimaPlay/test_video_page.html b/libPrimaPlay/test_video_page.html deleted file mode 100644 index 0ed5498..0000000 --- a/libPrimaPlay/test_video_page.html +++ /dev/null @@ -1,2179 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Prostřeno! | Prima PLAY - - - - - - - - - - - - - -
-

Webové stránky skupiny Prima používají soubory cookie k poskytování služeb, personalizaci reklam a analýze návštěvnosti. Používáním tohoto webu s užitím cookies souhlasíte.

- -
-
- -
- -
- - - -
-
-
-
-
-
-
-Prostřeno! -
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- -

Pravděpodobně používáte software, který znemožňuje zobrazení reklamy (AdBlock). Příjmy z reklamy nám umožňují připravovat pro vás kvalitní obsah zdarma. Prosíme, pro přehrání videa jej vypněte a stránku znovu načtěte.

-
-
-
-
-
-
-
-
-
-
-
- -
- -
- - - -

- - Prostřeno!: - -Prostřeno!

-

- - Prostřeno!: - -Prostřeno! XII

-
- -

Obtěžují vás reklamy? Sjednejte si Prima PLAY Premium

-
-

- Více informací, fotografií a novinek naleznete na Stránce pořadu -

-

-Sezóna 12 - | Datum vysílání: 16.12.2015 - | -42 min | -2015

-

- Zvuk: Čeština | - - -16:9

-
- - -
-
-
- - - - - - -
-
-
-
- -
-
-
- - -
-
-
-
-
- -
-
-

Komentáře

-
-
-
-
-
- -
-
-
-
- -
-
- -
- - - -
- -
- - - - - - - - - - - - From 1ac329db8def7c72788588f9dc2ebaf4fee33862 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:50:16 +0100 Subject: [PATCH 13/28] Delete test_video_page-2.html --- libPrimaPlay/test_video_page-2.html | 1451 --------------------------- 1 file changed, 1451 deletions(-) delete mode 100644 libPrimaPlay/test_video_page-2.html diff --git a/libPrimaPlay/test_video_page-2.html b/libPrimaPlay/test_video_page-2.html deleted file mode 100644 index ec66734..0000000 --- a/libPrimaPlay/test_video_page-2.html +++ /dev/null @@ -1,1451 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cestování červí dírou s Morganem Freemanem II (7) | Prima PLAY - - - - - - - - - - - - - - -
- -
- -
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- -

Pravděpodobně používáte software, který znemožňuje zobrazení reklamy (AdBlock). Příjmy z reklamy nám umožňují připravovat pro vás kvalitní obsah zdarma. Prosíme, pro přehrání videa jej vypněte a stránku znovu načtěte.

-
-
-
-
-
-
-
-
-
-
-
-
-Máte potíže s přehráním videa? Pomoc můžete najít v nápovědě, nebo nás kontaktujte.
-
-
- -
- -
- - - -

- - Cestování červí dírou s Morganem Freemanem: - - Cestování červí dírou s Morganem Freemanem II (7) -

-

- - Cestování červí dírou s Morganem Freemanem: - - Through the Wormhole II (7) -

- -

-Datum vysílání: 3.2.2016 - | -42 min | -2010

-

- Zvuk: Čeština, Angličtina | - - -16:9

-
-

Cestování červí dírou s Morganem Freemanem II (7)
Jak funguje vesmír?
(42' 15'')
Oscarem oceněný herec a fanoušek všeho vesmírného Morgan Freeman se vrací jako moderátor v pokračování úspěšného dokumentárního seriálu o velkých záhadách kosmu. Existuje posmrtný život? Má vesmír nějaké hranice? Je čas skutečný? Existují více než tři dimenze, šestý smysl nebo paralelní vesmír? Je možné cestovat rychleji než světlo či žít věčně? A jak vypadají mimozemšťané? Právě takové otázky si klade druhá série dokumentárního seriálu.
Through the Wormhole with Morgan Freeman II, How Does the Universe Work?, USA 2010.

- -
-
- - - -
-
-
- - - - - -
-
-
-
- -
-
-
- - -
-
-
-
-
- -
-
-

Komentáře

-
-
-
-
-
- -
-
-
-
- -
-
- -
- - - -
- -
- - - - - - - - - - - - From e40ee96e4851c5e9880ca9a4b0feb5619632326b Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:50:22 +0100 Subject: [PATCH 14/28] Delete test_remove_all_filters.html --- libPrimaPlay/test_remove_all_filters.html | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 libPrimaPlay/test_remove_all_filters.html diff --git a/libPrimaPlay/test_remove_all_filters.html b/libPrimaPlay/test_remove_all_filters.html deleted file mode 100644 index 0c0a756..0000000 --- a/libPrimaPlay/test_remove_all_filters.html +++ /dev/null @@ -1,6 +0,0 @@ - - - OK - - - From 2a939c3e86c0550142bbce8adedadf5be4caef13 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:50:34 +0100 Subject: [PATCH 15/28] Delete test_prostreno.html --- libPrimaPlay/test_prostreno.html | 3078 ------------------------------ 1 file changed, 3078 deletions(-) delete mode 100644 libPrimaPlay/test_prostreno.html diff --git a/libPrimaPlay/test_prostreno.html b/libPrimaPlay/test_prostreno.html deleted file mode 100644 index d771f6f..0000000 --- a/libPrimaPlay/test_prostreno.html +++ /dev/null @@ -1,3078 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Prostřeno! | Prima PLAY - - - - - - - - - - - - - -
- -
- -
- - - -
-
- -
-
- -
- -
- - - -

-Prostřeno!

-

-

- -

- Více informací, fotografií a novinek naleznete na Stránce pořadu -

-

-Pořady, Dokumentární, Reality, Game-show - | ČR - | - -2015

-

- - - -

-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

- -
-
- - - -
-
-
- - - - -
-
-
-
- -
-
-
-
-
-
- - - -
-
-
-
- -
-
-
-
-
-
-
- - - -
-
-
-
-
- - -
-
-

Komentáře

-
-
-
-
-
- -
-
-
-
- -
-
- -
- - - -
- -
- - - - - - - - - - - - From 7736f4a03a1548f5f5c9bdf8004ddfcfad412405 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:50:41 +0100 Subject: [PATCH 16/28] Delete test_player_init.js --- libPrimaPlay/test_player_init.js | 187 ------------------------------- 1 file changed, 187 deletions(-) delete mode 100644 libPrimaPlay/test_player_init.js diff --git a/libPrimaPlay/test_player_init.js b/libPrimaPlay/test_player_init.js deleted file mode 100644 index 416a41e..0000000 --- a/libPrimaPlay/test_player_init.js +++ /dev/null @@ -1,187 +0,0 @@ - - - OK - - - - ]]> - - - - \ No newline at end of file From ce9cd44bc9218fa1575e5f076a5b4027fe77dbcf Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:50:48 +0100 Subject: [PATCH 17/28] Delete test_player_init-2.js --- libPrimaPlay/test_player_init-2.js | 220 ----------------------------- 1 file changed, 220 deletions(-) delete mode 100644 libPrimaPlay/test_player_init-2.js diff --git a/libPrimaPlay/test_player_init-2.js b/libPrimaPlay/test_player_init-2.js deleted file mode 100644 index 66330b6..0000000 --- a/libPrimaPlay/test_player_init-2.js +++ /dev/null @@ -1,220 +0,0 @@ - - - OK - - - - - ]]> - - - - From ad1a0fc8a4b004cf7eaca68f44bf5be369e5e1a1 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:51:09 +0100 Subject: [PATCH 18/28] Delete test_homepage.html --- libPrimaPlay/test_homepage.html | 7031 ------------------------------- 1 file changed, 7031 deletions(-) delete mode 100644 libPrimaPlay/test_homepage.html diff --git a/libPrimaPlay/test_homepage.html b/libPrimaPlay/test_homepage.html deleted file mode 100644 index 03b2d3b..0000000 --- a/libPrimaPlay/test_homepage.html +++ /dev/null @@ -1,7031 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Seriály a pořady TV Prima | Prima PLAY - - - - - - - - - - - - -
-

Webové stránky skupiny Prima používají soubory cookie k poskytování služeb, personalizaci reklam a analýze návštěvnosti. Používáním tohoto webu s užitím cookies souhlasíte.

- -
-
- -
- - -
-
- - - - -
-
-
-
-
-
- - - -
-
-
-
- -
-
-
-
-
-
-
- - - - - - - - - -
-
-
-
-
- - -
-
- -
- - - -
- -
- - - - - - - - - - - - From 92e2b0485a4084ae80462aa146ddfe87becb6e73 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:51:25 +0100 Subject: [PATCH 19/28] Delete test_homepage_logged.html --- libPrimaPlay/test_homepage_logged.html | 4759 ------------------------ 1 file changed, 4759 deletions(-) delete mode 100644 libPrimaPlay/test_homepage_logged.html diff --git a/libPrimaPlay/test_homepage_logged.html b/libPrimaPlay/test_homepage_logged.html deleted file mode 100644 index 0d2318b..0000000 --- a/libPrimaPlay/test_homepage_logged.html +++ /dev/null @@ -1,4759 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Seriály a pořady TV Prima | Prima PLAY - - - - - - - - - - - - -
- -
- - -
-
- - - - -
-
-
-
-
-
- - - -
-
-
-
- -
-
-
-
-
-
-
- - - - - - - - -
-
-
-
-
- - -
-
- -
- - - -
- -
- - - - - - - - - - - From 0adccce253481cd0887e104a3a3d99909861ac3a Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:51:32 +0100 Subject: [PATCH 20/28] Delete test_ajax_response_p.data --- libPrimaPlay/test_ajax_response_p.data | 776 ------------------------- 1 file changed, 776 deletions(-) delete mode 100644 libPrimaPlay/test_ajax_response_p.data diff --git a/libPrimaPlay/test_ajax_response_p.data b/libPrimaPlay/test_ajax_response_p.data deleted file mode 100644 index a7bc6f5..0000000 --- a/libPrimaPlay/test_ajax_response_p.data +++ /dev/null @@ -1,776 +0,0 @@ - - - OK - - - - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 87

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
- - - - -
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 85

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
- -
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 84

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
- -
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 83

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
-
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 82

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
- -
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 80

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
-
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 79

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
-
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 78

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
-
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 77

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
- -
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 75

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
-
- - -
-
- -
-Prostřeno! -
-
-
- -
-
Prostřeno!
-

Sezóna 12: Epizoda 74

-
-
-

Zábavná porce vašeho oblíbeného pořadu Prostřeno!

-
-
- -
-
-
-
- ]]> -
- -
\ No newline at end of file From 85f97de4d3f158cdc6c0d6e09a7cd4838a7f8b37 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:51:40 +0100 Subject: [PATCH 21/28] Delete test_ajax_response.data --- libPrimaPlay/test_ajax_response.data | 788 --------------------------- 1 file changed, 788 deletions(-) delete mode 100644 libPrimaPlay/test_ajax_response.data diff --git a/libPrimaPlay/test_ajax_response.data b/libPrimaPlay/test_ajax_response.data deleted file mode 100644 index 34c586f..0000000 --- a/libPrimaPlay/test_ajax_response.data +++ /dev/null @@ -1,788 +0,0 @@ - - - OK - - - - -
-
- -
-Největší esa mafie -
-
-
- -
-
Největší esa mafie
-

- - 1 Epizoda

-
-
-

Největší esa mafie

-
-
- -
-
-
- - -
- - -
-
- -
-neohroŽENY -
-
-
- -
-
neohroŽENY
-

- - 12 Epizod

-
-
-

neohroŽENY

-
-
- -
-
-
-
- - - - - - - -
- - -
-
- -
-Očima Josefa Klímy -
-
-
- -
-
Očima Josefa Klímy
-

2 Řady - , - 75 Epizod

-
-
-

Publicistická show

-
-
- -
-
-
-
-
- - -
- -
-
- -
- - - -
- - - - - ]]> -
- -
\ No newline at end of file From ecbe7b06175bd4a4455ac54f0ad2c584121b5605 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:51:46 +0100 Subject: [PATCH 22/28] Delete __init__.pyo --- libPrimaPlay/__init__.pyo | Bin 177 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 libPrimaPlay/__init__.pyo diff --git a/libPrimaPlay/__init__.pyo b/libPrimaPlay/__init__.pyo deleted file mode 100644 index 242eb57eec92c41d24e09229758ea1d94c7e1ae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmZSn%*)juv?Vr~0SXv_v;zv@#i>QbG3mLf zc_}fD1qCjNC5bUX`H8uidFe6U`6-z(i76@hdBrgWIi=~Dd3t4;DXIB-nFU3exruto uRWUi4NdX{sKu%(1OniK1US>&ryk0?N2?x-4o80`A(wtN~kRytLm;nH3nk|3; From 3124e5699a66410c40d1b5104064dfa6aeae0a84 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:51:53 +0100 Subject: [PATCH 23/28] Delete PrimaPlay_unittest.py --- libPrimaPlay/PrimaPlay_unittest.py | 243 ----------------------------- 1 file changed, 243 deletions(-) delete mode 100644 libPrimaPlay/PrimaPlay_unittest.py diff --git a/libPrimaPlay/PrimaPlay_unittest.py b/libPrimaPlay/PrimaPlay_unittest.py deleted file mode 100644 index 268aed5..0000000 --- a/libPrimaPlay/PrimaPlay_unittest.py +++ /dev/null @@ -1,243 +0,0 @@ -# -*- coding: utf-8 -*- - -import unittest -import os, sys -import PrimaPlay -import urllib2 - -os.chdir(os.path.dirname(sys.argv[0])) - -user = 'text@example.com'; -password = 'password'; - -class mockTime: - def time(self): - return 1450875766 - -class mockUserAgent: - def __init__(self, url_map = {}): - self.ua = PrimaPlay.UserAgent() - self.url_map = { - 'http://api.play-backend.iprima.cz/prehravac/init?_ts=1450875766&_infuse=1&productId=p135603': lambda url: 'test_player_init.js', - 'http://play.iprima.cz/': lambda url: 'test_homepage.html', - 'http://play.iprima.cz': lambda url: 'test_homepage.html', - 'http://play.iprima.cz/prostreno': lambda url: 'test_filters.html', - 'http://play.iprima.cz/vysledky-hledani-vse?query=prostreno': lambda url: 'test_search_page.html', - 'http://play.iprima.cz/prostreno-IX-9': lambda url: 'test_video_page.html', - 'http://play.iprima.cz/moje-play': lambda url: 'test_moje_play.html', - 'https://play.iprima.cz/tdi/login/nav/form?csrfToken=868668da5dd5d622ddee5738cf226523ccc6b708-1451918185394-55fbc39b6ea5a369d8723b76': lambda url: 'test_homepage_logged.html', - 'http://play.iprima.cz/prostreno?cat[]=EPISODE&src=p14877&sort[]=Rord&sort[]=latest': lambda url: 'test_prostreno_epizody.html', - 'http://prima-vod-prep.service.cdn.cra.cz/vod_Prima/_definst_/0000/5314/cze-ao-sd1-sd2-sd3-sd4-hd1-hd2.smil/playlist.m3u8': lambda url: self.raise_not_found(url), - 'http://prima-vod-prep.service.cdn.cra.cz/vod_Prima/_definst_/0001/4844/cze-ao-sd1-sd2-sd3-sd4-hd1-hd2.smil/playlist.m3u8': lambda url: 'test_homepage.html', - 'http://api.play-backend.iprima.cz/prehravac/init?_ts=1450875766&_infuse=1&productId=p148175': lambda url: 'test_player_init-2.js', - 'http://play.iprima.cz/cestovani-cervi-dirou-s-morganem-freemanem-ii-9': lambda url: 'test_video_page-2.html', - 'http://play.iprima.cz/prostreno?season=p14894&action=remove': lambda url: 'test_remove_all_filters.html', - 'https://play.iprima.cz/tdi/dalsi?filter=allShows&sort[]=title&offset=54': lambda url: 'test_ajax_response.data', - 'https://play.iprima.cz/tdi/dalsi/prostreno?season=p14877&sort[]=Rord&sort[]=latest&offset=18': lambda url: 'test_ajax_response_p.data' - } - self.url_map.update(url_map) - - def get(self, url): - filename = self._get_filename_from_map(url) - return self._get_cache(filename) - - def post(self, url, params): - filename = self._get_filename_from_map(url) - return self._get_cache(filename) - - def _get_filename_from_map(self, url): - if not self.url_map.has_key(url): - print "ERROR! not found in url map: " + url - raise urllib2.HTTPError(url, 500, 'Internal server error', None, None) - return - get_url = self.url_map[url] - return get_url(url) - - def _get_cache(self, filename): - fl = open(filename, 'r') - content = fl.read() - return content - - def raise_not_found(self, url): - raise urllib2.HTTPError(url, 404, 'Not found', None, None) - -class PrimaPlayUnitTest(unittest.TestCase): - - def setUp(self): - pass - - def test_get_player_init_link(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - - self.assertEqual(prima_play.get_player_init_url('p135603'), - 'http://api.play-backend.iprima.cz/prehravac/init?_ts=1450875766&_infuse=1&productId=p135603') - - def test_get_video_link__sd(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - - self.assertEqual(prima_play.get_video_link('p135603'), - 'http://prima-vod-prep.service.cdn.cra.cz/vod_Prima/_definst_/0000/5314/cze-ao-sd1-sd2-sd3-sd4.smil/playlist.m3u8') - - def test_get_video_link__hd(self): - prima_play = PrimaPlay.Parser(mockUserAgent({ - 'http://prima-vod-prep.service.cdn.cra.cz/vod_Prima/_definst_/0000/5314/cze-ao-sd1-sd2-sd3-sd4-hd1-hd2.smil/playlist.m3u8': lambda url: 'test_homepage.html', - }), mockTime()) - - self.assertEqual(prima_play.get_video_link('p135603'), - 'http://prima-vod-prep.service.cdn.cra.cz/vod_Prima/_definst_/0000/5314/cze-ao-sd1-sd2-sd3-sd4-hd1-hd2.smil/playlist.m3u8') - - def test_get_video_link__force_sd(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime(), False) - - self.assertEqual(prima_play.get_video_link('p135603'), - 'http://prima-vod-prep.service.cdn.cra.cz/vod_Prima/_definst_/0000/5314/cze-ao-sd1-sd2-sd3-sd4.smil/playlist.m3u8') - - def test_get_next_list(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - - next_list = prima_play.get_next_list('https://play.iprima.cz/tdi/dalsi?filter=allShows&sort[]=title&offset=54') - self.assertEqual(next_list.next_link, - 'https://play.iprima.cz/tdi/dalsi?filter=allShows&sort[]=title&offset=72') - - self.assertEqual(len(next_list.list), 18) - self.assertEqual(next_list.list[0].title, u'Největší esa mafie 1 Epizoda') - self.assertEqual(next_list.list[0].link, 'http://play.iprima.cz/nejvetsi-esa-mafie-1') - - def test_get_next_list_series(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - - next_list = prima_play.get_next_list('https://play.iprima.cz/tdi/dalsi/prostreno?season=p14877&sort[]=Rord&sort[]=latest&offset=18') - self.assertEqual(next_list.next_link, - 'https://play.iprima.cz/tdi/dalsi/prostreno?season=p14877&sort[]=Rord&sort[]=latest&offset=36') - - def test_get_page__player_page(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - page = prima_play.get_page('http://play.iprima.cz/prostreno-IX-9') - - self.assertEqual(page.player.title, u'Prostřeno!') - self.assertEqual(page.player.video_link, - 'http://prima-vod-prep.service.cdn.cra.cz/vod_Prima/_definst_/0000/5314/cze-ao-sd1-sd2-sd3-sd4.smil/playlist.m3u8') - self.assertEqual(page.player.image_url, - 'http://static.play-backend.iprima.cz/cdn/img/splash169/p135609-p183945/l_xhdpi') - self.assertEqual(page.player.description, - 'Zábavná porce vašeho oblíbeného pořadu Prostřeno!') - self.assertEqual(page.player.broadcast_date, '16.12.2015') - self.assertEqual(page.player.duration, '42 min') - self.assertEqual(page.player.year, '2015') - self.assertEqual(len(page.video_lists), 2) - self.assertEqual(page.video_lists[0].title, u'Další epizody') - self.assertEqual(page.video_lists[0].link, - 'http://play.iprima.cz/prostreno-IX-9?season=p135603&sort[]=ord&sort[]=Rlatest') - self.assertEqual(len(page.video_lists[0].item_list), 20) - self.assertEqual(page.video_lists[0].item_list[0].title, - u'Prostřeno! Sezóna 12: Epizoda 9') - self.assertEqual(page.video_lists[0].item_list[0].link, - 'http://play.iprima.cz/prostreno/videa/prostreno-xii-9') - - def test_get_page__player_page_2(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - page = prima_play.get_page('http://play.iprima.cz/cestovani-cervi-dirou-s-morganem-freemanem-ii-9') - - self.assertEqual(page.player.title, u'Cestování červí dírou s Morganem Freemanem II (7)') - self.assertEqual(page.player.video_link, - 'http://prima-vod-prep.service.cdn.cra.cz/vod_Prima/_definst_/0001/4844/cze-ao-sd1-sd2-sd3-sd4-hd1-hd2.smil/playlist.m3u8') - self.assertEqual(page.player.image_url, None) - - def test_get_page__homepage(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - page = prima_play.get_page('http://play.iprima.cz') - - self.assertEqual(page.player, None) - self.assertEqual(len(page.video_lists), 8) - self.assertEqual(page.video_lists[1].title, u'Pořady a Seriály') - self.assertEqual(page.video_lists[1].link, None) - self.assertEqual(len(page.video_lists[1].item_list), 19) - self.assertEqual(page.video_lists[1].item_list[0].title, - u'Ohnivý kuře 32 Epizod') - self.assertEqual(page.video_lists[1].item_list[0].link, - 'http://play.iprima.cz/ohnivy-kure') - self.assertTrue(page.video_lists[1].item_list[0].description); - self.assertEqual(len(page.filter_lists), 3) - self.assertEqual(page.filter_lists[0].title, u'Žánr') - self.assertEqual(len(page.filter_lists[0].item_list), 30) - self.assertEqual(page.filter_lists[0].item_list[0].title, u'Akční') - self.assertEqual(page.filter_lists[0].item_list[0].link, - 'http://play.iprima.cz?genres[]=p14198') - - def test_get_page__episodes(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - page = prima_play.get_page('http://play.iprima.cz/prostreno?cat[]=EPISODE&src=p14877&sort[]=Rord&sort[]=latest') - - self.assertEqual(page.player, None) - self.assertEqual(len(page.video_lists), 1) - self.assertEqual(page.video_lists[0].title, None) - self.assertEqual(page.video_lists[0].link, None) - self.assertEqual(page.video_lists[0].next_link, - 'https://play.iprima.cz/tdi/dalsi/prostreno?season=p14877&sort[]=Rord&sort[]=latest&offset=18') - self.assertEqual(len(page.video_lists[0].item_list), 18) - self.assertEqual(page.video_lists[0].item_list[0].title, - u'Praha Sezóna 3: Epizoda 10') - self.assertEqual(page.video_lists[0].item_list[0].link, - 'http://play.iprima.cz/prostreno-ix-10') - - self.assertEqual(len(page.filter_lists), 3) - self.assertEqual(page.filter_lists[0].title, u'Řada') - - self.assertEqual(len(page.filter_lists[0].item_list), 11) - self.assertEqual(page.filter_lists[0].item_list[0].title, u'Sezóna 1') - self.assertEqual(page.filter_lists[0].item_list[0].link, - 'http://play.iprima.cz/prostreno?season=p14883&sort[]=Rord&sort[]=latest') - - def test_get_page__search(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - page = prima_play.get_page('http://play.iprima.cz/vysledky-hledani-vse?query=prostreno') - - self.assertEqual(page.player, None) - self.assertEqual(len(page.video_lists), 3) - self.assertEqual(page.video_lists[0].title, u'Mezi seriály') - self.assertEqual(page.video_lists[0].link, - 'http://play.iprima.cz/vysledky-hledani?query=prostreno&searchGroup=SERIES') - self.assertEqual(len(page.video_lists[0].item_list), 2) - self.assertEqual(page.video_lists[0].item_list[0].title, - u'VIP PROSTŘENO! 3 Řady , 32 Epizod') - self.assertEqual(page.video_lists[0].item_list[0].link, - 'http://play.iprima.cz/vip-prostreno') - - def test_get_page__current_filters(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - page = prima_play.get_page('http://play.iprima.cz/prostreno') - - self.assertEqual(page.current_filters.link, - 'https://play.iprima.cz/tdi/filtr/zrusit/prostreno?availability=new&season=p14894') - self.assertEqual(len(page.current_filters.item_list), 2) - self.assertEqual(page.current_filters.item_list[0].title, u'Novinky') - self.assertEqual(page.current_filters.item_list[0].link, - 'http://play.iprima.cz/prostreno?season=p14894&action=remove') - - def test_get_redirect_from_remove_link(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - self.assertEqual(prima_play.get_redirect_from_remove_link("http://play.iprima.cz/prostreno?season=p14894&action=remove"), - 'http://play.iprima.cz/prostreno') - - def test_Account_login(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - parser_account = PrimaPlay.Account( user, password, prima_play ) - self.assertEqual(parser_account.login(), True) - - def test_get_page__moje_play(self): - prima_play = PrimaPlay.Parser(mockUserAgent(), mockTime()) - page = prima_play.get_page('http://play.iprima.cz/moje-play') - - self.assertEqual(page.player, None) - self.assertEqual(len(page.video_lists), 1) - self.assertEqual(page.video_lists[0].title, u'Moje oblíbené Spravovat oblíbené') - self.assertEqual(page.video_lists[0].link, None) - self.assertEqual(len(page.video_lists[0].item_list), 1) - self.assertEqual(page.video_lists[0].item_list[0].title, - u'Prostřeno! 13 Řad , 1023 Epizod') - self.assertEqual(page.video_lists[0].item_list[0].link, - 'http://play.iprima.cz/prostreno') - self.assertEqual(len(page.filter_lists), 0) - -if __name__ == '__main__': - unittest.main() From e2a0bd936e52485b07ed054966db17c0f74e85de Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:52:06 +0100 Subject: [PATCH 24/28] Delete .travis.yml --- .travis.yml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index df6e467..0000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: python -python: - - "2.6" - - "2.7" -# command to install dependencies -# install: "pip install -r requirements.txt" -# command to run tests -script: python libPrimaPlay/PrimaPlay_unittest.py From e3cbed0228c6692591fddf40f915679fd81cee3a Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:52:14 +0100 Subject: [PATCH 25/28] Delete .gitignore --- .gitignore | 57 ------------------------------------------------------ 1 file changed, 57 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index ba74660..0000000 --- a/.gitignore +++ /dev/null @@ -1,57 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] - -# C extensions -*.so - -# Distribution / packaging -.Python -env/ -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -*.egg-info/ -.installed.cfg -*.egg - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*,cover - -# Translations -*.mo -*.pot - -# Django stuff: -*.log - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ From feea0e73f328637c72b538aba5d60bcb74375375 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:52:28 +0100 Subject: [PATCH 26/28] Delete default.py --- default.py | 274 ----------------------------------------------------- 1 file changed, 274 deletions(-) delete mode 100644 default.py diff --git a/default.py b/default.py deleted file mode 100644 index a54b3b1..0000000 --- a/default.py +++ /dev/null @@ -1,274 +0,0 @@ -# -*- coding: utf-8 -*- -import os -import sys -import xbmc -import xbmcgui -import xbmcplugin -import xbmcaddon -import traceback -import time -from xbmcplugin import addDirectoryItem -from libPrimaPlay import PrimaPlay -import urllib -from urlparse import parse_qs - -_addon_ = xbmcaddon.Addon('plugin.video.iprima.cz') -_scriptname_ = _addon_.getAddonInfo('name') -_version_ = _addon_.getAddonInfo('version') - -############################################################################### -def log(msg, level=xbmc.LOGDEBUG): - if type(msg).__name__ == 'unicode': - msg = msg.encode('utf-8') - xbmc.log("[%s] %s" % (_scriptname_, msg.__str__()), level) - -def logDbg(msg): - log(msg, level=xbmc.LOGDEBUG) - -def logErr(msg): - log(msg, level=xbmc.LOGERROR) - -def _exception_log(exc_type, exc_value, exc_traceback): - logErr(traceback.format_exception(exc_type, exc_value, exc_traceback)) - xbmcgui.Dialog().notification(_scriptname_, _toString(exc_value), xbmcgui.NOTIFICATION_ERROR) - -def _toString(text): - if type(text).__name__ == 'unicode': - output = text.encode('utf-8') - else: - output = str(text) - return output - -try: - _icon_ = xbmc.translatePath(os.path.join(_addon_.getAddonInfo('path'), 'icon.png')) - _handle_ = int(sys.argv[1]) - _baseurl_ = sys.argv[0] - _hd_enabled = False; - if (_addon_.getSetting('hd_enabled') == 'true'): _hd_enabled = True - _play_parser = PrimaPlay.Parser(hd_enabled=_hd_enabled) - _play_account = None - if (_addon_.getSetting('account_enabled') == 'true'): - _play_account = PrimaPlay.Account( _addon_.getSetting('account_email'), _addon_.getSetting('account_password'), _play_parser ) - - xbmcplugin.setContent(_handle_, 'tvshows') - - def main_menu(pageurl, list_only = False): - page = _play_parser.get_page(pageurl+'?strana=1') - if not list_only: - if page.player: - add_player(page.player) - else: - add_search_menu() - add_account_menu() - add_filters(page, pageurl) - - for video_list in page.video_lists: - if video_list.title: add_title(video_list) - add_item_list(video_list.item_list) - if video_list.next_link: add_next_link(video_list.next_link) - - def shows_menu(pageurl, list_only = False): - page = _play_parser.get_shows(pageurl) - for video_list in page.video_lists: - if video_list.title: add_show(video_list) - add_item_list(video_list.item_list) - if video_list.next_link: add_next_link(video_list.next_link) - - def show_navigation(pageurl, list_only = False): - page = _play_parser.get_show_navigation(pageurl) - for video_list in page.video_lists: - if video_list.title: add_title(video_list) - - def next_menu(nexturl): - next_list = _play_parser.get_next_list(nexturl) - add_item_list(next_list.list) - if next_list.next_link: add_next_link(next_list.next_link) - - def search(): - keyboard = xbmc.Keyboard('',u'Hledej') - keyboard.doModal() - if (not keyboard.isConfirmed()): return - search_query = keyboard.getText() - if len(search_query) <= 1: return - main_menu(_play_parser.get_search_url(search_query)) - - def account(): - if not _play_account.login(): - li = list_item('[B]Chyba přihlášení![/B] Zkontrolujte e-mail a heslo.') - xbmcplugin.addDirectoryItem(handle=_handle_, url='#', listitem=li, isFolder=True) - return - main_menu(_play_account.video_list_url, True) - - def remove_filter(removefilterurl): - link = _play_parser.get_redirect_from_remove_link(removefilterurl) - main_menu(link) - - def manage_filter(pageurl, filterid): - if filterid is None: - main_menu(pageurl) - return - - page = _play_parser.get_page(pageurl) - dlg = xbmcgui.Dialog() - filter_list = page.filter_lists[filterid] - add_id = dlg.select(filter_list.title, map(lambda x: x.title, filter_list.item_list)) - if add_id < 0: - main_menu(pageurl) - return - - main_menu(filter_list.item_list[add_id].link) - - def add_filters(page, pageurl): - if page.current_filters: - li = list_item(u'[B]Odstranit nastavené filtry: [/B]' + ", ".join(map(lambda x: x.title, page.current_filters.item_list))) - url = get_menu_link( action = 'FILTER-REMOVE', linkurl = page.current_filters.link ) - xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) - for filterid, filter_list in enumerate(page.filter_lists): - li = list_item(u'[B]Nastav filtr: [/B]' + filter_list.title) - url = get_menu_link( action = 'FILTER-MANAGE', linkurl = pageurl, filterid = filterid ) - xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) - - def add_search_menu(): - li = list_item(u'[B]Hledej[/B]') - url = get_menu_link( action = 'SEARCH' ) - xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) - - def add_account_menu(): - if _play_account is None: return - li = list_item(u'[B]Můj PLAY[/B]') - url = get_menu_link( action = 'ACCOUNT' ) - xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) - - def add_show(video_list): - url = '#' - thumbnail = None - if video_list.link: - url = get_menu_link( action = 'SHOW-NAV', linkurl = video_list.link ) - if video_list.thumbnail: - thumbnail = video_list.thumbnail - li = list_item(video_list.title, thumbnail) - xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) - - def add_title(video_list): - li = list_item('[B]'+video_list.title+'[/B]') - url = '#' - if video_list.link: - url = get_menu_link( action = 'PAGE', linkurl = video_list.link ) - xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) - - def add_item_list(item_list): - for item in item_list: - - li = list_item(item.title, item.image_url, item.description, item.broadcast_date, item.year) - url = item.link - if item.isFolder: url = get_menu_link( action = 'PAGE', linkurl = item.link ) - - xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=item.isFolder) - - def add_next_link(next_link): - li = list_item(u'Další stránka') - url = get_menu_link( action = 'PAGE-NEXT', linkurl = next_link ) - xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) - - def add_player(player): - li = list_item(u"[B]Přehraj:[/B] "+player.title, player.image_url, player.description, player.broadcast_date, player.year) - xbmcplugin.addDirectoryItem(handle=_handle_, url=player.video_link, listitem=li, isFolder=False) - - def play_video(link): - product_id = _play_parser.get_productID(link) - - video = _play_parser.get_video(product_id) - if video is None: - raise Exception('Video není dostupné') - return - - video_item = xbmcgui.ListItem(path=video.link) - video_item.setProperty("IsPlayable", "true") - video_item.setInfo(type='video', infoLabels={'Title': video.title}) - video_item.setThumbnailImage(video.image_url) - xbmcplugin.setResolvedUrl(handle=_handle_, succeeded=True, listitem=video_item) - xbmc.Player().play(video.link, video_item) - - def list_item(label, thumbnail = None, description = None, broadcast_date = None, year = None): - li = xbmcgui.ListItem(label) - liVideo = { - 'title': label, - 'plot': description, - 'year': year, - 'aired': broadcast_date - } - if thumbnail: - li.setThumbnailImage(thumbnail) - li.setArt({'poster': thumbnail, 'fanart': thumbnail}) - li.setInfo("video", liVideo) - return li - - def get_menu_link(**kwargs): - return _baseurl_ + "?" + urllib.urlencode(kwargs) - - def get_params(): - if len(sys.argv[2])<2: return [] - encoded_query = sys.argv[2].lstrip('?') - decoded_params = parse_qs(encoded_query) - param = {} - for key in decoded_params: - if len(decoded_params[key]) <= 0: continue - param[key] = decoded_params[key][0] - return param - - def assign_params(params): - for param in params: - try: - globals()[param] = params[param] - except: - pass - - action = None - linkurl = None - filterid = None - - params = get_params() - assign_params(params) - logDbg("PrimaPlay Parameters!!!") - logDbg("action: "+str(action)) - logDbg("linkurl: "+str(linkurl)) - logDbg("filterid: "+str(filterid)) - try: - if action == "FILTER-REMOVE": - remove_filter(linkurl) - #xbmcplugin.endOfDirectory(_handle_, updateListing=True) - if action == "FILTER-MANAGE": - manage_filter(linkurl, int(filterid)) - #xbmcplugin.endOfDirectory(_handle_, updateListing=True) - elif action == "PAGE-NEXT": - xbmcplugin.setContent(_handle_, 'episodes') - next_menu(linkurl) - #xbmcplugin.endOfDirectory(_handle_, updateListing=True) - elif action == "SEARCH": - search() - #xbmcplugin.endOfDirectory(_handle_) - elif action == "ACCOUNT": - account() - #xbmcplugin.endOfDirectory(_handle_) - elif action == "SHOW-NAV": - xbmcplugin.setContent(_handle_, 'episodes') - show_navigation(linkurl) - #xbmcplugin.endOfDirectory(_handle_) - elif action == "PAGE": - xbmcplugin.setContent(_handle_, 'episodes') - main_menu(linkurl, list_only=True) - #xbmcplugin.endOfDirectory(_handle_) - elif action == "PLAY": - play_video(linkurl) - else: - ts = int(time.time()) - shows_menu("https://prima.iprima.cz/iprima-api/ListWithFilter/Series/Content?ts="+ str(ts) +"&filter=all&featured_queue_name=iprima:hp-featured-series") - #xbmcplugin.endOfDirectory(_handle_) - xbmcplugin.endOfDirectory(_handle_) - except Exception as ex: - exc_type, exc_value, exc_traceback = sys.exc_info() - _exception_log(exc_type, exc_value, exc_traceback) - -except Exception as ex: - exc_type, exc_value, exc_traceback = sys.exc_info() - _exception_log(exc_type, exc_value, exc_traceback) From d1cea3160c876da74b2cb9991f9ec976fd0b0ce6 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Fri, 24 Jan 2020 21:52:52 +0100 Subject: [PATCH 27/28] [plugin.video.iprima.cz] 0.4.7 --- addon.py | 276 ++++++++++++++++++++++++++++++++++++++ addon.xml | 16 ++- libPrimaPlay/PrimaPlay.py | 68 +++++----- 3 files changed, 320 insertions(+), 40 deletions(-) create mode 100644 addon.py diff --git a/addon.py b/addon.py new file mode 100644 index 0000000..a8868df --- /dev/null +++ b/addon.py @@ -0,0 +1,276 @@ +# -*- coding: utf-8 -*- +import os +import sys +import xbmc +import xbmcgui +import xbmcplugin +import xbmcaddon +import traceback +import time +from xbmcplugin import addDirectoryItem +from libPrimaPlay import PrimaPlay +import urllib +from urlparse import parse_qs + +_addon_ = xbmcaddon.Addon('plugin.video.iprima.cz') +_scriptname_ = _addon_.getAddonInfo('name') +_version_ = _addon_.getAddonInfo('version') + +############################################################################### +def log(msg, level=xbmc.LOGDEBUG): + if type(msg).__name__ == 'unicode': + msg = msg.encode('utf-8') + xbmc.log("[%s] %s" % (_scriptname_, msg.__str__()), level) + +def logDbg(msg): + log(msg, level=xbmc.LOGDEBUG) + +def logErr(msg): + log(msg, level=xbmc.LOGERROR) + +def _exception_log(exc_type, exc_value, exc_traceback): + logErr(traceback.format_exception(exc_type, exc_value, exc_traceback)) + xbmcgui.Dialog().notification(_scriptname_, _toString(exc_value), xbmcgui.NOTIFICATION_ERROR) + +def _toString(text): + if type(text).__name__ == 'unicode': + output = text.encode('utf-8') + else: + output = str(text) + return output + +try: + _icon_ = xbmc.translatePath(os.path.join(_addon_.getAddonInfo('path'), 'icon.png')) + _handle_ = int(sys.argv[1]) + _baseurl_ = sys.argv[0] + _hd_enabled = False; + if (_addon_.getSetting('hd_enabled') == 'true'): _hd_enabled = True + _play_parser = PrimaPlay.Parser(hd_enabled=_hd_enabled) + _play_account = None + if (_addon_.getSetting('account_enabled') == 'true'): + _play_account = PrimaPlay.Account( _addon_.getSetting('account_email'), _addon_.getSetting('account_password'), _play_parser ) + + xbmcplugin.setContent(_handle_, 'tvshows') + + def main_menu(pageurl, list_only = False): + page = _play_parser.get_page(pageurl+'?strana=1') + if not list_only: + if page.player: + add_player(page.player) + else: + add_search_menu() + add_account_menu() + add_filters(page, pageurl) + + for video_list in page.video_lists: + if video_list.title: add_title(video_list) + add_item_list(video_list.item_list) + if video_list.next_link: add_next_link(video_list.next_link) + + def shows_menu(pageurl, list_only = False): + page = _play_parser.get_shows(pageurl) + for video_list in page.video_lists: + if video_list.title: add_show(video_list) + add_item_list(video_list.item_list) + if video_list.next_link: add_next_link(video_list.next_link) + + def show_navigation(pageurl, list_only = False): + page = _play_parser.get_show_navigation(pageurl) + for video_list in page.video_lists: + if video_list.title: add_title(video_list) + + def next_menu(nexturl): + next_list = _play_parser.get_next_list(nexturl) + add_item_list(next_list.list) + if next_list.next_link: add_next_link(next_list.next_link) + + def search(): + keyboard = xbmc.Keyboard('',u'Hledej') + keyboard.doModal() + if (not keyboard.isConfirmed()): return + search_query = keyboard.getText() + if len(search_query) <= 1: return + main_menu(_play_parser.get_search_url(search_query)) + + def account(): + if not _play_account.login(): + li = list_item('[B]Chyba přihlášení![/B] Zkontrolujte e-mail a heslo.') + xbmcplugin.addDirectoryItem(handle=_handle_, url='#', listitem=li, isFolder=True) + return + main_menu(_play_account.video_list_url, True) + + def remove_filter(removefilterurl): + link = _play_parser.get_redirect_from_remove_link(removefilterurl) + main_menu(link) + + def manage_filter(pageurl, filterid): + if filterid is None: + main_menu(pageurl) + return + + page = _play_parser.get_page(pageurl) + dlg = xbmcgui.Dialog() + filter_list = page.filter_lists[filterid] + add_id = dlg.select(filter_list.title, map(lambda x: x.title, filter_list.item_list)) + if add_id < 0: + main_menu(pageurl) + return + + main_menu(filter_list.item_list[add_id].link) + + def add_filters(page, pageurl): + if page.current_filters: + li = list_item(u'[B]Odstranit nastavené filtry: [/B]' + ", ".join(map(lambda x: x.title, page.current_filters.item_list))) + url = get_menu_link( action = 'FILTER-REMOVE', linkurl = page.current_filters.link ) + xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) + for filterid, filter_list in enumerate(page.filter_lists): + li = list_item(u'[B]Nastav filtr: [/B]' + filter_list.title) + url = get_menu_link( action = 'FILTER-MANAGE', linkurl = pageurl, filterid = filterid ) + xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) + + def add_search_menu(): + li = list_item(u'[B]Hledej[/B]') + url = get_menu_link( action = 'SEARCH' ) + xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) + + def add_account_menu(): + if _play_account is None: return + li = list_item(u'[B]Můj PLAY[/B]') + url = get_menu_link( action = 'ACCOUNT' ) + xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) + + def add_show(video_list): + url = '#' + thumbnail='' + if video_list.link: + url = get_menu_link( action = 'SHOW-NAV', linkurl = video_list.link ) + if video_list.thumbnail: + thumbnail = video_list.thumbnail + li = list_item(video_list.title, thumbnail) + xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) + + def add_title(video_list): + li = list_item('[B]'+video_list.title+'[/B]') + url = '#' + if video_list.link: + url = get_menu_link( action = 'PAGE', linkurl = video_list.link ) + xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) + + def add_item_list(item_list): + for item in item_list: + + li = list_item(item.title, item.image_url, item.description, item.broadcast_date, item.year) + url = item.link + if item.isFolder: url = get_menu_link( action = 'PAGE', linkurl = item.link ) + + xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=item.isFolder) + + def add_next_link(next_link): + li = list_item(u'Další stránka') + url = get_menu_link( action = 'PAGE-NEXT', linkurl = next_link ) + xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) + + def add_player(player): + li = list_item(u"[B]Přehraj:[/B] "+player.title, player.image_url, player.description, player.broadcast_date, player.year) + xbmcplugin.addDirectoryItem(handle=_handle_, url=player.video_link, listitem=li, isFolder=False) + + def play_video(link): + product_id = _play_parser.get_productID(link) + + video = _play_parser.get_video(product_id) + if video is None: + raise Exception('Video není dostupné') + return + + video_item = xbmcgui.ListItem(path=video.link) + #video_item.setProperty("IsPlayable", "true") + video_item.setProperty('inputstreamaddon', 'inputstream.adaptive') + video_item.setProperty('inputstream.adaptive.manifest_type', 'hls') + video_item.setInfo(type='video', infoLabels={'Title': video.title}) + video_item.setThumbnailImage(video.image_url) + xbmcplugin.setResolvedUrl(handle=_handle_, succeeded=True, listitem=video_item) + + def list_item(label, thumbnail = None, description = None, broadcast_date = None, year = None): + li = xbmcgui.ListItem(label) + liVideo = { + 'title': label, + 'plot': description, + 'year': year, + 'aired': broadcast_date + } + if thumbnail: + li.setThumbnailImage(thumbnail) + li.setProperty("IsPlayable", "true") + li.setArt({'poster': thumbnail, 'fanart': thumbnail}) + li.setInfo("video", liVideo) + return li + + def get_menu_link(**kwargs): + return _baseurl_ + "?" + urllib.urlencode(kwargs) + + def get_params(): + if len(sys.argv[2])<2: return [] + encoded_query = sys.argv[2].lstrip('?') + decoded_params = parse_qs(encoded_query) + param = {} + for key in decoded_params: + if len(decoded_params[key]) <= 0: continue + param[key] = decoded_params[key][0] + return param + + def assign_params(params): + for param in params: + try: + globals()[param] = params[param] + except: + pass + + action = None + linkurl = None + filterid = None + + params = get_params() + assign_params(params) + logDbg("PrimaPlay Parameters!!!") + logDbg("action: "+str(action)) + logDbg("linkurl: "+str(linkurl)) + logDbg("filterid: "+str(filterid)) + try: + if action == "FILTER-REMOVE": + remove_filter(linkurl) + #xbmcplugin.endOfDirectory(_handle_, updateListing=True) + if action == "FILTER-MANAGE": + manage_filter(linkurl, int(filterid)) + #xbmcplugin.endOfDirectory(_handle_, updateListing=True) + elif action == "PAGE-NEXT": + xbmcplugin.setContent(_handle_, 'episodes') + next_menu(linkurl) + #xbmcplugin.endOfDirectory(_handle_, updateListing=True) + elif action == "SEARCH": + search() + #xbmcplugin.endOfDirectory(_handle_) + elif action == "ACCOUNT": + account() + #xbmcplugin.endOfDirectory(_handle_) + elif action == "SHOW-NAV": + xbmcplugin.setContent(_handle_, 'episodes') + show_navigation(linkurl) + #xbmcplugin.endOfDirectory(_handle_) + elif action == "PAGE": + xbmcplugin.setContent(_handle_, 'episodes') + main_menu(linkurl, list_only=True) + #xbmcplugin.endOfDirectory(_handle_) + elif action == "PLAY": + play_video(linkurl) + else: + ts = int(time.time()) + shows_menu("https://prima.iprima.cz/iprima-api/ListWithFilter/Series/Content?ts="+ str(ts) +"&featured_queue_name=iprima%3Aprima-featured-series&large_size_items_cnt=3&channel_restriction=prima") + #xbmcplugin.endOfDirectory(_handle_) + xbmcplugin.endOfDirectory(_handle_) + except Exception as ex: + exc_type, exc_value, exc_traceback = sys.exc_info() + _exception_log(exc_type, exc_value, exc_traceback) + +except Exception as ex: + exc_type, exc_value, exc_traceback = sys.exc_info() + _exception_log(exc_type, exc_value, exc_traceback) diff --git a/addon.xml b/addon.xml index 29fce3a..a0ae1f6 100644 --- a/addon.xml +++ b/addon.xml @@ -1,17 +1,23 @@ - + - - + video iPrima - Plugin to play videos from iPrima archive - Plugin nabízí přístup do archivu iPrima. + Celé seriály, pořady, filmy, dokumenty, včetně exkluzivních záběrů a bonusů zdarma on-line. Je na co se dívat na iprima.cz. + Celé seriály, pořady, filmy, dokumenty, včetně exkluzivních záběrů a bonusů zdarma on-line. Je na co se dívat na iprima.cz. all https://github.com/alladdin/plugin.video.primaplay + +v0.4.7 (24.01.2020) +- Zrychleno načítání úvodní stránky pořadů +- Zrychleno načítání videa +- Přechod na InputStream Adaptive (HLS) +- Zrušení závislosti na YTB + diff --git a/libPrimaPlay/PrimaPlay.py b/libPrimaPlay/PrimaPlay.py index 1bee915..d89096f 100644 --- a/libPrimaPlay/PrimaPlay.py +++ b/libPrimaPlay/PrimaPlay.py @@ -11,7 +11,7 @@ import xbmc import xbmcaddon import json -import YDStreamExtractor +#import YDStreamExtractor __author__ = "Ladislav Dokulil" __license__ = "GPL 2" @@ -104,49 +104,47 @@ def get_productID(self, episode_link): content = self.ua.get(episode_link) product_id_re = re.compile('src="https://api.play-backend.iprima.cz/prehravac/embedded\?id=(.*?)"', re.S) - youtube_re = re.compile('src="https://www.youtube.com/embed/([^"\?]*)', re.S) + #youtube_re = re.compile('src="https://www.youtube.com/embed/([^"\?]*)', re.S) product_id_result = product_id_re.search(content) - youtube_result = None + #youtube_result = None - if product_id_result is None: + '''if product_id_result is None: youtube_result = youtube_re.search(content) if youtube_result is None: return None product_id = 'yt_'+youtube_result.group(1) - else: - product_id = product_id_result.group(1) - + else:''' + product_id = product_id_result.group(1) return product_id def get_video(self, productID): - if 'yt_' in productID: - yt_url = 'https://www.youtube.com/watch?v=' + productID.split('yt_',1)[1] - yt_video = YDStreamExtractor.getVideoInfo(yt_url, quality = 3) - return Item(yt_video.title, yt_video.streamURL(), yt_video.thumbnail) - else: - content = self.ua.get(self.get_player_init_url(productID)) - - link_re = re.compile("'?src'?\s*:\s+'(https?://[^']+\\.m3u8.*)'") - title_re = re.compile("programName: '(.*?)',") - thumb_re = re.compile("thumbnails: {[\s\n]*url: '(.*?)\$") - - sd_link = link_re.search(content) - if sd_link is None: return None - - hd_link = None - if self.hd_enabled: hd_link = self.try_get_hd_link(sd_link.group(1)) - if hd_link: return hd_link - - title = title_re.search(content).group(1) - - thumb = None - thumb_result = thumb_re.search(content) - if thumb_result: - thumb = thumb_result.group(1) + '010.jpg' - - return Item(title, sd_link.group(1), thumb) + #if 'yt_' in productID: + #yt_url = 'https://www.youtube.com/watch?v=' + productID.split('yt_',1)[1] + #yt_video = YDStreamExtractor.getVideoInfo(yt_url, quality = 3) + #return Item(yt_video.title, yt_video.streamURL(), yt_video.thumbnail) + #else: + content = self.ua.get(self.get_player_init_url(productID)) + + link_re = re.compile("'?src'?\s*:\s+'(https?://[^']+\\.m3u8.*)'") + title_re = re.compile("programName: '(.*?)',") + thumb_re = re.compile("thumbnails: {[\s\n]*url: '(.*?)\$") + + sd_link = link_re.search(content) + if sd_link is None: return None + + #hd_link = None + #if self.hd_enabled: hd_link = self.try_get_hd_link(sd_link.group(1)) + #if hd_link: return hd_link + title = title_re.search(content).group(1) + + thumb = None + thumb_result = thumb_re.search(content) + if thumb_result: + thumb = thumb_result.group(1) + '010.jpg' + + return Item(title, sd_link.group(1), thumb) - def try_get_hd_link(self, sd_link): + '''def try_get_hd_link(self, sd_link): hd_link = re.sub(".smil/", "-hd1-hd2.smil/", sd_link) try: self.ua.get(hd_link) @@ -156,7 +154,7 @@ def try_get_hd_link(self, sd_link): else: raise - return hd_link + return hd_link''' def get_next_list(self, link): content = self.ua.get(link) From 40d043c0eaf5137dbd4011f6eba781ca8b2b3183 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Sat, 25 Jan 2020 18:34:12 +0100 Subject: [PATCH 28/28] [plugin.video.iprima.cz] 0.4.8 --- addon.py | 22 +++++------------- addon.xml | 8 +++++-- libPrimaPlay/PrimaPlay.py | 49 +++------------------------------------ resources/settings.xml | 10 ++------ 4 files changed, 17 insertions(+), 72 deletions(-) diff --git a/addon.py b/addon.py index a8868df..15f0cb1 100644 --- a/addon.py +++ b/addon.py @@ -43,13 +43,12 @@ def _toString(text): _icon_ = xbmc.translatePath(os.path.join(_addon_.getAddonInfo('path'), 'icon.png')) _handle_ = int(sys.argv[1]) _baseurl_ = sys.argv[0] - _hd_enabled = False; + _hd_enabled = False if (_addon_.getSetting('hd_enabled') == 'true'): _hd_enabled = True _play_parser = PrimaPlay.Parser(hd_enabled=_hd_enabled) - _play_account = None - if (_addon_.getSetting('account_enabled') == 'true'): - _play_account = PrimaPlay.Account( _addon_.getSetting('account_email'), _addon_.getSetting('account_password'), _play_parser ) - + #_play_account = None + #if (_addon_.getSetting('account_enabled') == 'true'): + #_play_account = PrimaPlay.Account( _addon_.getSetting('account_email'), _addon_.getSetting('account_password'), _play_parser ) xbmcplugin.setContent(_handle_, 'tvshows') def main_menu(pageurl, list_only = False): @@ -147,6 +146,7 @@ def add_show(video_list): if video_list.thumbnail: thumbnail = video_list.thumbnail li = list_item(video_list.title, thumbnail) + xbmcplugin.addSortMethod( handle = _handle_, sortMethod=xbmcplugin.SORT_METHOD_LABEL ) xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=True) def add_title(video_list): @@ -162,7 +162,6 @@ def add_item_list(item_list): li = list_item(item.title, item.image_url, item.description, item.broadcast_date, item.year) url = item.link if item.isFolder: url = get_menu_link( action = 'PAGE', linkurl = item.link ) - xbmcplugin.addDirectoryItem(handle=_handle_, url=url, listitem=li, isFolder=item.isFolder) def add_next_link(next_link): @@ -183,7 +182,6 @@ def play_video(link): return video_item = xbmcgui.ListItem(path=video.link) - #video_item.setProperty("IsPlayable", "true") video_item.setProperty('inputstreamaddon', 'inputstream.adaptive') video_item.setProperty('inputstream.adaptive.manifest_type', 'hls') video_item.setInfo(type='video', infoLabels={'Title': video.title}) @@ -238,34 +236,26 @@ def assign_params(params): try: if action == "FILTER-REMOVE": remove_filter(linkurl) - #xbmcplugin.endOfDirectory(_handle_, updateListing=True) if action == "FILTER-MANAGE": manage_filter(linkurl, int(filterid)) - #xbmcplugin.endOfDirectory(_handle_, updateListing=True) elif action == "PAGE-NEXT": xbmcplugin.setContent(_handle_, 'episodes') next_menu(linkurl) - #xbmcplugin.endOfDirectory(_handle_, updateListing=True) elif action == "SEARCH": search() - #xbmcplugin.endOfDirectory(_handle_) elif action == "ACCOUNT": account() - #xbmcplugin.endOfDirectory(_handle_) elif action == "SHOW-NAV": xbmcplugin.setContent(_handle_, 'episodes') show_navigation(linkurl) - #xbmcplugin.endOfDirectory(_handle_) elif action == "PAGE": xbmcplugin.setContent(_handle_, 'episodes') main_menu(linkurl, list_only=True) - #xbmcplugin.endOfDirectory(_handle_) elif action == "PLAY": play_video(linkurl) else: ts = int(time.time()) - shows_menu("https://prima.iprima.cz/iprima-api/ListWithFilter/Series/Content?ts="+ str(ts) +"&featured_queue_name=iprima%3Aprima-featured-series&large_size_items_cnt=3&channel_restriction=prima") - #xbmcplugin.endOfDirectory(_handle_) + shows_menu("https://prima.iprima.cz/iprima-api/ListWithFilter/Series/Content?ts="+ str(ts) +"&featured_queue_name=iprima%3Aprima-featured-series&large_size_items_cnt=3") xbmcplugin.endOfDirectory(_handle_) except Exception as ex: exc_type, exc_value, exc_traceback = sys.exc_info() diff --git a/addon.xml b/addon.xml index a0ae1f6..d7b0902 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + @@ -8,11 +8,15 @@ iPrima - Celé seriály, pořady, filmy, dokumenty, včetně exkluzivních záběrů a bonusů zdarma on-line. Je na co se dívat na iprima.cz. + Celé seriály, pořady, filmy, dokumenty, včetně exkluzivních záběrů a bonusů zdarma on-line. Je na co se dívat na iprima.cz. Celé seriály, pořady, filmy, dokumenty, včetně exkluzivních záběrů a bonusů zdarma on-line. Je na co se dívat na iprima.cz. all https://github.com/alladdin/plugin.video.primaplay +v0.4.8 (25.01.2020) +- Zrychleno načítání úvodní stránky pořadů (ostatní kanály) +- Abecední řazení při rychlém rolování + v0.4.7 (24.01.2020) - Zrychleno načítání úvodní stránky pořadů - Zrychleno načítání videa diff --git a/libPrimaPlay/PrimaPlay.py b/libPrimaPlay/PrimaPlay.py index d89096f..568154c 100644 --- a/libPrimaPlay/PrimaPlay.py +++ b/libPrimaPlay/PrimaPlay.py @@ -11,7 +11,6 @@ import xbmc import xbmcaddon import json -#import YDStreamExtractor __author__ = "Ladislav Dokulil" __license__ = "GPL 2" @@ -31,7 +30,7 @@ def logDbg(msg): log(msg, level=xbmc.LOGDEBUG) class UserAgent(object): - def __init__(self, session_id = None, agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0'): + def __init__(self, session_id = None, agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'): self.agent = agent self.play_url = 'https://prima.iprima.cz' self.cookie_domain = 'prima.iprima.cz' @@ -104,25 +103,11 @@ def get_productID(self, episode_link): content = self.ua.get(episode_link) product_id_re = re.compile('src="https://api.play-backend.iprima.cz/prehravac/embedded\?id=(.*?)"', re.S) - #youtube_re = re.compile('src="https://www.youtube.com/embed/([^"\?]*)', re.S) - product_id_result = product_id_re.search(content) - #youtube_result = None - - '''if product_id_result is None: - youtube_result = youtube_re.search(content) - if youtube_result is None: return None - product_id = 'yt_'+youtube_result.group(1) - else:''' product_id = product_id_result.group(1) return product_id def get_video(self, productID): - #if 'yt_' in productID: - #yt_url = 'https://www.youtube.com/watch?v=' + productID.split('yt_',1)[1] - #yt_video = YDStreamExtractor.getVideoInfo(yt_url, quality = 3) - #return Item(yt_video.title, yt_video.streamURL(), yt_video.thumbnail) - #else: content = self.ua.get(self.get_player_init_url(productID)) link_re = re.compile("'?src'?\s*:\s+'(https?://[^']+\\.m3u8.*)'") @@ -153,7 +138,6 @@ def get_video(self, productID): return None else: raise - return hd_link''' def get_next_list(self, link): @@ -233,34 +217,7 @@ def get_redirect_from_remove_link(self, link): redirect_result = redirect_re.search(content) if redirect_result is None: return None return self.make_full_link(redirect_result.group(1), link) - """ - def get_page_player(self, content): - title_re = re.compile('', re.S) - description_re = re.compile('', re.S) - additional_info_re = re.compile('[^<]*:([^\|]*)\|([^\|]*)\|([^<]*)

', re.S) - fake_player_re = re.compile('
[^<]*(?: - - - - - - - - + +