Lesezeichen setzen

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

    • Lesezeichen setzen

      Ich würde gern Autotimer komplett über meinen Laptop anlegen. Die Autotimer-Aufnahmen lege ich in Verzeichnissen ab, die ich über den Explorer anlege. Was mir noch fehlt ist, aus den Verzeichnissen ein Lesezeichen zu erstellen, damit ich das Lesezeichen im OpenWebif für den Autotimer nutzen kann.

      Gibt es eine Möglichkeiten Lesezeichen über den Laptop anzulegen?
    • Das geht, wird aber kompliziert.

      Die Lesezeichen sind in /etc/enigma2/setting in der mit config.movielist.videodirs beginnenden Zeile gespeichert.

      Du müsstest also programmgesteuert Enigma anhalten, die Datei einlesen, verändern, speichern und Enigma wieder starten.
      Viel Spaß dabei! :D
    • Ich dachte ehe an so etwas: wget -q -O - [url]http://192.168.2.75/web/getlocations[/url] (ist nur ein Beispiel, um die Locations über Telnet abzufragen), denn mit Webif kann man ja auch die Settings (/etc/enigma2/setting) im laufenden Betrieb ändern.

      Gibt es einen OpenWebif-Befehl, mit dem man die Lesezeichen setzen kann?
    • Ob es einen solchen Befehl schon gibt, kann ich nach sagen. Ich bin noch nicht drüber gestolpert.

      Bevor man aber lange sucht, kann man sowas ganz fix einbauen.

      Ich habe das mal auf meiner Box ausprobiert ... das funktioniert.

      Ich veränderte dazu lediglich die:
      /usr/lib/enigma2/python/Plugins/Extensions/OpenWebif/controllers/models/message.py (Bild4)

      Dann kann man einfach eine Message mit dem neuen Verzeichnis an die Box per http senden (Bild1)
      Die Box versteht was zu tun ist und merkt sich die Änderung im Speicher.
      Beim Beenden von enigma (Gui-Neustart, z.B.) wird diese Änderung dann in die settings geschrieben. (Bild3)

      Geht also auch wenn Enigma läuft mit wenigen Zeilen Code. :D
      Wobei ich gemerkt habe, daß die Movieliste die Verzeichnisse prüft. Verzeichnisse, die es nicht (mehr) gibt, werden in der Auswahlbox nicht angeboten, auch wenn sie in der settings eingetragen sind.
      Dateien
      • Bild1.jpg

        (93,12 kB, 28 mal heruntergeladen, zuletzt: )
      • Bild2.jpg

        (219,17 kB, 30 mal heruntergeladen, zuletzt: )
      • Bild3.jpg

        (108,61 kB, 23 mal heruntergeladen, zuletzt: )
      • Bild4.jpg

        (149,4 kB, 24 mal heruntergeladen, zuletzt: )
    • @n020222 Danke für den Lösungsvorschlag. Das würde passen. Ich habe drei Fragen:

      1) Meine message.py fängt so an und def send message beginnt in Zeile 20:
      Spoiler anzeigen

      1 # -*- coding: utf-8 -*-
      2
      3 ##############################################################################
      4 # 2011 E2OpenPlugins #
      5 # #
      6 # This file is open source software; you can redistribute it and/or modify #
      7 # it under the terms of the GNU General Public License version 2 as #
      8 # published by the Free Software Foundation. #
      9 # #
      10 ##############################################################################
      11 from Plugins.Extensions.OpenWebif.__init__ import _
      12 from Screens.MessageBox import MessageBox
      13
      14 lastreply = None
      15
      16 def messageReply(reply):
      17 global lastreply
      18 lastreply = reply
      19
      20 def sendMessage(session, message, ttype, timeout):
      21 global lastreply
      22 if ttype not in [MessageBox.TYPE_YESNO, MessageBox.TYPE_INFO, MessageBox.TYPE_WARNING, MessageBox.TYPE_ERROR]:
      23 ttype = MessageBox.TYPE_INFO
      24
      25 if ttype == MessageBox.TYPE_YESNO:
      26 lastreply = None
      27 session.openWithCallback(messageReply, MessageBox, message, type=ttype, timeout=timeout)
      28 else:
      29 session.open(MessageBox, message, type=ttype, timeout=timeout)
      30
      31 return {
      32 "result": True,
      33 "message": _('Message sent successfully!')
      34 }
      35
      36 def getMessageAnswer():

      Ich denke, dass das kein Problem sein sollte oder?
      2) maxLen ist 10. Ich habe aber bereits ca. 20 Lesezeichen. Sollte ich daher maxLen nicht auf 100 oder noch größer setzen?
      3) Wie ruft man die Message Box im OpenWebif auf?

      Eine Bitte hätte ich noch, könnest du mir den Teil des Codes als Source bereitstellen, um Tippfeheler zu vermeiden? Die Tabs muss ich eh einfügen.

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

    • maxLen habe ich mir an der Stelle selbst ausgedacht.
      Keine Ahnung ob es irgendwo überhaupt ein Limit gibt.
      Kannst ruhig deine 20 einsetzen.

      Die message.py ist als py.txt drangebaumelt.
      Musst sie nur noch umbenennen.

      In Openwebif gibt es das "Briefsymbol" unter der Fernbedienung.
      Im neuen (hellen) Style ist es rechts oben.
      Dateien
      • message.py.txt

        (2,43 kB, 5 mal heruntergeladen, zuletzt: )
    • @n020222

      Vielen Dank, es funktioniert. Leider habe ich noch einen Fehler gemacht. Ich habe einmal „movies“ statt „movie“ angegeben. Nun habe ich folgende Einträge:

      Quellcode

      1. # wget -q -O - http://192.168.2.75/web/getlocations
      2. <?xml version="1.0" encoding="UTF-8"?>
      3. <e2locations>
      4. <e2location>/media/hdd/movie/Test</e2location>
      5. <e2location>/media/hdd/movies/Test</e2location>
      6. </e2locations>



      Könnte man noch abfragen, ob das Verzeichnis auch existiert? Vielleicht so etwas: If os.path.isdir(X) and X not in LZ: mit einem import os vorweg?

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von companion ()

    • Das läuft jetzt! Ein Fehlerchen ist noch drin. Ich bekomme immer dieselbe Meldung "Nachricht erfolgreicht versendet". Kann es daran liegen, dass schon eine Message-Box offen ist und eine zweite geöffnete werden soll.
      Könnte man sich nicht so behelfen:

      Quellcode

      1. if ttype == MessageBox.TYPE_YESNO:
      2. lastreply = None
      3. session.openWithCallback(messageReply, MessageBox, message, type=ttype, timeout=timeout)
      4. X='Message sent successfully!'
      5. else:
      6. ...
      7. return {
      8. "result": True,
      9. #"message": _('Message sent successfully!')
      10. "message": _(X)
      11. }
      Alles anzeigen

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

    • Das liegt einfach nur daran, das im obigen Scriptt die Message die am TV und am LCD ausgegeben wird verändert wird.
      Also Lesezeichen gesetzt etc. Die Ausgabe für den Browser ist garnicht verändert worden.

      Du wolltest doch eh am Ende wget bzw. die Browserzeile verwenden.
      z.B wget -q -O - hdd"&type=3 ...
      da ist es am Ende doch egal, was das Script antwortet ... dachte ich zumindest.

      Aber wie ach immer ..
      Deine Idee funktioniert, wenn die das X=.." an der richtigen Stelle steht und korrekt eingerückt ist.
      Ich habe es mal eingebaut.
      Dateien
      • message.py.txt

        (2,6 kB, 3 mal heruntergeladen, zuletzt: )
    • Diese Url-ersetzenfunktion des Forums pfuscht einem manchmal echt dazwischen ...
      da oben war gemeint wenn das Lesezeichen /hdd ist dann ruft wget
      http://192.168.2.75/web/message?text=Dir%3D%22/hdd%22&type=3
      auf und verwirft die Antwort im Prinzip.

      PS: jetzt weiß ich auch, warum manche in ihren Postings diese Kästen um den Text haben .. :D
    • @n020222 Ich habe deinen Ansatz noch etwas erweitert:
      Spoiler anzeigen

      # n020222 dazu
      ttimeout = 8
      BMlist = []
      KW, X = message.split("=", 1)
      KW = KW.strip().upper()
      X = X.replace('\"', '')
      X = X.replace("'", "")
      X = X.strip()
      M = ''
      DB = ''
      VDIR = config.movielist.start_videodir.value
      if VDIR not in X:
      X = VDIR+X
      # M = 'Extend dir! '
      if X.endswith('/'):
      B = X # booksmarks B with /
      X = X[:-1] # path X without /
      else:
      B = X+"/"
      if KW == "DIR":
      if X:
      try:
      DB = DB+' 1'
      if not os.path.isdir(X):
      DB = DB+' 2'
      os.makedirs(X)
      DB = DB+' 3'
      M = M+'Create dir '
      if os.path.isdir(X):
      DB = DB+' 4'
      BMlist = config.movielist.videodirs.value
      DB = DB+' 5'
      if X not in BMlist:
      DB = DB+' 6'
      BMlist.append(B)
      DB = DB+' 7'
      config.movielist.videodirs.value = BMlist
      DB = DB+' 8'
      config.movielist.videodirs.save()
      DB = DB+' 9'
      M = M+B+' Bookmark set. '
      else:
      DB = DB+' 10'
      M = M+' Error '+X+' does not exist.\nNothing done. '
      except:
      DB = DB+' 11'
      M = M+B+' Exception in setiing bookmark. '
      session.open(MessageBox, M, type=ttype, timeout=ttimeout)
      else:
      session.open(MessageBox, message, type=ttype, timeout=ttimeout)
      M = X+' Error in directory name'
      elif KW == "RMBM":
      if X:
      try:
      DB = DB+' 1'
      BMlist = config.movielist.videodirs.value
      if (X in BMlist) or (B in BMlist):
      DB = DB+' 2'
      xmldoc = minidom.parse('/etc/enigma2/autotimer.xml')
      DB = DB+' 3'
      ATlist = xmldoc.getElementsByTagName('timer')
      DB = DB+' 4'
      LClist = []
      for AT in ATlist:
      if AT.hasAttribute('location'):
      LClist.append(AT.attributes['location'].value)
      DB = DB+' 5'
      if (X not in LClist) and (B not in LClist):
      DB = DB+' 6'
      if B in BMlist:
      DB = DB+' 7'
      BMlist.remove(B)
      DB = DB+' 8'
      M = M+B+' bookmark removed '
      else:
      DB = DB+' 9'
      BMlist.remove(X)
      DB = DB+' 10'
      M = M+X+' bookmark removed '
      DB = DB+' 11'
      config.movielist.videodirs.value = BMlist
      DB = DB+' 12'
      config.movielist.videodirs.save()
      DB = DB+' 13'
      else:
      DB = DB+' 14'
      M = M+B+' bookmark used in Autotimer. \nNothing done '
      else:
      DB = DB+' 14'
      M = M+' Error, bookmark '+B+' does not exist.\nNothing done. '
      except:
      DB = DB+' 15'
      M = M+B+' Exception deleting bookmark. '
      session.open(MessageBox, M, type=ttype, timeout=ttimeout)
      else:
      session.open(MessageBox, message, type=ttype, timeout=ttimeout)
      M = B+' Error in bookmark name '
      elif KW == "RMDIR":
      if X:
      try:
      DB = DB+' 1'
      if os.path.isdir(X):
      DB = DB+' 2'
      if not os.listdir(X): # check if dir is empty
      DB = DB+' 3'
      BMlist = config.movielist.videodirs.value
      if (X not in BMlist) and (B not in BMlist):
      DB = DB+' 4'
      os.rmdir(X)
      DB = DB+' 5'
      M = M+X+' was deleted '
      else:
      DB = DB+' 6'
      M = M+'Error '+B+' usesd as bookmark. \nNothing done '
      else:
      DB = DB+' 7'
      M = M+X+' Folder not empty. \nNothing done '
      else:
      DB = DB+' 8'
      M = M+' Error dir '+X+' does not exist.\nNothing done. '
      except:
      DB = DB+' 9'
      M = M+X+' Exception deleting directory. '
      session.open(MessageBox, M, type=ttype, timeout=ttimeout)
      else:
      DB = DB+' 10'
      session.open(MessageBox, message, type=ttype, timeout=ttimeout)
      M = X+' Error in directory name '
      else:
      M = 'Message sent successfully!'
      # /n020222


      # /n020222 auskommentiert
      # session.open(MessageBox, message, type=ttype, timeout=timeout)
      # /n020222
      if debug == 1:
      return {
      "result": True,
      # "message": _('Message sent successfully!')
      "message": _(M+DB)
      # "message": _(M)
      }
      return {
      "result": True,
      # "message": _('Message sent successfully!')
      # "message": _(M+DB)
      "message": _(M)
      }


      Es gibt nun drei Keywords:

      • dir: Es legt ein Bookmark an und, wenn der Ordner noch nicht existiert, wird auch der Ordner angelegt. Das Ergebnis kann im Autotimer genutzt werden. Ggf. ist ein Neustart (schließen und wieder öffnen) vom OpenWebif erforderlich.
      • rmdir: Löscht einen Ordner. Das Löschen wird verhindert, wenn es ein Lesezeichen dazu gibt oder der Ordner nicht leer ist.
      • rmbm: Löscht Bookmarks, wenn sie nicht in Autotimer benutzt werden.
      Einige Anmerkungen:

      1. Die Keywords können groß, klein oder gemixt geschrieben werden.
      2. Die videodir wird aus der Datei /etc/enigma2/settings gelesen (meist /media/hdd/movie) und wird automatisch hinzugefügt, wenn man sie nicht mit angegeben hat.
      3. Der Ordnername muss nicht in Anführungszeichen gesetzt werden.
      4. Es sind noch einige Debug-Infos enthalten, die deaktiviert sind.
      Dateien
      • message.zip

        (1,78 kB, 4 mal heruntergeladen, zuletzt: )