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

@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?
 
So ich habe die Fehlerausgabe angestellt,ich hoffe das war richtig in der index.php
PHP:
// set error handling to only report errors (no warnings, infos...)
error_reporting( E_ERROR );
War das richtig?Und wo finde ich dann die Fehler??
Zend version ist bei mir 2.3.0

Knusterus
 
Hi,

ich meine:

Code:
error_reporting(E_ALL);

und dann die index.php aufrufen und die Ausgabe hier posten
 
Kostenlos!

Statistik des Forums

Themen
248,890
Beiträge
2,304,172
Mitglieder
378,575
Neuestes Mitglied
King Manaka