AMS hat beides ,wir haben dort seit einiger Zeit auch die Serien von tmdb (schon alleine bessere backdrops für die AMS) .
Tvdb ist aber dennoch nicht schlecht und daher beides um bessere Auswahl zu haben.
MovieCockpit
-
-
bin jetzt schon seit ner weile mit dem "entkernen" des codes beschaeftigt. ist wie bei einem alten haus, an das ueber die jahre giebel, erker, anbauten etc. gebaut worden sind.
und beim wiederaufbau sind mir folgende tools ueber den weg gelaufen, die einem gut zeigen, wo noch renovierungsbedarf ist:
- flake8
- pylint
- doxygen
teilweise sind die tools ja sehr pingelig, was das ausspucken von warnungen anbelangt, aber oft zeigen sie auch verborgene fehlerquellen auf.
bei doxygen gefaellt mir die class hierarchy gut. damit sieht gut die code struktur.die kompletten daten hab ich mal hier hochgeladen.
haette vorher nie gedacht, dass diese plugins so umfangreich sind:
- EMC 9000 LOCs
- AMS ueber 17000 LOCs
- MVC hab ich runtergestrippt auf 6000 LOCsdas ist der helle wahnsinn.
-
-
aus spass am basteln habe ich neben der erweiterung des runningtext renderers das filesystem weiterentwickelt.
da ich 2 festplatten (eine interne, und eine usb platte) angeschlossen habe, habe ich ein virtuelles filesytem konzept im kopf, bei dem der user nicht mehr genau sieht, auf welcher platte, die files liegen.
d.h. die einzelnen enigma2 video dirs werden als ein virtuelles dir betrachtet, und neu ist jetzt, dass die trashcans, die unter jedem video dir haengen (/media/xxx/movie/trashcan) auch als eine virtuelle trashcan behandelt werden. (bei nur einer trashcan ist ja das problem, dass das moven eines files von einer platte in die trashcan auf der anderen platte elend lange dauert.)
ausserdem habe ich den code weiter vereinfacht, denn nur so bekommt/behaelt man den ueberblick und code stabilitaet.
je mehr options, je mehr pfade, je mehr opportunities for errors/bugs -
Virtueller Papierkorb das gibt es seit langem bei der AMS
Da wird an das gelöschte file einfach nur ein .trash angehangen und das auf jedem Laufwerk wo man dann was löscht .
Man kann dann dort auch einstellen ob man im Papierkorb menü halt alles unter Media angezeigt bekommen möchte oder aktuelles Verzeichnis sowie auch aktuelles Verzeichnis mit Unterordnern.
Und dann wird dir im Papierkorb alles angezeigt was man halt dort oder dort in den Papierkorb gelegt hat,da wird nix wo hinkopiert oder sonst was das ist alles nur Virtuell -
Da wird an das gelöschte file einfach nur ein .trash angehangen
ist sicher auch ein ansatz... mir gefaellt aber die physische trennung besser...
-
code schreiben ist eine sache, code debuggen und fehlersuche eine andere. dazu stehen ja bei e2 imho nur print-ausgaben zur verfuegung.
habe mittlerweile ein recht gutes konzept implementiert, um einfach sehen zu koennen, wo das print herkommt und wie ich die anzahl der prints recht gut steuern kann.
das layout eines prints sieht so aus:print("MVC|MVC-I|MVC-E: <modul>: <function>: foobar")
die prints mit MVC-I (info) oder MVC-E (error) sind immer an. die restlichen mit MVC kann ich mit script einfach auskommentieren oder aktivieren.
und mit "journalctl | grep MVC" bekomme ich alle aktivierten prints vom plugin.
macht sinn? -
-
was es heute alles so auf dem internet gibt... https://gemfury.com/ z.b.
damit kann man in nullkommanichts seinen eigenen feed aufbauen.
- deb package hochladen
- conf file fuer apt generieren
fertig.anhaengend ist die conf file fuer MVC (ohne ".txt") ... die kommt nach /etc/apt/sources.list.d
dann apt-get update, apt-get install enigma2-plugin-moviecockpit
fertig.vorher muss man noch mit "apt-get install apt-transport-https" https-support fuer apt installieren.
Code
Alles anzeigenroot@dm920:/etc/apt/sources.list.d# apt-get install apt-transport-https Reading package lists... Done Building dependency tree Reading state information... DoneThe following NEW packages will be installed: apt-transport-https 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Need to get 20.0 kB of archives. After this operation, 0 B of additional disk space will be used. Get:1 http://dreamboxupdate.com/opendreambox/2.5/unstable/r0/dm920/deb/cortexa15hf-neon-vfpv4/ ./ apt-transport-https 1.0.10.1-r0.4 [20.0 kB] Fetched 20.0 kB in 0s (168 kB/s) Selecting previously unselected package apt-transport-https. (Reading database ... 15416 files and directories currently installed.) Preparing to unpack .../apt-transport-https_1.0.10.1-r0.4_armhf.deb ... Unpacking apt-transport-https (1.0.10.1-r0.4) ... Setting up apt-transport-https (1.0.10.1-r0.4) ... root@dm920:/etc/apt/sources.list.d# apt-get install enigma2-plugin-extensions-moviecockpit Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: enigma2-plugin-extensions-moviecockpit 1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Need to get 89.5 kB of archives. After this operation, 0 B of additional disk space will be used. Get:1 http://apt.fury.io/dream-alpha/ enigma2-plugin-extensions-moviecockpit 1.7.5 [89.5 kB] Fetched 89.5 kB in 1s (63.5 kB/s) (Reading database ... 15417 files and directories currently installed.) Preparing to unpack .../enigma2-plugin-extensions-moviecockpit_1.7.5_all.5-all ... Unpacking enigma2-plugin-extensions-moviecockpit (1.7.5) over (1.7.3) ... Setting up enigma2-plugin-extensions-moviecockpit (1.7.5) ... *********************************** * MovieCockpit * * by * * dream-alpha * *********************************** Plugin MovieCockpit installed successfully. Please restart DreamOS now!
-
Interessant, danke für den Tipp, das spart mir das lokale erzeugen eines Feeds auf der Box
-
Da war aber einer fleißig......
Thx -
@alpha
Nur weil ich halt neugirig bin und gern rumteste hab ich mir mal das Teil geladen ,da scheint viel vermischt worden zu sein in dem Teil ,aber gut.
Muss aber sagen zum einen startet es garnicht sondern knallt nur weg, stellt man im Setup Papierkorb aus rumst es ebenso wenn man abspeichern möchte.
HD (was immernoch Standard beim DreamOS ist geht hier garnicht da du anscheind FHD screens drin hast und keine HD Screens ).
Auch wenn es einen FHD default Skin im DreamOS gibt sollte man Plugins in HD und FHD gleichermaßen bereitstellen da wie gesagt HD Standard ist und immer auch aktiv ist wenn man die Box kauft oder ein Image aufspielt.
Im DreamOS kann man das echt recht gut machen das beides geht dafür wurde viel getan in den letzten Jahren und im EMC haste ja auch Beispiele ,da haste ja so einiges her und da hatte ich die default Screens auch in HD und FHD gemacht so das es für beide Auflösungen default passt.
Das ganze Plugin ist somit absolut nicht bedinbar so wie es zZ. ist .Das ist nur mal ne Info an dich das man es so nicht wirklich nutzen kann
Code
Alles anzeigenTraceback (most recent call last): File "/usr/lib/enigma2/python/enigma.py", line 8210, in __call__ return ret(*args, **kwargs) File "/usr/lib/enigma2/python/Components/ActionMap.py", line 63, in action res = self.actions[action]() File "/usr/lib/enigma2/python/Screens/PluginBrowser.py", line 48, in save self.run() File "/usr/lib/enigma2/python/Screens/PluginBrowser.py", line 52, in run plugin(session=self.session) File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/plugin.py", line 45, in openMovieSelection session.openWithCallback(reloadMovieSelection, MovieSelection) File "/usr/lib/enigma2/python/mytest.py", line 442, in openWithCallback dlg = self.open(screen, *arguments, **kwargs) File "/usr/lib/enigma2/python/mytest.py", line 477, in open self.execBegin() File "/usr/lib/enigma2/python/mytest.py", line 343, in execBegin c.show() File "/usr/lib/enigma2/python/Screens/Screen.py", line 195, in show self.__onShow() File "/usr/lib/enigma2/python/Screens/Screen.py", line 199, in __onShow x() File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/MovieSelection.py", line 147, in onDialogShow self.reloadList(current_dir) File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/MovieSelection.py", line 513, in reloadList self["list"].reloadList(path, self.current_sorting) File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/MovieList.py", line 262, in reloadList self.list = self.sortList(filelist) File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/MovieList.py", line 234, in sortList tmplist = [i for i in sortlist if i[FILE_IDX_TYPE] in virToD or i[FILE_IDX_NAME] == ".."] TypeError: 'NoneType' object has no attribute '__getitem__'-------
Code
Alles anzeigenTraceback (most recent call last): File "/usr/lib/enigma2/python/enigma.py", line 8210, in __call__ return ret(*args, **kwargs) File "/usr/lib/enigma2/python/Components/ActionMap.py", line 63, in action res = self.actions[action]() File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/ConfigScreen.py", line 322, in keySaveNew if entry[2](entry[1]): File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/ConfigScreen.py", line 349, in activateTrashcan rc = Trashcan.getInstance().enableTrashcan() File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/Trashcan.py", line 77, in enableTrashcan rc = self.__createTrashcan() File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/Trashcan.py", line 66, in __createTrashcan config.movie_trashcan_enable.value = True File "/usr/lib/enigma2/python/Components/config.py", line 1693, in __getattr__ return self.content.items[name] KeyError: 'movie_trashcan_enable' ------- ]]>
-
-
Diskussion nein wenn du HD nicht vorgesehen hast dann ist es ebend so ,hätte wohl den default FHD nicht bauen sollen und Reichi dann nicht einbauen .
FHD ist ja auch das was ich normal seit langem mache und bevorzuge ,war nur als Info gedacht weil halt HD noch Standard ist im DreamOS und die User mit einem HD Skin das Plugin dann halt nicht nutzen können. -
Es knallt immernoch ,jetzt kann man das Plugin aufrufen aber man bekommt eine leere Liste und drückt man etwas rumst es .
Papierkorb ausschalten im Setup und abspeichern knallt auch noch mit der Version. -
der crash kommt daher, dass ich wohl an einigen stellen eine leere list nicht abgefangen habe.
die leere liste ist ein zeichen, dass der cache nicht gefuellt worden ist, sollte eigentlich beim ersten starten passieren.
man kann den cache auch ueber menue->cache aktualisieren fuellen.... aber du hast sicher besseres zu tun, als meine bugs zu debuggen -
Hab hier nur mal rein schauen mögen ,ich nutz und arbeite bei der AMS mit und daher mach ich mit deinem Plugin nicht wirklich was sorry.
Denke du solltest dir mal paar Betatester suchen und dann in einer kleinen Gruppe was zusammen bauen ,das geht besser als hier und vorallem wenn du nicht wirklich getestete Versionen auf die User los lässt ist das nicht sehr gut. -
Ich mach das auch ständig
-
-
War von mir nur ein Vorschlag aus Erfahrung raus.
Wie gesagt hier rumst es bei sehr vielen Dingen ,da geht so einiges nicht .
Hier nochmal paar grüne bei TMDB Info aufrufen zb.Code
Alles anzeigenTraceback (most recent call last): File "/usr/lib/enigma2/python/enigma.py", line 8210, in __call__ return ret(*args, **kwargs) File "/usr/lib/enigma2/python/Components/ActionMap.py", line 63, in action res = self.actions[action]() File "/usr/lib/enigma2/python/Tools/BoundFunction.py", line 10, in __call__ return self.fnc(*self.args + args, **newkwargs) File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/MovieSelection.py", line 265, in execFunctionKey self.function_key_functions[self.function_key_assignments[key]]() File "/usr/lib/enigma2/python/Plugins/Extensions/MovieCockpit/MovieSelection.py", line 380, in movieInfoTMDB if self["list"].getEntry4Index(self.getCurrentIndex())[FILE_IDX_EXT] in extVideo: AttributeError: 'MovieSelection' object has no attribute 'getCurrentIndex'------- ]]>
Oder einfach nur Info aufrufen und es ist keine vorhanden dann rumst es hier auch
CodeTraceback (most recent call last): File "/usr/lib/enigma2/python/enigma.py", line 8210, in __call__ return ret(*args, **kwargs) File "/usr/lib/enigma2/python/Components/ActionMap.py", line 63, in action res = self.actions[action]() File "/usr/lib/enigma2/python/Screens/InfoBarGenerics.py", line 557, in openEventView info = service.info() AttributeError: 'NoneType' object has no attribute 'info' ------- ]]>
Einträge sind zig mal vorhanden obwohl es sie ja nur einmal gibt uvm. was mir in der kurzen Zeit aufgefallen ist wo ich es mal testen wollte ,rund finde ich das halt leider nicht und daher hier meine Info an dich da ich sowas als Betatester für viele Sachen gewohnt bin und gern auch immer selbst eine Info haben möchte wenn ich was den Usern gebe.