From 8f59c16eab1770baadddf19016ce1b93eb0367c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Fri, 19 Mar 2021 16:45:26 +0100 Subject: [PATCH] Improve artwork (#79) * Update channel logo's * Improve artwork selection * Filter out
in descriptions --- resources/lib/kodiutils.py | 1 + resources/lib/modules/catalog.py | 12 ++++++--- resources/lib/modules/iptvmanager.py | 2 +- resources/lib/modules/menu.py | 18 +++++++++---- resources/lib/modules/tvguide.py | 3 +-- resources/lib/viervijfzes/content.py | 39 +++++++++++++-------------- resources/lib/viervijfzes/epg.py | 12 ++++----- resources/lib/viervijfzes/search.py | 2 +- resources/logos/play4.png | Bin 7260 -> 4045 bytes resources/logos/play5.png | Bin 5103 -> 3426 bytes resources/logos/play6.png | Bin 9613 -> 4568 bytes tests/test_api.py | 2 +- 12 files changed, 52 insertions(+), 39 deletions(-) diff --git a/resources/lib/kodiutils.py b/resources/lib/kodiutils.py index 6717930..673299f 100644 --- a/resources/lib/kodiutils.py +++ b/resources/lib/kodiutils.py @@ -44,6 +44,7 @@ HTML_MAPPING = [ (re.compile(r'
  • ', re.I), '- '), (re.compile(r']+)>', re.I), '\n'), (re.compile(r']+)>', re.I), ''), + (re.compile(r'
    ', re.I), '\n'), # Remove newlines (re.compile('( \n){2,}', re.I), '\n'), # Remove repeating non-blocking spaced newlines (re.compile(' +', re.I), ' '), # Remove double spaces ] diff --git a/resources/lib/modules/catalog.py b/resources/lib/modules/catalog.py index e283a3d..66ca7da 100644 --- a/resources/lib/modules/catalog.py +++ b/resources/lib/modules/catalog.py @@ -87,7 +87,9 @@ class Catalog: title='* %s' % kodiutils.localize(30204), # * All seasons path=kodiutils.url_for('show_catalog_program_season', program=program_id, season='-1'), art_dict={ - 'fanart': program.background, + 'fanart': program.fanart, + 'poster': program.poster, + 'landscape': program.thumb, }, info_dict={ 'tvshowtitle': program.title, @@ -105,7 +107,9 @@ class Catalog: title=season.title, # kodiutils.localize(30205, season=season.number), # Season {season} path=kodiutils.url_for('show_catalog_program_season', program=program_id, season=season.uuid), art_dict={ - 'fanart': program.background, + 'fanart': program.fanart, + 'poster': program.poster, + 'landscape': program.thumb, }, info_dict={ 'tvshowtitle': program.title, @@ -123,7 +127,9 @@ class Catalog: title=kodiutils.localize(30059, program=program.title), # Clips for {program} path=kodiutils.url_for('show_catalog_program_clips', program=program_id), art_dict={ - 'fanart': program.background, + 'fanart': program.fanart, + 'poster': program.poster, + 'landscape': program.thumb, }, info_dict={ 'tvshowtitle': program.title, diff --git a/resources/lib/modules/iptvmanager.py b/resources/lib/modules/iptvmanager.py index 6f45efe..eb84fec 100644 --- a/resources/lib/modules/iptvmanager.py +++ b/resources/lib/modules/iptvmanager.py @@ -83,7 +83,7 @@ class IPTVManager: episode='S%sE%s' % (program.season, program.number) if program.season and program.number else None, genre=program.genre, genre_id=program.genre_id, - image=program.cover, + image=program.thumb, stream=kodiutils.url_for('play_from_page', channel=key, page=quote(program.video_url, safe='')) if program.video_url else None) diff --git a/resources/lib/modules/menu.py b/resources/lib/modules/menu.py index 338d880..04a3d8b 100644 --- a/resources/lib/modules/menu.py +++ b/resources/lib/modules/menu.py @@ -100,11 +100,6 @@ class Menu: :type item: Union[Program, Episode] :rtype TitleItem """ - art_dict = { - 'thumb': item.cover, - 'cover': item.cover, - 'fanart': item.background or item.cover, - } info_dict = { 'title': item.title, 'plot': item.description, @@ -121,6 +116,13 @@ class Menu: 'season': len(item.seasons) if item.seasons else None, }) + art_dict = { + 'poster': item.poster, + 'landscape': item.thumb, + 'thumb': item.thumb, + 'fanart': item.fanart, + } + visible = True if isinstance(item.episodes, list) and not item.episodes: # We know that we don't have episodes @@ -171,6 +173,12 @@ class Menu: 'episode': item.number, }) + art_dict = { + 'landscape': item.thumb, + 'thumb': item.thumb, + 'fanart': item.thumb, + } + stream_dict = STREAM_DICT.copy() stream_dict.update({ 'duration': item.duration, diff --git a/resources/lib/modules/tvguide.py b/resources/lib/modules/tvguide.py index c6908f5..13ef1c6 100644 --- a/resources/lib/modules/tvguide.py +++ b/resources/lib/modules/tvguide.py @@ -154,8 +154,7 @@ class TvGuide: TitleItem(title=title, path=path, art_dict={ - 'icon': program.cover, - 'thumb': program.cover, + 'thumb': program.thumb, }, info_dict=info_dict, stream_dict=stream_dict, diff --git a/resources/lib/viervijfzes/content.py b/resources/lib/viervijfzes/content.py index 1cf1a77..386e1e6 100644 --- a/resources/lib/viervijfzes/content.py +++ b/resources/lib/viervijfzes/content.py @@ -45,7 +45,8 @@ class GeoblockedException(Exception): class Program: """ Defines a Program. """ - def __init__(self, uuid=None, path=None, channel=None, title=None, description=None, aired=None, cover=None, background=None, seasons=None, episodes=None, + def __init__(self, uuid=None, path=None, channel=None, title=None, description=None, aired=None, poster=None, thumb=None, fanart=None, seasons=None, + episodes=None, clips=None, my_list=False): """ :type uuid: str @@ -54,8 +55,9 @@ class Program: :type title: str :type description: str :type aired: datetime - :type cover: str - :type background: str + :type poster: str + :type thumb: str + :type fanart: str :type seasons: list[Season] :type episodes: list[Episode] :type clips: list[Episode] @@ -67,8 +69,9 @@ class Program: self.title = title self.description = description self.aired = aired - self.cover = cover - self.background = background + self.poster = poster + self.thumb = thumb + self.fanart = fanart self.seasons = seasons self.episodes = episodes self.clips = clips @@ -81,14 +84,13 @@ class Program: class Season: """ Defines a Season. """ - def __init__(self, uuid=None, path=None, channel=None, title=None, description=None, cover=None, number=None): + def __init__(self, uuid=None, path=None, channel=None, title=None, description=None, number=None): """ :type uuid: str :type path: str :type channel: str :type title: str :type description: str - :type cover: str :type number: int """ @@ -97,7 +99,6 @@ class Season: self.channel = channel self.title = title self.description = description - self.cover = cover self.number = number def __repr__(self): @@ -107,8 +108,8 @@ class Season: class Episode: """ Defines an Episode. """ - def __init__(self, uuid=None, nodeid=None, path=None, channel=None, program_title=None, title=None, description=None, cover=None, background=None, - duration=None, season=None, season_uuid=None, number=None, rating=None, aired=None, expiry=None, stream=None): + def __init__(self, uuid=None, nodeid=None, path=None, channel=None, program_title=None, title=None, description=None, thumb=None, duration=None, + season=None, season_uuid=None, number=None, rating=None, aired=None, expiry=None, stream=None): """ :type uuid: str :type nodeid: str @@ -117,8 +118,7 @@ class Episode: :type program_title: str :type title: str :type description: str - :type cover: str - :type background: str + :type thumb: str :type duration: int :type season: int :type season_uuid: str @@ -135,8 +135,7 @@ class Episode: self.program_title = program_title self.title = title self.description = description - self.cover = cover - self.background = background + self.thumb = thumb self.duration = duration self.season = season self.season_uuid = season_uuid @@ -501,7 +500,7 @@ class ContentApi: programs.append(Program( path=path.lstrip('/'), title=unescape(item.group('title')), - cover=unescape(item.group('image')), + poster=unescape(item.group('image')), )) return programs @@ -579,7 +578,7 @@ class ContentApi: description=html_to_kodi(description), duration=episode_duration, uuid=episode_video_id, - cover=episode_image, + thumb=episode_image, program_title=episode_program, )) @@ -599,8 +598,9 @@ class ContentApi: title=data['title'], description=html_to_kodi(data['description']), aired=datetime.fromtimestamp(data.get('pageInfo', {}).get('publishDate')), - cover=data['images']['poster'], - background=data['images']['hero'], + poster=data['images']['poster'], + thumb=data['images']['teaser'], + fanart=data['images']['hero'], ) # Create Season info @@ -651,8 +651,7 @@ class ContentApi: program_title=data.get('program', {}).get('title') if data.get('program') else data.get('title'), title=data.get('title'), description=html_to_kodi(data.get('description')), - cover=data.get('image'), - background=data.get('image'), + thumb=data.get('image'), duration=data.get('duration'), season=data.get('seasonNumber'), season_uuid=season_uuid, diff --git a/resources/lib/viervijfzes/epg.py b/resources/lib/viervijfzes/epg.py index 7153438..7bc2e30 100644 --- a/resources/lib/viervijfzes/epg.py +++ b/resources/lib/viervijfzes/epg.py @@ -37,7 +37,7 @@ class EpgProgram: # pylint: disable=invalid-name def __init__(self, channel, program_title, episode_title, episode_title_original, number, season, genre, start, - won_id, won_program_id, program_description, description, duration, program_url, video_url, cover, + won_id, won_program_id, program_description, description, duration, program_url, video_url, thumb, airing): self.channel = channel self.program_title = program_title @@ -54,7 +54,7 @@ class EpgProgram: self.duration = duration self.program_url = program_url self.video_url = video_url - self.cover = cover + self.thumb = thumb self.airing = airing if GENRE_MAPPING.get(self.genre): @@ -86,7 +86,7 @@ class EpgApi: :type channel: str :type date: str :rtype list[EpgProgram] - """ + """ if channel not in self.EPG_ENDPOINTS: raise Exception('Unknown channel %s' % channel) @@ -127,10 +127,10 @@ class EpgApi: # Only allow direct playing if the linked video is the actual program if data.get('video_node', {}).get('latest_video'): video_url = (data.get('video_node', {}).get('url') or '').lstrip('/') - cover = data.get('video_node', {}).get('image') + thumb = data.get('video_node', {}).get('image') else: video_url = None - cover = None + thumb = None return EpgProgram( channel=channel, @@ -148,7 +148,7 @@ class EpgApi: duration=duration, program_url=(data.get('program_node', {}).get('url') or '').lstrip('/'), video_url=video_url, - cover=cover, + thumb=thumb, airing=airing, ) diff --git a/resources/lib/viervijfzes/search.py b/resources/lib/viervijfzes/search.py index 4f1fd17..7a26237 100644 --- a/resources/lib/viervijfzes/search.py +++ b/resources/lib/viervijfzes/search.py @@ -56,7 +56,7 @@ class SearchApi: path=path, title=hit['_source']['title'], description=hit['_source']['intro'], - cover=hit['_source']['img'], + poster=hit['_source']['img'], )) return results diff --git a/resources/logos/play4.png b/resources/logos/play4.png index 3b5b63969d9fa31192caf905baff97bb0854585f..8607ace1dae2e58530581a09250a5aeb3bd95501 100644 GIT binary patch literal 4045 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 U16SYD5&kd$O*I`=EW#@IA9gG=h5!Hn literal 7260 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 literal 5103 zcmeHJX;>4<);`_ogpdG6K#Ax;R77+{0xm&iX&e+#F5->@13}znQy2l+3ODq+G2YVqyZ=G;= zbJFG+@&G{F#o2Kk0Kqf~;If#Hb461=^VxcEgGcB(-!M_|{-7PZ{kMxkBZ9Y!b_a+0 z0ffJ`Ezj3RVgZX%Wk`wHUzZKgpV#3&%-!hOVMOYk z&p5kHr#IU*`NlD?6Te$K-gwA<#81rATT}0(b%EK<&)s#y3U{#a1V>MS^LALhL$o0n z*6$PhM#7I#WWZ6_8t)#F0K0#c9!-ILmxF&zhwx04ng^&L;Z_O6m&xuuhO}Yzw`}`!0$9o8;oaG1L(eSadg-a{DZ^|o0c*4Mb zS%iB0Trldyeo(VSqVk_U{Lb zd(SXW4}FLdUd8h=2`=&kEGft~Z!%=Twy7v*@Ap{VMDiZiQ5-S{G(YcPCXD~7bOYU` zI=d2hWM2fe3VwZ8FTw>XQ>g{q44158OOK?Wbx?yWY|^+3Hx&!?>hr50eiKGdRQ2B#D+&>#(G^tKjPAJ-_j&{jV{$(#4o_6Xta| z=0PKi0hKXdAI*-obZ+I7A*ZU+1A;W0aW0xg4YJ&;zBZV3Mu)6N9RaA0k8WWbC}H9ge$cW zToiMU|rBlV0agDY%A@DflEIx*>1po@6rAAXi;h>7o1$ z`SWlt<)cj>ej|rd87DrNAP}l>@!^dM@F%39#>bfM+r5#?&*I`cVIi@Y(C53Vy>Wyx zHfUT?7&FYLOb({9i};j>MAfU25yK!MTA`J&5^`LYe0OiJe3&gdv7K6a0){e9!C0xM zRukX|YFdRAixE@41DOQ$Ym*Zz?9|2VGQOP&k%uFknK+FQFu5@;;p*UACZgwl1d#&t zamMrO>p*~J5lTB+v59G&qVM5o`gCU1zh7$XGJqASzv_v+CX}!bCPxW&+49r+C!-_3 z@$Gmv?OCO{4TTjFO95)E$HhI7Wx4UUwYcQ(2XJv*=g0cZWo*&PcJJ6XDPR+8(f9S! zT^i3jCHMaxN~7oarp$x{}eeiX_lIqHOhk6+RKDSZUEA`OLY@GiV?I309WdvGFdCS78X9%<(Lz?<9*whfzEmth*#cctK*uoK@DfPJ0CPA$S zA=AN)#U*pFqC{LQzneb?o~AGuEhVwz%b5a;<`AOPj6>Nh9(89jR-#U^kdfrE%#@60Y*8&{iKtW|+dj z#qWj;{vO`~7d5No5I%#1_dIgJN45dl8R1j}*JD*qaBx(-iY@v)AjhS%-C?U1b!|RD zS;=6VA!=fL8`{FrM}vtpTPEq{=poBMIxNI17z^Knn`j5 zN9kSrb2*!uM#5h@l$Tt^rtFvkFhZWTt!x7rWx%o%j7GOu6oED01Qu|ll_jxQM|b=$ zbHU+^D*LZ8C0=)O4YPc3z#^LQ)m!J-Ezlb8_IVs!&XySjX-r1Gt78WgV|+@W9W#FoZ(hkQ?QpY9rf#C+QThuO})@k*gnYjsLR2_crZY#>o>R>z`47KuLD`UGl z?QgFuR^rNeOcICU1*mA4RO@a4Ffu!hvyw@#orqzvlfVgMGiv|083|(wJ$0J|0i+&aup{!R^7adw z30$%avu18mB8UrBFOc947lpX{hdy0p3|JvUO3N%l7!e}ix2It9xTgl=~P0C zEz2iw8&e#*o{}$i|CP!byo6mpAPA0JbR>GJc)9I20 z#^S~qQMCcbdwzL&N3Kv+jEgrpy$FM2OZl%tS1Z_2OQw{b!5(F`8+yqCidx29cIZjF zd+d*&yJA?sn3QcSDwDt!g^Sh2!&f?m)Qrv8;XjXTZmwC7kRL=pQ+4Aj1OJHB>e=~V z+}TgNFKc~l`2*ptRU92G-LLM0&b;z5qT0qvL8#vV|$v13OUXq7Tzc9OBu3OwlA)fAEt=? z$>~rMn6qp`C;c4L-DB3WX~9@sM;dX^QgxZ-TDhmrqbqCz!?I3t&5p;$7vN4Kx62a^ z$kK%4Pe~hLjhc`z>Rquqotk-kUZ@;ms{2FW)&Bz+1j17jhD4Yy#(Gd39 zQO2YFYita|r;Su>Rj|Yux96ng(p%4zmct)Y(1_iT(~1~gH6gN2V^3@9Tl>cLOqw&< ztV28G%lVIV&=hk28LYCcmdG|0s`BMLY9hG+4Q3aMFUnI>6GtPH(k2e;$|NWmGs)E4 zfO=kZ#aK?t{2GvHEEv|n{)8m#dgdp**yl{jNUc`(r{?@xhvfB+8^fR3<>yXH7KKWtIbI(36$Z2)Wo>^Z0En0kgL%J2p~?G z^;_UEi@Xj;F0jgY`N$X*)q=j_RD<#XZ<|%y%&(t~M^jK2Mzn87dP`T@sf_bu1$E)t zJ@t8)>dbrKk;)}_0W401st_WN;rL zsgK5nCZpTvQKcNLS()%o0>4gS=$w(&h(J)4JBXG6FQJ#YMoQgQrr{A=}m7Z&Pd}l%jx9@$; z7ca`PeDC(D6t2Yi;wpm*qZE_e^PiW6V|A;^_XTM&BR=U7=~0F?9BPIEZW^;Ce7)(x zD^b&4aVV<{EOAZ{9rna~cAAE9Wf;18H`!kz`)O8GvYpn}*4X4te>|AomA__W?i=nx zRWtEnq*LB!jXuje&ZEjMg&q2wmVfY71a;q)=9L;gsic4HUfDG9LH6W*ar0P)v~HbW zzmLU-et+#9t+DS`W1}VSdM8uE_F>o+9aa76;>Cej>KEU!jGcOWmh|oOHt%{FZeAT? zLnq#-UqS^?0h{OdJPbD*niF(vU2!4yOjh9V?eTa&UGXII-dN((L&}^WR!{q$n+9!d z@%sWs(q2SU!ygklKYh)b+F~Jx$!Pk#sNACLf3v8zdznI zOqJROZi?{YFT>J2#=}PC)mpErTGIoX=#le^d+n`dIs1!wO!{Axd-&cjn~QwtZ8dRZ zL99OVF;_)?lkgI{Tj;lPZGBNgNvsoH{W$A9MH{O$oMNlvOQ9m|QfatL=DRh|qvj}U z)8#?O?3er)>C_k`|0#O#tbYb}-`;Srb(> zp06~|$QXCi8GA^ZYXlaAudV(v_-V8KSTWYixBG6W_2Aosb;hdKiQVst^H!91e(BEp yX|!}g+H>k)X^idlfbnIt1qT0n{+}Ws+C<|4C7i>vhr<%oTez%nbIe&TJ@ju7E;?ZV diff --git a/resources/logos/play6.png b/resources/logos/play6.png index 534a7d75e6d784879eb25f5088a9ce3b4ca486dc..a727649a388dd48d0beb8cb13e1e497b9b3ceb4e 100644 GIT binary patch literal 4568 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 XVQlyn;y+pE{&dq)*HCgKvxa{O$BPq5_ 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