Yamp "gepimpte" Version, auch für FHD, neue Version V3.2.2 26.10.2017, Korrekturen und Testversion 02.05.2021

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • AlfredENeumann schrieb:

      Was mich dabei auch wundert: Die V2.6.5 (und auch noch die 2.7.0 beta1) hatte doch die Beschränkung, dass Yamp mit einem FHD-Skin überhaupt nicht startet? Hattet ihr das selbst geändert, oder wie hat das funktioniert?
      Hi nochmal.
      Ich habe eine gepatchte yamp.py verwendet die der Skin Ersteller Nathanael freundlicherweise HIER zur Verfügung gestellt hatte.

      lg
      linux150
    • AlfredENeumann schrieb:

      @gordon55:Wenn ich das richtig interpretiere, bis du Spezialist, was Skins angeht. Für Tips, was ich einbauen sollte (gern als PM, damits hier nicht so voll wird), um das Ganze flexibler zu gestalten, bin ich dankbar. Ich muss jetzt schon aus mangelnder Erfahrung jede Funktion, die ich einbauen will, mühsam suchen, und das dauert halt... Und sooo viel Zeit will ich eben auch nicht investieren, es gibt auch noch ein Leben ausserhalb von Ymap - zumindest ein bisschen 8-o Aber bitte nicht falsch verstehen: Ich optimiere gern noch weiter, bin aber auf Hilfe angewiesen.
      ja , ich bin auch Anfänger, was python angeht ... aber da ich schon einige Programmierspachen kennen lernen durfte, fällt mir das Lesen nicht all zu schwer... ich schau mir das ganze am besten mit deiner Beta3 noch mal an D: und melde mich dan wieder .... ;_)

      PS : @linux150 - nimm die plugin.py hier aus der Beta ... damit startet YAMP zumindest aus HD- und FHD-Skins... das im iFlat verlinkte ZIP hat keine Yamp.py ...
    • Meinte natürlich die plugin.py und nicht yamp.py war schon ein wenig spät .... ;rolleyes:

      lg
      linux150

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von linux150 ()

    • So, nun hab ich mir das Skinner-Problem mal anhand des Skins von Nathanel angeschaut:
      Es ist natürlich ungünstig, dass ein Skinner auch den Code anpassen muss (Font und diverse Grössen in playlist.py im Beispiel). Mir fällt aber bis jetzt kein Weg ein, wie ich das in den Skin verlagern könnte. Wenn da einer eine Idee hat, bitte her damit.
      Konkret geht es um folgende Zeilen als Beispiel:
      Spoiler anzeigen

      MenuList.__init__(self, [], enableWrapAround, eListboxPythonMultiContent)
      self.l.setFont(0, gFont("Regular", 28)) # hier die Fontgrösse
      self.l.setItemHeight(28) #hier die Höhe

      res = [ serviceref ]
      res.append((eListboxPythonMultiContent.TYPE_TEXT,35, 10, 880, 24, 0, RT_VALIGN_CENTER, text)
      res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 5, 12, 16, 16, png))

      @gordon55: Mit Python habe ich absolut kein Problem, ist ja nur ein anderer "Dialekt" als sonstige Programmiersprachen und es gibt genügend ausführliche Dokumentation. Mein Problem ist eher Enigma, da ich bis jetzt dafür keine vernünftige Dokumentation der Klassen, Methoden, Eigenschaften gefunden habe. Das Wiki von Reichi ist zwar eine schöne Auflistung, aber erstens nicht vollständig (soweit ich das beurteilen kann) und zweitens ohne Erklärungen.

      @linux150: ok, da mit dem Skin auch eine plugin.py und playlist.py mitgeliefert wurde, ist klar, warums ging...

      Mit der playlist.py aus dem Skin hast du auch die Korrekturen beim Verschieben innerhalb der playlist nicht. Das wäre eben auch ein Grund, warum es schön wäre, wenn man die Funktionen für die Fonts und Sizes auch in den Listen in den Skin verschieben könnte.
      Wenn du Lust hast, könntest du ja mal testen, wie das Ganze aussieht, wenn du alle Original-py aus beta2 nimmst und dann bei allen xml aus einem gewählten Skin (z.b. fhdCustom) die Namen in den xml auf new änderst (screen name="Yamp" -> screen name="YampNew", <screen name="YampConfig" -> <screen name="YampConfigNew" usw.) und das Ergebnis berichtest..

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AlfredENeumann ()

    • Hallo,
      Finde das Beta2 schon sehr gut. Kaum noch krash wie Beta1 und auch der fhd und hd skin kann gestartet werden ohne .py editieren zu müssen. Klasse arbeit... ;thumbup:


      Habe auch bereits ein FHD skin bau begonnen mit der v2.7-Beta2 vom @AlfredENumann. Da mir gut nicht gut genug ist habe einiges neu gemacht und ein wenig FHD Skin iFlatFHD abgeschaut... D: Hoffe mall Nathanael2316 ist nich beledigt.. :^^ Yamp Haupt menu ist zu 99% fertig (Bild) die anderen menus dürften noch einfache zu edietiren sein. Schetze mall das @AlfredENumann FHD Skin zu v-Beta3 einbauen wird.


      Hi, @AlfrenENumann nochmal vielen Dank.. ;thumbsup: und noch wichtiger wen hier was leuft/klapt ist schön wen nicht ist auch wurscht. Mach dich blos nicht verückt mit yamp. Es giebt auch wichtigeres als das. Gesundheit geht vor... ;whistling:



      Grüsse...
      Dateien
      • y-menu.jpg

        (466,22 kB, 66 mal heruntergeladen, zuletzt: )
    • @Alfred : es gibt so wie ich das sehe, 2 Möglichkeiten, den Yamp (Playlist und DatabaseList) für Skinner anpassbar zu machen:
      a) über Skinparameter, sehr gutes Beispiel ist hier die MovieList.py
      b) über direkte Parameter im widget, so wie es z.B. CoolTV und EMC und auch die MovieList machen

      a) ich hab zwar noch kein Plugin geschrieben, aber es könnte mit SkinParametern in der YampPlayList.py vielleicht so gehen :
      YampPlayList.py
      MenuList.__init__(self, [], enableWrapAround, eListboxPythonMultiContent)
      font, size = skin.parameters.get("YampFont0", ('Regular', 18))
      self.l.setFont(0, gFont(font, size))

      ##self.l.setFont(0, gFont("Regular", 18))
      self.l.setItemHeight(int(skin.parameters.get("YampPlayListItemHeight", (23,))[0]))
      ##self.l.setItemHeight(23)
      self.currPlaying = -1
      self.oldCurrPlaying = -1
      self.icons = [
      LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/ico_mp_play.png")),
      LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/ico_mp_pause.png")),
      LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/ico_mp_stop.png")),
      ]
      self.shadowList = []
      self.isShuffeled = False

      def PlaylistEntryComponent(self, serviceref, state):
      res = [ serviceref ]
      text = serviceref.getName()
      if text == "":
      text = os.path.splitext(os.path.basename(serviceref.getPath()))[0]
      x,y,w,h = skin.parameters.get("YampPlayListItem", (25,1,470,22))
      res.append((eListboxPythonMultiContent.TYPE_TEXT, x, y, w, h, 0, RT_VALIGN_CENTER, text))

      ##res.append((eListboxPythonMultiContent.TYPE_TEXT,25, 1, 470, 22, 0, RT_VALIGN_CENTER, text))
      try:
      png = self.icons[state]
      x,y,w,h = skin.parameters.get("YampPlayListIcon", (5,3,16,16))
      res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, x, y, w, h, png))

      ##res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 5, 3, 16, 16, png))
      except:
      pass
      return res
      Die Skinparameter haben ja alle Default-Werte, das sind die bisherigen Werte, die hier hardcoded drin stehen. Wenn der Skinparameter also nicht gesetzt wird, ändert sich also nix und alles funktioniert wie gehabt.

      b) über widget-parameter im Skin, die in der .py analysiert werden müssen, hier ein Auszug aus der MovieList.py:
      Spoiler anzeigen
      self.UnwatchedColor = parseAvailableSkinColor("foreground") or 0xffffff
      self.WatchingColor = parseAvailableSkinColor("yellow") or 0xbab329
      self.FinishedColor = parseAvailableSkinColor("green") or 0x389416
      self.RecordingColor = parseAvailableSkinColor("red") or 0xf23d21
      self.SelectedColor = parseAvailableSkinColor("orange") or 0xffa500

      def applySkin(self, desktop, parent):
      attribs = []
      if self.skinAttributes is not None:
      for (attrib, value) in self.skinAttributes:
      if attrib == "UnwatchedColor":
      self.UnwatchedColor = parseColor(value).argb()
      elif attrib == "WatchingColor":
      self.WatchingColor = parseColor(value).argb()
      elif attrib == "FinishedColor":
      self.FinishedColor = parseColor(value).argb()
      elif attrib == "RecordingColor":
      self.RecordingColor = parseColor(value).argb()
      elif attrib == "SelectedColor":
      self.SelectedColor = parseColor(value).argb()
      else:
      attribs.append((attrib, value))
      self.skinAttributes = attribs
      return GUIComponent.applySkin(self, desktop, parent)

      oder auch aus EMCPlayList.py (gibt's aufm GIT, siehe Plugin-Thread)
      Spoiler anzeigen
      Aufruf im Skin :
      <widget name="playlist" position="5,5" size="982,630" itemHeight="40" scrollbarMode="showOnDemand" posWidth="63" nameWidth="852" posColor="#FFFFFF" posColorSel="#FFFFFF" nameColor="#FFFFFF" nameColorSel="#FFFFFF" />

      und im code :

      class PlayList(GUIComponent):
      def __init__(self, enableWrapAround = True):
      GUIComponent.__init__(self)

      self.screenwidth = getDesktop(0).size().width()
      if self.screenwidth and self.screenwidth == 1920:
      if imgVti:
      self.posFont = parseFont("Regular;26", ((1,1),(1,1)))
      self.nameFont = parseFont("Regular;26", ((1,1),(1,1)))
      else:
      self.posFont = parseFont("Regular;28", ((1,1),(1,1)))
      self.nameFont = parseFont("Regular;28", ((1,1),(1,1)))
      self.itemHeight = 40
      elif self.screenwidth and self.screenwidth == 3840:
      if imgVti:
      self.posFont = parseFont("Regular;56", ((1,1),(1,1)))
      self.nameFont = parseFont("Regular;56", ((1,1),(1,1)))
      else:
      self.posFont = parseFont("Regular;56", ((1,1),(1,1)))
      self.nameFont = parseFont("Regular;56", ((1,1),(1,1)))
      self.itemHeight = 70
      else:
      if imgVti:
      self.posFont = parseFont("Regular;18", ((1,1),(1,1)))
      self.nameFont = parseFont("Regular;18", ((1,1),(1,1)))
      else:
      self.posFont = parseFont("Regular;20", ((1,1),(1,1)))
      self.nameFont = parseFont("Regular;20", ((1,1),(1,1)))
      self.itemHeight = 30

      self.posColor = 0xFFFFFF
      self.posColorSel = 0xFFFFFF
      self.nameColor = 0xFFFFFF
      self.nameColorSel = 0xFFFFFF

      self.posWidth = -1
      self.nameWidth = -1

      self.l = eListboxPythonMultiContent()
      self.l.setFont(0, self.posFont)
      self.l.setFont(1, self.nameFont)

      self.onSelectionChanged = []

      def selectionChanged(self):
      for f in self.onSelectionChanged:
      try:
      f()
      except Exception, e:
      emcDebugOut("[EMCPlayList] External observer exception: \n" + str(e))

      def applySkin(self, desktop, parent):
      attribs = []
      if self.skinAttributes is not None:
      for (attrib, value) in self.skinAttributes:
      if attrib == "posFont":
      self.posFont = parseFont(value, ((1,1),(1,1)))
      self.l.setFont(0, self.posFont)
      elif attrib == "nameFont":
      self.nameFont = parseFont(value, ((1,1),(1,1)))
      self.l.setFont(1, self.nameFont)
      elif attrib == "posWidth":
      self.posWidth = int(value)
      elif attrib == "nameWidth":
      self.nameWidth = int(value)
      elif attrib == "posColor":
      self.posColor = parseColor(value).argb()
      elif attrib == "posColorSel":
      self.posColorSel = parseColor(value).argb()
      elif attrib == "nameColor":
      self.nameColor = parseColor(value).argb()
      elif attrib == "nameColorSel":
      self.nameColorSel = parseColor(value).argb()
      elif attrib == "itemHeight":
      self.itemHeight = int(value)
      else:
      attribs.append((attrib, value))
      self.readPlaylist()
      self.refreshList()
      self.setItemHeight()
      self.skinAttributes = attribs
      return GUIComponent.applySkin(self, desktop, parent)
      hier werden die bisherigen Defaukt-Werte in Variablen gepackt, die dann durch widget-Parameter im Skin angepasst werden können.

      Ich bin mir nicht sicher, ob alle Enigma2-Images die SkinParameter (Variante a) beherschen, VTI kanns definitiv. EMC und CoolTV laufen ja auf allen Images, hier wird Variante b) genutzt (wohl auch, weil diese Plugins zu Zeiten programmiert worden sind, als es noch keine Skin-Parameter gab...)

      vielleicht kannst du ja was aus diesen Ideen basteln ;) Da würden sich bestimmt etliche User freuen, wenn Yamp so "skinnable" wäre und zudem unter HD- und FHD-Skins läuft.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von gordon55 ()

    • gordon55, danke dir. ;_( Schau ich mir an, sieht auf den ersten Blick vielversprechend aus. Ganz klar, was machbar ist, sollte aus dem Code im Plugin raus, damit ein Skinner nicht bei jeder kleinen Bug-Behebung / neuem Feature, das eigentlich nichts mit der Anzeige zu tun hat, nacharbeiten muss.
    • Könnte mir hier jemand der etwas Zeit hat in der er seine Box nicht braucht helfen und einen einfach Test durchführen?

      Bitte nehmt mal yamp 2.7 beta2 und fügt einige Lieder (100 oder mehr) in die playlist ein. Stellt im Menü ein, das die Playliste wiederholt werden soll.

      Dann bitte einfach laufen lassen und nach eingen Stunden oder über Nacht berichten was passiert.

      Bei mir kommt es immer wieder vor, dass nach längerer Zeit die Lieder zwar laufen, aber kein Ton zu hören ist, oder aber das der player sogar stehen bleibt.

      Ich nutzer vti 9.01 (DUO2) mit updates und yamp 2.7beta2 mit Liedern die ich vom NAS über verkabeltes LAN lade.

      Mich würde sehr interresieren ob andere user das reproduzieren können und ob das bei Dreamboxen nicht auftritt.

      Vielen Dank and jeden der das mal ausprobieren kann, feedback gerne hier oder per PM.
    • Edit 26.01:
      Hat sich erledigt, da ich mit Hilfe von @gordon55 kein "Dummy-Widget" mehr erstellen musste, sondern mit Standard-Parametern klar gekommen bin.

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von AlfredENeumann ()

    • @Alfred, danke, es freut mich sehr, wenn's hilfreich war ;)
      ich verstehe nur nicht ganz, warum du eine eine Funktion mit 2 Dummy-widgets einbauen möchtest, das müsste nach Variante B auch als Parameter im widget selbst gehen, das funktioniert dann auch in allen Images, z.B.

      <widget name="playlist" position="660,105" size="560,325" itemHeight="30" font="Regular;30" valign="center" playlistItemPos="25,1" playlistItemSize="470,22" playlistIconPos="5,3" playlistIconSize="16,16" backgroundColor="#00101214" selectionDisabled="1" scrollbarMode="showOnDemand" />

      und das Auslesen müsste doch mit einer Funktion applySkin(...) unter Verwendung der parse... Funktionen (Position, Size, Font, Color) aus der skin.py gehen, das machen viele Plugins so und diese Funktionen gibt's wohl auch in jedem Image.

      und wenn du die neuen Parameter in dem Modul entsprechend mit den Defauts vorbelegst , braucht man für diese im Skin gar nix anzugeben, d.h. auch nicht angepasste Skins würden weiter funktionieren .
      wie wäre das ?

      PS : falls du mit "filelist" die YampDatabaseList.py meinst : ja im Prinzip ähnlich, nur hier kommen wohl weitere Werte hinzu, z.B. font1, sowie Pos/Size für text, title-artist, length, album-date, genre ... damit wäre auch die "dblist" voll skinnbar ;)
      in der "filelist" kann ich nix relevantes für skins erkennen, ist ja wohl ne Liste mit Dateinamen, da reicht es wenn man Font und ItemHeight im skin setzen kann.
    • frankwbb schrieb:

      @allow2010
      Ich habe den Yamp-Player Stunden laufen lassen und konnte den Tonausfall bis jetzt nicht nachvollziehen.
      Danke, ich nehme an auf der DreamBox? Ich nahm schon an, dass das da gut läuft, ich habe VTi9 und den gstreamer im verdacht...teste heute abend mal mit vti 8. Wäre trotzdem immernoch dankbar wenn ein VU User dass mal testen könnte, Danke !!
    • Mein Yamp läuft fast ständig und Tonausfall hatte ich bis jetzt auch keinen.
      Zumindest kann ich das für viele einzelne Zeitabschnitte von jeweils 2 Stunden sagen.
      Meine Box ist so eingestellt das, wenn man 2 Stunden keine Taste auf der Fernbedienung
      drückt sie automatisch in den Standby geht.
      Ich schlaf halt oft vor dem Ding ein, daher brauche ich das ;sleeping:
      Aussage trifft zu für: DUO2 und PLi Image
    • Danke für die Info, hier also auch kein vti

      ich hatte jetzt längere Phasen getestet (Party, ganzer abend oder auch über nacht (10 Stunden)), hoffe mein vti 8 Test um vergleich zu vti9 zeigt etwas und vielleicht findet sich ja noch ein vti user der das ausprobiert...könnte ja immer auch an meiner Hardware oder meinen settings liegen...
    • Hi!

      Hab jetzt ein wenig mit verschiedenen image skins getestet. (HD un dFHD)
      Hab jetzt leider keine Zeit mehr das alles zu dokumentieren da ich in die Nachtschicht muss und morgen hat meine holde Geburtstag.

      Also so richtig funktionieren tut bei mir ausser Artist Pics (da aber auch nur die Bilder ohne der Playerleiste) nicht wirklich was (Anzeigetechnisch).


      Die Frage ist lohnt sich eine Übersicht mittels Screenshot noch, oder wird das eh alles in der beta 3 behoben (soll ich bis zur beta 3 warten D: )


      lg
      linux150

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von linux150 ()

    • Ich denke in beta3 wird sich im bereich skins einiges tun, aber es dauert wohl noch ein wenig.

      Allerdings geht bei mir auf der duo2 mit der beta2 eigentlich das meiste, kann ich dir evtl. helfen den grund zu finden?
    • Ich glaube ich warte erstmal auf die beta 3.

      Evtl finde ich morgen mal Zeit dein Problem zu testen, Ich verwende VTI 9.

      lg
      linxu150
    • @linux150
      Hast du denn den Versuch mal gemacht, in den Skins, wo "anzeigetechnisch fast nichts" funktioniert, in der XML den Screen-Namen umzubenennen, wie weiter oben schon vorgeschlagen? So wie ich das verstanden habe (ohne Gewähr), übernimmt dein Skin die Anzeige - und der weiss natürlich nichts von den neuen Features.
      Auch mit dem beta3 wird sich daran nicht viel ändern - was sich da vor allem ändert, ist, dass es für die Skinner leichter werden soll, die neuen Features in ihre Skins aufzunehmen und ihren Bedürfnissen anzupassen, ohne dass sie in den Code müssen.
      Noch ein Hinweis: Die Versuche mit FHD-Skins kannst du dir sparen - da bis jetzt keine FHD-Skins da sind, sind dort nur Kopien der HD-Skins drin. Das war einfach mal die Bereitstellung, um bei vorhandenem FHD-Skin diesen dort reinkopieren und in den Einstellungen auch auswählen zu können

      @gordon55
      Nochmal danke; warum ich auf die Dummy-Widgets ausgewichen bin, hat 2 Gründe:
      1. Haben mich die Abfragen im Code (vti oder nicht) etwas abgeschreckt, da ich das Ganze nicht Image-abhängig machen wollte. Jetzt, bei genauerem Hinsehen, hab ich gemerkt, dass das wohl nur verschiedene Voreinstellungen sind.

      2. Der Hauptgrund: Ich habs einfach nicht kapiert, was da abgeht. Jetzt nach deinen neuen Anmerkungen hab ich mich nochmal intensiver drangemacht, und ich komme so langsam dahinter, wie es funktionert. Wird also wohl auf die EMC-Lösung rauslaufen (deine Option b), ist definitv eleganter. Auch wenn meine Funktionen eigentlich schon zu 2/3 fertig waren. Muss ich halt unter Fortbildung verbuchen..

      Für den Skinner ändert sich aber erstmal nichts, ausser dass er sich eben nicht mit Dummy-Widgets rumschlagen muss. Das Entscheidende ist ja, dass er nicht mehr in den Code muss.

      Kleine Berichtigung noch zu deinem obigen Beispiel: "font" funktioniert in eListBox nicht, muss man halt auch analog zu den anderen mit einer Eigendefinition wie itemFont machen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AlfredENeumann ()