InfoFrame: Digitaler Bilderrahmen (Anzeige von Anrufen, E-Mails, Termine, Wetter...)

also der hier geht auch

TV Spielfilm
feed_url_1 = "http://www.tvspielfilm.de/tv-programm/rss/heute2015.xml"
max_displayed_items_3 = 3
 
Code:
; ARD-News
feed_url_1 = "http://www.tagesschau.de/xml/rss2/"
max_displayed_items_1 = 4

; TV-Movie
feed_url_2 = "http://www.tvmovie.de/rss/tvjetzt.xml"
max_displayed_items_2 = 4

Bei max_displayed _items _* must du angeben obs der 1. 2. usw feed ist
 
@MrXYZ
Das hab ich doch,außerdem hab ich ja im Moment nur das Eine.

Komisch.Liegt es vielleicht an der php? Ich hänge sie mal mit an
PHP:
<?php
/***************************************************************************
 * InfoFrame (image generator for digital picture frames)
 * Copyright (C) 2009  Tobias Kolb
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see http://www.gnu.org/licenses/
 ***************************************************************************/

define('MAGPIE_DIR', 'library/magpierss/');
define('MAGPIE_CACHE_DIR', 'cache');
require_once('library/magpierss/rss_parse.inc');

class FeedPlugin implements IPlugin
{
    private $dbconn = NULL;
	private $config = NULL;
	
	public function __construct($dbconn, $config) {
		$this->dbconn = $dbconn;
		$this->config = $config;		
	}
	
	// update all feeds
	public function doUpdate() {
		// iterate all feeds
		$feednumber = 0;
		while ($this->config['feed_url_'.++$feednumber])
		{
			$this->updateFeed($feednumber);
		}
	}
	
	// update only the feed with the given feed number
	private function updateFeed($feednumber) {
		// download feeds XML into local files for caching
		$feed_url = $this->config['feed_url_'.$feednumber];
		if ($feed_url) {
			$curl = curl_init();
			$file = fopen("cache/feed_".$feednumber.".xml", "w");
			if ($file)
			{
				curl_setopt($curl, CURLOPT_URL, utf8_encode($feed_url));
				curl_setopt($curl, CURLOPT_FILE, $file);
				curl_exec($curl);
				curl_close($curl);
				fclose($file);
			}			
		}
	}
	

	public function doOutput($image, $style, $updateData, &$yoffset) {
			
		// define styles
		$opt_header = array(
			'width' => imagesx($image)-290,
			'line_height' => 18,
			'align' => ALIGN_LEFT
		);
		
		$opt_entry = array(
			'width' => imagesx($image)-290,
			'height' => 12,
			'line_height' => 12,
			'align' => ALIGN_LEFT,
			'word_wrap_hyphen' => '...',
			'aggressive_word_wrap' => true,
		);
		
		$feednumber = 0;
		while ($this->config['feed_url_'.++$feednumber]) {
			$filename = 'cache/feed_' . $feednumber . '.xml';
			// check for update
			if ($updateData || !file_exists($filename))
				$this->updateFeed($feednumber);
			
			// read feed
			if(file_exists($filename) && (filesize($filename) > 0)) {

				$rss_string = file_get_contents($filename);
				$rss = new MagpieRSS( $rss_string, 'UTF-8' );

				if ( $rss and !$rss->ERROR) {
					// filter entries
					$itemcount = count($rss->items); // preserve item count, because it will been changed in for-loop
					for($i=0; $i<$itemcount; $i++) {
						// filter by entry age
						if ($this->config['max_age_in_minutes_'.$feednumber]) {
							$published = $rss->items[$i]['date_timestamp'];
							$timelimit = time()-($this->config['max_age_in_minutes_'.$feednumber]*60);
							if ($published < $timelimit) {
								unset($rss->items[$i]); // drop entry
								continue;
							}
						}

						// filter title
						if ($this->config['title_regex_'.$feednumber]) {
							$title = ( $rss->items[$i]['title'] );
							$regex = ( $this->config['title_regex_'.$feednumber] );
							// match
							if (preg_match($regex, $title, $matches)) {
								// if subpatterns have been matched only return the concatenated submatches
								if (count($matches) > 1) {
									$new_title = "";
									for ($submatch=1; $submatch < count($matches); $submatch++)
										$new_title = $new_title . $matches[$submatch];
									if ($new_title)
										$rss->items[$i]['title'] = $new_title;
								}
								

							} else {
								unset($rss->items[$i]); // drop entry
								continue;
							}
						}
					}
					if (count($rss->items) > 0)
					{
						// print header
						$text = $rss->channel['title'];
						imagettftextboxopt($image, 18, 0, 50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_header);
						$icon = ImageCreateFromPNG ( 'resources/icons/rss.png' );
						ImageCopy($image, $icon, 20, $yoffset-2, 0, 0, imagesx($icon), imagesy($icon));
						ImageDestroy($icon);
						$yoffset += 26;
						
						// print entries
						$counter = 0;
						foreach ($rss->items as $item ) {
							// if max count of displayed entries is reached OR end of screen is reached and more than one items left
							//  -> cut off and show hint "x more items..."
							$counter++;
							$rest = (count($rss->items) - $counter) + 1;
							$entrylimit = $this->config['max_displayed_items_'.$feednumber];
							if ( (($entrylimit) && ($counter > $entrylimit)) || (($yoffset >= (imagesy($image) - 36)) && ($rest > 1)) ) {
								$text = "... $rest weitere Elemente";
								imagettftextboxopt($image, 14, 0, 24, $yoffset, $style['textcolor'], $style['fontb'], $text, $opt_entry);
								$yoffset += 20;
								break;
							}

							// print entry text
							$text = $item['title'];
							$text = str_replace("\n", "", $text);
							// dirty trick for replacing inch-symbol \xE2\x80\xB3 by nomal " (because not supported by imagettftext)
							$text = str_replace("\xE2\x80\xB3", "\"", $text);
							$yoffset += imagettftextboxopt($image, 12, 0, 50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_entry);
							$yoffset += 4;
						}
						$yoffset += 8;
					
					}

				}

			} // file exist

		
		}
		// add some space after all feeds has been displayed
		$yoffset += 18;

	}
	
}

Vielleicht liegt hier der Fehler.
Knusterus
 
ich habs getestet bevor ich es gepostet habe. in der config habe ich folgenden eintrag, der funktioniert:
Code:
;TV-Movie
feed_url_2 = "http://www.tvmovie.de/rss/tv2015.xml"
max_displayed_items_2 = 6
 
Geht leider auch nicht.Schade und nu???:gruebel:
Knusterus

So ich habe es hinbekommen Code in der Config.ini
Code:
;TV-Movie
feed_url_1 = "http://www.tvmovie.de/rss/tv2015.xml"
max_displayed_items_1 = 6
Ich habe jetzt URL 1 und bei max-displayed_items _1= 6 auch eine 1 gesetzt, da geht es warum auch immer.

Vielen Dank für eure Hilfe
Knusterus
 
Zuletzt bearbeitet:
Soderle
Dann haben wir noch das Problem mit dem Kalender.
Ich habe mir gerade die Php und die icones von bgx runtergeladen (für den Müllkalender.)
Aber auch das funtzt net,wenn ich das CalenderPlugin aktiviere kommt nur ein weisser Bildschirm.
Was kann ich da tun??
Ich habe im Googlekalender auch schon alle Kalender deaktiviert bis auf Einen,aber es geht trotzdem nicht.

Könnt ihr mir bitte helfen??
Knusterus
 
sagt mal wann bei euch Sonnenauf- bzw. untergang ist

bei mir geht um 19.32 heute unter, irgendwie kommt das aber nicht hin.
denn laut google geht die sonne hier um 20.36 unter.
 
(Berlin)
Aufgang: 4:59 Uhr
Untergang: 19:10

Hatte auch schon den Verdacht, dass da was nicht hinhaut.
 
Also bei mir (Kassel)
Aufgang 6:20
Untergang:: 20:13

ich denke das ist ok
 
Zuletzt bearbeitet:
bei mir gehts so
PHP:
    $zenith=90+50/60; 
    $sunrise =  date_sunrise(time(), SUNFUNCS_RET_STRING, $latitude,$longitude, $zenith,2);
    $sunset = date_sunset(time(), SUNFUNCS_RET_STRING, $latitude,$longitude, $zenith,2);
 
@bkm Dann musst Du die File ja 2x im Jahr manuell anfassen. Der Offset hängt von der Winter- (1) / Sommerzeit (2) ab (Daylight Saving-Time).

Hab das Problem folgend gelöst:
Code:
                $offset = date_offset_get(new DateTime);
                $offset = $offset / 3600;
                $zenith=90+50/60;

                $sunrise = date_sunrise(time(), SUNFUNCS_RET_STRING, $longitude, $latitude, $zenith, $offset);
                $sunset = date_sunset(time(), SUNFUNCS_RET_STRING, $longitude, $latitude, $zenith, $offset);
 
War nur aus dem Kopf geschrieben, bei mir läuft vieles über die Config Datei.
 
He ich habe auch gerade ein Problem festgestellt.
Im BenzinPlugin wird mir nur eine Tanke angezeigt,obwohl ich 5 ausgewählt habe.
In den Orten die ich gewählt habe sind bei clever tanken auch Tankstellen hinterlegt auch mit Preisen.
warum bekomme ich die nicht angezeigt??

@ MaverrickTM mal geht es 1 Std mal 10 min,ich teste mal weiter ein paar Einstellungen.Trotzdem Danke für deine Hilfe!!!:bier:

Knusterus
 
@Knusterus

Ich werde, bei Gelegenheit, mal in den Apache-Docs nach dem HTTP 103 schauen.
 
@MaverrickTm
nur keinen stress nächstes Wochenende und die Woche darauf bin ich eh nicht da.
Und bevor der Kalender nicht läuft zieh ich eh nicht um auf den Laptop.

Knusterus
 
Hi Thomas

Ne der Kalender lief noch nie,sobald ich ihn in der ini aktiviere ,habe ich nur noch ein leeres weißes Bild.

Knusterus
 
ich denke er hat das gleiche problem wie ich mit dem original plugin

bei mir isses ja auch weiß sobald ich nur das erste semikolon von

;[CalendarPlugin]

entferne

edit
mahlzeit zusammen
 
Genau so isses bei mir auch

Knusterus
 
Könnt ihr mal auf die Fehlerausgabe stellen und schauen was genau als Fehler kommt? Welches Zend benutzt ihr?
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
245,752
Beiträge
2,239,120
Mitglieder
372,936
Neuestes Mitglied
Lola2024
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.