import enigma2-plugin-extensions-mediaportal 2020010101 v2020010101
authorChristian Weiske <cweiske@cweiske.de>
Thu, 2 Jan 2020 00:15:27 +0000 (01:15 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Thu, 2 Jan 2020 00:15:27 +0000 (01:15 +0100)
141 files changed:
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/additions.xml
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/fun/cczwei.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/fun/chefkoch.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/fun/failto.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/fun/itunestrailers.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/fun/lachmeister_de.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/fun/lachschon_de.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/fun/liveleak.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/fun/retrotv.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/fun/twitch.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/ard.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/arte.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/atv.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/brf.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/dreisat.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/funk.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/kindertube.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/myspass.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/netflix.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/netzkino.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/orf.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/primevideo.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/servustv.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/southpark.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/spiegeltv.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/srg.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/tvnow.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/mediatheken/zdf.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/music/mtvdecharts.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/music/radio.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/music/shoutcast.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/newsdoku/autobild.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/newsdoku/bild.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/newsdoku/dokus4_me.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/newsdoku/dokustream.py [deleted file]
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/newsdoku/focus.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/newsdoku/urknall.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/newsdoku/wissen.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/ahme.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/anyporn.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/badoinkvr.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/bangbros.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/beeg.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/befuck.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/bongacams.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/brazzers.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/cam4.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/camhub.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/camsoda.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/chaturbate.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/cliphunter.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/crocotube.py [new file with mode: 0644]
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/cumlouder.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/dachix.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/ddfnetwork.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/digitalplayground.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/drtuber.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/elladies.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/eporner.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/eroprofile.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/extremetube.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/faapy.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/fetishshrine.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/freeones.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/hclips.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/hdzog.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/homemoviestube.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/hotmovs.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/hotscope.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/julesjordan.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/kink.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/lovehomeporn.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/mofos.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/moviefap.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/naughtyamerica.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/nubilefilms.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/nudez.py [deleted file]
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pinflix.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/porn7.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/porncom.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/porndoe.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/porngo.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornhat.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornhub.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornicom.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornid.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornoreino.py [new file with mode: 0644]
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornoxo.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornrabbit.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/porntv.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornxio.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/realgfporn.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/realitykings.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/redtube.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/sexu.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/shemalez.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/shesfreaky.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/slutload.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/spankbang.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/spankwire.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/sunporno.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/teamskeet.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/tnaflix.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/tube8.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/tubepornclassic.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/tubewolf.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/txxx.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/updatetube.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/upornia.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/vintagetube.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/vjav.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/voyeurhit.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/vporn.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/wetplace.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/wicked.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/x2search4porn.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/x4tube.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/xhamster.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/xnxx.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/xpaja.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/xvideos.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/xxxdan.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/youjizz.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/youporn.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/sport/pokerstars.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/keymap.xml
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/locale/de/LC_MESSAGES/MediaPortal.mo
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/locale/de/LC_MESSAGES/MediaPortal.po
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/plugin.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/MPEuronewsUriResolver.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/MPHLSPUriResolver.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/MPLivestreamcomUriResolver.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/MPYoutubeUriResolver.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/config.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/hosters/hosters.xml
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/realdebrid.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/simplelist.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/simpleplayer.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/streams.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/update.py
usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/resources/yt_url.py

index edac6a2..5109ffe 100644 (file)
@@ -10,7 +10,6 @@
                <!--newsdoku section-->
                <plugin type="mod" modfile="newsdoku.focus" confopt="showFocus" default="True" confcat="newsdoku" gz="0" name="Focus" icon="focus" filter="NewsDoku" screen="focusGenre" param1="" param2=""/>
                <plugin type="mod" modfile="newsdoku.autobild" confopt="showAutoBild" default="True" confcat="newsdoku" gz="0" name="Autobild" icon="autobild" filter="NewsDoku" screen="autoBildGenreScreen" param1="" param2=""/>
-               <plugin type="mod" modfile="newsdoku.dokustream" confopt="showDokuStream" default="True" confcat="newsdoku" gz="0" name="DokuStream" icon="dokustream" filter="NewsDoku" screen="show_DS_Genre" param1="" param2=""/>
                <plugin type="mod" modfile="newsdoku.dokus4_me" confopt="showDokus4me" default="True" confcat="newsdoku" gz="0" name="dokus4.me" icon="dokus4_me" filter="NewsDoku" screen="show_D4ME_Genre" param1="" param2=""/>
                <plugin type="mod" modfile="newsdoku.wissen" confopt="showwissen" default="True" confcat="newsdoku" gz="0" name="Wissen.de" icon="wissen" filter="NewsDoku" screen="wissenListeScreen" param1="" param2=""/>
                <plugin type="mod" modfile="newsdoku.bild" confopt="showbildde" default="True" confcat="newsdoku" gz="0" name="Bild" icon="bild" filter="NewsDoku" screen="bildFirstScreen" param1="" param2=""/>
                <plugin type="mod" modfile="porn.porngo" confopt="showporngo" default="False" confcat="porn" gz="0" name="PornGO" icon="porngo" filter="Porn" screen="porngoGenreScreen" param1="" param2="" search="1" delim="-" searchurl="%s" searchscreen="porngoFilmScreen" searchparam=""/>
                <plugin type="mod" modfile="porn.pornxio" confopt="showpornxio" default="False" confcat="porn" gz="0" name="PornXio" icon="pornxio" filter="Porn" screen="pornxioGenreScreen" param1="pornxio" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;PornXio.com&quot;, &quot;https://pornxio.com&quot;"/>
                <plugin type="mod" modfile="porn.pornxio" confopt="showhandjobhub" default="False" confcat="porn" gz="0" name="HandjobHub" icon="handjobhub" filter="Porn" screen="pornxioGenreScreen" param1="handjobhub" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;HandjobHub.com&quot;, &quot;https://handjobhub.com&quot;"/>
-               <plugin type="mod" modfile="porn.pornxio" confopt="showswipexxx" default="False" confcat="porn" gz="0" name="SWIPE.XXX" icon="swipexxx" filter="Porn" screen="pornxioGenreScreen" param1="swipexxx" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;SWIPE.XXX&quot;, &quot;https://swipe.xxx&quot;"/>
                <plugin type="mod" modfile="porn.pornxio" confopt="showhypnotube" default="False" confcat="porn" gz="0" name="hypnotube" icon="hypnotube" filter="Porn" screen="pornxioGenreScreen" param1="hypnotube" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;hypnotube.com&quot;, &quot;https://hypnotube.com&quot;"/>
                <plugin type="mod" modfile="porn.pornxio" confopt="showlaidhub" default="False" confcat="porn" gz="0" name="LaidHub" icon="laidhub" filter="Porn" screen="pornxioGenreScreen" param1="laidhub" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;LaidHub.com&quot;, &quot;https://www.laidhub.com&quot;"/>
+               <plugin type="mod" modfile="porn.pornxio" confopt="shownudez" default="False" confcat="porn" gz="0" name="Nudez" icon="nudez" filter="Porn" screen="pornxioGenreScreen" param1="nudez" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;Nudez.com&quot;, &quot;https://nudez.com&quot;"/>
+               <plugin type="mod" modfile="porn.pornxio" confopt="showwetsins" default="False" confcat="porn" gz="0" name="WetSins" icon="wetsins" filter="Porn" screen="pornxioGenreScreen" param1="wetsins" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;WetSins.com&quot;, &quot;https://www.wetsins.com&quot;"/>
+               <plugin type="mod" modfile="porn.pornxio" confopt="showeroxia" default="False" confcat="porn" gz="0" name="Eroxia" icon="eroxia" filter="Porn" screen="pornxioGenreScreen" param1="eroxia" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;Eroxia.com&quot;, &quot;https://www.eroxia.com&quot;"/>
+               <plugin type="mod" modfile="porn.pornxio" confopt="showxnxxhamster" default="False" confcat="porn" gz="0" name="XNXXHamster" icon="xnxxhamster" filter="Porn" screen="pornxioGenreScreen" param1="xnxxhamster" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;XNXXHamster.net&quot;, &quot;https://xnxxhamster.net&quot;"/>
+               <plugin type="mod" modfile="porn.pornxio" confopt="showdrporntube" default="False" confcat="porn" gz="0" name="DrPornTube" icon="drporntube" filter="Porn" screen="pornxioGenreScreen" param1="drporntube" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;DrPornTube.com&quot;, &quot;https://www.drporntube.com&quot;"/>
+               <plugin type="mod" modfile="porn.pornxio" confopt="showsinclips" default="False" confcat="porn" gz="0" name="SinClips" icon="sinclips" filter="Porn" screen="pornxioGenreScreen" param1="sinclips" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornxioFilmScreen" searchparam=", &quot;SinClips.com&quot;, &quot;https://sinclips.com&quot;"/>
                <plugin type="mod" modfile="porn.camhub" confopt="showcamhub" default="False" confcat="porn" gz="0" name="Camhub" icon="camhub" filter="Porn" screen="camhubGenreScreen" param1="" param2="" search="1" delim="-" searchurl="%s" searchscreen="camhubFilmScreen" searchparam=""/>
+               <plugin type="mod" modfile="porn.pornoreino" confopt="showpornoreino" default="False" confcat="porn" gz="0" name="PornoReino" icon="pornoreino" filter="Porn" screen="pornoreinoGenreScreen" param1="" param2="" search="1" delim="-" searchurl="%s" searchscreen="pornoreinoFilmScreen" searchparam=""/>
                <plugin type="mod" modfile="porn.slutload" confopt="showslutload" default="False" confcat="porn" gz="0" name="Slutload" icon="slutload" filter="Porn" screen="slutloadGenreScreen" param1="slutload" param2="" search="1" delim="-" searchurl="%s" searchscreen="slutloadFilmScreen" searchparam=", &quot;Slutload.com&quot;, &quot;https://www.slutload.com&quot;"/>
                <plugin type="mod" modfile="porn.slutload" confopt="showmadthumbs" default="False" confcat="porn" gz="0" name="MadThumbs" icon="madthumbs" filter="Porn" screen="slutloadGenreScreen" param1="madthumbs" param2="" search="1" delim="-" searchurl="%s" searchscreen="slutloadFilmScreen" searchparam=", &quot;MadThumbs.com&quot;, &quot;http://www.madthumbs.com&quot;"/>
                <plugin type="mod" modfile="porn.slutload" confopt="showfapster" default="False" confcat="porn" gz="0" name="Fapster" icon="fapster" filter="Porn" screen="slutloadGenreScreen" param1="fapster" param2="" search="1" delim="-" searchurl="%s" searchscreen="slutloadFilmScreen" searchparam=", &quot;Fapster.xxx&quot;, &quot;https://fapster.xxx&quot;"/>
                <plugin type="mod" modfile="porn.tubewolf" confopt="showtubewolf" default="False" confcat="porn" gz="0" name="TubeWolf" icon="tubewolf" filter="Porn" screen="tubewolfGenreScreen" param1="tubewolf" param2="" search="1" delim="+" searchurl="%s" searchscreen="tubewolfListScreen" searchparam=", &quot;TubeWolf.com&quot;, &quot;https://www.tubewolf.com&quot;"/>
                <plugin type="mod" modfile="porn.tubewolf" confopt="showalphaporno" default="False" confcat="porn" gz="0" name="AlphaPorno" icon="alphaporno" filter="Porn" screen="tubewolfGenreScreen" param1="alphaporno" param2="" search="1" delim="+" searchurl="%s" searchscreen="tubewolfListScreen" searchparam=", &quot;AlphaPorno.com&quot;, &quot;https://www.alphaporno.com&quot;"/>
                <plugin type="mod" modfile="porn.tubewolf" confopt="showzedporn" default="False" confcat="porn" gz="0" name="ZedPorn" icon="zedporn" filter="Porn" screen="tubewolfGenreScreen" param1="zedporn" param2="" search="1" delim="+" searchurl="%s" searchscreen="tubewolfListScreen" searchparam=", &quot;ZedPorn.com&quot;, &quot;https://zedporn.com&quot;"/>
-               <plugin type="mod" modfile="porn.tubewolf" confopt="showcrocotube" default="False" confcat="porn" gz="0" name="CrocoTube" icon="crocotube" filter="Porn" screen="tubewolfGenreScreen" param1="crocotube" param2="" search="1" delim="+" searchurl="%s" searchscreen="tubewolfListScreen" searchparam=", &quot;CrocoTube.com&quot;, &quot;https://crocotube.com&quot;"/>
+               <plugin type="mod" modfile="porn.crocotube" confopt="showcrocotube" default="False" confcat="porn" gz="0" name="CrocoTube" icon="crocotube" filter="Porn" screen="crocotubeGenreScreen" param1="crocotube" param2="" search="1" delim="+" searchurl="%s" searchscreen="crocotubeListScreen" searchparam=", &quot;CrocoTube.com&quot;, &quot;https://crocotube.com&quot;"/>
                <plugin type="mod" modfile="porn.anyporn" confopt="showanyporn" default="False" confcat="porn" gz="0" name="AnyPorn" icon="anyporn" filter="Porn" screen="anypornGenreScreen" param1="anyporn" param2="" search="1" delim="-" searchurl="%s" searchscreen="anypornListScreen" searchparam=", &quot;AnyPorn.com&quot;, &quot;https://anyporn.com&quot;"/>
                <plugin type="mod" modfile="porn.anyporn" confopt="showanysex" default="False" confcat="porn" gz="0" name="AnySex" icon="anysex" filter="Porn" screen="anypornGenreScreen" param1="anysex" param2="" search="1" delim="+" searchurl="%s" searchscreen="anypornListScreen" searchparam=", &quot;AnySex.com&quot;, &quot;https://anysex.com&quot;"/>
                <plugin type="mod" modfile="porn.anyporn" confopt="showsex3" default="False" confcat="porn" gz="0" name="Sex3" icon="sex3" filter="Porn" screen="anypornGenreScreen" param1="sex3" param2="" search="1" delim="+" searchurl="%s" searchscreen="anypornListScreen" searchparam=", &quot;Sex3.com&quot;, &quot;https://sex3.com&quot;"/>
                <plugin type="mod" modfile="porn.eporner" confopt="showeporner" default="False" confcat="porn" gz="0" name="Eporner" icon="eporner" filter="Porn" screen="epornerGenreScreen" param1="" param2="" search="1" delim="-" searchurl="http://www.eporner.com/search/%s/" searchscreen="epornerFilmScreen" searchparam=""/>
                <plugin type="mod" modfile="porn.sexu" confopt="showsexu" default="False" confcat="porn" gz="0" name="Sexu" icon="sexu" filter="Porn" screen="sexuGenreScreen" param1="" param2="" search="1" delim="+" searchurl="%s" searchscreen="sexuFilmScreen" searchparam=""/>
                <plugin type="mod" modfile="porn.xpaja" confopt="showxpaja" default="False" confcat="porn" gz="0" name="xpaja" icon="xpaja" filter="Porn" screen="xpajaGenreScreen" param1="" param2="" search="1" delim="-" searchurl="%s" searchscreen="xpajaFilmScreen" searchparam=""/>
-               <plugin type="mod" modfile="porn.nudez" confopt="shownudez" default="False" confcat="porn" gz="0" name="Nudez" icon="nudez" filter="Porn" screen="nudezGenreScreen" param1="" param2="" search="1" delim="+" searchurl="%s" searchscreen="nudezFilmScreen" searchparam=""/>
                <plugin type="mod" modfile="porn.dachix" confopt="showdachix" default="False" confcat="porn" gz="0" name="DaChix" icon="dachix" filter="Porn" screen="dachixGenreScreen" param1="dachix" param2="" search="1" delim="-" searchurl="%s" searchscreen="dachixListScreen" searchparam=", &quot;DaChix.com&quot;, &quot;http://www.dachix.com&quot;"/>
                <plugin type="mod" modfile="porn.dachix" confopt="showdeviantclip" default="False" confcat="porn" gz="0" name="DeviantClip" icon="deviantclip" filter="Porn" screen="dachixGenreScreen" param1="deviantclip" param2="" search="1" delim="-" searchurl="%s" searchscreen="dachixListScreen" searchparam=", &quot;DeviantClip.com&quot;, &quot;http://www.deviantclip.com&quot;"/>
                <plugin type="mod" modfile="porn.drtuber" confopt="showdrtuber" default="False" confcat="porn" gz="0" name="DrTuber" icon="drtuber" filter="Porn" screen="drtuberGenreScreen" param1="" param2="" search="1" delim="%20" searchurl="http://www.drtuber.com/search/videos/%s" searchscreen="drtuberFilmScreen" searchparam=""/>
index 9403eeb..941927e 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index c6f19cf..f8043fd 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 8730ddf..7042ce3 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index ec0cf9b..9ab837c 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index e4e9f58..87d905b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index dfc384b..1fbf17d 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 71d0207..fd42463 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 2342ae7..6696b23 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index f9eb2a5..8b688c5 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 1adf6c0..b8aed70 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index c09837a..3ef1e90 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 3435270..3ad0bc9 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 7ad1045..f18f243 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index e95000d..7a316ee 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 6b7647a..50da025 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index def7596..932ed35 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 0cfd44e..8e0227d 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index ac26c80..c8804be 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 75c1435..05c49ee 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index dbfc7ff..0caa46d 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 5ce60f8..18f611b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 029d024..fe49aa0 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 6ea4b3e..7a20499 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index a5bf3ed..b00814b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index e125368..d91abe9 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 91f6da5..593fd69 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -41,10 +41,12 @@ from Plugins.Extensions.MediaPortal.resources.twagenthelper import twAgentGetPag
 BASE_URL = "http://api.tvnow.de/v3/"
 nowAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
 default_cover = "file://%s/tvnow.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+name = "TVNOW"
 
 class tvnowFirstScreen(MPScreen, ThumbsHelper):
 
-       def __init__(self, session):
+       def __init__(self, session, name=name):
+               self.name = name
                MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
                ThumbsHelper.__init__(self)
 
@@ -59,7 +61,7 @@ class tvnowFirstScreen(MPScreen, ThumbsHelper):
                        "left" : self.keyLeft
                }, -1)
 
-               self['title'] = Label("TVNOW")
+               self['title'] = Label(self.name)
                self['ContentTitle'] = Label(_("Stations:"))
                self['name'] = Label(_("Selection:"))
 
@@ -100,10 +102,11 @@ class tvnowFirstScreen(MPScreen, ThumbsHelper):
 
 class tvnowSubGenreScreen(MPScreen, ThumbsHelper):
 
-       def __init__(self, session, Link, Name, Image):
+       def __init__(self, session, Link, Name, Image, name=name):
                self.Link = Link
                self.Name = Name
                self.Image = Image
+               self.name = name
                MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
                ThumbsHelper.__init__(self)
 
@@ -118,7 +121,7 @@ class tvnowSubGenreScreen(MPScreen, ThumbsHelper):
                        "left" : self.keyLeft
                }, -1)
 
-               self['title'] = Label("TVNOW")
+               self['title'] = Label(self.name)
                self['ContentTitle'] = Label(_("Selection:"))
                self['name'] = Label(_("Selection:") + " " + self.Name)
 
@@ -173,10 +176,11 @@ class tvnowSubGenreScreen(MPScreen, ThumbsHelper):
 
 class tvnowStaffelScreen(MPScreen):
 
-       def __init__(self, session, Link, Name, Image):
+       def __init__(self, session, Link, Name, Image, name=name):
                self.Link = Link
                self.Name = Name
                self.Image = Image
+               self.name = name
                MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
 
                self["actions"] = ActionMap(["MP_Actions"], {
@@ -189,7 +193,7 @@ class tvnowStaffelScreen(MPScreen):
                        "left" : self.keyLeft
                }, -1)
 
-               self['title'] = Label("TVNOW")
+               self['title'] = Label(self.name)
                self['ContentTitle'] = Label(_("Seasons:"))
                self['name'] = Label(_("Selection:") + " " + self.Name)
 
@@ -254,10 +258,11 @@ class tvnowStaffelScreen(MPScreen):
 
 class tvnowEpisodenScreen(MPScreen, ThumbsHelper):
 
-       def __init__(self, session, Link, Name, Image):
+       def __init__(self, session, Link, Name, Image, name=name):
                self.Link = Link
                self.Name = Name
                self.Image = Image
+               self.name = name
                MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
                ThumbsHelper.__init__(self)
 
@@ -272,7 +277,7 @@ class tvnowEpisodenScreen(MPScreen, ThumbsHelper):
                        "left" : self.keyLeft
                }, -1)
 
-               self['title'] = Label("TVNOW")
+               self['title'] = Label(self.name)
                self['ContentTitle'] = Label(_("Episodes:"))
                self['name'] = Label(_("Selection:") + " " + self.Name)
 
index 496c647..d89ef25 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 28e12ad..1ea2170 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 31abd45..358ddd1 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index d99cfff..1a8b866 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index a59d4b0..5771dd4 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index adb1883..b47971c 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 9479f47..f765f8b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
diff --git a/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/newsdoku/dokustream.py b/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/newsdoku/dokustream.py
deleted file mode 100644 (file)
index 047ae6d..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-# -*- coding: utf-8 -*-
-#######################################################################################################
-#
-#    MediaPortal for Dreambox OS
-#
-#    Coded by MediaPortal Team (c) 2013-2019
-#
-#  This plugin is open source but it is NOT free software.
-#
-#  This plugin may only be distributed to and executed on hardware which
-#  is licensed by Dream Property GmbH. This includes commercial distribution.
-#  In other words:
-#  It's NOT allowed to distribute any parts of this plugin or its source code in ANY way
-#  to hardware which is NOT licensed by Dream Property GmbH.
-#  It's NOT allowed to execute this plugin and its source code or even parts of it in ANY way
-#  on hardware which is NOT licensed by Dream Property GmbH.
-#
-#  This applies to the source code as a whole as well as to parts of it, unless explicitely
-#  stated otherwise.
-#
-#  If you want to use or modify the code or parts of it, permission from the authors is necessary.
-#  You have to keep OUR license and inform us about any modification, but it may NOT be distributed
-#  other than under the conditions noted above.
-#
-#  As an exception regarding modifcations, you are NOT permitted to remove
-#  any copy protections implemented in this plugin or change them for means of disabling
-#  or working around the copy protections, unless the change has been explicitly permitted
-#  by the original authors. Also decompiling and modification of the closed source
-#  parts is NOT permitted.
-#
-#  Advertising with this plugin is NOT allowed.
-#
-#  For other uses, permission from the authors is necessary.
-#
-#######################################################################################################
-
-from Plugins.Extensions.MediaPortal.plugin import _
-from Plugins.Extensions.MediaPortal.resources.imports import *
-import Queue
-import threading
-from Plugins.Extensions.MediaPortal.resources.youtubeplayer import YoutubePlayer
-from Plugins.Extensions.MediaPortal.resources.menuhelper import MenuHelper
-from Plugins.Extensions.MediaPortal.resources.twagenthelper import twAgentGetPage
-
-default_cover = "file://%s/dokustream.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
-
-class show_DS_Genre(MenuHelper):
-
-       def __init__(self, session):
-
-               baseUrl = "https://www.doku-stream.org"
-               MenuHelper.__init__(self, session, 0, None, baseUrl, "", self._defaultlistcenter, default_cover=default_cover)
-
-               self['title'] = Label("DokuStream")
-               self['ContentTitle'] = Label("Genres")
-
-               self.menu = []
-               self.menu.append((0, '/', 'Neue Dokus'))
-               self.menu.append((0, '/category/hd/', 'HD Dokus'))
-               self.menu.append((0, '/tag/top/', 'Empfehlungen'))
-               self.onLayoutFinish.append(self.mh_initMenu)
-
-       def mh_initMenu(self):
-               self.mh_buildMenu(self.mh_baseUrl+'/kategorien/')
-
-       def mh_parseCategorys(self, data, category='Kategorien'):
-               if category == 'Kategorien':
-                       self.menu.append((0, '', 'Themen'))
-                       a = data.find('="entry"')
-                       if a > 0:
-                               b = data.find('</ul>', a)
-                               if b > 0:
-                                       entrys = re.findall('href="(.*?)">(.*?)</a>', data[a:b])
-                                       if entrys:
-                                               for (u, n) in entrys:
-                                                       self.menu.append((1, u.replace(self.mh_baseUrl,''), n))
-
-                       self.getSerienPage()
-
-               if category == 'Serien':
-                       self.menu.append((0, '', 'Serien'))
-                       a = data.find('="entry"')
-                       if a > 0:
-                               b = data.find('</ul>', a)
-                               if b > 0:
-                                       entrys = re.findall('href="(.*?)">(.*?)</a>', data[a:b])
-                                       if entrys:
-                                               for (u, n) in entrys:
-                                                       self.menu.append((1, u.replace(self.mh_baseUrl,''), n))
-
-                       self.mh_genMenu2(self.menu)
-
-       def mh_callGenreListScreen(self):
-               genreurl = self.mh_baseUrl+self.mh_genreUrl[0]+self.mh_genreUrl[1]
-               self.session.open(DS_FilmListeScreen, genreurl, self.mh_genreTitle)
-
-       def getSerienPage(self):
-               self.mh_lastPageUrl = self.mh_baseUrl+'/serien/'
-               twAgentGetPage(self.mh_lastPageUrl, agent=None, headers=std_headers).addCallback(self.mh_parseCategorys, category='Serien').addErrback(self.mh_dataError)
-
-class DS_FilmListeScreen(MPScreen, ThumbsHelper):
-
-       def __init__(self, session, genreLink, genreName):
-               self.genreLink = genreLink
-               self.genreName = genreName
-               MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
-               ThumbsHelper.__init__(self)
-
-               self["actions"] = ActionMap(["MP_Actions2", "MP_Actions"], {
-                       "ok"    : self.keyOK,
-                       "cancel": self.keyCancel,
-                       "5" : self.keyShowThumb,
-                       "up" : self.keyUp,
-                       "down" : self.keyDown,
-                       "right" : self.keyRight,
-                       "left" : self.keyLeft,
-                       "upUp" : self.key_repeatedUp,
-                       "rightUp" : self.key_repeatedUp,
-                       "leftUp" : self.key_repeatedUp,
-                       "downUp" : self.key_repeatedUp,
-                       "upRepeated" : self.keyUpRepeated,
-                       "downRepeated" : self.keyDownRepeated,
-                       "rightRepeated" : self.keyRightRepeated,
-                       "leftRepeated" : self.keyLeftRepeated,
-                       "nextBouquet" : self.keyPageUp,
-                       "prevBouquet" : self.keyPageDown,
-                       "0"     : self.closeAll
-               }, -1)
-
-               self.sortOrder = 0
-               self.baseUrl = "http://www.doku-stream.org"
-               self.genreTitle = ""
-               self.sortParIMDB = ""
-               self.sortParAZ = ""
-               self.sortOrderStrAZ = ""
-               self.sortOrderStrIMDB = ""
-               self.sortOrderStrGenre = ""
-               self['title'] = Label("DokuStream")
-
-               self['Page'] = Label(_("Page:"))
-
-               self.filmQ = Queue.Queue(0)
-               self.hanQ = Queue.Queue(0)
-               self.picQ = Queue.Queue(0)
-               self.updateP = 0
-               self.eventL = threading.Event()
-               self.eventP = threading.Event()
-               self.keyLocked = True
-               self.dokusListe = []
-               self.keckse = CookieJar()
-               self.page = 0
-               self.lastpage = 0;
-
-               self.setGenreStrTitle()
-
-               self.ml = MenuList([], enableWrapAround=True, content=eListboxPythonMultiContent)
-               self['liste'] = self.ml
-
-               self.onLayoutFinish.append(self.loadPage)
-
-       def setGenreStrTitle(self):
-               genreName = "%s%s" % (self.genreTitle,self.genreName)
-               self['ContentTitle'].setText(genreName)
-
-       def loadPage(self):
-               url = "%s/page/%d/" % (self.genreLink, self.page)
-               if self.page:
-                       self['page'].setText("%d / %d" % (self.page,self.lastpage))
-               self.filmQ.put(url)
-               if not self.eventL.is_set():
-                       self.eventL.set()
-                       self.loadPageQueued()
-
-       def loadPageQueued(self):
-               self['name'].setText(_('Please wait...'))
-               while not self.filmQ.empty():
-                       url = self.filmQ.get_nowait()
-               twAgentGetPage(url, cookieJar=self.keckse, agent=None, headers=std_headers).addCallback(self.loadPageData).addErrback(self.dataError)
-
-       def dataError(self, error):
-               self.eventL.clear()
-               printl(error,self,"E")
-               self.dokusListe.append((_("No dokus found!"),"","",""))
-               self.ml.setList(map(self._defaultlistleft, self.dokusListe))
-
-       def loadPageData(self, data):
-               self.dokusListe = []
-               data = data.replace('\n', '')
-               data = re.search('id="infinite-articles"(.*?)$', data, re.S).group(1)
-               dokus = re.findall('<img.*?src="(.*?)".*?class="content-grid".*?href="(.*?)">.*?="entry-title">(.*?)</', data)
-               if dokus:
-                       m = re.findall('class=\Dpage larger.*?>(\d+)<', data)
-                       try:
-                               lastpage = int(m[-1])
-                       except:
-                               lastpage = 1
-                       if lastpage > self.lastpage:
-                                       self.lastpage = lastpage
-                       if not self.page:
-                               self.page = 1
-                       self['page'].setText("%d / %d" % (self.page,self.lastpage))
-                       for     (img,url,name) in dokus:
-                               self.dokusListe.append((decodeHtml(name), url, img))
-                       self.ml.setList(map(self._defaultlistleft, self.dokusListe))
-                       self.ml.moveToIndex(0)
-                       self.th_ThumbsQuery(self.dokusListe, 0, 1, 2, None, None, self.page, self.lastpage, mode=1)
-                       self.loadPicQueued()
-               else:
-                       self.dokusListe.append((_("No dokus found!"),"","",""))
-                       self.ml.setList(map(self._defaultlistleft, self.dokusListe))
-                       if self.filmQ.empty():
-                               self.eventL.clear()
-                       else:
-                               self.loadPageQueued()
-
-       def loadPic(self):
-               if self.picQ.empty():
-                       self.eventP.clear()
-                       return
-               if self.updateP:
-                       return
-               while not self.picQ.empty():
-                       self.picQ.get_nowait()
-
-               streamName = self['liste'].getCurrent()[0][0]
-               self['name'].setText(streamName)
-               streamPic = self['liste'].getCurrent()[0][2]
-               desc = None
-               self.getHandlung(desc)
-               self.updateP = 1
-               CoverHelper(self['coverArt'], self.ShowCoverFileExit).getCover(streamPic)
-
-       def getHandlung(self, desc):
-               if desc == None:
-                       self['handlung'].setText('')
-                       return
-               self.setHandlung(desc)
-
-       def setHandlung(self, data):
-               self['handlung'].setText(decodeHtml(data))
-
-       def ShowCoverFileExit(self):
-               self.updateP = 0;
-               self.keyLocked  = False
-               if not self.filmQ.empty():
-                       self.loadPageQueued()
-               else:
-                       self.eventL.clear()
-                       self.loadPic()
-
-       def loadPicQueued(self):
-               self.picQ.put(None)
-               if not self.eventP.is_set():
-                       self.eventP.set()
-               self.loadPic()
-
-       def parseStream(self, data):
-               m2 = re.search('//www.youtube.*?com/(embed|v)/(.*?)(\?|" |&amp)', data, re.S)
-               if m2:
-                       dhVideoId = m2.group(2)
-                       dhTitle = self['liste'].getCurrent()[0][0]
-                       self.session.open(
-                               YoutubePlayer,
-                               [(dhTitle, dhVideoId, None)],
-                               showPlaylist=False
-                               )
-
-       def keyOK(self):
-               if (self.keyLocked|self.eventL.is_set()):
-                       return
-               streamLink = self['liste'].getCurrent()[0][1]
-               twAgentGetPage(streamLink).addCallback(self.parseStream).addErrback(self.dataError)
\ No newline at end of file
index 48f8e7a..8d4cfab 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 07b9769..85855f1 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 77af061..1030723 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 3261973..f597d00 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 3bc2a11..c3ecc5a 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index d8bd7d8..9264908 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 2ce18a9..2660130 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 479e837..784f945 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 610a553..41bf7b4 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index c16ed20..b060e84 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 09a91c1..1192cc3 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 868899e..7724746 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 2932799..2c5f292 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 9deb167..881ca0c 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 7659aaa..b4010cd 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index cb55b8f..30b6cb5 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
diff --git a/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/crocotube.py b/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/crocotube.py
new file mode 100644 (file)
index 0000000..bb72bc7
--- /dev/null
@@ -0,0 +1,222 @@
+# -*- coding: utf-8 -*-
+#######################################################################################################
+#
+#    MediaPortal for Dreambox OS
+#
+#    Coded by MediaPortal Team (c) 2013-2020
+#
+#  This plugin is open source but it is NOT free software.
+#
+#  This plugin may only be distributed to and executed on hardware which
+#  is licensed by Dream Property GmbH. This includes commercial distribution.
+#  In other words:
+#  It's NOT allowed to distribute any parts of this plugin or its source code in ANY way
+#  to hardware which is NOT licensed by Dream Property GmbH.
+#  It's NOT allowed to execute this plugin and its source code or even parts of it in ANY way
+#  on hardware which is NOT licensed by Dream Property GmbH.
+#
+#  This applies to the source code as a whole as well as to parts of it, unless explicitely
+#  stated otherwise.
+#
+#  If you want to use or modify the code or parts of it, permission from the authors is necessary.
+#  You have to keep OUR license and inform us about any modification, but it may NOT be distributed
+#  other than under the conditions noted above.
+#
+#  As an exception regarding modifcations, you are NOT permitted to remove
+#  any copy protections implemented in this plugin or change them for means of disabling
+#  or working around the copy protections, unless the change has been explicitly permitted
+#  by the original authors. Also decompiling and modification of the closed source
+#  parts is NOT permitted.
+#
+#  Advertising with this plugin is NOT allowed.
+#
+#  For other uses, permission from the authors is necessary.
+#
+#######################################################################################################
+
+from Plugins.Extensions.MediaPortal.plugin import _
+from Plugins.Extensions.MediaPortal.resources.imports import *
+
+agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
+cookies = CookieJar()
+
+class crocotubeGenreScreen(MPScreen):
+
+       def __init__(self, session, mode):
+               self.mode = mode
+
+               global default_cover
+               if self.mode == "crocotube":
+                       self.portal = "CrocoTube.com"
+                       self.baseurl = "https://crocotube.com"
+                       default_cover = "file://%s/crocotube.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+
+               MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
+
+               self["actions"] = ActionMap(["MP_Actions"], {
+                       "ok"    : self.keyOK,
+                       "0" : self.closeAll,
+                       "cancel": self.keyCancel
+               }, -1)
+
+               self['title'] = Label(self.portal)
+               self['ContentTitle'] = Label("Genre:")
+
+               self.keyLocked = True
+               self.suchString = ''
+
+               self.ml = MenuList([], enableWrapAround=True, content=eListboxPythonMultiContent)
+               self['liste'] = self.ml
+
+               self.onLayoutFinish.append(self.loadPage)
+
+       def loadPage(self):
+               self.filmliste = []
+               self['name'].setText(_('Please wait...'))
+               url = self.baseurl + "/categories/"
+               twAgentGetPage(url, agent=agent, cookieJar=cookies).addCallback(self.parseData).addErrback(self.dataError)
+
+       def parseData(self, data):
+               cat = re.findall('class="ct-az-list-item" href="(.*?)">(.*?)</a>', data, re.S)
+               if cat:
+                       for (Url, Title) in cat:
+                               Title = upperString(Title)
+                               self.filmliste.append((decodeHtml(Title), Url))
+                       self.filmliste.sort()
+               self.filmliste.insert(0, ("Newest", "%s/longest/" % self.baseurl, default_cover))
+               self.filmliste.insert(0, ("Top Rated", "%s/top-rated/" % self.baseurl, default_cover))
+               self.filmliste.insert(0, ("Most Popular", "%s/most-popular/" % self.baseurl, default_cover))
+               self.filmliste.insert(0, ("Newest", "%s/" % self.baseurl, default_cover))
+               self.filmliste.insert(0, ("--- Search ---", "callSuchen", default_cover))
+               self.ml.setList(map(self._defaultlistcenter, self.filmliste))
+               self.keyLocked = False
+               self['name'].setText('')
+
+       def SuchenCallback(self, callback = None):
+               if callback is not None and len(callback):
+                       Name = "--- Search ---"
+                       self.suchString = callback
+                       Link = urllib.quote(callback).replace(' ', '+')
+                       self.session.open(crocotubeListScreen, Link, Name, self.portal, self.baseurl)
+
+       def keyOK(self):
+               if self.keyLocked:
+                       return
+               Name = self['liste'].getCurrent()[0][0]
+               if Name == "--- Search ---":
+                       self.suchen()
+               else:
+                       Link = self['liste'].getCurrent()[0][1]
+                       self.session.open(crocotubeListScreen, Link, Name, self.portal, self.baseurl)
+
+class crocotubeListScreen(MPScreen, ThumbsHelper):
+
+       def __init__(self, session, Link, Name, portal, baseurl):
+               self.Link = Link
+               self.Name = Name
+               self.portal = portal
+               self.baseurl = baseurl
+
+               global default_cover
+               if self.portal == "CrocoTube.com":
+                       default_cover = "file://%s/crocotube.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+
+               MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
+               ThumbsHelper.__init__(self)
+
+               self["actions"] = ActionMap(["MP_Actions"], {
+                       "ok"    : self.keyOK,
+                       "0" : self.closeAll,
+                       "cancel": self.keyCancel,
+                       "5" : self.keyShowThumb,
+                       "up" : self.keyUp,
+                       "down" : self.keyDown,
+                       "right" : self.keyRight,
+                       "left" : self.keyLeft,
+                       "nextBouquet" : self.keyPageUp,
+                       "prevBouquet" : self.keyPageDown,
+                       "green" : self.keyPageNumber
+               }, -1)
+
+               self['title'] = Label(self.portal)
+               self['ContentTitle'] = Label("Genre: %s" % self.Name)
+               self['name'] = Label(_("Please wait..."))
+               self['F2'] = Label(_("Page"))
+
+               self['Page'] = Label(_("Page:"))
+
+               self.keyLocked = True
+               self.ml = MenuList([], enableWrapAround=True, content=eListboxPythonMultiContent)
+               self['liste'] = self.ml
+               self.page = 1
+               self.lastpage = 1
+               self.onLayoutFinish.append(self.loadPage)
+
+       def loadPage(self):
+               self.keyLocked = True
+               self.filmliste = []
+               self['name'].setText(_("Please wait..."))
+               if re.match(".*?Search", self.Name):
+                       url = "%s/search/%s/?q=%s" % (self.baseurl, self.page, self.Link)
+               else:
+                       url = self.Link + str(self.page) + "/"
+               twAgentGetPage(url, agent=agent, cookieJar=cookies).addCallback(self.parseData).addErrback(self.dataError)
+
+       def parseData(self, data):
+               self.getLastPage(data, 'class="ct-pagination"(.*?)</div>')
+               parse = re.search('class="ct-videos-list">(.*?)$', data, re.S)
+               movies = re.findall('href="(%s/videos/.*?)"\sclass="ct-video-thumb".*?src="(.*?)"\salt="(.*?)".*?duration">(.*?)</div>.*?-views"><em>(.*?)</em>.*?rating"><em>(.*?)</em>' % self.baseurl, parse.group(1), re.S)
+               if movies:
+                       for (Url, Image, Title, Runtime, Views, Rating) in movies:
+                               if Image.startswith('//'):
+                                       Image = "https:" + Image
+                               self.filmliste.append((decodeHtml(Title), Url, Image, Runtime, Views, Rating))
+               if len(self.filmliste) == 0:
+                       self.filmliste.append((_('No videos found!'), None, None, '', ''))
+               self.ml.setList(map(self._defaultlistleft, self.filmliste))
+               self.ml.moveToIndex(0)
+               self.keyLocked = False
+               self.th_ThumbsQuery(self.filmliste, 0, 1, 2, None, None, self.page, self.lastpage, mode=1)
+               self.showInfos()
+
+       def showInfos(self):
+               Title = self['liste'].getCurrent()[0][0]
+               runtime = self['liste'].getCurrent()[0][3]
+               views = self['liste'].getCurrent()[0][4]
+               rating = self['liste'].getCurrent()[0][5]
+               self['handlung'].setText("Runtime: %s\nViews: %s\nRating: %s" % (runtime, views, rating))
+               self['name'].setText(Title)
+               coverUrl = self['liste'].getCurrent()[0][2]
+               CoverHelper(self['coverArt']).getCover(coverUrl)
+
+       def keyOK(self):
+               if self.keyLocked:
+                       return
+               self['name'].setText(_("Please wait..."))
+               Link = self['liste'].getCurrent()[0][1]
+               twAgentGetPage(Link, agent=agent, cookieJar=cookies).addCallback(self.getStreamData).addErrback(self.dataError)
+
+       def getStreamData(self, data):
+               raw = re.findall('source\ssrc="(.*?)".*?title="(\d+|LQ|HQ)', data, re.S)
+               if raw:
+                       maxres = 0
+                       for vid in raw:
+                                       if int(vid[1].replace('HQ','720').replace('LQ','360')) > maxres:
+                                               url = vid[0]
+                                               maxres = int(vid[1].replace('HQ','720').replace('LQ','360'))
+                       tw_agent_hlp = TwAgentHelper(cookieJar=cookies)
+                       tw_agent_hlp.getRedirectedUrl(url).addCallback(self.getStream).addErrback(self.dataError)
+               else:
+                       raw = re.findall('<source src="(.*?)"', data, re.S)
+                       if raw:
+                               url = raw[0]
+                               tw_agent_hlp = TwAgentHelper(cookieJar=cookies)
+                               tw_agent_hlp.getRedirectedUrl(url).addCallback(self.getStream).addErrback(self.dataError)
+
+       def getStream(self, url):
+               if url.startswith('//'):
+                       url = 'https:' + url
+               title = self['liste'].getCurrent()[0][0]
+               self['name'].setText(title)
+               mp_globals.player_agent = agent
+               self.session.open(SimplePlayer, [(title, url)], showPlaylist=False, ltype='crocotube')
\ No newline at end of file
index 385e03f..266ac8d 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index f3603ed..e6fbafa 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 5cede70..00a046c 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 746a56a..7b340da 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 6d00121..eb6804b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index dfddb35..4f8d8c8 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 8f4a91b..061fbfb 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -189,7 +189,7 @@ class epornerFilmScreen(MPScreen, ThumbsHelper):
                self.getLastPage(data, 'class="numlist2">(.*?)title=\'Next page\'')
                if "<h2>Recent HD Porn Videos</h2>" in data:
                        data = re.search('<h2>Recent HD Porn Videos</h2>(.*?)</html>', data, re.S).group(1)
-               Movies = re.findall('class="mb(?: hdy|)".*?>\s+<a\shref="(.*?)"\stitle="(.*?)".*?src="(.*?)".*?"mbtim">(.*?)</div>.*?"mbvie">(.*?)</div>', data, re.S)
+               Movies = re.findall('class="mb(?: hdy|)".*?>\s+<a\shref="(.*?)"\stitle="(.*?)".*?(?:src|data-src)="(?!data:image/)(.*?)".*?"mbtim">(.*?)</div>.*?"mbvie">(.*?)</div>', data, re.S)
                if Movies:
                        for (Url, Title, Image, Runtime, Views) in Movies:
                                Views = Views.replace(',','')
index 4934844..b9120fa 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 8a6dfa8..e81143f 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 1410f22..153333b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 9cdda84..32b2009 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index a6bd0dd..12812ea 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 9d318eb..ea8f8ad 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 34b7185..a710646 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -182,7 +182,7 @@ class hdzogFilmScreen(MPScreen, ThumbsHelper):
                self['name'].setText(_('Please wait...'))
                self.filmliste = []
                if re.match(".*Search", self.Name):
-                       url = "https://hdzog.com/search/%s/?q=%s" % (str(self.page), self.Link)
+                       url = "https://hdzog.com/search/%s/%s/" % (self.Link, str(self.page))
                else:
                        if self.page == 1:
                                url = self.Link
index afa1060..4f5daa3 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 36be1f9..12ff501 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index fe73d6f..7e31be2 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 5380fe0..29d403d 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 425cbdf..ae7820b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 9b0e3fd..a5daaca 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -164,12 +164,13 @@ class lovehomepornFilmScreen(MPScreen, ThumbsHelper):
 
        def loadData(self, data):
                self.getLastPage(data, 'class="pagination">(.*?)</div>', '.*(?:page=|>)(\d+)(?:"(?! class="prevnext">Next)|<)')
-               Movies = re.findall('href="https://lovehomeporn.com/video/(\d+)/.*?alt="(.*?)"\sdata-original=\'(.*?)\'.*?class="info">(.*?)</div>.*?class="text">(.*?)</span>.*?class="text">(\d+) views</span>', data, re.S)
+               Movies = re.findall('href="https://lovehomeporn.com/video/(\d+)/.*?alt="(.*?)"\sdata-original=\'(.*?)\'.*?class="info">(.*?)(?:</div>|<meta).*?class="text">(.*?)</span>.*?class="text".*?>(\d+) views</span>', data, re.S)
                if Movies:
                        for (Id, Title, Image, Runtime, Added, Views) in Movies:
+                               Runtime = Runtime.strip()
                                if Image.startswith('//'):
                                        Image = 'https:' + Image
-                               Image = Image.replace('cdn.static.','')
+                               Image = Image.replace('cdn.static.','').replace('.webp','.jpg')
                                self.filmliste.append((decodeHtml(Title), Id, Image, Runtime, Views, Added))
                if len(self.filmliste) == 0:
                        self.filmliste.append((_('No videos found!'), '', None, '', ''))
index 1196ca2..eec7e9b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index f836d23..23b5c35 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index b172e2c..6c83872 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 489ac3c..1619d54 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
diff --git a/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/nudez.py b/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/nudez.py
deleted file mode 100644 (file)
index 7b897f4..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-# -*- coding: utf-8 -*-
-#######################################################################################################
-#
-#    MediaPortal for Dreambox OS
-#
-#    Coded by MediaPortal Team (c) 2013-2019
-#
-#  This plugin is open source but it is NOT free software.
-#
-#  This plugin may only be distributed to and executed on hardware which
-#  is licensed by Dream Property GmbH. This includes commercial distribution.
-#  In other words:
-#  It's NOT allowed to distribute any parts of this plugin or its source code in ANY way
-#  to hardware which is NOT licensed by Dream Property GmbH.
-#  It's NOT allowed to execute this plugin and its source code or even parts of it in ANY way
-#  on hardware which is NOT licensed by Dream Property GmbH.
-#
-#  This applies to the source code as a whole as well as to parts of it, unless explicitely
-#  stated otherwise.
-#
-#  If you want to use or modify the code or parts of it, permission from the authors is necessary.
-#  You have to keep OUR license and inform us about any modification, but it may NOT be distributed
-#  other than under the conditions noted above.
-#
-#  As an exception regarding modifcations, you are NOT permitted to remove
-#  any copy protections implemented in this plugin or change them for means of disabling
-#  or working around the copy protections, unless the change has been explicitly permitted
-#  by the original authors. Also decompiling and modification of the closed source
-#  parts is NOT permitted.
-#
-#  Advertising with this plugin is NOT allowed.
-#
-#  For other uses, permission from the authors is necessary.
-#
-#######################################################################################################
-
-from Plugins.Extensions.MediaPortal.plugin import _
-from Plugins.Extensions.MediaPortal.resources.imports import *
-from Plugins.Extensions.MediaPortal.resources.twagenthelper import TwAgentHelper
-
-agent='Mozilla/5.0 (Windows NT 6.1; rv:44.0) Gecko/20100101 Firefox/44.0'
-json_headers = {
-       'Accept':'application/json',
-       'Accept-Language':'en,en-US;q=0.7,en;q=0.3',
-       'X-Requested-With':'XMLHttpRequest',
-       'Content-Type':'application/x-www-form-urlencoded',
-       }
-default_cover = "file://%s/nudez.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
-
-class nudezGenreScreen(MPScreen):
-
-       def __init__(self, session):
-               MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
-
-               self["actions"] = ActionMap(["MP_Actions"], {
-                       "ok" : self.keyOK,
-                       "0" : self.closeAll,
-                       "cancel" : self.keyCancel,
-                       "up" : self.keyUp,
-                       "down" : self.keyDown,
-                       "right" : self.keyRight,
-                       "left" : self.keyLeft
-               }, -1)
-
-               self['title'] = Label("Nudez.com")
-               self['ContentTitle'] = Label("Genre:")
-
-               self.keyLocked = True
-               self.suchString = ''
-
-               self.genreliste = []
-               self.ml = MenuList([], enableWrapAround=True, content=eListboxPythonMultiContent)
-               self['liste'] = self.ml
-
-               self.onLayoutFinish.append(self.layoutFinished)
-
-       def layoutFinished(self):
-               self.keyLocked = True
-               url = "https://nudez.com/channels/"
-               twAgentGetPage(url).addCallback(self.genreData).addErrback(self.dataError)
-
-       def genreData(self, data):
-               parse = re.search('<h1>Categories(.*?)$', data, re.S)
-               if parse:
-                       Cats = re.findall('class="item.*?href="(.*?)"\stitle="(.*?)".*?img\ssrc="(.*?)"', parse.group(1), re.S)
-                       if Cats:
-                               for (Url, Title, Image) in Cats:
-                                       Title = Title.replace('&amp;','&')
-                                       self.genreliste.append((Title, Url, Image))
-                               self.genreliste.sort()
-               self.genreliste.insert(0, ("Longest", "https://nudez.com/longest/", default_cover))
-               self.genreliste.insert(0, ("Most Discussed", "https://nudez.com/most-discussed/", default_cover))
-               self.genreliste.insert(0, ("Most Viewed", "https://nudez.com/most-viewed/", default_cover))
-               self.genreliste.insert(0, ("Top Rated", "https://nudez.com/top-rated/", default_cover))
-               self.genreliste.insert(0, ("Most Recent", "https://nudez.com/most-recent/", default_cover))
-               self.genreliste.insert(0, ("--- Search ---", "callSuchen", default_cover))
-               self.ml.setList(map(self._defaultlistcenter, self.genreliste))
-               self.keyLocked = False
-               self.showInfos()
-
-       def showInfos(self):
-               Image = self['liste'].getCurrent()[0][2]
-               CoverHelper(self['coverArt']).getCover(Image)
-
-       def keyOK(self):
-               if self.keyLocked:
-                       return
-               Name = self['liste'].getCurrent()[0][0]
-               if Name == "--- Search ---":
-                       self.suchen(suggest_func=self.getSuggestions)
-               else:
-                       Link = self['liste'].getCurrent()[0][1]
-                       self.session.open(nudezFilmScreen, Link, Name)
-
-       def SuchenCallback(self, callback = None):
-               if callback is not None and len(callback):
-                       Name = "--- Search ---"
-                       self.suchString = callback
-                       Link = urllib.quote(callback).replace(' ', '+')
-                       self.session.open(nudezFilmScreen, Link, Name)
-
-       def getSuggestions(self, text, max_res):
-               url = "https://nudez.com/includes/search_autocomplete.php?term=%s" % urllib.quote_plus(text)
-               d = twAgentGetPage(url, agent=agent, headers=json_headers, timeout=5)
-               d.addCallback(self.gotSuggestions, max_res)
-               d.addErrback(self.gotSuggestions, max_res, err=True)
-               return d
-
-       def gotSuggestions(self, suggestions, max_res, err=False):
-               list = []
-               if not err and type(suggestions) in (str, buffer):
-                       suggestions = json.loads(suggestions)
-                       for item in suggestions:
-                               list.append(str(item))
-                               max_res -= 1
-                               if not max_res: break
-               elif err:
-                       printl(str(suggestions),self,'E')
-               return list
-
-class nudezFilmScreen(MPScreen, ThumbsHelper):
-
-       def __init__(self, session, Link, Name):
-               self.Link = Link
-               self.Name = Name
-               MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
-               ThumbsHelper.__init__(self)
-
-               self["actions"] = ActionMap(["MP_Actions"], {
-                       "ok" : self.keyOK,
-                       "0" : self.closeAll,
-                       "cancel" : self.keyCancel,
-                       "5" : self.keyShowThumb,
-                       "up" : self.keyUp,
-                       "down" : self.keyDown,
-                       "right" : self.keyRight,
-                       "left" : self.keyLeft,
-                       "nextBouquet" : self.keyPageUp,
-                       "prevBouquet" : self.keyPageDown,
-                       "green" : self.keyPageNumber
-               }, -1)
-
-               self['title'] = Label("Nudez.com")
-               self['ContentTitle'] = Label("Genre: %s" % self.Name)
-               self['F2'] = Label(_("Page"))
-
-               self['Page'] = Label(_("Page:"))
-               self.keyLocked = True
-               self.page = 1
-               self.lastpage = 1
-
-               self.filmliste = []
-               self.ml = MenuList([], enableWrapAround=True, content=eListboxPythonMultiContent)
-               self['liste'] = self.ml
-
-               self.onLayoutFinish.append(self.loadPage)
-
-       def loadPage(self):
-               self.keyLocked = True
-               self['name'].setText(_('Please wait...'))
-               self.filmliste = []
-               if re.match(".*?Search", self.Name):
-                       url = "https://nudez.com/search/videos/%s/page%s.html" % (self.Link, str(self.page))
-               else:
-                       url = "%spage%s.html" % (self.Link, str(self.page))
-               twAgentGetPage(url).addCallback(self.loadData).addErrback(self.dataError)
-
-       def loadData(self, data):
-               self.getLastPage(data, 'class="pagination(.*?)</nav>', '.*[\/|>](\d+)[\"|<]')
-               Movies = re.findall('data-video=".*?href="(.*?)"\stitle="(.*?)".*?img\ssrc="(.*?)".*?class="time">(.*?)</span>', data, re.S)
-               if Movies:
-                       for (Url, Title, Image, Runtime) in Movies:
-                               self.filmliste.append((decodeHtml(Title), Url, Image, Runtime))
-               if len(self.filmliste) == 0:
-                       self.filmliste.append((_('No movies found!'), None, None, None))
-               self.ml.setList(map(self._defaultlistleft, self.filmliste))
-               self.ml.moveToIndex(0)
-               self.keyLocked = False
-               self.th_ThumbsQuery(self.filmliste, 0, 1, 2, None, None, self.page, self.lastpage, mode=1)
-               self.showInfos()
-
-       def showInfos(self):
-               Url = self['liste'].getCurrent()[0][1]
-               if Url == None:
-                       return
-               title = self['liste'].getCurrent()[0][0]
-               pic = self['liste'].getCurrent()[0][2]
-               runtime = self['liste'].getCurrent()[0][3]
-               self['name'].setText(title)
-               self['handlung'].setText("Runtime: %s" % runtime)
-               CoverHelper(self['coverArt']).getCover(pic)
-
-       def keyOK(self):
-               if self.keyLocked:
-                       return
-               Link = self['liste'].getCurrent()[0][1]
-               if Link == None:
-                       return
-               self.keyLocked = True
-               twAgentGetPage(Link).addCallback(self.getVideoPage).addErrback(self.dataError)
-
-       def getVideoPage(self, data):
-               videoPage = re.findall("<source src=\"(.*?)\" type=['|\"]video/mp4['|\"]", data, re.S)
-               if videoPage:
-                       self.keyLocked = False
-                       Title = self['liste'].getCurrent()[0][0]
-                       self.session.open(SimplePlayer, [(Title, videoPage[-1])], showPlaylist=False, ltype='nudez')
\ No newline at end of file
index aaed9bd..0114677 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 0892301..a72ab7e 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index e85c1a6..d669a49 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index d6a7ad7..dcc6916 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 64d0068..dba39e6 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index a61dce2..3ceecb8 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 9288809..690a42e 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index ee7bd82..9185b6a 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 8093f0e..38ecc91 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
diff --git a/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornoreino.py b/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/additions/porn/pornoreino.py
new file mode 100644 (file)
index 0000000..208f98c
--- /dev/null
@@ -0,0 +1,211 @@
+# -*- coding: utf-8 -*-
+#######################################################################################################
+#
+#    MediaPortal for Dreambox OS
+#
+#    Coded by MediaPortal Team (c) 2013-2020
+#
+#  This plugin is open source but it is NOT free software.
+#
+#  This plugin may only be distributed to and executed on hardware which
+#  is licensed by Dream Property GmbH. This includes commercial distribution.
+#  In other words:
+#  It's NOT allowed to distribute any parts of this plugin or its source code in ANY way
+#  to hardware which is NOT licensed by Dream Property GmbH.
+#  It's NOT allowed to execute this plugin and its source code or even parts of it in ANY way
+#  on hardware which is NOT licensed by Dream Property GmbH.
+#
+#  This applies to the source code as a whole as well as to parts of it, unless explicitely
+#  stated otherwise.
+#
+#  If you want to use or modify the code or parts of it, permission from the authors is necessary.
+#  You have to keep OUR license and inform us about any modification, but it may NOT be distributed
+#  other than under the conditions noted above.
+#
+#  As an exception regarding modifcations, you are NOT permitted to remove
+#  any copy protections implemented in this plugin or change them for means of disabling
+#  or working around the copy protections, unless the change has been explicitly permitted
+#  by the original authors. Also decompiling and modification of the closed source
+#  parts is NOT permitted.
+#
+#  Advertising with this plugin is NOT allowed.
+#
+#  For other uses, permission from the authors is necessary.
+#
+#######################################################################################################
+
+from Plugins.Extensions.MediaPortal.plugin import _
+from Plugins.Extensions.MediaPortal.resources.imports import *
+from Plugins.Extensions.MediaPortal.resources.decrypt import decrypturl
+
+agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
+default_cover = "file://%s/pornoreino.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+
+class pornoreinoGenreScreen(MPScreen):
+
+       def __init__(self, session):
+               MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
+
+               self["actions"] = ActionMap(["MP_Actions"], {
+                       "ok" : self.keyOK,
+                       "0" : self.closeAll,
+                       "cancel" : self.keyCancel
+               }, -1)
+
+               self['title'] = Label("PornoReino.com")
+               self['ContentTitle'] = Label("Genre:")
+               self.keyLocked = True
+
+               self.suchString = ''
+
+               self.filmliste = []
+               self.ml = MenuList([], enableWrapAround=True, content=eListboxPythonMultiContent)
+               self['liste'] = self.ml
+
+               self.onLayoutFinish.append(self.loadPage)
+
+       def loadPage(self):
+               self.filmliste = []
+               self.keyLocked = True
+               url = "https://en.pornoreino.com/categories"
+               twAgentGetPage(url, agent=agent).addCallback(self.genreData).addErrback(self.dataError)
+
+       def genreData(self, data):
+               Cats = re.findall('class="item" href="(.*?)" title="(.*?)"', data, re.S)
+               if Cats:
+                       for (Url, Title) in Cats:
+                               Title = Title.replace('XXX','').strip()
+                               self.filmliste.append((upperString(Title), Url))
+                       self.filmliste.sort()
+               self.filmliste.insert(0, ("Top Rated", "https://en.pornoreino.com/top-rated"))
+               self.filmliste.insert(0, ("Most Viewed", "https://en.pornoreino.com/most-popular"))
+               self.filmliste.insert(0, ("Newest", "https://en.pornoreino.com/latest-updates"))
+               self.filmliste.insert(0, ("--- Search ---", "callSuchen"))
+               self.ml.setList(map(self._defaultlistcenter, self.filmliste))
+               self.keyLocked = False
+
+       def keyOK(self):
+               if self.keyLocked:
+                       return
+               Name = self['liste'].getCurrent()[0][0]
+               Link = self['liste'].getCurrent()[0][1]
+               if Name == "--- Search ---":
+                       self.suchen()
+               elif Link:
+                       self.session.open(pornoreinoFilmScreen, Link, Name)
+
+       def SuchenCallback(self, callback = None):
+               if callback is not None and len(callback):
+                       Name = "--- Search ---"
+                       self.suchString = callback
+                       Link = urllib.quote(self.suchString).replace(' ', '-')
+                       self.session.open(pornoreinoFilmScreen, Link, Name)
+
+class pornoreinoFilmScreen(MPScreen, ThumbsHelper):
+
+       def __init__(self, session, Link, Name):
+               self.Link = Link
+               self.Name = Name
+               MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
+               ThumbsHelper.__init__(self)
+
+               self["actions"] = ActionMap(["MP_Actions"], {
+                       "ok" : self.keyOK,
+                       "0" : self.closeAll,
+                       "cancel" : self.keyCancel,
+                       "5" : self.keyShowThumb,
+                       "up" : self.keyUp,
+                       "down" : self.keyDown,
+                       "right" : self.keyRight,
+                       "left" : self.keyLeft,
+                       "nextBouquet" : self.keyPageUp,
+                       "prevBouquet" : self.keyPageDown,
+                       "green" : self.keyPageNumber
+               }, -1)
+
+               self['title'] = Label("PornoReino.com")
+               self['ContentTitle'] = Label("Genre: %s" % self.Name)
+               self['F2'] = Label(_("Page"))
+
+               self['Page'] = Label(_("Page:"))
+               self.keyLocked = True
+               self.page = 1
+               self.lastpage = 1
+
+               self.filmliste = []
+               self.ml = MenuList([], enableWrapAround=True, content=eListboxPythonMultiContent)
+               self['liste'] = self.ml
+
+               self.onLayoutFinish.append(self.loadPage)
+
+       def loadPage(self):
+               self.keyLocked = True
+               self['name'].setText(_('Please wait...'))
+               self.filmliste = []
+               if re.match(".*Search", self.Name):
+                       url = "https://en.pornoreino.com/search-porn?q=%s&mode=async&function=get_block&block_id=list_videos_videos_list_search_result&q=%s&category_ids=&sort_by=&from_videos=%s&from_albums=%s" % (self.Link.replace('-','+'), self.Link.replace('-','+'), str(self.page), str(self.page))
+               else:
+                       if "categories" in self.Link:
+                               url = "%s?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=post_date&from=%s" % (self.Link, str(self.page))
+                       elif "latest-updates" in self.Link:
+                               url = "%s?mode=async&function=get_block&block_id=list_videos_latest_videos_list&sort_by=post_date&from=%s" % (self.Link, str(self.page))
+                       elif "top-rated" in self.Link:
+                               url = "%s?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=rating&from=%s" % (self.Link, str(self.page))
+                       elif "most-popular" in self.Link:
+                               url = "%s?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=video_viewed&from=%s" % (self.Link, str(self.page))
+               print url
+               twAgentGetPage(url, agent=agent).addCallback(self.genreData).addErrback(self.dataError)
+
+       def genreData(self, data):
+               self.getLastPage(data, 'class="pagination"(.*?)>Last<', '.*[from:|>](\d+)["|<]')
+               Movies = re.findall('class="item\s{0,3}".*?href="(.*?)" title="(.*?)".*?src="(.*?)".*?class="duration">(.*?)</div>.*?class="views">((?:\d+\s|)(?:\d+\s|)\d+)</div>', data, re.S)
+               if Movies:
+                       for (Url, Title, Image, Runtime, Views) in Movies:
+                               Runtime = Runtime.replace('h','').replace('m','').replace('s','')
+                               self.filmliste.append((decodeHtml(Title), Url, Image, Runtime, Views.replace(' ','')))
+               if len(self.filmliste) == 0:
+                       self.filmliste.append((_('No videos found!'), None, None, '', ''))
+               self.ml.setList(map(self._defaultlistleft, self.filmliste))
+               self.ml.moveToIndex(0)
+               self.keyLocked = False
+               self.th_ThumbsQuery(self.filmliste, 0, 1, 2, None, None, self.page, self.lastpage, mode=1)
+               self.showInfos()
+
+       def showInfos(self):
+               title = self['liste'].getCurrent()[0][0]
+               url = self['liste'].getCurrent()[0][1]
+               pic = self['liste'].getCurrent()[0][2]
+               runtime = self['liste'].getCurrent()[0][3]
+               views = self['liste'].getCurrent()[0][4]
+               self['name'].setText(title)
+               self['handlung'].setText("Runtime: %s\nViews: %s" % (runtime, views))
+               CoverHelper(self['coverArt']).getCover(pic)
+
+       def keyOK(self):
+               if self.keyLocked:
+                       return
+               Link = self['liste'].getCurrent()[0][1]
+               if Link:
+                       self['name'].setText(_('Please wait...'))
+                       twAgentGetPage(Link, agent=agent).addCallback(self.parseVideo).addErrback(self.dataError)
+
+       def parseVideo(self, data):
+               Title = self['liste'].getCurrent()[0][0]
+               mp_globals.player_agent = agent
+               license = re.findall('license_code:\s\'(.*?)\',', data, re.S)
+               url = re.findall('video_(?:alt_|)url\d{0,1}:\s\'(.*?)\'.*?video_(?:alt_|)url_text:\s\'(\d+)(?:p|)\',', data, re.S)
+               if not url:
+                       url = re.findall('video_(?:alt_|)url\d{0,1}:\s\'(.*?)\'', data, re.S)
+               if license and url:
+                       try:
+                               max = 0
+                               for vid in url:
+                                       if int(vid[1]) > max:
+                                               max = int(vid[1])
+                                               url = vid[0]
+                       except:
+                               url = url[-1]
+                       if 'function/0/' in url:
+                               url = decrypturl(url, license[0])
+                       self['name'].setText('')
+                       self.session.open(SimplePlayer, [(Title, url)], showPlaylist=False, ltype='pornoreino')
\ No newline at end of file
index 6dd081a..2bd6fef 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index fe12521..bee6b8f 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 0506b4d..a2580a1 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 79f9ac3..7502edf 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -55,12 +55,6 @@ class pornxioGenreScreen(MPScreen):
                        self.portal = "HandjobHub.com"
                        self.baseurl = "https://handjobhub.com"
                        default_cover = "file://%s/handjobhub.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
-               elif self.mode == "swipexxx":
-                       if self.genre == "category":
-                               self.genre = "channels"
-                       self.portal = "SWIPE.XXX"
-                       self.baseurl = "https://swipe.xxx"
-                       default_cover = "file://%s/swipexxx.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
                elif self.mode == "hypnotube":
                        if self.genre == "category":
                                self.genre = "channels"
@@ -73,6 +67,42 @@ class pornxioGenreScreen(MPScreen):
                        self.portal = "LaidHub.com"
                        self.baseurl = "https://www.laidhub.com"
                        default_cover = "file://%s/laidhub.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.mode == "nudez":
+                       if self.genre == "category":
+                               self.genre = "channels"
+                       self.portal = "Nudez.com"
+                       self.baseurl = "https://nudez.com"
+                       default_cover = "file://%s/nudez.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.mode == "drporntube":
+                       if self.genre == "category":
+                               self.genre = "channels"
+                       self.portal = "DrPornTube.com"
+                       self.baseurl = "https://www.drporntube.com"
+                       default_cover = "file://%s/drporntube.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.mode == "wetsins":
+                       if self.genre == "category":
+                               self.genre = "channels"
+                       self.portal = "WetSins.com"
+                       self.baseurl = "https://www.wetsins.com"
+                       default_cover = "file://%s/wetsins.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.mode == "sinclips":
+                       if self.genre == "category":
+                               self.genre = "tags"
+                       self.portal = "SinClips.com"
+                       self.baseurl = "https://sinclips.com"
+                       default_cover = "file://%s/sinclips.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.mode == "eroxia":
+                       if self.genre == "category":
+                               self.genre = "cat"
+                       self.portal = "Eroxia.com"
+                       self.baseurl = "https://www.eroxia.com"
+                       default_cover = "file://%s/eroxia.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.mode == "xnxxhamster":
+                       if self.genre == "category":
+                               self.genre = "channels"
+                       self.portal = "XNXXHamster.com"
+                       self.baseurl = "https://xnxxhamster.net"
+                       default_cover = "file://%s/xnxxhamster.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
 
                MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
 
@@ -105,19 +135,41 @@ class pornxioGenreScreen(MPScreen):
                twAgentGetPage(url, agent=agent).addCallback(self.genreData).addErrback(self.dataError)
 
        def genreData(self, data):
-               parse = re.search('<h1>\s{0,70}(?:Porn Channels|Channels|Categories|List of Handjob Categories|Browse HD Porn Sites)(.*?)$', data, re.S)
-               if parse:
-                       Cats = re.findall('class="item-col item--(?:channel|paysite).*?href="(.*?)".*?img.*?(?:src|data-opts-original)="(\w.*?)".*?alt="(.*?)"', parse.group(1), re.S)
-                       if Cats:
-                               for (Url, Image, Title) in Cats:
-                                       if "4K" in Title:
-                                               if mp_globals.model in ["one","two"]:
-                                                       self.filmliste.append((upperString(decodeHtml(Title)), Url, Image))
-                                       else:
-                                               if not "Premium VOD" in Title:
-                                                       self.filmliste.append((upperString(decodeHtml(Title)), Url, Image))
+               if self.genre == "tags":
+                       parse = re.findall("<a href='(.*?)'>(.*?)</a> <span>\((\d+)\)</span><br>", data, re.S)
+                       if parse:
+                               for (Url, Title, Count) in parse:
+                                       if int(Count) >= 30:
+                                               self.filmliste.append((upperString(decodeHtml(Title)), Url, default_cover))
                                self.filmliste.sort()
-               if (self.genre == "category" or self.genre == "channels" or self.genre == "porn-categories"):
+               if self.genre == "cat":
+                       parse = re.search('<h(?:1|2).*?>\s{0,70}(?:Porn Channels|Channels|Categories|Amateur Porn Categories)(.*?)$', data, re.S)
+                       if parse:
+                               Cats = re.findall('class="citem col.*?href="(.*?)".*?img.*?(?:src|data-opts-original)="(\w.*?)".*?alt="(.*?)"', parse.group(1), re.S)
+                               if Cats:
+                                       for (Url, Image, Title) in Cats:
+                                               if "4K" in Title:
+                                                       if mp_globals.model in ["one","two"]:
+                                                               self.filmliste.append((upperString(decodeHtml(Title)), Url, Image))
+                                               else:
+                                                       if not "Premium VOD" in Title:
+                                                               self.filmliste.append((upperString(decodeHtml(Title)), Url, Image))
+                                       self.filmliste.sort()
+               else:
+                       parse = re.search('<h(?:1|2).*?>\s{0,70}(?:Porn Channels|Channels|Categories|List of Handjob Categories|Browse HD Porn Sites|Amateur Porn Categories)(.*?)$', data, re.S)
+                       if parse:
+                               Cats = re.findall('class="item-col item--(?:channel|paysite).*?href="(.*?)".*?img.*?(?:src|data-opts-original)="(\w.*?)".*?alt="(.*?)"', parse.group(1), re.S)
+                               if Cats:
+                                       for (Url, Image, Title) in Cats:
+                                               if "4K" in Title:
+                                                       if mp_globals.model in ["one","two"]:
+                                                               self.filmliste.append((upperString(decodeHtml(Title)), Url, Image))
+                                               else:
+                                                       if not "Premium VOD" in Title:
+                                                               if not "GIFS" in Title:
+                                                                       self.filmliste.append((upperString(decodeHtml(Title)), Url, Image))
+                                       self.filmliste.sort()
+               if (self.genre == "category" or self.genre == "cat" or self.genre == "channels" or self.genre == "porn-categories" or self.genre == "tags"):
                        if self.mode == "pornxio":
                                self.filmliste.insert(0, ("Studios", "studios", default_cover))
                        elif self.mode == "handjobhub" or self.mode == "laidhub":
@@ -173,12 +225,22 @@ class pornxioFilmScreen(MPScreen, ThumbsHelper):
                        default_cover = "file://%s/pornxio.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
                elif self.portal == "HandjobHub.com":
                        default_cover = "file://%s/handjobhub.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
-               elif self.portal == "SWIPE.XXX":
-                       default_cover = "file://%s/swipexxx.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
                elif self.portal == "hypnotube.com":
                        default_cover = "file://%s/hypnotube.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
                elif self.portal == "LaidHub.com":
                        default_cover = "file://%s/laidhub.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.portal == "Nudez.com":
+                       default_cover = "file://%s/nudez.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.portal == "DrPornTube.com":
+                       default_cover = "file://%s/drporntube.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.portal == "WetSins.com":
+                       default_cover = "file://%s/wetsins.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.portal == "SinClips.com":
+                       default_cover = "file://%s/sinclips.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.portal == "Eroxia.com":
+                       default_cover = "file://%s/eroxia.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+               elif self.portal == "XNXXHamster.net":
+                       default_cover = "file://%s/xnxxhamster.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
 
                MPScreen.__init__(self, session, skin='MP_Plugin', default_cover=default_cover)
                ThumbsHelper.__init__(self)
@@ -228,11 +290,25 @@ class pornxioFilmScreen(MPScreen, ThumbsHelper):
                        parse = re.search('^(.*?)<!-- // TOPLIST TEMPLATE // -->', data, re.S)
                        if parse:
                                data = parse.group(1)
+               if "<!-- STANDARD CONTENT -->" in data:
+                       parse = re.search('<!-- STANDARD CONTENT -->(.*?)$', data, re.S)
+                       if parse:
+                               data = parse.group(1)
+               if "<!-- FOOTER DOWN -->" in data:
+                       parse = re.search('^(.*?)<!-- FOOTER DOWN -->', data, re.S)
+                       if parse:
+                               data = parse.group(1)
                Movies = re.findall('class="item-col col\s{0,1}"\s{0,1}(?:\sid="content-\d+"|\s{0,1}|data-video=".*?")>.*?href="(.*?)".*?(?:src|data-opts-original)="(?!data:image/)(\w.*?)".*?alt="(.*?)".*?class="time">(.*?)</span>.*?i-thumbs-up".*?sub-desc">(.*?)</span>.*?class="icon i-eye">.*?class="sub-desc">(.*?)</span>', data, re.S)
                if Movies:
                        for (Url, Image, Title, Runtime, Rating, Views) in Movies:
                                if not "Photos" in Runtime:
                                        self.filmliste.append((decodeHtml(Title).strip(), Url, Image.replace(' ','%20'), Runtime, Rating, Views))
+               else:
+                       Movies = re.findall('class="item col">.*?href="(.*?)".*?class="icon -thumb-up">.*?class="item__stat-label">(.*?)</span>.*?class="icon -eye">.*?class="item__stat-label">(.*?)</span>.*?class="icon -time">.*?class="item__stat-label">(.*?)</span>.*?(?:src|data-opts-original)="(?!data:image/)(\w.*?)".*?alt="(.*?)".*?', data, re.S)
+                       if Movies:
+                               for (Url, Rating, Views, Runtime, Image, Title) in Movies:
+                                       if not "Photos" in Runtime:
+                                               self.filmliste.append((decodeHtml(Title).strip(), Url, Image.replace(' ','%20'), Runtime, Rating, Views))
                if len(self.filmliste) == 0:
                        self.filmliste.append((_('No videos found!'), None, None, '', '', ''))
                self.ml.setList(map(self._defaultlistleft, self.filmliste))
@@ -267,9 +343,9 @@ class pornxioFilmScreen(MPScreen, ThumbsHelper):
        def parseVideo(self, data):
                Title = self['liste'].getCurrent()[0][0]
                mp_globals.player_agent = agent
-               url = re.findall('file:\s{0,1}["|\'](.*?)["|\'],', data, re.S)
+               url = re.findall('<source\ssrc=["|\'](.*?)["|\']', data, re.S)
                if not url:
-                       url = re.findall('<source\ssrc=["|\'](.*?)["|\']', data, re.S)
+                       url = re.findall('file:\s{0,1}["|\'](.*?)["|\'],', data, re.S)
                if url:
                        url = url[0]
                        if "laidhub" in url:
index 89d0e88..7352382 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 5d8e3ec..38db60e 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index cef5291..d7c445a 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 0b22503..dcaa56a 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -40,6 +40,7 @@ from Plugins.Extensions.MediaPortal.resources.imports import *
 agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
 
 default_cover = "file://%s/sexu.png" % (config_mp.mediaportal.iconcachepath.value + "logos")
+sexu_cookies = CookieJar()
 
 class sexuGenreScreen(MPScreen):
 
@@ -67,7 +68,7 @@ class sexuGenreScreen(MPScreen):
                self.keyLocked = True
                self['name'].setText(_('Please wait...'))
                url = "https://sexu.com/"
-               getPage(url).addCallback(self.genreData).addErrback(self.dataError)
+               twAgentGetPage(url, agent=agent, cookieJar=sexu_cookies).addCallback(self.genreData).addErrback(self.dataError)
 
        def genreData(self, data):
                parse = re.search('sidebar-search-default">(.*?)</ul>', data, re.S)
@@ -148,7 +149,7 @@ class sexuFilmScreen(MPScreen, ThumbsHelper):
                        url = "https://sexu.com/search?q=%s&page=%s" % (self.Link, str(self.page))
                else:
                        url = "%s%s" % (self.Link, str(self.page))
-               getPage(url).addCallback(self.loadData).addErrback(self.dataError)
+               twAgentGetPage(url, agent=agent, cookieJar=sexu_cookies).addCallback(self.loadData).addErrback(self.dataError)
 
        def loadData(self, data):
                self.getLastPage(data, 'class="pagination">(.*?)</ul>', '.*>(\d+)<')
@@ -186,18 +187,17 @@ class sexuFilmScreen(MPScreen, ThumbsHelper):
                Link = self['liste'].getCurrent()[0][1]
                if Link == None:
                        return
-               getPage(Link).addCallback(self.getVideoData).addErrback(self.dataError)
+               twAgentGetPage(Link, agent=agent, cookieJar=sexu_cookies).addCallback(self.getVideoData).addErrback(self.dataError)
 
        def getVideoData(self, data):
-               stream_urls = re.findall('"src":"(.*?)","quality":"(\d+)p",', data)
+               stream_urls = re.findall('"downloadUrl":"(.*?)"', data)
                if stream_urls:
-                       res = 0
-                       for stream in stream_urls:
-                               if int(stream[1]) > res:
-                                       link = stream[0]
-                                       res = int(stream[1])
                        title = self['liste'].getCurrent()[0][0]
-                       headers = '&Referer=https://sexu.com/'
+                       import requests
+                       ck = requests.utils.dict_from_cookiejar(sexu_cookies)
+                       headers = '&Cookie=%s' % ','.join(['%s=%s' % (key, urllib.quote_plus(ck[key])) for key in ck])
+                       headers = headers + '&Referer=https://sexu.com/'
+                       link = stream_urls[0]
                        if link.startswith('//'):
                                link = "https:" + link
                        link = link + '#User-Agent='+agent+headers
index a8b195f..3c2ecf8 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index a921841..6889761 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 43069ba..f041811 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 48caea0..7782ca1 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -214,13 +214,17 @@ class spankbangFilmScreen(MPScreen, ThumbsHelper):
        def genreData(self, data):
                self.getLastPage(data, 'class="pagination">(.*?)</ul>')
                parse = re.search('class="results(.*?)$', data, re.S)
-               Movies = re.findall('class="video-item".*?href="(.*?)".*?data-src="(.*?)"\salt="(.*?)".*?class="stats".*?fa-eye"></i>\s(.*?)\s.*?fa-thumbs-o-up"></i>\s(.*?)\s.*?<span>(.*?)</span', parse.group(1), re.S)
+               Movies = re.findall('class="video-item".*?href="(.*?)".*?data-src="(.*?)"\salt="(.*?)".*?class="i-len">(.*?)</span>.*?class="stats">(.*?)(?:\s|&nbsp;).*?(.*?%).*?<span>(.*?)</span', parse.group(1), re.S)
                if Movies:
-                       for (Url, Image, Title, Views, Rating, Age) in Movies:
+                       for (Url, Image, Title, Runtime, Views, Rating, Age) in Movies:
                                Url = "https://spankbang.com" + Url
                                if Image.startswith('//'):
                                        Image = "http:" + Image
-                               self.filmliste.append((decodeHtml(Title), Url, Image, Rating, Views, Age))
+                               if Runtime.endswith('m'):
+                                       Runtime = Runtime + 'in'
+                               Rating = Rating.replace('&nbsp;','').strip()
+                               Age = Age + ' ago'
+                               self.filmliste.append((decodeHtml(Title), Url, Image, Rating, Views, Age, Runtime))
                if len(self.filmliste) == 0:
                        self.filmliste.append((_('No movies found!'), "", None, None, None))
                self.ml.setList(map(self._defaultlistleft, self.filmliste))
@@ -265,6 +269,7 @@ class spankbangFilmScreen(MPScreen, ThumbsHelper):
                rating = self['liste'].getCurrent()[0][3]
                views = self['liste'].getCurrent()[0][4]
                age = self['liste'].getCurrent()[0][5]
+               runtime = self['liste'].getCurrent()[0][6]
                self['name'].setText(title)
                if self.agename:
                        agename = "\n%s: %s" % (_("Filter"), self.agename)
@@ -274,7 +279,7 @@ class spankbangFilmScreen(MPScreen, ThumbsHelper):
                        sort = "\n%s: %s" % (_("Sort order"), self.sortname)
                else:
                        sort = ''
-               self['handlung'].setText("Rating: %s\nViews: %s\nAge: %s%s%s" % (rating, views, age, agename, sort))
+               self['handlung'].setText("Runtime: %s\nRating: %s\nViews: %s\nAdded: %s%s%s" % (runtime, rating, views, age, agename, sort))
                CoverHelper(self['coverArt']).getCover(pic)
 
        def keyOK(self):
index f89271e..0d656e0 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 5d528de..508e13e 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 7f68117..6f96ecf 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index f2dd819..659dd12 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 558e3db..d0d5565 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index eb3a2f8..d5a745d 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 9cd4198..733a254 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 7302974..dae43b2 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 6cc152f..698232f 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 703225f..1dc630f 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 44e974f..d961c37 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index c8ceb5a..ababbc8 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 11af4e3..19603c1 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 84c3088..03d55ea 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index a3b6efe..bbcbd0c 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index b54fbdd..517012b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 81464df..1d81600 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 212e872..b1b8e02 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index f5848ad..49f7660 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 15f758e..fbb8625 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 6d2996b..2f173cd 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index c13e633..22df3ed 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -537,10 +537,10 @@ class xvideosFilmScreen(MPScreen, ThumbsHelper):
                        self.counter = 1
                        self.url2 = None
                        if "$$PORNSTAR$$" in url and "channels/" in url:
-                               url = url.replace('$$PORNSTAR$$', 'new')
+                               url = url.replace('$$PORNSTAR$$', 'best')
                        if "$$PORNSTAR$$" in url:
                                self.counter = 2
-                               self.url2 = url.replace('$$PORNSTAR$$', 'new')
+                               self.url2 = url.replace('$$PORNSTAR$$', 'best')
                                url = url.replace('$$PORNSTAR$$', 'pornstar-new')
                                twAgentGetPage(self.url2, agent=agent, cookieJar=cookies, headers=headers).addCallback(self.genreData).addErrback(self.dataError)
                        twAgentGetPage(url, agent=agent, cookieJar=cookies, headers=headers).addCallback(self.genreData).addErrback(self.dataError)
index 35e1fff..fdf016a 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 30dfa25..7b6bdcd 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 9b4c1db..e006dc6 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 5cf6944..7eb5f2d 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -208,7 +208,12 @@ class vids(MPScreen):
                        getPage(url, agent=ptvAgent, headers={'Accept':'application/json;pk=BCpkADawqM3sHGtdSMkF8i2PaiJ_d80U27WemZ7iCLP-9C1sxUoTeTfeECM8LcCVKswW7-C06UeXnq1rHWqwt4t9GnMI7mXiqQ0o-RDSIDRtDA25a6RC9-N0ZEhCwcWDAxpdhU7LDIY4xsfE'}).addCallback(self.getStream).addErrback(self.dataError)
 
        def getStream(self, data):
-               video = re.findall('"width":\d+,"src":"(.*?)",', data, re.S)
                title = self['liste'].getCurrent()[0][0]
                self['name'].setText(title)
-               self.session.open(SimplePlayer, [(title, video[-1])], showPlaylist=False, ltype='pokerstars')
\ No newline at end of file
+               video = re.findall('"width":(\d+),"src":"(.*?)",', data, re.S)
+               max = 0
+               for item in video:
+                       if int(item[0]) > max:
+                               max = int(item[0])
+                               url = item[1]
+               self.session.open(SimplePlayer, [(title, url)], showPlaylist=False, ltype='pokerstars')
\ No newline at end of file
index 64694a9..3788037 100644 (file)
                        <key id="KEY_F5" mapto="specTmdb" flags="m" />
                </device>
                <key id="KEY_TV" mapto="specTv" flags="l" />
+               <key id="KEY_VIDEO" mapto="specTv" flags="l" />
+               <key id="KEY_RECORD" mapto="specTv" flags="l" />
                <key id="KEY_INFO" mapto="specTmdb" flags="m" />
        </map>
        <map context="MP_SP_Move">
index c3adc20..25c1059 100644 (file)
Binary files a/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/locale/de/LC_MESSAGES/MediaPortal.mo and b/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/locale/de/LC_MESSAGES/MediaPortal.mo differ
index cf7ee3d..df8aae9 100644 (file)
@@ -1,8 +1,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: MediaPortal\n"
-"POT-Creation-Date: 2019-12-23 18:00+0100\n"
-"PO-Revision-Date: 2019-12-23 18:01+0100\n"
+"POT-Creation-Date: 2019-12-29 19:18+0100\n"
+"PO-Revision-Date: 2019-12-29 19:18+0100\n"
 "Last-Translator: dhwz <dhwz@gmx.net>\n"
 "Language-Team: MediaPortal Team\n"
 "Language: de_DE\n"
@@ -26,19 +26,17 @@ msgstr ""
 #: mpgz/src/additions/porn/freeomovie.py:99
 #: mpgz/src/additions/porn/hqporner.py:144
 #: mpgz/src/additions/porn/incestflix.py:91
-#: mpgz/src/additions/porn/javbraze.py:181
+#: mpgz/src/additions/porn/javbraze.py:175
 #: mpgz/src/additions/porn/javdos.py:109 mpgz/src/additions/porn/lfporn.py:89
 #: mpgz/src/additions/porn/mydirtyhobby.py:90
 #: mpgz/src/additions/porn/pandamovie.py:129
 #: mpgz/src/additions/porn/paradisehill.py:101
 #: mpgz/src/additions/porn/porn00.py:101
-#: mpgz/src/additions/porn/pornfreetv.py:155
 #: mpgz/src/additions/porn/pornfromczech.py:95
 #: mpgz/src/additions/porn/pornrewind.py:99
 #: mpgz/src/additions/porn/pornstreams.py:110
 #: mpgz/src/additions/porn/porntrex.py:220
 #: mpgz/src/additions/porn/pornvex.py:90
-#: mpgz/src/additions/porn/pornvortexx.py:100
 #: mpgz/src/additions/porn/streammdh.py:128
 #: mpgz/src/additions/porn/streamxxx.py:153
 #: mpgz/src/additions/porn/yourpornsexy.py:144
@@ -103,8 +101,8 @@ msgstr ""
 #: src/additions/porn/xpaja.py:148 src/additions/porn/xvideos.py:291
 #: src/additions/porn/xvideos.py:487 src/additions/porn/xxxdan.py:166
 #: src/additions/porn/youjizz.py:171 src/additions/porn/youporn.py:316
-#: src/additions/porn/youporn.py:383 src/plugin.py:2137 src/plugin.py:2389
-#: src/plugin.py:3187 src/plugin.py:3206 src/resources/showAsThumb.py:247
+#: src/additions/porn/youporn.py:383 src/plugin.py:2051 src/plugin.py:2301
+#: src/plugin.py:3073 src/plugin.py:3092 src/resources/showAsThumb.py:247
 msgid "Page"
 msgstr "Seite"
 
@@ -118,25 +116,22 @@ msgstr "Seite"
 #: mpgz/src/additions/porn/freeomovie.py:101
 #: mpgz/src/additions/porn/hqporner.py:146
 #: mpgz/src/additions/porn/incestflix.py:93
-#: mpgz/src/additions/porn/javbraze.py:183
+#: mpgz/src/additions/porn/javbraze.py:177
 #: mpgz/src/additions/porn/javdos.py:111 mpgz/src/additions/porn/lfporn.py:91
 #: mpgz/src/additions/porn/mydirtyhobby.py:94
 #: mpgz/src/additions/porn/pandamovie.py:131
 #: mpgz/src/additions/porn/paradisehill.py:107
 #: mpgz/src/additions/porn/porn00.py:103
-#: mpgz/src/additions/porn/pornfreetv.py:157
 #: mpgz/src/additions/porn/pornfromczech.py:97
 #: mpgz/src/additions/porn/pornrewind.py:101
 #: mpgz/src/additions/porn/pornstreams.py:112
 #: mpgz/src/additions/porn/porntrex.py:222
 #: mpgz/src/additions/porn/pornvex.py:92
-#: mpgz/src/additions/porn/pornvortexx.py:102
 #: mpgz/src/additions/porn/streammdh.py:131
 #: mpgz/src/additions/porn/streamxxx.py:155
 #: mpgz/src/additions/porn/yourpornsexy.py:146
 #: mpgz/src/additions/porn/yourpornsexy.py:208
 #: mpgz/src/additions/porn/yourpornsexy.py:276
-#: mpgz/src/additions/sport/wrestlingnetwork.py:86
 #: mpgz/src/additions/useradditions/ddl_me.py:164
 #: mpgz/src/additions/useradditions/filmpalast.py:250
 #: mpgz/src/additions/useradditions/flimmerstube.py:82
@@ -161,17 +156,17 @@ msgstr "Seite"
 #: src/additions/mediatheken/zdf.py:403 src/additions/music/radio.py:336
 #: src/additions/newsdoku/autobild.py:105 src/additions/newsdoku/bild.py:153
 #: src/additions/newsdoku/doku_to.py:94 src/additions/newsdoku/dokus4_me.py:129
-#: src/additions/newsdoku/dokustream.py:140 src/additions/newsdoku/wissen.py:64
-#: src/additions/porn/ahme.py:188 src/additions/porn/anyporn.py:288
-#: src/additions/porn/badoinkvr.py:132 src/additions/porn/badoinkvr.py:206
-#: src/additions/porn/bangbros.py:144 src/additions/porn/beeg.py:143
-#: src/additions/porn/befuck.py:142 src/additions/porn/bongacams.py:134
-#: src/additions/porn/brazzers.py:147 src/additions/porn/cam4.py:173
-#: src/additions/porn/camhub.py:129 src/additions/porn/chaturbate.py:183
-#: src/additions/porn/cliphunter.py:172 src/additions/porn/cliphunter.py:242
-#: src/additions/porn/cumlouder.py:287 src/additions/porn/cumlouder.py:361
-#: src/additions/porn/cumlouder.py:438 src/additions/porn/dachix.py:161
-#: src/additions/porn/ddfnetwork.py:165 src/additions/porn/ddfnetwork.py:241
+#: src/additions/newsdoku/wissen.py:64 src/additions/porn/ahme.py:188
+#: src/additions/porn/anyporn.py:288 src/additions/porn/badoinkvr.py:132
+#: src/additions/porn/badoinkvr.py:206 src/additions/porn/bangbros.py:144
+#: src/additions/porn/beeg.py:143 src/additions/porn/befuck.py:142
+#: src/additions/porn/bongacams.py:134 src/additions/porn/brazzers.py:147
+#: src/additions/porn/cam4.py:173 src/additions/porn/camhub.py:129
+#: src/additions/porn/chaturbate.py:183 src/additions/porn/cliphunter.py:172
+#: src/additions/porn/cliphunter.py:242 src/additions/porn/cumlouder.py:287
+#: src/additions/porn/cumlouder.py:361 src/additions/porn/cumlouder.py:438
+#: src/additions/porn/dachix.py:161 src/additions/porn/ddfnetwork.py:165
+#: src/additions/porn/ddfnetwork.py:241
 #: src/additions/porn/digitalplayground.py:156
 #: src/additions/porn/drtuber.py:193 src/additions/porn/elladies.py:135
 #: src/additions/porn/eporner.py:167 src/additions/porn/eroprofile.py:141
@@ -227,7 +222,7 @@ msgstr "Seite:"
 #: mpgz/src/additions/porn/fapbraze.py:122
 #: mpgz/src/additions/porn/freeomovie.py:111
 #: mpgz/src/additions/porn/incestflix.py:106
-#: mpgz/src/additions/porn/javbraze.py:196
+#: mpgz/src/additions/porn/javbraze.py:190
 #: mpgz/src/additions/porn/javdos.py:124 mpgz/src/additions/porn/javdos.py:181
 #: mpgz/src/additions/porn/lfporn.py:104
 #: mpgz/src/additions/porn/mydirtyhobby.py:107
@@ -236,18 +231,12 @@ msgstr "Seite:"
 #: mpgz/src/additions/porn/pandamovie.py:215
 #: mpgz/src/additions/porn/paradisehill.py:128
 #: mpgz/src/additions/porn/porn00.py:116
-#: mpgz/src/additions/porn/pornfreetv.py:34
-#: mpgz/src/additions/porn/pornfreetv.py:98
-#: mpgz/src/additions/porn/pornfreetv.py:154
-#: mpgz/src/additions/porn/pornfreetv.py:169
-#: mpgz/src/additions/porn/pornfreetv.py:248
 #: mpgz/src/additions/porn/pornfromczech.py:110
 #: mpgz/src/additions/porn/pornrewind.py:114
 #: mpgz/src/additions/porn/pornstreams.py:125
 #: mpgz/src/additions/porn/porntrex.py:235
 #: mpgz/src/additions/porn/porntrex.py:316
 #: mpgz/src/additions/porn/pornvex.py:105
-#: mpgz/src/additions/porn/pornvortexx.py:117
 #: mpgz/src/additions/porn/redtraffic.py:33
 #: mpgz/src/additions/porn/streammdh.py:41
 #: mpgz/src/additions/porn/streammdh.py:144
@@ -258,7 +247,6 @@ msgstr "Seite:"
 #: mpgz/src/additions/porn/yourpornsexy.py:160
 #: mpgz/src/additions/porn/yourpornsexy.py:221
 #: mpgz/src/additions/porn/yourpornsexy.py:290
-#: mpgz/src/additions/sport/wrestlingnetwork.py:27
 #: mpgz/src/additions/useradditions/ddl_me.py:217
 #: mpgz/src/additions/useradditions/filmpalast.py:125
 #: mpgz/src/additions/useradditions/filmpalast.py:191
@@ -301,8 +289,7 @@ msgstr "Seite:"
 #: src/additions/music/radio.py:311 src/additions/music/shoutcast.py:85
 #: src/additions/music/shoutcast.py:214 src/additions/newsdoku/bild.py:131
 #: src/additions/newsdoku/doku_to.py:138
-#: src/additions/newsdoku/dokus4_me.py:164
-#: src/additions/newsdoku/dokustream.py:175 src/additions/newsdoku/focus.py:119
+#: src/additions/newsdoku/dokus4_me.py:164 src/additions/newsdoku/focus.py:119
 #: src/additions/newsdoku/urknall.py:75 src/additions/porn/ahme.py:202
 #: src/additions/porn/anyporn.py:113 src/additions/porn/anyporn.py:285
 #: src/additions/porn/badoinkvr.py:71 src/additions/porn/badoinkvr.py:145
@@ -377,7 +364,7 @@ msgstr "Seite:"
 #: src/additions/sport/pokerstars.py:59 src/additions/sport/pokerstars.py:118
 #: src/additions/sport/pokerstars.py:168 src/additions/sport/pokerstars.py:200
 #: src/resources/menuhelper.py:62 src/resources/mpscreen.py:324
-#: src/resources/simplelist.py:362 src/resources/simplelist.py:540
+#: src/resources/simplelist.py:363 src/resources/simplelist.py:541
 msgid "Please wait..."
 msgstr "Bitte warten..."
 
@@ -446,17 +433,15 @@ msgstr ""
 #: mpgz/src/additions/porn/datoporn.py:127
 #: mpgz/src/additions/porn/fapbraze.py:146
 #: mpgz/src/additions/porn/hqporner.py:168
-#: mpgz/src/additions/porn/javbraze.py:242
+#: mpgz/src/additions/porn/javbraze.py:236
 #: mpgz/src/additions/porn/javdos.py:153 mpgz/src/additions/porn/lfporn.py:122
 #: mpgz/src/additions/porn/pandamovie.py:178
 #: mpgz/src/additions/porn/paradisehill.py:149
 #: mpgz/src/additions/porn/porn00.py:133
-#: mpgz/src/additions/porn/pornfreetv.py:197
 #: mpgz/src/additions/porn/pornfromczech.py:125
 #: mpgz/src/additions/porn/pornrewind.py:130
 #: mpgz/src/additions/porn/pornstreams.py:141
 #: mpgz/src/additions/porn/pornvex.py:119
-#: mpgz/src/additions/porn/pornvortexx.py:137
 #: mpgz/src/additions/porn/streamxxx.py:188
 #: mpgz/src/additions/useradditions/filmpalast.py:203
 #: mpgz/src/additions/useradditions/filmpalast.py:277
@@ -473,7 +458,7 @@ msgstr ""
 #: src/additions/porn/pornhub.py:1059 src/additions/porn/pornoxo.py:230
 #: src/additions/porn/pornrabbit.py:208 src/additions/porn/porntv.py:349
 #: src/additions/porn/sexu.py:165 src/additions/porn/shesfreaky.py:175
-#: src/additions/porn/spankbang.py:225 src/additions/porn/tube8.py:291
+#: src/additions/porn/spankbang.py:229 src/additions/porn/tube8.py:291
 #: src/additions/porn/xnxx.py:384 src/additions/porn/xpaja.py:182
 #: src/additions/porn/xvideos.py:637 src/additions/porn/youjizz.py:208
 msgid "No movies found!"
@@ -482,13 +467,12 @@ msgstr "Keine Filme gefunden!"
 #: mpgz/src/additions/porn/adultbay.py:233
 #: mpgz/src/additions/porn/hqporner.py:217
 #: mpgz/src/additions/porn/hqporner.py:231
-#: mpgz/src/additions/porn/javbraze.py:296
-#: mpgz/src/additions/porn/javbraze.py:298
-#: mpgz/src/additions/porn/javbraze.py:306
+#: mpgz/src/additions/porn/javbraze.py:290
+#: mpgz/src/additions/porn/javbraze.py:292
+#: mpgz/src/additions/porn/javbraze.py:300
 #: mpgz/src/additions/porn/javdos.py:215 mpgz/src/additions/porn/javdos.py:218
 #: mpgz/src/additions/porn/lfporn.py:184
 #: mpgz/src/additions/porn/pandamovie.py:240
-#: mpgz/src/additions/porn/pornfreetv.py:263
 #: mpgz/src/additions/porn/pornfromczech.py:188
 #: mpgz/src/additions/porn/pornrewind.py:207
 #: mpgz/src/additions/porn/pornstreams.py:203
@@ -561,7 +545,7 @@ msgstr "Fehler beim Ausführen von Javascript, bitte an die Entwickler melden."
 #: src/additions/porn/redtube.py:183 src/additions/porn/spankbang.py:169
 #: src/additions/porn/tube8.py:209 src/additions/porn/vporn.py:223
 #: src/additions/porn/x4tube.py:246 src/additions/porn/x4tube.py:374
-#: src/additions/porn/xvideos.py:489 src/plugin.py:1777 src/plugin.py:2791
+#: src/additions/porn/xvideos.py:489 src/plugin.py:1758 src/plugin.py:2699
 msgid "Sort"
 msgstr "Sortieren"
 
@@ -573,7 +557,7 @@ msgstr "Sortieren"
 #: src/additions/porn/porncom.py:540 src/additions/porn/porncom.py:569
 #: src/additions/porn/porncom.py:610 src/additions/porn/porncom.py:722
 #: src/additions/porn/porncom.py:757 src/additions/porn/spankbang.py:171
-#: src/additions/porn/spankbang.py:270 src/additions/porn/tube8.py:210
+#: src/additions/porn/spankbang.py:275 src/additions/porn/tube8.py:210
 #: src/additions/porn/tube8.py:332 src/additions/porn/x4tube.py:375
 #: src/additions/porn/x4tube.py:445 src/additions/porn/xnxx.py:303
 #: src/additions/porn/xnxx.py:431 src/additions/porn/xvideos.py:293
@@ -596,8 +580,8 @@ msgstr "Filter"
 #: src/additions/porn/porncom.py:739 src/additions/porn/porndoe.py:215
 #: src/additions/porn/pornhub.py:421 src/additions/porn/pornhub.py:592
 #: src/additions/porn/pornhub.py:719 src/additions/porn/pornhub.py:850
-#: src/additions/porn/redtube.py:277 src/additions/porn/spankbang.py:237
-#: src/additions/porn/spankbang.py:240 src/additions/porn/spankbang.py:254
+#: src/additions/porn/redtube.py:277 src/additions/porn/spankbang.py:241
+#: src/additions/porn/spankbang.py:244 src/additions/porn/spankbang.py:258
 #: src/additions/porn/tube8.py:304 src/additions/porn/tube8.py:317
 #: src/additions/porn/vporn.py:293 src/additions/porn/wicked.py:178
 #: src/additions/porn/x4tube.py:312 src/additions/porn/x4tube.py:452
@@ -612,15 +596,10 @@ msgstr "Wähle Aktion"
 #: mpgz/src/additions/porn/porn00.py:255 mpgz/src/additions/porn/porn00.py:263
 #: mpgz/src/additions/porn/porn00.py:281
 #: mpgz/src/additions/useradditions/filmpalast.py:355
-#: mpgz/src/additions/useradditions/serienstream.py:813
+#: mpgz/src/additions/useradditions/serienstream.py:817
 msgid "Broken URL parsing, please report to the developers."
 msgstr "Defektes URL Parsing, bitte an die Entwickler melden."
 
-#: mpgz/src/additions/porn/pornfreetv.py:118
-#: mpgz/src/additions/porn/streamxxx.py:116
-msgid "Nothing found!"
-msgstr "Nichts gefunden!"
-
 #: mpgz/src/additions/porn/porntrex.py:62
 #: mpgz/src/additions/porn/porntrex.py:151
 #: mpgz/src/additions/porn/porntrex.py:153
@@ -633,7 +612,7 @@ msgstr "Nichts gefunden!"
 #: src/additions/porn/pornhub.py:138 src/additions/porn/pornhub.py:280
 #: src/additions/porn/pornhub.py:282 src/additions/porn/youporn.py:77
 #: src/additions/porn/youporn.py:221 src/additions/porn/youporn.py:223
-#: src/plugin.py:525 src/resources/simpleplayer.py:2348
+#: src/plugin.py:520 src/resources/simpleplayer.py:2351
 msgid "Setup"
 msgstr "Einstellungen"
 
@@ -665,9 +644,9 @@ msgstr ""
 "Google reCAPTCHA erkannt, bitte verifizieren Sie Ihre aktuelle IP durch\n"
 "Zugriff auf die Website 'https://stream-mdh.co' mit Ihrem Browser."
 
-#: mpgz/src/additions/sport/wrestlingnetwork.py:158
-msgid "Link will added in few Hours!"
-msgstr "Link wird in einen Stunden hinzugefügt!"
+#: mpgz/src/additions/porn/streamxxx.py:116
+msgid "Nothing found!"
+msgstr "Nichts gefunden!"
 
 #: mpgz/src/additions/useradditions/ddl_me.py:112
 #: mpgz/src/additions/useradditions/kinoxto.py:78
@@ -751,7 +730,7 @@ msgstr "Auswahl wurde zur Watchlist hinzugefügt."
 #: src/additions/mediatheken/zdf.py:61 src/additions/mediatheken/zdf.py:146
 #: src/additions/mediatheken/zdf.py:283 src/additions/mediatheken/zdf.py:378
 #: src/additions/porn/x2search4porn.py:196 src/resources/menuhelper.py:35
-#: src/resources/menuhelper.py:355 src/resources/simplelist.py:77
+#: src/resources/menuhelper.py:355 src/resources/simplelist.py:75
 msgid "Selection:"
 msgstr "Auswahl:"
 
@@ -781,9 +760,9 @@ msgstr "Watchlist ist derzeit leer"
 msgid "Parts Selection"
 msgstr "Part Auswahl"
 
-#: mpgz/src/additions/useradditions/movie4k.py:125 src/plugin.py:1190
-#: src/plugin.py:1204 src/plugin.py:1334 src/plugin.py:2248 src/plugin.py:2426
-#: src/plugin.py:2494 src/plugin.py:3140 src/plugin.py:3286 src/plugin.py:3354
+#: mpgz/src/additions/useradditions/movie4k.py:125 src/plugin.py:1184
+#: src/plugin.py:1198 src/plugin.py:1328 src/plugin.py:2162 src/plugin.py:2338
+#: src/plugin.py:2406 src/plugin.py:3026 src/plugin.py:3172 src/plugin.py:3240
 msgid "Please enter the correct PIN"
 msgstr "Bitte die korrekte PIN eingeben"
 
@@ -828,7 +807,7 @@ msgstr "Keine Staffeln gefunden!"
 msgid "Toggle"
 msgstr "Umschalten"
 
-#: mpgz/src/additions/useradditions/serienstream.py:807
+#: mpgz/src/additions/useradditions/serienstream.py:811
 msgid ""
 "Sorry this video is currently captcha protected, please try again later."
 msgstr ""
@@ -913,8 +892,8 @@ msgid "Language"
 msgstr "Sprache"
 
 #: src/additions/fun/twitch.py:236 src/additions/music/radio.py:456
-#: src/additions/music/shoutcast.py:353 src/resources/simplelist.py:186
-#: src/resources/simplelist.py:339 src/resources/simplelist.py:611
+#: src/additions/music/shoutcast.py:353 src/resources/simplelist.py:184
+#: src/resources/simplelist.py:340 src/resources/simplelist.py:612
 msgid "No entries found!"
 msgstr "Keine Einträge gefunden!"
 
@@ -1197,11 +1176,11 @@ msgstr "2D"
 msgid "3D"
 msgstr "3D"
 
-#: src/additions/mediatheken/youtube.py:113 src/plugin.py:239
+#: src/additions/mediatheken/youtube.py:113 src/plugin.py:234
 msgid "High"
 msgstr "Hoch"
 
-#: src/additions/mediatheken/youtube.py:114 src/plugin.py:239
+#: src/additions/mediatheken/youtube.py:114 src/plugin.py:234
 msgid "Low"
 msgstr "Niedrig"
 
@@ -1378,10 +1357,10 @@ msgid "News"
 msgstr "Nachrichten"
 
 #: src/additions/mediatheken/youtube.py:206
-#: src/additions/mediatheken/youtube.py:476 src/plugin.py:848
-#: src/plugin.py:1043 src/plugin.py:1381 src/plugin.py:1755 src/plugin.py:1888
-#: src/plugin.py:1919 src/plugin.py:2528 src/plugin.py:2769 src/plugin.py:2884
-#: src/plugin.py:2915 src/plugin.py:3388
+#: src/additions/mediatheken/youtube.py:476 src/plugin.py:842
+#: src/plugin.py:1037 src/plugin.py:1375 src/plugin.py:1736 src/plugin.py:1862
+#: src/plugin.py:1893 src/plugin.py:2440 src/plugin.py:2677 src/plugin.py:2792
+#: src/plugin.py:2823 src/plugin.py:3274
 msgid "Music"
 msgstr "Musik"
 
@@ -1391,10 +1370,10 @@ msgid "Gaming"
 msgstr "Gaming"
 
 #: src/additions/mediatheken/youtube.py:208
-#: src/additions/mediatheken/youtube.py:476 src/plugin.py:849
-#: src/plugin.py:1045 src/plugin.py:1381 src/plugin.py:1756 src/plugin.py:1890
-#: src/plugin.py:1921 src/plugin.py:2528 src/plugin.py:2770 src/plugin.py:2886
-#: src/plugin.py:2917 src/plugin.py:3388
+#: src/additions/mediatheken/youtube.py:476 src/plugin.py:843
+#: src/plugin.py:1039 src/plugin.py:1375 src/plugin.py:1737 src/plugin.py:1864
+#: src/plugin.py:1895 src/plugin.py:2440 src/plugin.py:2678 src/plugin.py:2794
+#: src/plugin.py:2825 src/plugin.py:3274
 msgid "Sports"
 msgstr "Sport"
 
@@ -1691,8 +1670,6 @@ msgstr "Kein Streamlink gefunden."
 
 #: src/additions/newsdoku/dokus4_me.py:172
 #: src/additions/newsdoku/dokus4_me.py:196
-#: src/additions/newsdoku/dokustream.py:183
-#: src/additions/newsdoku/dokustream.py:209
 msgid "No dokus found!"
 msgstr "Keine Dokus gefunden!"
 
@@ -1749,7 +1726,7 @@ msgstr "Modus"
 #: src/additions/porn/pornhub.py:406 src/additions/porn/pornhub.py:573
 #: src/additions/porn/pornhub.py:692 src/additions/porn/pornhub.py:707
 #: src/additions/porn/pornhub.py:837 src/additions/porn/redtube.py:265
-#: src/additions/porn/spankbang.py:274 src/additions/porn/tube8.py:332
+#: src/additions/porn/spankbang.py:279 src/additions/porn/tube8.py:332
 #: src/additions/porn/x4tube.py:322 src/additions/porn/x4tube.py:445
 #: src/additions/porn/xvideos.py:705
 msgid "Sort order"
@@ -1845,407 +1822,394 @@ msgstr "Überblenden (schnell)"
 msgid "Crossfade (slow)"
 msgstr "Überblenden (langsam)"
 
-#: src/plugin.py:213 src/plugin.py:215
+#: src/plugin.py:212
 msgid "Wall 2.0"
 msgstr "Wall 2.0"
 
-#: src/plugin.py:213 src/plugin.py:217 src/plugin.py:221
+#: src/plugin.py:212 src/plugin.py:214 src/plugin.py:218
 msgid "Wall"
 msgstr "Wall"
 
-#: src/plugin.py:213 src/plugin.py:215 src/plugin.py:217 src/plugin.py:219
-#: src/plugin.py:221
+#: src/plugin.py:212 src/plugin.py:214 src/plugin.py:216 src/plugin.py:218
 msgid "List"
 msgstr "Liste"
 
-#: src/plugin.py:222 src/plugin.py:223
-msgid "Color"
-msgstr "Farbe"
-
-#: src/plugin.py:222 src/plugin.py:223
-msgid "Black&White"
-msgstr "Schwarz/Weiß"
-
-#: src/plugin.py:239
+#: src/plugin.py:234
 msgid "Medium"
 msgstr "Mittel"
 
-#: src/plugin.py:241
+#: src/plugin.py:236
 msgid "never"
 msgstr "niemals"
 
-#: src/plugin.py:241
+#: src/plugin.py:236
 msgid "5 minutes"
 msgstr "5 Minuten"
 
-#: src/plugin.py:241
+#: src/plugin.py:236
 msgid "15 minutes"
 msgstr "15 Minuten"
 
-#: src/plugin.py:241
+#: src/plugin.py:236
 msgid "30 minutes"
 msgstr "30 Minuten"
 
-#: src/plugin.py:241
+#: src/plugin.py:236
 msgid "60 minutes"
 msgstr "60 Minuten"
 
-#: src/plugin.py:249
+#: src/plugin.py:244
 msgid "after SimplePlayer quits"
 msgstr "nachdem der SimplePlayer beendet wird"
 
-#: src/plugin.py:249
+#: src/plugin.py:244
 msgid "after MediaPortal quits"
 msgstr "nachdem das MediaPortal beendet wird"
 
-#: src/plugin.py:254
+#: src/plugin.py:249
 msgid "Forward"
 msgstr "Vorwärts"
 
-#: src/plugin.py:254
+#: src/plugin.py:249
 msgid "Backward"
 msgstr "Rückwärts"
 
-#: src/plugin.py:254
+#: src/plugin.py:249
 msgid "Random"
 msgstr "Zufällig"
 
-#: src/plugin.py:254
+#: src/plugin.py:249
 msgid "Endless"
 msgstr "Endlos"
 
-#: src/plugin.py:255 src/plugin.py:256 src/plugin.py:262
+#: src/plugin.py:250 src/plugin.py:251 src/plugin.py:257
 msgid "Ask user"
 msgstr "Anwender fragen"
 
-#: src/plugin.py:255 src/plugin.py:256
+#: src/plugin.py:250 src/plugin.py:251
 msgid "Return to previous service"
 msgstr "Zum letzten Kanal zurückkehren"
 
-#: src/plugin.py:256
+#: src/plugin.py:251
 msgid "Pause movie at end"
 msgstr "Film am Ende pausieren"
 
-#: src/plugin.py:261 src/plugin.py:280 src/resources/simplelist.py:508
-#: src/resources/simplelist.py:683 src/resources/simplelist.py:707
+#: src/plugin.py:256 src/plugin.py:275 src/resources/simplelist.py:509
+#: src/resources/simplelist.py:684 src/resources/simplelist.py:708
 #: src/resources/simpleplayer.py:1810 src/resources/simpleplayer.py:1816
 msgid "No"
 msgstr "Nein"
 
-#: src/plugin.py:261
+#: src/plugin.py:256
 msgid "with Premiumize"
 msgstr "mit Premiumize"
 
-#: src/plugin.py:261
+#: src/plugin.py:256
 msgid "with Real-Debrid"
 msgstr "mit Real-Debrid"
 
-#: src/plugin.py:261
+#: src/plugin.py:256
 msgid "with a HTTP Proxy"
 msgstr "mit einem HTTP-Proxy"
 
-#: src/plugin.py:262
+#: src/plugin.py:257
 msgid "Start from the beginning"
 msgstr "Starte vom Anfang"
 
-#: src/plugin.py:262
+#: src/plugin.py:257
 msgid "Resume from last position"
 msgstr "Von letzter Position fortsetzen"
 
-#: src/plugin.py:264
+#: src/plugin.py:259
 msgid "large"
 msgstr "Groß"
 
-#: src/plugin.py:264
+#: src/plugin.py:259
 msgid "small"
 msgstr "Klein"
 
-#: src/plugin.py:264
+#: src/plugin.py:259
 msgid "off"
 msgstr "Aus"
 
-#: src/plugin.py:267 src/plugin.py:269 src/plugin.py:270
+#: src/plugin.py:262 src/plugin.py:264 src/plugin.py:265
 msgid "Off"
 msgstr "Aus"
 
-#: src/plugin.py:267 src/plugin.py:269
+#: src/plugin.py:262 src/plugin.py:264
 msgid "Mode 1"
 msgstr "Modus 1"
 
-#: src/plugin.py:267 src/plugin.py:269
+#: src/plugin.py:262 src/plugin.py:264
 msgid "Mode 2"
 msgstr "Modus 2"
 
-#: src/plugin.py:267
+#: src/plugin.py:262
 msgid "Mode 3"
 msgstr "Modus 3"
 
-#: src/plugin.py:270
+#: src/plugin.py:265
 msgid "Ken Burns effect"
 msgstr "Ken Burns Effekt"
 
-#: src/plugin.py:270
+#: src/plugin.py:265
 msgid "Just photos"
 msgstr "Nur Fotos"
 
-#: src/plugin.py:294
+#: src/plugin.py:289
 msgid "Red"
 msgstr "Rot"
 
-#: src/plugin.py:294
+#: src/plugin.py:289
 msgid "Yellow"
 msgstr "Gelb"
 
-#: src/plugin.py:294
+#: src/plugin.py:289
 msgid "Green"
 msgstr "Grün"
 
-#: src/plugin.py:294
+#: src/plugin.py:289
 msgid "White"
 msgstr "Weiß"
 
-#: src/plugin.py:294
+#: src/plugin.py:289
 msgid "Light Blue"
 msgstr "Hellblau"
 
-#: src/plugin.py:294
+#: src/plugin.py:289
 msgid "Light Green"
 msgstr "Hellgrün"
 
-#: src/plugin.py:466
+#: src/plugin.py:461
 msgid "premiumize.me is not activated."
 msgstr "premiumize.me ist nicht aktiviert."
 
-#: src/plugin.py:559 src/resources/simpleplayer.py:2276
+#: src/plugin.py:554 src/resources/simpleplayer.py:2276
 msgid "GENERAL"
 msgstr "ALLGEMEIN"
 
-#: src/plugin.py:560
+#: src/plugin.py:555
 msgid "Automatic Update Check:"
 msgstr "Automatische Updateüberprüfung:"
 
-#: src/plugin.py:561
+#: src/plugin.py:556
 msgid "Mainview Style:"
 msgstr "Hauptansicht Stil:"
 
-#: src/plugin.py:563
-msgid "Wall Mode:"
-msgstr "Wall Modus:"
-
-#: src/plugin.py:565
-msgid "Wall 2.0 Mode:"
-msgstr "Wall 2.0 Modus:"
-
-#: src/plugin.py:567
+#: src/plugin.py:558
 msgid "Page Display Style:"
 msgstr "Seitenanzeigestil:"
 
-#: src/plugin.py:568
+#: src/plugin.py:559
 msgid "Skin:"
 msgstr "Skin:"
 
-#: src/plugin.py:570
+#: src/plugin.py:561
 msgid "Disable Background-TV:"
 msgstr "Background-TV deaktivieren:"
 
-#: src/plugin.py:572
+#: src/plugin.py:563
 msgid "Restore last service:"
 msgstr "Letzten Kanal wiederherstellen:"
 
-#: src/plugin.py:573
+#: src/plugin.py:564
 msgid "Disable Mini-TV:"
 msgstr "Mini-TV deaktivieren:"
 
-#: src/plugin.py:574
+#: src/plugin.py:565
 msgid "Enable search suggestions:"
 msgstr "Suchvorschläge aktivieren:"
 
-#: src/plugin.py:576
+#: src/plugin.py:567
 msgid "Label animation"
 msgstr "Label Animation"
 
-#: src/plugin.py:578
+#: src/plugin.py:569
 msgid "YOUTH PROTECTION"
 msgstr "JUGENDSCHUTZ"
 
-#: src/plugin.py:579
+#: src/plugin.py:570
 msgid "Setup PIN:"
 msgstr "Setup-PIN:"
 
-#: src/plugin.py:580
+#: src/plugin.py:571
 msgid "Setup PIN Query:"
 msgstr "Setup-PIN Abfrage:"
 
-#: src/plugin.py:581
+#: src/plugin.py:572
 msgid "Kids PIN Query:"
 msgstr "Kinder-PIN Abfrage:"
 
-#: src/plugin.py:582
+#: src/plugin.py:573
 msgid "Adult PIN:"
 msgstr "Erwachsenen-PIN:"
 
-#: src/plugin.py:583
+#: src/plugin.py:574
 msgid "Adult PIN Query:"
 msgstr "Erwachsenen-PIN Abfrage:"
 
-#: src/plugin.py:584
+#: src/plugin.py:575
 msgid "Remember Adult PIN:"
 msgstr "Erwachsenen-PIN merken:"
 
-#: src/plugin.py:585
+#: src/plugin.py:576
 msgid "Auto hide adult section on startup:"
 msgstr "Erwachsenenbereich beim Start automatisch ausblenden:"
 
-#: src/plugin.py:587
+#: src/plugin.py:578
 msgid "OTHER"
 msgstr "SONSTIGES"
 
-#: src/plugin.py:592
+#: src/plugin.py:583
 msgid "Use HLS-Player Proxy:"
 msgstr "HLS-Player Proxy verwenden:"
 
-#: src/plugin.py:593
+#: src/plugin.py:584
 msgid "HLSP-HTTP-Proxy Host or IP:"
 msgstr "HLSP-HTTP-Proxy Host oder IP:"
 
-#: src/plugin.py:594
+#: src/plugin.py:585
 msgid "HLSP-Proxy Port:"
 msgstr "HLSP-Proxy Port:"
 
-#: src/plugin.py:595
+#: src/plugin.py:586
 msgid "HLSP-Proxy username:"
 msgstr "HLSP-Proxy Username:"
 
-#: src/plugin.py:596
+#: src/plugin.py:587
 msgid "HLSP-Proxy password:"
 msgstr "HLSP-Proxy Passwort:"
 
-#: src/plugin.py:597
+#: src/plugin.py:588
 msgid "Temporary Cachepath:"
 msgstr "Temporäres Cacheverzeichnis:"
 
-#: src/plugin.py:598
+#: src/plugin.py:589
 msgid "Icon Cachepath:"
 msgstr "Icon Cacheverzeichnis:"
 
-#: src/plugin.py:599 src/resources/simpleplayer.py:2279
+#: src/plugin.py:590 src/resources/simpleplayer.py:2279
 msgid "Videoquality:"
 msgstr "Videoqualität:"
 
-#: src/plugin.py:600
+#: src/plugin.py:591
 msgid "Watchlist/Playlist/Userchan path:"
 msgstr "Watchlist/Playlist/Userchan Verzeichnis:"
 
-#: src/plugin.py:602 src/resources/simpleplayer.py:2290
+#: src/plugin.py:593 src/resources/simpleplayer.py:2290
 msgid "YOUTUBE"
 msgstr "YOUTUBE"
 
-#: src/plugin.py:603 src/resources/simpleplayer.py:2291
+#: src/plugin.py:594 src/resources/simpleplayer.py:2291
 msgid "Highest resolution for playback:"
 msgstr "Höchste Auflösung für die Wiedergabe:"
 
-#: src/plugin.py:604 src/resources/simpleplayer.py:2292
+#: src/plugin.py:596 src/resources/simpleplayer.py:2293
+msgid "Enable DASH format:"
+msgstr "DASH Format aktivieren:"
+
+#: src/plugin.py:598 src/resources/simpleplayer.py:2295
 msgid "Enable DASH format (no seeking possible):"
 msgstr "DASH Format aktivieren (kein Spulen möglich):"
 
-#: src/plugin.py:606 src/resources/simpleplayer.py:2294
+#: src/plugin.py:600 src/resources/simpleplayer.py:2297
 msgid "Use DASH format for 480p:"
 msgstr "DASH Format verwenden für 480p:"
 
-#: src/plugin.py:607 src/resources/simpleplayer.py:2295
+#: src/plugin.py:601 src/resources/simpleplayer.py:2298
 msgid "Use DASH format for 720p:"
 msgstr "DASH Format verwenden für 720p:"
 
-#: src/plugin.py:608 src/resources/simpleplayer.py:2296
+#: src/plugin.py:602 src/resources/simpleplayer.py:2299
 msgid "Enable VP9 codec (required for resolutions >1080p):"
 msgstr "VP9 Codec aktivieren (erforderlich für Auflösungen >1080p):"
 
-#: src/plugin.py:610 src/resources/simpleplayer.py:2298
+#: src/plugin.py:604 src/resources/simpleplayer.py:2301
 msgid "Enable VP9 HDR (only for resolutions 720p and higher):"
 msgstr "VP9 HDR aktivieren (nur für Auflösungen ab 720p):"
 
-#: src/plugin.py:612 src/resources/simpleplayer.py:2300
+#: src/plugin.py:606 src/resources/simpleplayer.py:2303
 msgid "Enable Opus codec:"
 msgstr "Opus Codec aktivieren:"
 
-#: src/plugin.py:613
+#: src/plugin.py:607
 msgid "Show USER-Channels Help:"
 msgstr "Zeige Hilfe für Benutzer-Kanäle:"
 
-#: src/plugin.py:614
+#: src/plugin.py:608
 msgid "Use Proxy:"
 msgstr "Verwende Proxy:"
 
-#: src/plugin.py:616
+#: src/plugin.py:610
 msgid "HTTP-Proxy Host or IP:"
 msgstr "HTTP-Proxy Host oder IP:"
 
-#: src/plugin.py:617
+#: src/plugin.py:611
 msgid "HTTP-Proxy Port:"
 msgstr "HTTP-Proxy Port:"
 
-#: src/plugin.py:618
+#: src/plugin.py:612
 msgid "HTTP-Proxy username:"
 msgstr "HTTP-Proxy Username:"
 
-#: src/plugin.py:619
+#: src/plugin.py:613
 msgid "HTTP-Proxy password:"
 msgstr "HTTP-Proxy Passwort:"
 
-#: src/plugin.py:622
+#: src/plugin.py:616
 msgid "Activate premiumize.me:"
 msgstr "premiumize.me aktivieren:"
 
-#: src/plugin.py:624
+#: src/plugin.py:618
 msgid "API-Key:"
 msgstr "API-Key:"
 
-#: src/plugin.py:627
+#: src/plugin.py:621
 msgid "Activate Real-Debrid.com:"
 msgstr "Real-Debrid.com aktivieren:"
 
-#: src/plugin.py:631
+#: src/plugin.py:625
 msgid "Streammarkercolor:"
 msgstr "Streammarkerfarbe:"
 
-#: src/plugin.py:669
+#: src/plugin.py:663
 msgid "LIBRARIES"
 msgstr "MEDIATHEKEN"
 
-#: src/plugin.py:672 src/plugin.py:678 src/plugin.py:684 src/plugin.py:690
-#: src/plugin.py:696 src/plugin.py:703 src/plugin.py:713
+#: src/plugin.py:666 src/plugin.py:672 src/plugin.py:678 src/plugin.py:684
+#: src/plugin.py:690 src/plugin.py:697 src/plugin.py:707
 msgid "Show "
 msgstr "Zeige "
 
-#: src/plugin.py:675
+#: src/plugin.py:669
 msgid "NEWS & DOCUMENTARY"
 msgstr "NACHRICHTEN & DOKUS"
 
-#: src/plugin.py:681
+#: src/plugin.py:675
 msgid "TECH & FUN"
 msgstr "TECHNIK & SPASS"
 
-#: src/plugin.py:687
+#: src/plugin.py:681
 msgid "SPORTS"
 msgstr "SPORT"
 
-#: src/plugin.py:693
+#: src/plugin.py:687
 msgid "MUSIC"
 msgstr "MUSIK"
 
-#: src/plugin.py:700
+#: src/plugin.py:694
 msgid "PORN"
 msgstr "PORNO"
 
-#: src/plugin.py:710
+#: src/plugin.py:704
 msgid "USER-ADDITIONS"
 msgstr "USER-ERWEITERUNGEN"
 
-#: src/plugin.py:719
+#: src/plugin.py:713
 msgid "Activate User-additions:"
 msgstr "User-Erweiterungen aktivieren:"
 
-#: src/plugin.py:762
+#: src/plugin.py:756
 #, python-format
 msgid ""
 "Some of the plugins may not be legally used in your country!\n"
@@ -2261,103 +2225,103 @@ msgstr ""
 "\n"
 "%s"
 
-#: src/plugin.py:777
+#: src/plugin.py:771
 msgid "Real-Debrid.com is not activated."
 msgstr "Real-Debrid.com is not activated."
 
-#: src/plugin.py:785
+#: src/plugin.py:779
 msgid "Please enter the correct code"
 msgstr "Bitte den korrekten Code eingeben"
 
-#: src/plugin.py:785
+#: src/plugin.py:779
 msgid "Enter code"
 msgstr "Code eingeben"
 
-#: src/plugin.py:845 src/plugin.py:1033 src/plugin.py:1381 src/plugin.py:1752
-#: src/plugin.py:1878 src/plugin.py:1909 src/plugin.py:2528 src/plugin.py:2766
-#: src/plugin.py:2874 src/plugin.py:2905 src/plugin.py:3388
+#: src/plugin.py:839 src/plugin.py:1027 src/plugin.py:1375 src/plugin.py:1733
+#: src/plugin.py:1852 src/plugin.py:1883 src/plugin.py:2440 src/plugin.py:2674
+#: src/plugin.py:2782 src/plugin.py:2813 src/plugin.py:3274
 msgid "ALL"
 msgstr "ALLE"
 
-#: src/plugin.py:846 src/plugin.py:1035 src/plugin.py:1381 src/plugin.py:1753
-#: src/plugin.py:1880 src/plugin.py:1911 src/plugin.py:2528 src/plugin.py:2767
-#: src/plugin.py:2876 src/plugin.py:2907 src/plugin.py:3388
+#: src/plugin.py:840 src/plugin.py:1029 src/plugin.py:1375 src/plugin.py:1734
+#: src/plugin.py:1854 src/plugin.py:1885 src/plugin.py:2440 src/plugin.py:2675
+#: src/plugin.py:2784 src/plugin.py:2815 src/plugin.py:3274
 msgid "Libraries"
 msgstr "Mediatheken"
 
-#: src/plugin.py:847 src/plugin.py:1039 src/plugin.py:1381 src/plugin.py:1754
-#: src/plugin.py:1884 src/plugin.py:1915 src/plugin.py:2528 src/plugin.py:2768
-#: src/plugin.py:2880 src/plugin.py:2911 src/plugin.py:3388
+#: src/plugin.py:841 src/plugin.py:1033 src/plugin.py:1375 src/plugin.py:1735
+#: src/plugin.py:1858 src/plugin.py:1889 src/plugin.py:2440 src/plugin.py:2676
+#: src/plugin.py:2788 src/plugin.py:2819 src/plugin.py:3274
 msgid "Tech & Fun"
 msgstr "Technik & Spaß"
 
-#: src/plugin.py:850 src/plugin.py:1041 src/plugin.py:1381 src/plugin.py:1757
-#: src/plugin.py:1886 src/plugin.py:1917 src/plugin.py:2528 src/plugin.py:2771
-#: src/plugin.py:2882 src/plugin.py:2913 src/plugin.py:3388
+#: src/plugin.py:844 src/plugin.py:1035 src/plugin.py:1375 src/plugin.py:1738
+#: src/plugin.py:1860 src/plugin.py:1891 src/plugin.py:2440 src/plugin.py:2679
+#: src/plugin.py:2790 src/plugin.py:2821 src/plugin.py:3274
 msgid "News & Documentary"
 msgstr "Nachrichten & Dokus"
 
-#: src/plugin.py:851 src/plugin.py:1047 src/plugin.py:1376 src/plugin.py:1758
-#: src/plugin.py:1892 src/plugin.py:1923 src/plugin.py:2523 src/plugin.py:2772
-#: src/plugin.py:2888 src/plugin.py:2919 src/plugin.py:3383
+#: src/plugin.py:845 src/plugin.py:1041 src/plugin.py:1370 src/plugin.py:1739
+#: src/plugin.py:1866 src/plugin.py:1897 src/plugin.py:2435 src/plugin.py:2680
+#: src/plugin.py:2796 src/plugin.py:2827 src/plugin.py:3269
 msgid "Porn"
 msgstr "Porno"
 
-#: src/plugin.py:852 src/plugin.py:1037 src/plugin.py:1380 src/plugin.py:1759
-#: src/plugin.py:1882 src/plugin.py:1913 src/plugin.py:2527 src/plugin.py:2773
-#: src/plugin.py:2878 src/plugin.py:2909 src/plugin.py:3387
+#: src/plugin.py:846 src/plugin.py:1031 src/plugin.py:1374 src/plugin.py:1740
+#: src/plugin.py:1856 src/plugin.py:1887 src/plugin.py:2439 src/plugin.py:2681
+#: src/plugin.py:2786 src/plugin.py:2817 src/plugin.py:3273
 msgid "User-additions"
 msgstr "User-Erweiterungen"
 
-#: src/plugin.py:855 src/plugin.py:1762 src/plugin.py:2776
+#: src/plugin.py:849 src/plugin.py:1743 src/plugin.py:2684
 msgid "Change filter"
 msgstr "Filter wechseln"
 
-#: src/plugin.py:856 src/plugin.py:1765 src/plugin.py:2779
+#: src/plugin.py:850 src/plugin.py:1746 src/plugin.py:2687
 msgid "Open SimpleList"
 msgstr "SimpleList öffnen"
 
-#: src/plugin.py:857 src/plugin.py:1766 src/plugin.py:2780
+#: src/plugin.py:851 src/plugin.py:1747 src/plugin.py:2688
 msgid "Open selected Plugin"
 msgstr "Ausgewähltes Plugin öffnen"
 
-#: src/plugin.py:858 src/plugin.py:1767 src/plugin.py:2781
+#: src/plugin.py:852 src/plugin.py:1748 src/plugin.py:2689
 msgid "Exit MediaPortal"
 msgstr "MediaPortal beenden"
 
-#: src/plugin.py:859 src/plugin.py:1770 src/plugin.py:2784
+#: src/plugin.py:853 src/plugin.py:1751 src/plugin.py:2692
 msgid "MediaPortal Setup"
 msgstr "MediaPortal Setup"
 
-#: src/plugin.py:871 src/plugin.py:1781 src/plugin.py:2795
-#: src/resources/showAsThumb.py:246 src/resources/simplelist.py:118
-#: src/resources/simplelist.py:637 src/resources/simpleplayer.py:718
+#: src/plugin.py:865 src/plugin.py:1762 src/plugin.py:2703
+#: src/resources/showAsThumb.py:246 src/resources/simplelist.py:116
+#: src/resources/simplelist.py:638 src/resources/simpleplayer.py:718
 msgid "Exit"
 msgstr "Beenden"
 
-#: src/plugin.py:872 src/plugin.py:1782 src/plugin.py:2796
+#: src/plugin.py:866 src/plugin.py:1763 src/plugin.py:2704
 msgid "Help"
 msgstr "Hilfe"
 
-#: src/plugin.py:873 src/plugin.py:1783 src/plugin.py:2797
+#: src/plugin.py:867 src/plugin.py:1764 src/plugin.py:2705
 msgid "Menu"
 msgstr "Menü"
 
-#: src/plugin.py:1190 src/plugin.py:1334 src/plugin.py:2248 src/plugin.py:2494
-#: src/plugin.py:3140 src/plugin.py:3354
+#: src/plugin.py:1184 src/plugin.py:1328 src/plugin.py:2162 src/plugin.py:2406
+#: src/plugin.py:3026 src/plugin.py:3240
 msgid "Enter adult PIN"
 msgstr "Erwachsenen-PIN eingeben"
 
-#: src/plugin.py:1204 src/plugin.py:2426 src/plugin.py:3286
+#: src/plugin.py:1198 src/plugin.py:2338 src/plugin.py:3172
 msgid "Enter setup PIN"
 msgstr "Setup-PIN eingeben"
 
-#: src/plugin.py:1244 src/plugin.py:2156 src/plugin.py:3045
+#: src/plugin.py:1238 src/plugin.py:2070 src/plugin.py:2931
 msgid "No connection to the Internet available."
 msgstr "Keine Verbindung zum Internet vorhanden."
 
-#: src/plugin.py:1271 src/plugin.py:1310 src/plugin.py:2185 src/plugin.py:2224
-#: src/plugin.py:3077 src/plugin.py:3116
+#: src/plugin.py:1265 src/plugin.py:1304 src/plugin.py:2099 src/plugin.py:2138
+#: src/plugin.py:2963 src/plugin.py:3002
 #, python-format
 msgid ""
 "This Plugin has been marked as \"not working\" by the developers.\n"
@@ -2376,8 +2340,8 @@ msgstr ""
 "Falls jemand anderes bereit ist einen Fix für dieses Plugin zur Verfügung zu "
 "stellen dann nehmt bitte Kontakt mit uns auf."
 
-#: src/plugin.py:1273 src/plugin.py:1312 src/plugin.py:2187 src/plugin.py:2226
-#: src/plugin.py:3079 src/plugin.py:3118
+#: src/plugin.py:1267 src/plugin.py:1306 src/plugin.py:2101 src/plugin.py:2140
+#: src/plugin.py:2965 src/plugin.py:3004
 #, python-format
 msgid ""
 "This Plugin has been marked as \"not working\" by the developers.\n"
@@ -2390,39 +2354,39 @@ msgstr ""
 "Aktueller Entwickler-Status dieses Plugins ist:\n"
 "\"%s\""
 
-#: src/plugin.py:1382 src/plugin.py:2529 src/plugin.py:3389
+#: src/plugin.py:1376 src/plugin.py:2441 src/plugin.py:3275
 msgid "Select Filter"
 msgstr "Wähle Filter"
 
-#: src/plugin.py:1434
+#: src/plugin.py:1428
 msgid "Userdefined Plugin sorting"
 msgstr "Benutzerdefinierte Plugin-Sortierung"
 
-#: src/plugin.py:1763 src/plugin.py:2777
+#: src/plugin.py:1744 src/plugin.py:2685
 msgid "Change sort order"
 msgstr "Sortierreihenfolge ändern"
 
-#: src/plugin.py:1764 src/plugin.py:2778
+#: src/plugin.py:1745 src/plugin.py:2686
 msgid "Manual sorting"
 msgstr "Manuelle Sortierung"
 
-#: src/plugin.py:1768 src/plugin.py:2782
+#: src/plugin.py:1749 src/plugin.py:2690
 msgid "Next page"
 msgstr "Nächste Seite"
 
-#: src/plugin.py:1769 src/plugin.py:2783
+#: src/plugin.py:1750 src/plugin.py:2691
 msgid "Previous page"
 msgstr "Vorherige Seite"
 
-#: src/plugin.py:1779 src/plugin.py:2793
+#: src/plugin.py:1760 src/plugin.py:2701
 msgid "CH+"
 msgstr "CH+"
 
-#: src/plugin.py:1780 src/plugin.py:2794
+#: src/plugin.py:1761 src/plugin.py:2702
 msgid "CH-"
 msgstr "CH-"
 
-#: src/plugin.py:1851 src/plugin.py:2846
+#: src/plugin.py:1825 src/plugin.py:2754
 msgid "Ordering is only possible with filter \"ALL\"."
 msgstr "Sortieren ist nur mit dem Filter \"ALLE\" möglich."
 
@@ -2662,52 +2626,52 @@ msgid "Page: %(page)s of %(pages)s  |  Section: %(section)s of %(sections)s"
 msgstr ""
 "Seite: %(page)s von %(pages)s  |  Abschnitt: %(section)s von %(sections)s"
 
-#: src/resources/simplelist.py:78
+#: src/resources/simplelist.py:76
 msgid "Update PL"
 msgstr "Update PL"
 
-#: src/resources/simplelist.py:80
+#: src/resources/simplelist.py:78
 msgid "IPTV Genre"
 msgstr "IPTV Genre"
 
-#: src/resources/simplelist.py:82
+#: src/resources/simplelist.py:80
 msgid "Delete PL"
 msgstr "Lösche PL"
 
-#: src/resources/simplelist.py:119 src/resources/simplelist.py:643
+#: src/resources/simplelist.py:117 src/resources/simplelist.py:644
 msgid "List overview"
 msgstr "Listen Übersicht"
 
-#: src/resources/simplelist.py:121
+#: src/resources/simplelist.py:119
 msgid "Video List"
 msgstr "Video Liste"
 
-#: src/resources/simplelist.py:195
+#: src/resources/simplelist.py:193
 msgid "No playlist found"
 msgstr "Keine Playlist gefunden"
 
-#: src/resources/simplelist.py:216
+#: src/resources/simplelist.py:214
 msgid "Show all channels"
 msgstr "Zeige alle Kanäle"
 
-#: src/resources/simplelist.py:267 src/resources/simplelist.py:289
+#: src/resources/simplelist.py:266 src/resources/simplelist.py:289
 #, python-brace-format
 msgid "Show \"{0}\" channels"
 msgstr "Zeige \"{0}\" Kanäle"
 
-#: src/resources/simplelist.py:448
+#: src/resources/simplelist.py:449
 msgid "Error: No valid option in playlist"
 msgstr "Fehler: Keine gültige Option in der Playlist"
 
-#: src/resources/simplelist.py:462
+#: src/resources/simplelist.py:463
 msgid "Error: No valid playlist"
 msgstr "Fehler: Keine gültige Playlist"
 
-#: src/resources/simplelist.py:466
+#: src/resources/simplelist.py:467
 msgid "Can't download playlist"
 msgstr "Kann Playlist nicht downloaden"
 
-#: src/resources/simplelist.py:486 src/resources/simplelist.py:490
+#: src/resources/simplelist.py:487 src/resources/simplelist.py:491
 msgid ""
 "If you want to play this stream, you have to activate the HLS-Player in the "
 "MP-Setup"
@@ -2715,74 +2679,74 @@ msgstr ""
 "Wenn dieser Stream abgespielt werden soll, muss der HLS-Player im MP-Setup "
 "aktiviert werden"
 
-#: src/resources/simplelist.py:507 src/resources/simplelist.py:682
-#: src/resources/simplelist.py:706 src/resources/simpleplayer.py:1808
+#: src/resources/simplelist.py:508 src/resources/simplelist.py:683
+#: src/resources/simplelist.py:707 src/resources/simpleplayer.py:1808
 #: src/resources/simpleplayer.py:1815
 msgid "Yes"
 msgstr "Ja"
 
-#: src/resources/simplelist.py:510
+#: src/resources/simplelist.py:511
 #, python-brace-format
 msgid "OK to overwrite \"{0}\" playlist?"
 msgstr "OK um Playlist \"{0}\" zu überschreiben?"
 
-#: src/resources/simplelist.py:514
+#: src/resources/simplelist.py:515
 msgid "Return"
 msgstr "Zurück"
 
-#: src/resources/simplelist.py:569
+#: src/resources/simplelist.py:570
 #, python-brace-format
 msgid "Playlist \"{0}\" copied."
 msgstr "Playlist \"{0}\" kopiert."
 
-#: src/resources/simplelist.py:571
+#: src/resources/simplelist.py:572
 #, python-brace-format
 msgid "Can't copy \"{0}\" playlist"
 msgstr "Kann Playlist \"{0}\" nicht kopieren"
 
-#: src/resources/simplelist.py:667
+#: src/resources/simplelist.py:668
 msgid "IPTV Genre Selection"
 msgstr "IPTV Genre Auswahl"
 
-#: src/resources/simplelist.py:686
+#: src/resources/simplelist.py:687
 #, python-brace-format
 msgid "Overwrite \"{0}\" with the MP playlist?"
 msgstr "\"{0}\" mit der MP Playlist überschreiben?"
 
-#: src/resources/simplelist.py:688
+#: src/resources/simplelist.py:689
 #, python-brace-format
 msgid "No MP playlist \"{0}\" found"
 msgstr "Keine MP Playlist \"{0}\" gefunden"
 
-#: src/resources/simplelist.py:696
+#: src/resources/simplelist.py:697
 #, python-brace-format
 msgid "Playlist \"{0}\" successfully updated"
 msgstr "Playlist \"{0}\" erfolgreich aktualisiert"
 
-#: src/resources/simplelist.py:698
+#: src/resources/simplelist.py:699
 #, python-brace-format
 msgid "Can't update \"{0}\" playlist"
 msgstr "Kann Playlist \"{0}\" nicht aktualisieren"
 
-#: src/resources/simplelist.py:710
+#: src/resources/simplelist.py:711
 #, python-brace-format
 msgid "OK to delete \"{0}\" playlist?"
 msgstr "OK um Playlist \"{0}\" zu löschen?"
 
-#: src/resources/simplelist.py:722
+#: src/resources/simplelist.py:723
 #, python-brace-format
 msgid "Can't delete \"{0}\" playlist"
 msgstr "Kann Playlist \"{0}\" nicht löschen"
 
-#: src/resources/simplelist.py:731
+#: src/resources/simplelist.py:732
 msgid "SimpleList Configuration"
 msgstr "SimpleList Konfiguration"
 
-#: src/resources/simplelist.py:734
+#: src/resources/simplelist.py:735
 msgid "Global playlist number"
 msgstr "Globale Playlist-Nummer"
 
-#: src/resources/simplelist.py:735
+#: src/resources/simplelist.py:736
 msgid "Google coversupport"
 msgstr "Google Cover aktivieren"
 
@@ -2923,57 +2887,57 @@ msgstr "Infobar-Coveranzeige immer aus:"
 msgid "Use SP number seek:"
 msgstr "Verwende SP Nummernsuche:"
 
-#: src/resources/simpleplayer.py:2302
+#: src/resources/simpleplayer.py:2305
 msgid "RADIO"
 msgstr "RADIO"
 
-#: src/resources/simpleplayer.py:2303
+#: src/resources/simpleplayer.py:2306
 msgid "Radio cover:"
 msgstr "Radio-Cover:"
 
-#: src/resources/simpleplayer.py:2304
+#: src/resources/simpleplayer.py:2307
 msgid "Radio visualization:"
 msgstr "Radio-Visualisierung:"
 
-#: src/resources/simpleplayer.py:2305
+#: src/resources/simpleplayer.py:2308
 msgid "Radio screensaver:"
 msgstr "Radio-Bildschirmschoner:"
 
-#: src/resources/simpleplayer.py:2306
+#: src/resources/simpleplayer.py:2309
 msgid "Radio screensaver keywords:"
 msgstr "Schlüsselwörter für den Radio-Bildschirmschoner:"
 
-#: src/resources/simpleplayer.py:2336 src/resources/simpleplayer.py:2337
+#: src/resources/simpleplayer.py:2339 src/resources/simpleplayer.py:2340
 msgid "SimplePlayer Menu"
 msgstr "SimplePlayer Menü"
 
-#: src/resources/simpleplayer.py:2351
+#: src/resources/simpleplayer.py:2354
 #, python-format
 msgid "Add service to global playlist-%02d"
 msgstr "Füge Service zu globaler Playlist-%02d hinzu"
 
-#: src/resources/simpleplayer.py:2353
+#: src/resources/simpleplayer.py:2356
 #, python-format
 msgid "Open global playlist-%02d"
 msgstr "Öffne globale Playlist-%02d"
 
-#: src/resources/simpleplayer.py:2355
+#: src/resources/simpleplayer.py:2358
 msgid "Open local playlist"
 msgstr "Öffne lokale Playlist"
 
-#: src/resources/simpleplayer.py:2357
+#: src/resources/simpleplayer.py:2360
 msgid "A/V Settings"
 msgstr "A/V Einstellungen"
 
-#: src/resources/simpleplayer.py:2359
+#: src/resources/simpleplayer.py:2362
 msgid "Advanced Audio Settings"
 msgstr "Erweiterte Audioeinstellungen"
 
-#: src/resources/simpleplayer.py:2360
+#: src/resources/simpleplayer.py:2363
 msgid "Mainmenu"
 msgstr "Hauptmenü"
 
-#: src/resources/simpleplayer.py:2428
+#: src/resources/simpleplayer.py:2431
 #, python-format
 msgid ""
 "The directory path does not end with '/':\n"
@@ -2982,7 +2946,7 @@ msgstr ""
 "Der Verzeichnispfad endet nicht mit '/':\n"
 "%s"
 
-#: src/resources/simpleplayer.py:2429
+#: src/resources/simpleplayer.py:2432
 #, python-format
 msgid ""
 "File with the same name exists in the directory path:\n"
@@ -2991,7 +2955,7 @@ msgstr ""
 "Datei mit gleichen Namen im Verzeichnispfad vorhanden:\n"
 "%s"
 
-#: src/resources/simpleplayer.py:2430
+#: src/resources/simpleplayer.py:2433
 #, python-format
 msgid ""
 "The missing directory:\n"
@@ -3000,7 +2964,7 @@ msgstr ""
 "Das fehlende Verzeichnis:\n"
 "%s konnte nicht angelegt werden!"
 
-#: src/resources/simpleplayer.py:2431
+#: src/resources/simpleplayer.py:2434
 #, python-format
 msgid ""
 "The directory path:\n"
@@ -3009,7 +2973,7 @@ msgstr ""
 "Der Verzeichnispfad:\n"
 "%s ist nicht vorhanden!"
 
-#: src/resources/simpleplayer.py:2432
+#: src/resources/simpleplayer.py:2435
 #, python-format
 msgid ""
 "There exists already a directory with this name:\n"
@@ -3018,7 +2982,7 @@ msgstr ""
 "Es existiert schon ein Verzeichnis mit diesem Namen:\n"
 "%s"
 
-#: src/resources/simpleplayer.py:2433
+#: src/resources/simpleplayer.py:2436
 #, python-format
 msgid ""
 "The path is OK, the file name was not specified:\n"
@@ -3027,7 +2991,7 @@ msgstr ""
 "Der Pfad ist i.O., der Dateiname wurde nicht angegeben:\n"
 "%s"
 
-#: src/resources/simpleplayer.py:2434
+#: src/resources/simpleplayer.py:2437
 #, python-format
 msgid ""
 "The directory path and file name is OK:\n"
@@ -3036,11 +3000,11 @@ msgstr ""
 "Der Verzeichnispfad & Dateiname ist i.O.:\n"
 "%s"
 
-#: src/resources/simpleplayer.py:2435
+#: src/resources/simpleplayer.py:2438
 msgid "The directory path is not specified!"
 msgstr "Der Verzeichnispfad wurde nicht angegeben!"
 
-#: src/resources/simpleplayer.py:2436
+#: src/resources/simpleplayer.py:2439
 #, python-format
 msgid ""
 "Symbolic link with the same name in the directory path:\n"
@@ -3049,7 +3013,7 @@ msgstr ""
 "Symbolischer Link mit gleichen Namen im Verzeichnispfad:\n"
 "%s vorhanden!"
 
-#: src/resources/simpleplayer.py:2437
+#: src/resources/simpleplayer.py:2440
 #, python-format
 msgid ""
 "The directory path does not begin with '/':\n"
index 93db251..0fcfbb9 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
@@ -149,16 +149,13 @@ class ConfigPORNPIN(ConfigInteger):
                ConfigSequence.__init__(self, seperator = ":", limits = [(1000, (10**len)-1)], censor_char = censor, default = default)
 
 config_mp.mediaportal = ConfigSubsection()
-config.mediaportal = ConfigSubsection()
 
 # Fake entry fuer die Kategorien
 config_mp.mediaportal.fake_entry = NoSave(ConfigNothing())
 
 # Allgemein
-config_mp.mediaportal.version = NoSave(ConfigText(default="2019122402"))
-config.mediaportal.version = NoSave(ConfigText(default="2019122402"))
+config_mp.mediaportal.version = NoSave(ConfigText(default="2020010101"))
 config_mp.mediaportal.autoupdate = ConfigYesNo(default = True)
-config.mediaportal.autoupdate = NoSave(ConfigYesNo(default = True))
 
 config_mp.mediaportal.skinfail = ConfigYesNo(default = False)
 
@@ -192,7 +189,6 @@ if mp_globals.videomode == 2:
                if os.path.isdir(os.path.join("/usr/lib/enigma2/python/Plugins/Extensions/MediaPortal/skins_1080/", skin)):
                        skins.append(skin)
        config_mp.mediaportal.skin2 = ConfigSelectionExt(default = "clean_fhd", choices = skins)
-       config.mediaportal.skin2 = NoSave(ConfigSelectionExt(default = "clean_fhd", choices = skins))
        mp_globals.skinFallback = "/clean_fhd"
 else:
        mp_globals.skinsPath = "/skins_720"
@@ -201,7 +197,6 @@ else:
                        if skin != "original":
                                skins.append(skin)
        config_mp.mediaportal.skin2 = ConfigSelectionExt(default = "clean_hd", choices = skins)
-       config.mediaportal.skin2 = NoSave(ConfigSelectionExt(default = "clean_hd", choices = skins))
        mp_globals.skinFallback = "/clean_hd"
 
 config_mp.mediaportal.skin = NoSave(ConfigText(default=config_mp.mediaportal.skin2.value))
@@ -209,18 +204,13 @@ config_mp.mediaportal.skin = NoSave(ConfigText(default=config_mp.mediaportal.ski
 config_mp.mediaportal.debugMode = ConfigSelectionExt(default="Silent", choices = ["High", "Normal", "Silent"])
 
 if mp_globals.covercollection or mp_globals.isVTi:
-       if config_mp.mediaportal.debugMode.value == "High":
-               config_mp.mediaportal.ansicht = ConfigSelectionExt(default = "wall2", choices = [("wall2", _("Wall 2.0")), ("wall", _("Wall")), ("liste", _("List"))])
-       else:
-               config_mp.mediaportal.ansicht = ConfigSelectionExt(default = "wall2", choices = [("wall2", _("Wall 2.0")), ("liste", _("List"))])
+       config_mp.mediaportal.ansicht = ConfigSelectionExt(default = "wall2", choices = [("wall2", _("Wall 2.0")), ("wall", _("Wall")), ("liste", _("List"))])
 elif mp_globals.videomode == 2 and mp_globals.fakeScale:
        config_mp.mediaportal.ansicht = ConfigSelectionExt(default = "wall", choices = [("wall", _("Wall")), ("liste", _("List"))])
 elif mp_globals.videomode == 2 and not mp_globals.isDreamOS:
        config_mp.mediaportal.ansicht = ConfigSelectionExt(default = "liste", choices = [("liste", _("List"))])
 else:
        config_mp.mediaportal.ansicht = ConfigSelectionExt(default = "wall", choices = [("wall", _("Wall")), ("liste", _("List"))])
-config_mp.mediaportal.wallmode = ConfigSelectionExt(default = "color_zoom", choices = [("color_zoom", _("Color")),("bw_zoom", _("Black&White"))])
-config_mp.mediaportal.wall2mode = ConfigSelectionExt(default = "color", choices = [("color", _("Color")),("bw", _("Black&White"))])
 config_mp.mediaportal.hlsp_enable = ConfigYesNo(default = True)
 config_mp.mediaportal.hls_proxy_ip = ConfigIP(default = [127,0,0,1], auto_jump = True)
 config_mp.mediaportal.hls_proxy_port = ConfigInteger(default = 0, limits = (0,65535))
@@ -228,14 +218,13 @@ config_mp.mediaportal.storagepath = ConfigText(default="/tmp/mediaportal/tmp/",
 config_mp.mediaportal.iconcachepath = ConfigText(default="/media/hdd/mediaportal/", fixed_size=False)
 config_mp.mediaportal.autoplayThreshold = ConfigInteger(default = 50, limits = (1,100))
 config_mp.mediaportal.filter = ConfigSelectionExt(default = "ALL", choices = ["ALL", "Mediathek", "User-additions", "Fun", "NewsDoku", "Sport", "Music", "Porn"])
-config.mediaportal.filter = NoSave(ConfigSelectionExt(default = "ALL", choices = ["ALL"]))
 config_mp.mediaportal.youtubeenablevp9 = ConfigYesNo(default = False)
-config_mp.mediaportal.youtubeenabledash = ConfigYesNo(default = False)
+config_mp.mediaportal.youtubeenabledash = ConfigYesNo(default = True)
 config_mp.mediaportal.youtubeenabledash720p = ConfigYesNo(default = False)
 config_mp.mediaportal.youtubeenabledash480p = ConfigYesNo(default = False)
 config_mp.mediaportal.youtubeenablehdr = ConfigYesNo(default = False)
 config_mp.mediaportal.youtubeenableopus = ConfigYesNo(default = True)
-config_mp.mediaportal.youtubeprio = ConfigSelectionExt(default = "2", choices = [("0", "360p"),("1", "480p"),("2", "720p"),("3", "1080p"),("4", "1440p"),("5", "2160p")])
+config_mp.mediaportal.youtubeprio = ConfigSelectionExt(default = "3", choices = [("0", "360p"),("1", "480p"),("2", "720p"),("3", "1080p"),("4", "1440p"),("5", "2160p")])
 config_mp.mediaportal.videoquali_others = ConfigSelectionExt(default = "2", choices = [("0", _("Low")),("1", _("Medium")),("2", _("High"))])
 config_mp.mediaportal.pornpin = ConfigYesNo(default = True)
 config_mp.mediaportal.pornpin_cache = ConfigSelectionExt(default = "0", choices = [("0", _("never")), ("5", _("5 minutes")), ("15", _("15 minutes")), ("30", _("30 minutes")), ("60", _("60 minutes"))])
@@ -396,23 +385,27 @@ class CheckPathes:
                        config_mp.mediaportal.iconcachepath.value = "/media/hdd/mediaportal/"
                        config_mp.mediaportal.iconcachepath.save()
                        configfile_mp.save()
-               elif "/tmp/" in config_mp.mediaportal.iconcachepath.value:
+               elif config_mp.mediaportal.iconcachepath.value.startswith('/tmp/'):
                        config_mp.mediaportal.iconcachepath.value = "/media/hdd/mediaportal/"
                        config_mp.mediaportal.iconcachepath.save()
                        configfile_mp.save()
-               elif "/usr/lib/enigma2/" in config_mp.mediaportal.iconcachepath.value:
+               elif config_mp.mediaportal.iconcachepath.value.startswith('/etc/'):
                        config_mp.mediaportal.iconcachepath.value = "/media/hdd/mediaportal/"
                        config_mp.mediaportal.iconcachepath.save()
                        configfile_mp.save()
-               elif "/var/volatile/" in config_mp.mediaportal.iconcachepath.value:
+               elif config_mp.mediaportal.iconcachepath.value.startswith('/usr/lib/enigma2/'):
                        config_mp.mediaportal.iconcachepath.value = "/media/hdd/mediaportal/"
                        config_mp.mediaportal.iconcachepath.save()
                        configfile_mp.save()
-               elif "/var/share/" in config_mp.mediaportal.iconcachepath.value:
+               elif config_mp.mediaportal.iconcachepath.value.startswith('/var/volatile/'):
                        config_mp.mediaportal.iconcachepath.value = "/media/hdd/mediaportal/"
                        config_mp.mediaportal.iconcachepath.save()
                        configfile_mp.save()
-               elif "/usr/share/" in config_mp.mediaportal.iconcachepath.value:
+               elif config_mp.mediaportal.iconcachepath.value.startswith('/var/share/'):
+                       config_mp.mediaportal.iconcachepath.value = "/media/hdd/mediaportal/"
+                       config_mp.mediaportal.iconcachepath.save()
+                       configfile_mp.save()
+               elif config_mp.mediaportal.iconcachepath.value.startswith('/usr/share/'):
                        config_mp.mediaportal.iconcachepath.value = "/media/hdd/mediaportal/"
                        config_mp.mediaportal.iconcachepath.save()
                        configfile_mp.save()
@@ -421,10 +414,6 @@ class CheckPathes:
                if not res:
                        self.session.openWithCallback(self._callback, MessageBoxExt, msg, MessageBoxExt.TYPE_ERROR)
 
-               res, msg = SimplePlaylistIO.checkPath(config_mp.mediaportal.iconcachepath.value + "icons_bw/", '', True)
-               if not res:
-                       self.session.openWithCallback(self._callback, MessageBoxExt, msg, MessageBoxExt.TYPE_ERROR)
-
                res, msg = SimplePlaylistIO.checkPath(config_mp.mediaportal.iconcachepath.value + "logos/", '', True)
                if not res:
                        self.session.openWithCallback(self._callback, MessageBoxExt, msg, MessageBoxExt.TYPE_ERROR)
@@ -559,10 +548,6 @@ class MPSetup(Screen, CheckPremiumize, ConfigListScreenExt):
                self.configlist.append(getConfigListEntry(_("GENERAL"), ))
                self.configlist.append(getConfigListEntry(_("Automatic Update Check:"), config_mp.mediaportal.autoupdate, False))
                self.configlist.append(getConfigListEntry(_("Mainview Style:"), config_mp.mediaportal.ansicht, True))
-               if config_mp.mediaportal.ansicht.value == "wall":
-                       self.configlist.append(getConfigListEntry(_("Wall Mode:"), config_mp.mediaportal.wallmode, True))
-               if config_mp.mediaportal.ansicht.value == "wall2":
-                       self.configlist.append(getConfigListEntry(_("Wall 2.0 Mode:"), config_mp.mediaportal.wall2mode, False))
                if (config_mp.mediaportal.ansicht.value == "wall" or config_mp.mediaportal.ansicht.value == "wall2"):
                        self.configlist.append(getConfigListEntry(_("Page Display Style:"), config_mp.mediaportal.pagestyle, False))
                self.configlist.append(getConfigListEntry(_("Skin:"), config_mp.mediaportal.skin2, False))
@@ -601,7 +586,10 @@ class MPSetup(Screen, CheckPremiumize, ConfigListScreenExt):
                self._spacer()
                self.configlist.append(getConfigListEntry(_("YOUTUBE"), ))
                self.configlist.append(getConfigListEntry(_("Highest resolution for playback:"), config_mp.mediaportal.youtubeprio, False))
-               self.configlist.append(getConfigListEntry(_("Enable DASH format (no seeking possible):"), config_mp.mediaportal.youtubeenabledash, True))
+               if config_mp.mediaportal.youtubeenablevp9.value and mp_globals.model in ["one","two"]:
+                       self.configlist.append(getConfigListEntry(_("Enable DASH format:"), config_mp.mediaportal.youtubeenabledash, True))
+               else:
+                       self.configlist.append(getConfigListEntry(_("Enable DASH format (no seeking possible):"), config_mp.mediaportal.youtubeenabledash, True))
                if config_mp.mediaportal.youtubeenabledash.value:
                        self.configlist.append(getConfigListEntry(_("Use DASH format for 480p:"), config_mp.mediaportal.youtubeenabledash480p, False))
                        self.configlist.append(getConfigListEntry(_("Use DASH format for 720p:"), config_mp.mediaportal.youtubeenabledash720p, False))
@@ -1508,8 +1496,6 @@ class MPWall(Screen, HelpableScreen):
 
        def __init__(self, session, lastservice, filter):
                self.lastservice = mp_globals.lastservice = lastservice
-               self.wallbw = False
-               self.wallzoom = False
 
                self.plugin_liste = []
 
@@ -1643,14 +1629,6 @@ class MPWall(Screen, HelpableScreen):
 
                skincontent = ""
 
-               if config_mp.mediaportal.wallmode.value == "bw":
-                       self.wallbw = True
-               elif config_mp.mediaportal.wallmode.value == "bw_zoom":
-                       self.wallbw = True
-                       self.wallzoom = True
-               elif config_mp.mediaportal.wallmode.value == "color_zoom":
-                       self.wallzoom = True
-
                if mp_globals.videomode == 2:
                        screenwidth = 1920
                        posxstart = 85
@@ -1675,10 +1653,7 @@ class MPWall(Screen, HelpableScreen):
                posy = posystart
                for x in range(1,len(self.plugin_liste)+1):
                        skincontent += "<widget name=\"zeile" + str(x) + "\" position=\"" + str(posx) + "," + str(posy) + "\" size=\"" + iconsize + "\" zPosition=\"1\" transparent=\"1\" alphatest=\"blend\" />"
-                       if self.wallzoom:
-                               skincontent += "<widget name=\"zeile_bw" + str(x) + "\" position=\"" + str(posx-zoomoffsetx) + "," + str(posy-zoomoffsety) + "\" size=\"" + iconsizezoom + "\" zPosition=\"2\" transparent=\"1\" alphatest=\"blend\" />"
-                       elif self.wallbw:
-                               skincontent += "<widget name=\"zeile_bw" + str(x) + "\" position=\"" + str(posx) + "," + str(posy) + "\" size=\"" + iconsize + "\" zPosition=\"1\" transparent=\"1\" alphatest=\"blend\" />"
+                       skincontent += "<widget name=\"zeile_zoom" + str(x) + "\" position=\"" + str(posx-zoomoffsetx) + "," + str(posy-zoomoffsety) + "\" size=\"" + iconsizezoom + "\" zPosition=\"2\" transparent=\"1\" alphatest=\"blend\" />"
                        posx += posxplus
                        if x in [8, 16, 24, 32, 40, 56, 64, 72, 80, 88, 104, 112, 120, 128, 136, 152, 160, 168, 176, 184, 200, 208, 216, 224, 232]:
                                posx = posxstart
@@ -1784,23 +1759,16 @@ class MPWall(Screen, HelpableScreen):
                self['page'] = Label("")
 
                for x in range(1,len(self.plugin_liste)+1):
-                       if self.wallbw or self.wallzoom:
-                               if mp_globals.isDreamOS and mp_globals.model in ["one", "two", "dm7080", "dm900", "dm920"]:
-                                       self["zeile"+str(x)] = PixmapExt()
-                               else:
-                                       self["zeile"+str(x)] = Pixmap()
-                               self["zeile"+str(x)].show()
-                               if mp_globals.isDreamOS and mp_globals.model in ["one", "two", "dm7080", "dm900", "dm920"]:
-                                       self["zeile_bw"+str(x)] = PixmapExt()
-                               else:
-                                       self["zeile_bw"+str(x)] = Pixmap()
-                               self["zeile_bw"+str(x)].hide()
+                       if mp_globals.isDreamOS and mp_globals.model in ["one", "two", "dm7080", "dm900", "dm920"]:
+                               self["zeile"+str(x)] = PixmapExt()
                        else:
-                               if mp_globals.isDreamOS and mp_globals.model in ["one", "two", "dm7080", "dm900", "dm920"]:
-                                       self["zeile"+str(x)] = PixmapExt()
-                               else:
-                                       self["zeile"+str(x)] = Pixmap()
-                               self["zeile"+str(x)].show()
+                               self["zeile"+str(x)] = Pixmap()
+                       self["zeile"+str(x)].show()
+                       if mp_globals.isDreamOS and mp_globals.model in ["one", "two", "dm7080", "dm900", "dm920"]:
+                               self["zeile_zoom"+str(x)] = PixmapExt()
+                       else:
+                               self["zeile_zoom"+str(x)] = Pixmap()
+                       self["zeile_zoom"+str(x)].hide()
 
                # Apple Page Style
                if config_mp.mediaportal.pagestyle.value == "Graphic" and len(self.plugin_liste_page_tmp) != 0:
@@ -1932,22 +1900,12 @@ class MPWall(Screen, HelpableScreen):
                        self.plugin_liste.sort(key=lambda x: int(x[4]))
 
                icon_url = getIconUrl()
-               if self.wallbw:
-                       icons_hashes = grabpage(icon_url+"icons_bw/hashes")
-               else:
-                       icons_hashes = grabpage(icon_url+"icons/hashes")
+               icons_hashes = grabpage(icon_url+"icons/hashes")
                if icons_hashes:
                        icons_data = re.findall('(.*?)\s\*(.*?\.png)', icons_hashes)
                else:
                        icons_data = None
 
-
-               icons_data_zoom = None
-               if self.wallzoom:
-                       icons_hashes_zoom = grabpage(icon_url+"icons/hashes")
-                       if icons_hashes_zoom:
-                               icons_data_zoom = re.findall('(.*?)\s\*(.*?\.png)', icons_hashes_zoom)
-
                logo_hashes = grabpage(icon_url+"logos/hashes")
                if logo_hashes:
                        logo_data = re.findall('(.*?)\s\*(.*?\.png)', logo_hashes)
@@ -1959,42 +1917,23 @@ class MPWall(Screen, HelpableScreen):
                        postername = self.plugin_liste[int(x)-1][1]
                        remote_hash = ""
                        ds = defer.DeferredSemaphore(tokens=5)
-                       if self.wallbw:
-                               poster_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "icons_bw", postername)
-                               url = icon_url+"icons_bw/" + postername + ".png"
-                               if not fileExists(poster_path):
-                                       if icons_data:
-                                               for a,b in icons_data:
-                                                       if b == postername+'.png':
-                                                               d = ds.run(downloadPage, url, poster_path)
-                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
-                               else:
-                                       if icons_data:
-                                               for a,b in icons_data:
-                                                       if b == postername+'.png':
-                                                               remote_hash = a
-                                                               local_hash = hashlib.md5(open(poster_path, 'rb').read()).hexdigest()
-                                                               if remote_hash != local_hash:
-                                                                       d = ds.run(downloadPage, url, poster_path)
-                                                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
+                       poster_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "icons", postername)
+                       url = icon_url+"icons/" + postername + ".png"
+                       if not fileExists(poster_path):
+                               if icons_data:
+                                       for a,b in icons_data:
+                                               if b == postername+'.png':
+                                                       d = ds.run(downloadPage, url, poster_path)
+                               poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
                        else:
-                               poster_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "icons", postername)
-                               url = icon_url+"icons/" + postername + ".png"
-                               if not fileExists(poster_path):
-                                       if icons_data:
-                                               for a,b in icons_data:
-                                                       if b == postername+'.png':
+                               if icons_data:
+                                       for a,b in icons_data:
+                                               if b == postername+'.png':
+                                                       remote_hash = a
+                                                       local_hash = hashlib.md5(open(poster_path, 'rb').read()).hexdigest()
+                                                       if remote_hash != local_hash:
                                                                d = ds.run(downloadPage, url, poster_path)
-                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
-                               else:
-                                       if icons_data:
-                                               for a,b in icons_data:
-                                                       if b == postername+'.png':
-                                                               remote_hash = a
-                                                               local_hash = hashlib.md5(open(poster_path, 'rb').read()).hexdigest()
-                                                               if remote_hash != local_hash:
-                                                                       d = ds.run(downloadPage, url, poster_path)
-                                                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
+                                                               poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
 
                        logo_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "logos", postername)
                        url = icon_url+"logos/" + postername + ".png"
@@ -2013,9 +1952,15 @@ class MPWall(Screen, HelpableScreen):
                                                                d = ds.run(downloadPage, url, logo_path)
 
                        if mp_globals.videomode == 2:
-                               self.picload.setPara((210, 112, scale[0], scale[1], False, 1, "#FF000000"))
+                               if mp_globals.isDreamOS and mp_globals.model in ["one", "two", "dm7080", "dm900", "dm920"]:
+                                       self.picload.setPara((272, 146, scale[0], scale[1], False, 1, "#FF000000"))
+                               else:
+                                       self.picload.setPara((210, 112, scale[0], scale[1], False, 1, "#FF000000"))
                        else:
-                               self.picload.setPara((150, 80, scale[0], scale[1], False, 1, "#FF000000"))
+                               if mp_globals.isDreamOS and mp_globals.model in ["one", "two", "dm7080", "dm900", "dm920"]:
+                                       self.picload.setPara((194, 104, scale[0], scale[1], False, 1, "#FF000000"))
+                               else:
+                                       self.picload.setPara((150, 80, scale[0], scale[1], False, 1, "#FF000000"))
                        if mp_globals.isDreamOS:
                                self.picload.startDecode(poster_path, False)
                        else:
@@ -2029,25 +1974,9 @@ class MPWall(Screen, HelpableScreen):
                                if x <= 48:
                                        self["zeile"+str(x)].show()
 
-                       if self.wallzoom:
-                               poster_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "icons", postername)
-                               url = icon_url+"icons/" + postername + ".png"
-                               if not fileExists(poster_path):
-                                       if icons_data_zoom:
-                                               for a,b in icons_data_zoom:
-                                                       if b == postername+'.png':
-                                                               d = ds.run(downloadPage, url, poster_path)
-                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
-                               else:
-                                       if icons_data_zoom:
-                                               for a,b in icons_data_zoom:
-                                                       if b == postername+'.png':
-                                                               remote_hash = a
-                                                               local_hash = hashlib.md5(open(poster_path, 'rb').read()).hexdigest()
-                                                               if remote_hash != local_hash:
-                                                                       d = ds.run(downloadPage, url, poster_path)
-                                                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
-
+                       if mp_globals.isDreamOS and mp_globals.model in ["one", "two", "dm7080", "dm900", "dm920"]:
+                               pass
+                       else:
                                if mp_globals.videomode == 2:
                                        self.picload.setPara((272, 146, scale[0], scale[1], False, 1, "#FF000000"))
                                else:
@@ -2056,35 +1985,14 @@ class MPWall(Screen, HelpableScreen):
                                        self.picload.startDecode(poster_path, False)
                                else:
                                        self.picload.startDecode(poster_path, 0, 0, False)
-
-                               self["zeile_bw"+str(x)].instance.setPixmap(gPixmapPtr())
-                               self["zeile_bw"+str(x)].hide()
                                pic = self.picload.getData()
-                               if pic != None:
-                                       self["zeile_bw"+str(x)].instance.setPixmap(pic)
-                                       if x <= 48:
-                                               self["zeile_bw"+str(x)].hide()
-                       elif self.wallbw:
-                               poster_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "icons", postername)
-                               if not fileExists(poster_path):
-                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
-
-                               if mp_globals.videomode == 2:
-                                       self.picload.setPara((210, 112, scale[0], scale[1], False, 1, "#FF000000"))
-                               else:
-                                       self.picload.setPara((150, 80, scale[0], scale[1], False, 1, "#FF000000"))
-                               if mp_globals.isDreamOS:
-                                       self.picload.startDecode(poster_path, False)
-                               else:
-                                       self.picload.startDecode(poster_path, 0, 0, False)
 
-                               self["zeile_bw"+str(x)].instance.setPixmap(gPixmapPtr())
-                               self["zeile_bw"+str(x)].hide()
-                               pic = self.picload.getData()
-                               if pic != None:
-                                       self["zeile_bw"+str(x)].instance.setPixmap(pic)
-                                       if x <= 48:
-                                               self["zeile_bw"+str(x)].hide()
+                       self["zeile_zoom"+str(x)].instance.setPixmap(gPixmapPtr())
+                       self["zeile_zoom"+str(x)].hide()
+                       if pic != None:
+                               self["zeile_zoom"+str(x)].instance.setPixmap(pic)
+                               if x <= 48:
+                                       self["zeile_zoom"+str(x)].hide()
 
                if config_mp.mediaportal.pagestyle.value == "Graphic" and len(self.plugin_liste_page_tmp) != 0:
                        for x in range(1,self.counting_pages+1):
@@ -2272,16 +2180,14 @@ class MPWall(Screen, HelpableScreen):
                                self.session.open(self.pornscreen, self.par1, self.par2)
 
        def hideshow(self):
-               if self.wallbw or self.wallzoom:
-                       test = self.mainlist[int(self.select_list)][int(self.selektor_index)-1]
-                       self["zeile_bw"+str(test)].hide()
-                       self["zeile"+str(test)].show()
+               test = self.mainlist[int(self.select_list)][int(self.selektor_index)-1]
+               self["zeile_zoom"+str(test)].hide()
+               self["zeile"+str(test)].show()
 
        def hideshow2(self):
-               if self.wallbw or self.wallzoom:
-                       test = self.mainlist[int(self.select_list)][int(self.selektor_index)-1]
-                       self["zeile_bw"+str(test)].show()
-                       self["zeile"+str(test)].hide()
+               test = self.mainlist[int(self.select_list)][int(self.selektor_index)-1]
+               self["zeile_zoom"+str(test)].show()
+               self["zeile"+str(test)].hide()
 
        def keyLeft(self):
                if self.check_empty_list():
@@ -2547,7 +2453,6 @@ class MPWall2(Screen, HelpableScreen):
 
        def __init__(self, session, lastservice, filter):
                self.lastservice = mp_globals.lastservice = lastservice
-               self.wallbw = False
                self.plugin_liste = []
                self.skin_path = mp_globals.pluginPath + mp_globals.skinsPath
 
@@ -2683,9 +2588,6 @@ class MPWall2(Screen, HelpableScreen):
 
                        self.plugin_liste = self.new_pluginliste
 
-               if config_mp.mediaportal.wall2mode.value == "bw":
-                       self.wallbw = True
-
                if mp_globals.videomode == 2:
                        self.perpage = 48
                        pageiconwidth = 36
@@ -2933,10 +2835,7 @@ class MPWall2(Screen, HelpableScreen):
                itemList = []
                posterlist = []
                icon_url = getIconUrl()
-               if self.wallbw:
-                       icons_hashes = grabpage(icon_url+"icons_bw/hashes")
-               else:
-                       icons_hashes = grabpage(icon_url+"icons/hashes")
+               icons_hashes = grabpage(icon_url+"icons/hashes")
                if icons_hashes:
                        icons_data = re.findall('(.*?)\s\*(.*?\.png)', icons_hashes)
                else:
@@ -2953,42 +2852,23 @@ class MPWall2(Screen, HelpableScreen):
                        ds = defer.DeferredSemaphore(tokens=5)
                        row = []
                        itemList.append(((row),))
-                       if self.wallbw:
-                               poster_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "icons_bw", p_picname)
-                               url = icon_url+"icons_bw/" + p_picname + ".png"
-                               if not fileExists(poster_path):
-                                       if icons_data:
-                                               for x,y in icons_data:
-                                                       if y == p_picname+'.png':
-                                                               d = ds.run(downloadPage, url, poster_path)
-                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
-                               else:
-                                       if icons_data:
-                                               for x,y in icons_data:
-                                                       if y == p_picname+'.png':
-                                                               remote_hash = x
-                                                               local_hash = hashlib.md5(open(poster_path, 'rb').read()).hexdigest()
-                                                               if remote_hash != local_hash:
-                                                                       d = ds.run(downloadPage, url, poster_path)
-                                                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
+                       poster_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "icons", p_picname)
+                       url = icon_url+"icons/" + p_picname + ".png"
+                       if not fileExists(poster_path):
+                               if icons_data:
+                                       for x,y in icons_data:
+                                               if y == p_picname+'.png':
+                                                       d = ds.run(downloadPage, url, poster_path)
+                               poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
                        else:
-                               poster_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "icons", p_picname)
-                               url = icon_url+"icons/" + p_picname + ".png"
-                               if not fileExists(poster_path):
-                                       if icons_data:
-                                               for x,y in icons_data:
-                                                       if y == p_picname+'.png':
+                               if icons_data:
+                                       for x,y in icons_data:
+                                               if y == p_picname+'.png':
+                                                       remote_hash = x
+                                                       local_hash = hashlib.md5(open(poster_path, 'rb').read()).hexdigest()
+                                                       if remote_hash != local_hash:
                                                                d = ds.run(downloadPage, url, poster_path)
-                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
-                               else:
-                                       if icons_data:
-                                               for x,y in icons_data:
-                                                       if y == p_picname+'.png':
-                                                               remote_hash = x
-                                                               local_hash = hashlib.md5(open(poster_path, 'rb').read()).hexdigest()
-                                                               if remote_hash != local_hash:
-                                                                       d = ds.run(downloadPage, url, poster_path)
-                                                                       poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
+                                                               poster_path = "%s/images/comingsoon.png" % mp_globals.pluginPath
 
                        logo_path = "%s/%s.png" % (config_mp.mediaportal.iconcachepath.value + "logos", p_picname)
                        url = icon_url+"logos/" + p_picname + ".png"
@@ -3764,11 +3644,6 @@ def clearFileBuffer():
        if icons_hashes:
                icons_data = re.findall('(.*?)\s\*(.*?\.png)', icons_hashes)
                clean(icons_data, path)
-       path = config_mp.mediaportal.iconcachepath.value + "icons_bw"
-       icons_bw_hashes = grabpage(icon_url+"icons_bw/hashes")
-       if icons_bw_hashes:
-               icons_bw_data = re.findall('(.*?)\s\*(.*?\.png)', icons_bw_hashes)
-               clean(icons_bw_data, path)
        path = config_mp.mediaportal.iconcachepath.value + "logos"
        logo_hashes = grabpage(icon_url+"logos/hashes")
        if logo_hashes:
index 128551f..0669fd0 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index e604d66..210b612 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 2b9f683..66e0ae4 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 6ce9561..b1e0982 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 915dde2..176754b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #
index 299910f..f1a8b26 100644 (file)
@@ -27,7 +27,7 @@
 <name>Vidto_dot_me</name><hoster>vidto\.me</hoster><regex>vidto\.me</regex><premium>p</premium>
 <name>Vidspot</name><hoster>vidspot</hoster><regex>vidspot\.net</regex>
 <name>Google</name><hoster>docs\.google\.com</hoster><regex>(?:docs|drive)\.google\.com|googleusercontent\.com</regex>
-<name>Vidoza</name><hoster>vidoza</hoster><regex>vidoza\.net</regex><premium>pr</premium>
+<name>Vidoza</name><hoster>vidoza</hoster><regex>vidoza\.(?:net|co)</regex><premium>pr</premium>
 <name>Fembed</name><hoster>fembed</hoster><regex>fembed\.com|kissmovies\.cc|vcdn\.io|mm9841\.com|smartshare\.tv</regex>
 <name>YouTube</name><hoster>youtube</hoster><regex>youtube\.com</regex><premium>pr</premium>
 <name>Vidzi</name><hoster>vidzi</hoster><regex>vidzi\.tv</regex>
index 6154ed8..fb0594b 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    MediaPortal for Dreambox OS
 #
-#    Coded by MediaPortal Team (c) 2013-2019
+#    Coded by MediaPortal Team (c) 2013-2020
 #
 #  This plugin is open source but it is NOT free software.
 #