Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Octoprint-script für thumbnail des aktuellen Drucks

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

Octoprint-script für thumbnail des aktuellen Drucks

Scheduled Pinned Locked Moved JavaScript
javascript
100 Posts 9 Posters 9.5k Views 8 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • MeistertrM Offline
    MeistertrM Offline
    Meistertr
    Developer
    wrote on last edited by
    #70

    man kann es auch ganz schnell ohne script nur mit binding lösen

    http://octopi/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png
    

    Ergebins:

    2022-02-04_20h05_52.png

    LatziL 1 Reply Last reply
    1
    • MeistertrM Meistertr

      man kann es auch ganz schnell ohne script nur mit binding lösen

      http://octopi/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png
      

      Ergebins:

      2022-02-04_20h05_52.png

      LatziL Online
      LatziL Online
      Latzi
      wrote on last edited by
      #71

      @meistertr
      Das ist so richtig genial, vielen Dank! Darauf wäre ich niemals gekommen :+1:

      da_WoodyD 1 Reply Last reply
      0
      • LatziL Latzi

        @meistertr
        Das ist so richtig genial, vielen Dank! Darauf wäre ich niemals gekommen :+1:

        da_WoodyD Online
        da_WoodyD Online
        da_Woody
        wrote on last edited by
        #72

        @latzi gestern wieder mal kein thumbnail bekommen, heute fehler entdeckt:
        Shelly_Box_-Lid
        öffensichtlich hat das script sich an **
        -_** verschluckt.
        nach umbenennen Shelly_Box_Lid wars da.

        gruß vom Woody
        HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

        LatziL 1 Reply Last reply
        0
        • da_WoodyD da_Woody

          @latzi gestern wieder mal kein thumbnail bekommen, heute fehler entdeckt:
          Shelly_Box_-Lid
          öffensichtlich hat das script sich an **
          -_** verschluckt.
          nach umbenennen Shelly_Box_Lid wars da.

          LatziL Online
          LatziL Online
          Latzi
          wrote on last edited by Latzi
          #73

          Guten Morgen @da_woody
          bitte kannst du printjob.file.name und files.xxx posten in der Original-Version. Da spuckt möglicherweise die Übersetzung rein

          Edit: Noch besser ist die Verwendung von @meistertr´s Ansatz

          da_WoodyD 1 Reply Last reply
          0
          • LatziL Latzi

            Guten Morgen @da_woody
            bitte kannst du printjob.file.name und files.xxx posten in der Original-Version. Da spuckt möglicherweise die Übersetzung rein

            Edit: Noch besser ist die Verwendung von @meistertr´s Ansatz

            da_WoodyD Online
            da_WoodyD Online
            da_Woody
            wrote on last edited by
            #74

            @latzi strange...
            octoprint.0.printjob.file.name Shelly_Box_-_Lid.gcode
            octoprint.0.files.local_Shelly_Box_Lid als Name steht dort Shelly_Box_-_Lid.gcode
            kein .png in javascript.0.Octothumb.thumbnail

            http://octopi/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
            

            hab ich probiert mit

            http://192.168.2.59/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
            

            bekomm ich nur einen error 404...

            gruß vom Woody
            HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

            LatziL 2 Replies Last reply
            0
            • da_WoodyD da_Woody

              @latzi strange...
              octoprint.0.printjob.file.name Shelly_Box_-_Lid.gcode
              octoprint.0.files.local_Shelly_Box_Lid als Name steht dort Shelly_Box_-_Lid.gcode
              kein .png in javascript.0.Octothumb.thumbnail

              http://octopi/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
              

              hab ich probiert mit

              http://192.168.2.59/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
              

              bekomm ich nur einen error 404...

              LatziL Online
              LatziL Online
              Latzi
              wrote on last edited by
              #75

              @da_Woody
              du musst aus einem bestehenden thumbnail den ersten Teil des Pfades rauskopieren, bei mir z.B.:

              http://10.0.0.213:80/plugin/prusaslicerthumbnails/thumbnail/
              

              und dahinter das Binding

              {d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
              

              einsetzen

              da_WoodyD 1 Reply Last reply
              0
              • da_WoodyD da_Woody

                @latzi strange...
                octoprint.0.printjob.file.name Shelly_Box_-_Lid.gcode
                octoprint.0.files.local_Shelly_Box_Lid als Name steht dort Shelly_Box_-_Lid.gcode
                kein .png in javascript.0.Octothumb.thumbnail

                http://octopi/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
                

                hab ich probiert mit

                http://192.168.2.59/plugin/UltimakerFormatPackage/thumbnail/{d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
                

                bekomm ich nur einen error 404...

                LatziL Online
                LatziL Online
                Latzi
                wrote on last edited by Latzi
                #76

                @da_woody sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                octoprint.0.printjob.file.name Shelly_Box_-Lid.gcode
                octoprint.0.files.local_Shelly_Box_Lid als Name steht dort Shelly_Box
                -_Lid.gcode

                Da spuckt Zeile 18 des scripts rein, dort wird der "-" durch "_" ersetzt und daher wird nichts gefunden.
                Möglichkeiten:

                • Zeile 18 auskommentieren (wird sicher in einer anderen Konstellation Probleme machen)
                • script durch jenes mit "Namen" ersetzen https://forum.iobroker.net/topic/51635/octoprint-script-für-thumbnail-des-aktuellen-drucks/64
                • Mein Favorit: script deaktivieren und mit dem Binding arbeiten
                da_WoodyD 1 Reply Last reply
                0
                • LatziL Latzi

                  @da_Woody
                  du musst aus einem bestehenden thumbnail den ersten Teil des Pfades rauskopieren, bei mir z.B.:

                  http://10.0.0.213:80/plugin/prusaslicerthumbnails/thumbnail/
                  

                  und dahinter das Binding

                  {d:octoprint.0.printjob.file.name; d.split('.')[0]}.png 
                  

                  einsetzen

                  da_WoodyD Online
                  da_WoodyD Online
                  da_Woody
                  wrote on last edited by da_Woody
                  #77

                  @latzi jap, jetzt tuts mit dem binding! :+1:

                  gruß vom Woody
                  HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                  K 1 Reply Last reply
                  0
                  • da_WoodyD da_Woody

                    @latzi jap, jetzt tuts mit dem binding! :+1:

                    K Offline
                    K Offline
                    Kuddel
                    wrote on last edited by Kuddel
                    #78

                    @da_woody blöde Frage.. welches Widget muss ich für das Binding nehmen ?

                    EDIT: iframe funzt

                    da_WoodyD 1 Reply Last reply
                    0
                    • K Kuddel

                      @da_woody blöde Frage.. welches Widget muss ich für das Binding nehmen ?

                      EDIT: iframe funzt

                      da_WoodyD Online
                      da_WoodyD Online
                      da_Woody
                      wrote on last edited by
                      #79

                      @kuddel hmpf, ja. ich hab ein stinknormales basic-image genommen...

                      gruß vom Woody
                      HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                      K 1 Reply Last reply
                      0
                      • da_WoodyD da_Woody

                        @kuddel hmpf, ja. ich hab ein stinknormales basic-image genommen...

                        K Offline
                        K Offline
                        Kuddel
                        wrote on last edited by
                        #80

                        @da_woody ich glaube das Widget ist dann doch eher zweitrangig.

                        Wichtig ist, dass die Anzeige ohne Skript funktioniert :-)

                        da_WoodyD 1 Reply Last reply
                        0
                        • LatziL Latzi

                          @da_woody sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                          octoprint.0.printjob.file.name Shelly_Box_-Lid.gcode
                          octoprint.0.files.local_Shelly_Box_Lid als Name steht dort Shelly_Box
                          -_Lid.gcode

                          Da spuckt Zeile 18 des scripts rein, dort wird der "-" durch "_" ersetzt und daher wird nichts gefunden.
                          Möglichkeiten:

                          • Zeile 18 auskommentieren (wird sicher in einer anderen Konstellation Probleme machen)
                          • script durch jenes mit "Namen" ersetzen https://forum.iobroker.net/topic/51635/octoprint-script-für-thumbnail-des-aktuellen-drucks/64
                          • Mein Favorit: script deaktivieren und mit dem Binding arbeiten
                          da_WoodyD Online
                          da_WoodyD Online
                          da_Woody
                          wrote on last edited by
                          #81

                          @latzi hmpf. gestern mal testweise js-controller 4 installiert. danach weder über script, noch über binding was bekommen.
                          ec647b54-c9a4-44d8-b3d0-b320f039c495-grafik.png
                          obwohl in den DP das richtige drinne steht.
                          nochmal zurück auf js 3.3.22 und das script hat wieder funktioniert. mit der binding geschichte aber nicht mehr.
                          weil ichs nicht ganz glauben wollte und andere berichten, daß diverse blocklys funktionieren, wieder update auf 4.0.4 gemacht, siehe oben. egal, was ich als background_url in iQontrol eintrage.
                          der link, den ich vom script bekomme, funzt aber in vis und wenn ich über browser aufrufe...

                          gruß vom Woody
                          HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                          LatziL 1 Reply Last reply
                          0
                          • K Kuddel

                            @da_woody ich glaube das Widget ist dann doch eher zweitrangig.

                            Wichtig ist, dass die Anzeige ohne Skript funktioniert :-)

                            da_WoodyD Online
                            da_WoodyD Online
                            da_Woody
                            wrote on last edited by
                            #82

                            @kuddel da haben wir gleichzeitig gesendet... :D

                            gruß vom Woody
                            HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                            1 Reply Last reply
                            0
                            • da_WoodyD da_Woody

                              @latzi hmpf. gestern mal testweise js-controller 4 installiert. danach weder über script, noch über binding was bekommen.
                              ec647b54-c9a4-44d8-b3d0-b320f039c495-grafik.png
                              obwohl in den DP das richtige drinne steht.
                              nochmal zurück auf js 3.3.22 und das script hat wieder funktioniert. mit der binding geschichte aber nicht mehr.
                              weil ichs nicht ganz glauben wollte und andere berichten, daß diverse blocklys funktionieren, wieder update auf 4.0.4 gemacht, siehe oben. egal, was ich als background_url in iQontrol eintrage.
                              der link, den ich vom script bekomme, funzt aber in vis und wenn ich über browser aufrufe...

                              LatziL Online
                              LatziL Online
                              Latzi
                              wrote on last edited by
                              #83

                              @da_woody sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                              hmpf. gestern mal testweise js-controller 4 installiert. danach weder über script, noch über binding was bekommen.

                              würde mich sehr überraschen, wenn der JS-Controller 4 plötzlich mit Bindings nicht mehr umgehen könnte, könnte es nicht mit iQontrol zutun haben?
                              Auch beim script wüsste ich nicht woher die Inkonsistenz kommen soll, da sind nur einfachste Funktionen im Einsatz.
                              Kurz zusammengefasst, ich hab keine Erklärung für das Verhalten :-(

                              da_WoodyD 1 Reply Last reply
                              0
                              • LatziL Latzi

                                @da_woody sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                                hmpf. gestern mal testweise js-controller 4 installiert. danach weder über script, noch über binding was bekommen.

                                würde mich sehr überraschen, wenn der JS-Controller 4 plötzlich mit Bindings nicht mehr umgehen könnte, könnte es nicht mit iQontrol zutun haben?
                                Auch beim script wüsste ich nicht woher die Inkonsistenz kommen soll, da sind nur einfachste Funktionen im Einsatz.
                                Kurz zusammengefasst, ich hab keine Erklärung für das Verhalten :-(

                                da_WoodyD Online
                                da_WoodyD Online
                                da_Woody
                                wrote on last edited by
                                #84

                                @latzi hat mir keine ruhe gelassen...
                                wie auch immer, der eintrag in iQontrol war von datenpunkt auf konstante umgestellt. das script funktioniert wieder.
                                mal linsen, ob ich das binding auch wieder hinbekomme...
                                sorry fürn alarm. <.8

                                gruß vom Woody
                                HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                1 Reply Last reply
                                0
                                • LatziL Latzi

                                  Um die aktuelle thumbnail-URL herauszufinden, habe ich ein script erstellt.
                                  Voraussetzungen:

                                  • Listenpunktoctoprint-Adapter >= 3.0.0

                                  Einschränkungen:

                                  • Filename MUSS eindeutig sein und darf NICHT in anderen Verzeichnissen vorkommen!

                                  Möglicher Test

                                  Zum Test des scripts muss nicht unbedingt gedruckt werden, es reicht aus den bestehenden DP´s unter octoprint.x.files einen Druck auszuwählen (wo ein thumbnail_url existiert) und den Inhalt des DP name in octoprint.x.printjob.file.name eintragen (z.B.: Mein_Druck.gcode), danach sollte der DP, welcher im script konfiguriert ist mit der thumbnail_url belegt sein, sofern octoprint offline ist (sonst wird der DP unmittelbar durch den Adapter aktualisiert).

                                  Konfiguration:

                                  Es gibt 3 Parameter, welche befüllt werden müssen:

                                  • path_octo: Der "Pfad" zu octoprint (falls mehrere Instanzen)

                                  • path_DP_thumbnail: Dort wird ein DP Namens thumbnail erstellt und befüllt (Der DP wird erstellt falls er nicht existiert, die Struktur dorthin muss jedoch händisch erstellt werden.

                                  • debug: Log-Meldungen ein-/ausschalten

                                  // --- Konfiguration ---
                                  const path_octo = 'octoprint.0'; // Instanz zu octoprint
                                  const path_DP_thumbnail = 'javascript.0.3D-Drucker';  // Wo soll der DP liegen - dies muss angelegt sein/werden! Der DP selbst wird automatisch angelegt!
                                  var debug= true; // Log-Meldungen einschalten mit true, ausschalten mit false 
                                  
                                  //  -- nicht ändern ---
                                  //   Version 1.0.3 2022-02-03
                                  var sel_thumb = path_octo + '.files.*.thumbnail_url';
                                  on({id: path_octo + '.printjob.file.name', change: "ne"}, async function (obj) {
                                    var octo_thumb='';
                                    var thumb_file='';
                                    // await wait(10000); 
                                    var i = 0;
                                    // var j = 0;
                                    if (debug) console.log("Printjob-Name wurde auf >>" + obj.state.val + "<< geändert!");
                                    if ((obj.state.val)!== null) {
                                        thumb_file=obj.state.val.replace(".gcode","");
                                        thumb_file=thumb_file.replace("-","_");
                                        thumb_file=thumb_file.replace("(","");
                                        thumb_file=thumb_file.replace(")","");
                                        thumb_file=thumb_file.replace(" ","_");
                                        if (thumb_file.length > 0) thumb_file=thumb_file + ".thumbnail_url"; 
                                        $(sel_thumb).each(function(id) {
                                            if (id.search(thumb_file) > 0) {
                                                i++;
                                                octo_thumb = getState(id).val;
                                                if (debug) console.log("Printjob-Name >>" + thumb_file + "<< gefunden in " + id + " !");
                                            } else {
                                                if (id.search(thumb_file.substring(1,thumb_file.length-1)) > 0) {
                                                   // j++;
                                                   // octo_thumb = getState(id).val;
                                                   // if (debug) console.log("Printjob-Name >>" + thumb_file.substring(1,thumb_file.length-1) + "<< gefunden in " + id + " !");
                                                };
                                            };    
                                        });
                                        if (debug) {
                                            // if (j>i) i=j;
                                            console.log(i + " File(s) mit Printjob-Namen " + obj.state.val + " gefunden!");
                                            if (i>1) console.log("ACHTUNG !!! Mehrere Fundstellen, Datenpunkt " + path_DP_thumbnail + ".thumbnail wurde mit letztem Fund befüllt");
                                        };    
                                    } else {
                                        if (debug) console.log("Printjob-Name ist (null)! Keinen File gefunden!!!");
                                    }; 
                                    // DP prüfen ob existent, sonst anlegen
                                    if (!existsState(path_DP_thumbnail + ".thumbnail")) {
                                        createState(path_DP_thumbnail + ".thumbnail", octo_thumb,  { name: 'thumbnail', desc: 'full path to thumbnail', type: 'string',   role: '',read: true, write: true });
                                        if (debug) console.log("Datenpunkt "+ path_DP_thumbnail + ".thumbnail wurde angelegt und mit >>"+ octo_thumb + "<< befüllt!");
                                    } else {
                                        setState(path_DP_thumbnail + ".thumbnail", octo_thumb, true);
                                        console.log("Datenpunkt " + path_DP_thumbnail + ".thumbnail wurde mit >>"+ octo_thumb + "<< befüllt!");
                                    };
                                    if (debug) console.log("Verarbeitung abgeschlossen!");
                                  }); 
                                  

                                  Viel Spaß damit!

                                  NegaleinN Offline
                                  NegaleinN Offline
                                  Negalein
                                  Global Moderator
                                  wrote on last edited by
                                  #85

                                  @latzi sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                                  Um die aktuelle thumbnail-URL herauszufinden, habe ich ein script erstellt.

                                  Servus

                                  Script hat zT Probleme, den Link von Octoprint.0 abzuholen.

                                  Link in octoprint.0.printjob.file.thumbnail_url ist mit der korrekten URL gefüllt.
                                  Aber 0_userdata.0.3DDrucker.thumbnail bleibt leer.

                                  Am Script wurde nichts geändert.
                                  Kannst du dir da vorstellen, was es da haben könnte?

                                  ° Node.js: 20.17.0 NPM: 10.8.2
                                  ° Proxmox, Ubuntu 22.04.3 LTS
                                  ° Fixer ---> iob fix

                                  LatziL 1 Reply Last reply
                                  0
                                  • NegaleinN Negalein

                                    @latzi sagte in Octoprint-script für thumbnail des aktuellen Drucks:

                                    Um die aktuelle thumbnail-URL herauszufinden, habe ich ein script erstellt.

                                    Servus

                                    Script hat zT Probleme, den Link von Octoprint.0 abzuholen.

                                    Link in octoprint.0.printjob.file.thumbnail_url ist mit der korrekten URL gefüllt.
                                    Aber 0_userdata.0.3DDrucker.thumbnail bleibt leer.

                                    Am Script wurde nichts geändert.
                                    Kannst du dir da vorstellen, was es da haben könnte?

                                    LatziL Online
                                    LatziL Online
                                    Latzi
                                    wrote on last edited by
                                    #86

                                    @negalein
                                    leider hat das Skript Schwächen mit Sonderzeichen und dergleichen, hast du mal das Binding versucht, das ist eine sehr elegante und funktionierende Lösung! (siehe https://forum.iobroker.net/topic/51635/octoprint-script-für-thumbnail-des-aktuellen-drucks/76?_=1652845216623)

                                    da_WoodyD 1 Reply Last reply
                                    0
                                    • LatziL Latzi

                                      @negalein
                                      leider hat das Skript Schwächen mit Sonderzeichen und dergleichen, hast du mal das Binding versucht, das ist eine sehr elegante und funktionierende Lösung! (siehe https://forum.iobroker.net/topic/51635/octoprint-script-für-thumbnail-des-aktuellen-drucks/76?_=1652845216623)

                                      da_WoodyD Online
                                      da_WoodyD Online
                                      da_Woody
                                      wrote on last edited by
                                      #87

                                      @latzi hab gestern noch mit @Negalein tefloniert. das seltsame, bei mir ists genau anders rum. in octoprint bleibt bei mir meist der DP auf (null), das binding funktioniert auch mehr schlecht als recht. mit dem script hab ich keine probleme. allerdings schreibt das bei mir in den javascript ordner, nicht in userdata. da ich aber nur iQontrol verwende und keine vis, kann ich da nicht gegenchecken.

                                      gruß vom Woody
                                      HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                      frana120500F 1 Reply Last reply
                                      0
                                      • da_WoodyD da_Woody

                                        @latzi hab gestern noch mit @Negalein tefloniert. das seltsame, bei mir ists genau anders rum. in octoprint bleibt bei mir meist der DP auf (null), das binding funktioniert auch mehr schlecht als recht. mit dem script hab ich keine probleme. allerdings schreibt das bei mir in den javascript ordner, nicht in userdata. da ich aber nur iQontrol verwende und keine vis, kann ich da nicht gegenchecken.

                                        frana120500F Offline
                                        frana120500F Offline
                                        frana120500
                                        wrote on last edited by
                                        #88

                                        @da_woody ich bekomme gar keine Thumbnail url angezeigt. der. datenpunkt bleibt bei mir auf null stehen.

                                        da_WoodyD 1 Reply Last reply
                                        0
                                        • frana120500F frana120500

                                          @da_woody ich bekomme gar keine Thumbnail url angezeigt. der. datenpunkt bleibt bei mir auf null stehen.

                                          da_WoodyD Online
                                          da_WoodyD Online
                                          da_Woody
                                          wrote on last edited by
                                          #89

                                          @frana120500 darum verwende ich nach wie vor das script mit seinen schwächen...

                                          gruß vom Woody
                                          HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          800

                                          Online

                                          32.4k

                                          Users

                                          81.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe