Habe jetzt auch noch ein wenig an den Scripten rumgestrickt. Für diejenigen unter euch, die lieber das Video direkt auf die Vis-Seite mit einem iFrame einbinden möchten habe ich hier das veränderte Script und die Vorgehensweise:
- Objekt für den Link erzeugen
//Erstellen des Objekts. Nur einmalig ausführen!!!
createState('javascript.0.Status.Tagesschau.Link_Tagesschau', '', {type: 'string',name: 'Link zu Tagesschau in 100s',desc: 'geparster Link aus tagesschau.de'});
- Script erstellen
/* VIS Tagesschau_Link
parsed die Seite https://www.tagesschau.de/100sekunden/ und sucht nach der URL zum aktuellsten Video
{1}
erstellt: 02.03.2016 von pix
15.03.2016 zu Javascript Instanz 1 gewechselt (es ist immer noch oder wieder Instanz 0)
19.12.2019 Änderung für Einbettung mit iFrame von Udo_E
*/
var logging = true;
var idURL = 'javascript.0.Status.Tagesschau.Link_Tagesschau';
var link = 'http://www.tagesschau.de/100sekunden/';
var film_url;
function findeURL () {
var optin = true;
var request = require('request');
if (optin) try {
request(link, function (error, response, body) {
if (!error && response.statusCode == 200) {
// kein Fehler, Inhalt in body
//log(body);
// HTML Code der Webseite: Inhalt zwischen text1 und text2 suchen und zwischenspeichern
var text1 = 'Sie werden Bestandteil der Nutzungsbefugnis, wenn der Nutzer den geänderten AGB zustimmt.',
text2 = 'Zum einbetten einfach den HTML-Code kopieren und auf ihrer Seite einfügen.';
var start = body.search(text1) + text1.length;
var ende = body.search(text2);
if (logging) log('Startposition: ' + start);
if (logging) log('Endposition: ' + ende);
var zwischenspeicher = ((start != -1) && (ende != -1) ) ? body.slice(start,ende) : 'Fehler beim Ausschneiden';
if (logging) log(zwischenspeicher);
// Zwischenspeicher: Inhalt ab Beginn von text3 bis Ende von text4 suchen und erneut zwischenspeichern
var text3 = 'https',
text4 = '.html';
var start2 = zwischenspeicher.search(text3);
var ende2 = zwischenspeicher.search(text4) + text4.length;
if (logging) log('Startposition: ' + start2);
if (logging) log('Endposition: ' + ende2);
var zwischenspeicher2 = ((start2 != -1) && (ende2 != -1) ) ? zwischenspeicher.slice(start2,ende2) : 'Fehler beim Ausschneiden';
if (logging) log(zwischenspeicher2);
film_url = zwischenspeicher2 ;
//Wert in Objekt schreiben
setState(idURL, film_url);
} else { // Error beim Einlesen
log(error, 'error');
}
}); // Ende request
} catch (fehler) {
log('Fehler (try): ' + fehler, 'error');
}
} // Ende findeURL
schedule("8 */1 * * *", findeURL); // jedeStunde um 8 nach voll
findeURL();
-
Binding von Quelle des iFrame mit Objekt
-
Von der Fehlermeldung im Edit vis nicht irritieren lassen!
Es funktioniert trotzdem.