IPS_GetMediaID ...

Hallo zusammen,

ich versuche gerade die ID einer MediaDatei herauszubekommen, um sie dann in eine Kategorie zu verlinken. Der Inhalt der Kategorie ist die Basis eines Inhaltswechslers im WF.

Die Datei (eine .png) wird im selben Script einige Zeilen weiter oben nach .\media\WetterKachelmannPics\ gespeichert.

Habe auch schon ein sleep(10) danach eingefügt, ohne Erfolg.

  1. Versuch: $MediaID = IPS_GetMediaID($contents1); -> Ergebnis: Call to undefined function IPS_GetMediaID()

  2. Versuch: $MediaID = IPS_GetMediaIDByFile($zielPfad.$contents1); -> Ergebnis: Warning: Datei D:\IPS\media\WetterKachelmannPics\2015-09-20-18-58_097360.png wurde nicht gefunden.
    Wenn ich aber den Pfad in der Meldung in den Explorer eingebe, wird das Bild geöffnet.

  3. Versuch: $MediaID = IPS_GetMediaIDByName($zielPfad.$contents1, False); -> Warning: Objekt D:\IPS\media\WetterKachelmannPics\2015-09-20-19-03_097360.png wurde nicht gefunden
    Wenn ich aber den Pfad in der Meldung in den Explorer eingebe, wird das Bild geöffnet.

Kann mir bitte jemand auf die Sprünge helfen?

Ziel ist es erst mal alle durch dieses Script gespeicherten Bilder im WF in einem Inhaltswechsler anzeigen zu können.

Später möchte ich dann auch noch die „alten“ Bilder (ab einem bestimmten Datum) und die zugehörigen links wieder löschen.

<?

// http://wetterstationen.meteomedia.de/messnetz/vorhersagegrafik/097360.png

$bildadresse = "http://wetterstationen.meteomedia.de/messnetz/vorhersagegrafik/097360.png";

$zielPfad = IPS_GetKernelDir()."media\WetterKachelmannPics"."\\";
//echo $zielPfad."
";

$contents = file_get_contents($bildadresse);
$contents1 = str_replace("http://wetterstationen.meteomedia.de/messnetz/vorhersagegrafik/","",$bildadresse);

$contents1 = date("Y-m-d-H-i", time())."_".$contents1;
//echo$contents1."
";
$savefile = fopen($zielPfad.$contents1, "w");
fwrite($savefile, $contents);
fclose($savefile);

sleep(10);

//$MediaID = IPS_GetMediaID($contents1);
//$MediaID = IPS_GetMediaIDByFile($zielPfad.$contents1);
$MediaID = IPS_GetMediaIDByName($zielPfad.$contents1, False);
if ($MediaID == 0)
    {
    echo "Medienobjekt nicht gefunden!";

    }
else
    {
    echo "Die Medienobjekt-ID lautet: ". $MediaID;
    // nach ./wetter/WetterKachelmann/Pics verlinken
    $LinkID = IPS_CreateLink();             // Link anlegen
    IPS_SetName($LinkID, $contents1); // Link benennen
    IPS_SetParent($LinkID, 29364  /*[Logisch\Wetter\WetterKachelmann\Pics]*/); // Link einsortieren unter dem Objekt mit der ID "12345"
    IPS_SetLinkTargetID($LinkID, $MediaID);    // Link verknüpfen

    }

?>

Das korrekte vorgehen wäre das Objekt mit IPS_CreateMedia zu erzeugen.
Dann hast du auch die ID.
Und dann befüllst du es mit Daten.

Btw. IPS_GetMediaByName erwartet nicht den Dateinamen, sondern den ObjektNamen.
Und mit IPS_GetObjectByIdent sollte es auch möglich sein Mediaobjekte zu finden, auch wenn der Name zufällig gleich ist. Musst halt den Ident beim erzeugen setzen.

Für dein geplantes weiteres vorgehen, würde ich folgendes empfehlen:
Erzeuge x MediaObjekte und Links.
Später setzt du mit IPS_SetMediaContent nur den Inhalt des MediaObjects neu. Die Links und Co bleiben unverändert.

Michael