Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst]Anfänger braucht hilfe: download und speichern Albumcover

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]Anfänger braucht hilfe: download und speichern Albumcover

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mrMuppet last edited by

      Hallo,

      ich würde gerne in meiner Mediola-remote die Coveranzeige der Squeezebox nutzen. Der Squeezeboxadapter stellt ein Cover-URL zur Verfügung, aber für Mediola muss dies eine feste URL sein, damit dort immer das Cover gefunden wird. Ich würde gerne diesen temporären Coverdownload realisieren.

      Die URL wird also als State vom squeezboxplugin geliefert und muss noch um die IP(+port) des Servers ergänzt werden. Dann müsste dieses Bild unter einem festen Namen gespeichert werden, bis der State sich ändert und dann eines neues Bild gebraucht wird.

      Dann kann ich in Mediola dieses Bild in meiner Fernbedienung Anzeige lassen…

      @UncleSam:

      Ansonsten musst du über vis gehen und das dann irgendwie einbinden (eher aufwändig). Oder du fragst über simple-api den Wert ab. `
      Leider bin ich programmiertechnisch noch lange nicht fit genug um das selbst zu machen.

      Wer kann mir dabei noch helfen?

      1 Reply Last reply Reply Quote 0
      • M
        mrMuppet last edited by

        Hier ist mein erster Versuch… funktioniert aber leider noch nicht...

        var TAG1 = "squeezebox.0.Squeezebox_Radio.currentArtwork";
        
        var Download = require('download');
        
        on (TAG1,function(obj){
              if (obj.state.val)
        
              var song_url = getState(TAG1)
              var dest = './';
              new Download({mode: '755'}).get(song_url).dest(dest).run();
        });
        
        1 Reply Last reply Reply Quote 0
        • blauholsten
          blauholsten Developer last edited by

          Hi,

          ich bin leider auch ein grüner :lol: 😢 😢

          Aber was du mal probieren kannst: (Vorausgesetzt das mit dem require('download') geht so)

          if (obj.state.val) –> probier es mal ohne dieser Bedingung, die wird ggf nicht true ergeben.

          var song_url = getState(TAG1) hier fehlt denke ich .val

          EDIT:

          das steht in der DOKU:

          require - load some module

          var mod = require('module_name');

          Following modules are pre-loaded: fs, crypto, wake_on_lan, request, suncalc, util, path, os, net, events, dns.

          To use other modules go to iobroker/adapter/javascript folder and run in console npm install . After npm successfully finished it can be used in script engine.

          1 Reply Last reply Reply Quote 0
          • M
            mrMuppet last edited by

            Danke, dass val fehlte tatsächlich noch…

            1 Reply Last reply Reply Quote 0
            • M
              mrMuppet last edited by

              Habs tatsächlich fast hinbekommen!

              var TAG1 = "squeezebox.0.Squeezebox_Radio.currentArtwork";
              var Server = "http://192.168.178.156:9000/";
              var Download = require('download');
              var song_url = getState(TAG1) .val;
              //var rename = require("gulp-rename");
              
              //on (TAG1,function(obj){
              //      if (obj.state.val)
                          if (getState(TAG1) .val.match('google')){
                              song_url = Server+song_url; 
                          }                          
                    var dest = './';
                    new Download({mode: '755'}).get(song_url).dest(dest).run();
              log (song_url,'warn')
              //});
              

              Aber gibt es irgendwo im iobroker.web oder irgendwo anders im broker ein verzeichnis in das ich einfach so den Cover-file reinkopieren (und dann im Browser aufrufen) kann?

              1 Reply Last reply Reply Quote 0
              • M
                mrMuppet last edited by

                Habs geschafft. Auf dem Lms hab ich Verzeichnis für meine Zwecke gefunden.

                Bis auf einen Bug im Squeezebox-adapter läuft es Spitze!

                Gesendet von meinem A0001 mit Tapatalk

                1 Reply Last reply Reply Quote 0
                • P
                  pix last edited by

                  Hall mrMuppet,

                  vielen Dank für das Skript. Ich habe es etwas abgewandelt und für ein lange unvollendetes Projekt genutzt:

                  Bei Alarm Bild einer Webcam mit ioBroker-Mitteln speichern

                  ! var bild_url = "http://IP-DER-WEBCAM/image1.jpg"; // ggf. Passwort und User mitgeben und Dateinamen anpassen var Download = require('download'); // Modul Download muss in Javascript-Einstellungen vorhanden sein var dest = '/Users/pix/Documents/iobroker/iobroker-data/'; // Pfad meines iobroker-data Ordners unter OS X; hier wird das Bild gespeichert ! on (idTrigger,function(obj){ if (obj.state.val) { new Download({mode: '755'}).get(bild_url).dest(dest).run(); } }); !
                  Jetzt muss ich nur noch den Weg finden, die Bilddatei wieder zu laden und zB per telegram, FTP oder eMail zu verschicken.

                  Gruß,

                  Pix

                  1 Reply Last reply Reply Quote 0
                  • M
                    mrMuppet last edited by

                    Hier ist mein finaler Code zum Download der Squeezebox-Cover:

                    var TAG1 = "squeezebox.0.Squeezebox_Radio.currentArtwork";
                    var Server = "http://192.168.178.100:9000/";
                    var Download = require('download');
                    var song_url = getState(TAG1) .val;
                    var dest = '/mnt/LMS_images/';
                    
                    on (TAG1,function(obj){
                          if (obj.state.val){
                                song_url = getState(TAG1) .val;
                                if (getState(TAG1) .val.match('google')){
                                    song_url = Server+song_url;
                                }                          
                           new Download({mode: '777'}).get(song_url).dest(dest).rename("cover.jpg").run();
                    }});
                    
                    1 Reply Last reply Reply Quote 0
                    • P
                      pix last edited by

                      Hallo,

                      seit dem letzten großen Javascript Update gibt es mit der Download Lib Probleme. Deshalb lieber so weitermachen:

                      http://forum.iobroker.net/viewtopic.php … 1d1#p26342

                      Gruß

                      Pix

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      660
                      Online

                      31.9k
                      Users

                      80.2k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      2338
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo