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

...das mit den tokens ist easy.... Liest sich auf der twitterdev-page komplizierter als es in wirklichkeit ist...
Ich habs gestern mal noch kurz angetestet und es funktioniert tatsächlich, soll heißen: Dein twitter.php bringt tatsächlich die Tweets vom Bundesliga Ticker von kicker. Jetzt muss ich's nur noch weiterverarbeiten. Du hast ja beim MoonPlugin mittlerweile eine Datenbank, wo Du die Tweets zwischenspeicherst, geht das eigentlich auch noch irgendwie über den "alten" Weg xml-Datei?

...Was passt denn bei dem kicker rss nicht?...
1. Beim "original" kicker-rss-Ticker kommen die Einträge immer wieder, da in der description immer neue Informationen stehen, der title allerdings immer der gleiche bleibt, d.h. max_age wird hier immer wieder ausgehebelt. Ich möchte aber wirklich nur die aktuelle Spiele haben. Auch eine Vorschau à la "Nürnberg - Hertha BSC (So. 18.08. 15:30 Uhr)" möchte ich nicht unbedingt.
2. Als Heimverein wird meistens nur der Städtenamen angegeben oder irgend eine Abkürzung des Vereinsnamens (z.B. "HSV"), dadurch erscheint beim Heimverein kein Logo, was dann auch blöd ausschaut.

Wie oben schon erwähnt klappt es ja mit Deinem twitter-Script schon an die Tweets ranzukommen, nur an der Weiterverarbeitung muss ich noch arbeiten.
Vielen Dank schon mal für die Vorlage und liebe Grüße
Hoobert
 
... Du hast ja beim MoonPlugin mittlerweile eine Datenbank, wo Du die Tweets zwischenspeicherst, geht das eigentlich auch noch irgendwie über den "alten" Weg xml-Datei?
...
Grundsätzlich kommt man an Tweets nur noch über die neue Twitter-API 1.1 ran.
Die Datenbank hat sich angeboten, weil ja eh schon ein Eintrag mit der Mondphase ,der angezeigten Tweetnummer und dem letzten Datum des Tweets vorhanden ist.
Prizipiell kannst du die Daten, die du mit der neuen Tweet-API bekommst speichern wie du möchtest. Stichwort: "fwrite". Aber ich denke das ist umständlicher als der Weg über die Datenbank.
 
Hallo Spoon3er,

diese Antwort hatte ich befürchtet. Ich hatte noch ein bisschen Hoffnung, dass es ein script gibt, dass die Twitter-API 1.1 in ein xml-Format bringt, welches ich dann mit dem bereits vorhanden TickerPlugin ausleesen und weiterverarbeiten kann. Ich hab da auch mal kurz gegoogelt (json to xml) aber da müsste ich mich auch erst genauer einarbeiten, wahrscheinlich ist dann die Datenbank doch der geringere Aufwand. Muss ich mich mal dran machen, wenn ich etwas Zeit habe.

Viele Grüße
Hoobert
 
Achja: kannst du dieses TickerPlugin hier nochmal hochladen?

Leider gibt es ja die Wiki-Seite schon länger nicht mehr und damit ist auch das Plugin "verloren"
 
Ja stimmt. Ich dachte es wäre hier noch irgendwo im Thread versteckt, aber dem ist nicht so.
Also hier das TickerPlugin, die bisher gesammelten Icons (noch nicht aktuell für Saison 2013/14!) und der Rahmenterminkalender. Der Icons-Ordner "ticker" muss ins Verzeichnis "/infoframe/icons/", der Rahmenterminkalender (rtk.xml) in den Ordner "/infoframe/cache/".

Die Einträge in der config.ini:
Code:
[TickerPlugin]
;Bundesliga Ticker
ticker_url_1 = "http://rss.kicker.de/live/bundesliga"
ticker_title_1 = "Bundesliga"
ticker_max_age_in_minutes_1 = 180
;title_regex_1 = "/(Borussia Dortmund|Werder Bremen|Borussia M'gladbach|1899 Hoffenheim|SC Freiburg|1. FSV Mainz 05|FC Augsburg|Fortuna Düsseldorf|Hamburger SV|1. FC Nürnberg|SpVgg Greuther Fürth|Bayern München|Eintracht Frankfurt|Bayer Leverkusen|VfB Stuttgart|VfL Wolfsburg|Hannover 96|FC Schalke 04)/"

;2. Bundesliga Ticker
ticker_url_2 = "http://rss.kicker.de/live/2bundesliga"
ticker_title_2 = "2. Bundesliga"
ticker_max_age_in_minutes_2 = 180
;title_regex_2 = "/(1860 München|Hertha BSC|Energie Cottbus|FC Ingolstadt 04|SC Paderborn 07|Erzgebirge Aue|VfL Bochum|Dynamo Dresden|FC St. Pauli|VfR Aalen|1. FC Union Berlin|Eintracht Braunschweig|MSV Duisburg|FSV Frankfurt|1. FC Kaiserslautern|1. FC Köln|SV Sandhausen|Jahn Regensburg)/"

;Champions League Ticker
ticker_url_3 = "http://rss.kicker.de/live/championsleague"
ticker_title_3 = "Champions League"
ticker_max_age_in_minutes_3 = 600

;Euro League Ticker
ticker_url_4 = "http://rss.kicker.de/live/uefacup"
ticker_title_4 = "Euro League"
ticker_max_age_in_minutes_4 = 600
;title_regex_4 = "/(Borussia M'gladbach|Hannover 96|Bayer Leverkusen|VfB Stuttgart)/"

;DFB Pokal
ticker_url_5 = "http://rss.kicker.de/live/dfbpokal"
ticker_title_5 = "DFB Pokal"
ticker_max_age_in_minutes_5 = 180

;WM Qualifikation
ticker_url_6 = "http://rss.kicker.de/live/wmequali"
ticker_title_6 = "WM Qualifikation"
ticker_max_age_in_minutes_6 = 600
;title_regex_6 = "/(Deutschland|England|Frankreich|Italien|Spanien|Schweiz|Österreich|Kasachstan|Irland|Bosnien-Herzegowina|Schweden|Niederlande|Türkei|Portugal)/"
 

Anhänge

  • TickerPlugin.zip
    462.8 KB · Aufrufe: 13
So habe mir mal das TickerPlugin genauer angeschaut und eine test-version (um aus der shell aufgerufen zu werden gebastelt).
Diese beinhaltet die Datenbank einträge und das auslesen aus der Datenbank (jeweils nur einen treffer für jedes Spiel).

Die Datenbank besteht aus 4 Spalten: ID, regex, datum und text. Für die Ausgabe auf dem Bilderrahmen sollte die regex-spalte für die verschiedenen Ligen mit einer if-then abfrage locker zu filtern sein.

Der Abgleich mit dem Rahmenterminkalender fehlt, aber das ist nur copy&paste...

Hier der code zur /var/www/infoframe/ticker.php :
PHP:
<?php
	/* 
	/ ACHTUNG UTF-8 !!!!!!!!!!!!!!!!!!!!!!!!!!!
	*/
	//******************************vorbereitungen*******
	
	//!include_path anpassen!!!!	
		set_include_path(get_include_path().PATH_SEPARATOR.'/usr/share/php/ZendFramework-1.12.3/library/');
		$loc = setlocale(LC_ALL, 'de_DE.UTF8', 'de_DE', 'de', 'ge');
		
//twiter api login	
    require_once 'Zend/Loader/Autoloader.php';
    Zend_Loader_Autoloader::getInstance();
    $config = parse_ini_file("config.ini", true);
    $sysconfig = $config['System'];
    $setToken = $sysconfig['service.twitter.oauth.oauth_token'];
    $setTokenSecret = $sysconfig['service.twitter.oauth.oauth_token_secret'];
    $consumerKey = $sysconfig['service.twitter.consumerKey'];
    $consumerSecret = $sysconfig['service.twitter.consumerKey_secret'];

		$accessToken = new Zend_Oauth_Token_Access();
		$accessToken->setToken($setToken);
		$accessToken->setTokenSecret($setTokenSecret);

		//!USERNAME anpassen		
		$twitter = new Zend_Service_Twitter(
		    array(
		        'username' => 'USERNAME',
		        'accessToken' => $accessToken,
		        'oauthOptions' => array(
		            'consumerKey' => $consumerKey,
		            'consumerSecret' => $consumerSecret
		       			 )
		    			)
				);
				
//tweet auswaehlen		
			$options = array(
								'screen_name' => 'kicker_live',
								'count' => '1000',
								'trim_user' => '1',
								'include_entities' => 'TRUE'
								);
						
//DB connection und table anlegen, kann spaeter in die /library/dbconn.php ausgegliedert werden						
    mysql_connect($sysconfig['db_host'], $sysconfig['db_user'], $sysconfig['db_password']) or die ("Verbindung nicht möglich");
    mysql_select_db( $sysconfig['db_name']) or die ("Die Datenbank existiert nicht.");	
   $sql = "CREATE TABLE IF NOT EXISTS `if_ticker` (
  			`ID` int(11) NOT NULL AUTO_INCREMENT,
  			`regex` varchar(100) CHARACTER SET utf8 NOT NULL,
  			`datum` date NOT NULL,
  			`text` varchar(100) CHARACTER SET utf8 NOT NULL,
  			PRIMARY KEY (`ID`)
				) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs AUTO_INCREMENT=1212";
   mysql_query($sql);
   
//****************** vorbereitungen ende**************  

//**********************doUpdate
//datenbank leeren    
    $query = "DELETE FROM `if_ticker`";
		mysql_query($query) or die('TwitterPlugin: Error, delete query failed');
		
//connect zu twitter	
	$screen_name = 'kicker_live';
	$results = $twitter->statusesUserTimeline($options);
	//var_dump($results->toValue());
	
//daten aus der twitter api wie im TickerPlugin zerlegen (der sinn daraus erschliesst sich mir nicht, aber was solls)
		foreach ($results->toValue() as $result) {
			$suchstr = "";
			$text = $result->text;
			$istheuteeinSpiel = false;
			$datum = date('d.m.Y', strtotime($result->created_at));
			if ($datum == date('d.m.Y', time())){            
				$suchstr = $suchstr.(substr($text, 0, stripos($text, " - ")));
				$suchstr = str_replace("/", ".", $suchstr); 
			  $regex = $suchstr;
			//  echo $regex."\n";
			  $text = str_replace("\xE2\x80\xB3", "\"", $text);
				$text1 = substr($text, 0, strpos($text, " - "));
			  $text2 = substr($text, strpos($text, " - "), strlen($text)-strpos($text, " - "));
			  $text2 = str_replace(" - ", "", $text2);
			  preg_match('/^(.*?)#/', $text, $match);
			  
		//in die datenbank eintragen
			  $query = "INSERT INTO `if_ticker` (regex, datum, text) VALUES ('$regex', '".strftime('%Y-%m-%d %R', strtotime($result->created_at))."', '".mysql_real_escape_string($match[1])."')";
				$update = mysql_query($query)or die('TwitterPlugin: Error, update query failed');
			//	echo $datum."\tsuchstring: ".$suchstr."\ttext: ".$text."\n";				
			//	echo $text1."\t".$match[1]."\n";						
			}
	}
//********************ende doUpdate*******************	
	
//*********************doOutput*************************
	
	// aus der Datenbank eintraege auslesen und nach der regex(also jedes spiel nur einmal(der letzte eintrag) sortieren)
		$query = "SELECT * FROM if_ticker GROUP BY regex";
		$result = mysql_query($query)or die('TwitterPlugin: Error, select query failed');
		
	// einfache ausgabe	
		$liga1 = array('Borussia Dortmund', 'Werder Bremen', 'Bor. Mönchengladbach', '1899 Hoffenheim', 'SC Freiburg', '1. FSV Mainz 05',
							'FC Augsburg', 'Herta BSC', 'Hamburger SV', '1. FC Nürnberg', 'Eintracht Braunschweig', 'Bayern München', 
							'Eintracht Frankfurt', 'Bayer 04 Leverkusen', 'VfB Stuttgart', 'VfL Wolfsburg', 'Hannover 96', 'FC Schalke 04'
							);
		$liga2 = array('1860 München', 'Fortuna Düsseldorf', 'Energie Cottbus', 'FC Ingolstadt 04', 'SC Paderborn 07', 'Erzgebirge Aue', 'VfL Bochum',
							'Dynamo Dresden', 'FC St. Pauli', 'VfR Aalen', '1. FC Union Berlin', 'SpVgg Greuther Fürth', 'Karlsruher SC', 'FSV Frankfurt',
							'1. FC Kaiserslautern', '1. FC Köln', 'SV Sandhausen', 'Jahn Regensburg'
							);
																		
		while ($row = mysql_fetch_array($result)) {
			$ligacheck = FALSE;
			foreach ($liga1 as $mannschaft) {
				if ( strpos($row['regex'], $mannschaft) !== FALSE AND strpos($row['regex'], 'Borussia Dortmund II') === FALSE ) {
					echo "...................\nBundesliga1: ".$row['text']."\n...........................\n";	
					$ligacheck = TRUE;
					break;
				}
			}
			if (!$ligacheck) {
				foreach ($liga2 as $mannschaft) {
					if ( strpos($row['regex'], $mannschaft) !== FALSE ) {
						echo "...................\nBundesliga2: ".$row['text']."\n...........................\n";	
						break;
					}
				}
			}			
		}

?>
Der include-pfad und USERNAME müssen natürlich eingetragen werden.
Wie gesagt nur als testzweck und um kurz zu zeigen wie es mit der datenbank klappen könnte.
Aufzurufen bei mir im Putty mit: php /var/www/infoframe/ticker.php

Der rest ist eigentlich nur noch copy&paste aus der ursprünglichen TickerPlugin

ausgabe sieht dann folgendermaßen aus:
Code:
php /var/www/infoframe/ticker.php
...................
Bundesliga1: 1. FSV Mainz 05 - VfL Wolfsburg 2:0 (0:0) Schlusspfiff
...........................
...................
Bundesliga1: 1899 Hoffenheim - SC Freiburg 3:3 (2:2) Schlusspfiff
...........................
...................
Bundesliga1: Bayer 04 Leverkusen - Bor. Mönchengladbach 4:2 (2:0) Schlusspfiff
...........................
...................
Bundesliga1: Bayern München - 1. FC Nürnberg 2:0 (0:0) Schlusspfiff
...........................
...................
Bundesliga1: Hannover 96 - FC Schalke 04 2:1 (2:0) Schlusspfiff
...........................
...................
Bundesliga2: SpVgg Greuther Fürth - 1. FC Köln 0:0 (0:0) Schlusspfiff
...........................
...................
Bundesliga2: VfR Aalen - 1. FC Kaiserslautern 4:0 (1:0) Schlusspfiff
...........................
 
Zuletzt bearbeitet:
Gibt es auch eine Möglichkeit das mit einem Samsung SPxxxx85 zu machen. Dieser hat kein Wlan sondern USB Anschluss

Kann man das Script auch umändern dass es nicht mit Wlan das Display anspricht sondern auch über USB?
Dann kann man die Samsung Displays mit USB auch benutzen
 
Zuletzt bearbeitet:
TickerPlugin für Twitter-API1.1 und Datenbank

Ich bab mal das TickerPlugin, welches Hoober gepostet hat auf Twitter1.1 und Datenbank umgestellt.

TickerPlugin.jpg
Testen konnt ich leider nur heute die 1. - und 2.Bundesliga. Jedoch sollten die anderen Ligen auch funktionieren, da der Ablauf immer gleich ist...

In meiner config.ini habe ich folgendes stehen:
Code:
[TickerPlugin]
;Twitter Login
service.twitter.oauth.username = "XXXXXXXXXXX"
service.twitter.oauth.oauth_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
service.twitter.oauth.oauth_token_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
service.twitter.consumerKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
service.twitter.consumerKey_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

;Bundesliga Ticker
ticker_title_1 = "Bundesliga"
ticker_max_age_in_minutes_1 = 180
ticker_regex_1 = "'Borussia Dortmund', 'Werder Bremen', 'Bor. Mönchengladbach', '1899 Hoffenheim', 'SC Freiburg', '1. FSV Mainz 05', 'FC Augsburg', 'Herta BSC', 'Hamburger SV', '1. FC Nürnberg', 'Eintracht Braunschweig', 'Bayern München', 'Eintracht Frankfurt', 'Bayer 04 Leverkusen', 'VfB Stuttgart', 'VfL Wolfsburg', 'Hannover 96', 'FC Schalke 04'"

;2. Bundesliga Ticker
ticker_title_2 = "2. Bundesliga"
ticker_max_age_in_minutes_2 = 180
ticker_regex_2 = "'Stuttgarter Kickers', '1860 München', 'Fortuna Düsseldorf', 'Energie Cottbus', 'FC Ingolstadt 04', 'SC Paderborn 07', 'Erzgebirge Aue', 'VfL Bochum', 'Dynamo Dresden', 'FC St. Pauli', 'VfR Aalen', '1. FC Union Berlin', 'SpVgg Greuther Fürth', 'Karlsruher SC', 'FSV Frankfurt', '1. FC Kaiserslautern', '1. FC Köln', 'SV Sandhausen', 'Jahn Regensburg'"

;Champions League Ticker
;ticker_title_3 = "Champions League"
;ticker_max_age_in_minutes_3 = 600

;Euro League Ticker
ticker_title_4 = "Euro League"
ticker_max_age_in_minutes_4 = 600
ticker_regex_4 = "'Bor. Mönchengladbach', 'Hannover 96', 'Bayer Leverkusen', 'VfB Stuttgart'"

;DFB Pokal
;ticker_title_5 = "DFB Pokal"
;ticker_max_age_in_minutes_5 = 180

;WM Qualifikation
ticker_title_6 = "WM Qualifikation"
ticker_max_age_in_minutes_6 = 600
ticker_regex_6 = "'Deutschland', 'England', 'Frankreich', 'Italien', 'Spanien', 'Schweiz', 'Österreich', 'Kasachstan', 'Irland', 'Bosnien-Herzegowina', 'Schweden', 'Niederlande', 'Türkei', 'Portugal'"
Bitte beachten:
  1. Twitter Login eintragen!
  2. Die "ticker_regex" muss in einer Zeile stehen. Jede Mannschaft in ' getrennt von einem Komma!
  3. Die Mannschaften für die 1.BL sind komplett, die anderen mannschaften habe ich übernommen bzw ergänzt. zB spielen jetzt 19Mannschaften bei mir in der 2.BL... :D :blonk: (also bitte vervollständigen)...

In die /library/dbconn.php folgen Eintrag hizufügen, damit die db erstellt wird:
PHP:
       // table "if_ticker"
  	if(mysql_num_rows( mysql_query("SHOW TABLES LIKE 'if_ticker'", self::$connection) ) != 1) {
		$query = "CREATE TABLE `if_ticker` (
  				`ID` int(11) NOT NULL AUTO_INCREMENT,
  				`regex` varchar(100) collate latin1_general_cs NOT NULL,
  				`datum` datetime NOT NULL,
  				`text` varchar(100) collate latin1_general_cs NOT NULL,
  				PRIMARY KEY (`ID`)
  				) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs; ";
		mysql_query($query, self::$connection) or die('Error, insert query failed: '.mysql_error());
	 }

Ich lade hier nochmal, wie schon von Hoobert das TickerPlugin als .zip hoch. Enthalten die icons, rtk.xml und das TickerPlugin.php.
Es fehlen noch einige icons, wer was bastelt ist herzlich eingeladen diese mit uns zu teilen. :)


Wie beim MoonPlugin gilt hier auch: Mindestens ZFW 1.12.3 und die includes in euerer Index.php anschauen.
Na, dann hoff ich mal, daß ich nichts vergessen habe....

Hf
 

Anhänge

  • TickerPlugin.zip
    468.1 KB · Aufrufe: 12
Erstmal herzlichen Dank an Spoon3er für die Überarbeitung des TickerPlugins, allerdings bekomme ich noch einen Fehler bei der Select-Abfrage.
Ich habe gestern auch ein bisschen an einem Update des Plugins herumgebastelt, aber noch weit weg von einer Lösung. Mein Ansatz wäre gewesen, die einzelnen Ligen/Wettbewerbe anhand des screen_names (z.B. kicker_bl_li) zu identifizieren und die tickernumber zum Datensatz in die DB zu schreiben. Dazu müssten natürlich wieder alle in der config.ini vorhandenen Ticker durchlaufen werden (while...). Alle weiteren Aussortierungen von doppelten oder veralteten Einträgen würde ja die doOutput-Funktion erledigen. Möglicherweise hilft mir die neue Vorlage von Spoon3er weiter (außer Du bist wieder schneller ;) )

Ansonsten habe ich noch ein paar Anmerkungen:
Es müssten aber doch alle Vereine, die angezeigt werden sollen, in der config.ini im entsprechenden regex stehen, oder? Man müsste hier immer wieder die Teams nach jeder Saison anpassen.
In meiner config.ini habe ich folgendes stehen:
Code:
[TickerPlugin]
ticker_regex_2 = "'Stuttgarter Kickers'...
Die Stuttgarter Kickers spielen dritte Liga, deswegen hast Du auch 19 Teams in der 2. :D

Viele Grüße
Hoobert
 
Ja, es müssten alle Teams nach jeder Saiaon angepasst werden.
Das es für jede Liga ein eigene Tweet von kicker gibt wusst ich nicht, aber das würde die Sache um einiges einfacher gestalten. :)
Hast du da die adressen evtl für mich, dann würde ich mir das auch anschauen.

Hehe, danke für den Tip mit den Kickers. Ich dacht mir schon warum es auf einmal 19 statt 18 Mannschaften sind :)

Bei mir läuft die SELECT abfrage. Die hats auch in sich, weil du ja mit der abfrage quasi alles auf mysql ebene erledigen kannst.
Du kannst die Abfrage testweise auch mal in eine Zeile schreiben. Evtl ist da was mit den Zeilenumbrüchen durcheinander geraten...? (Hab sie eigentlich nur der übersichtshalber auf mehrere Zeilen aufgeteilt, damit man die Abfrage besser lesen kann. :)
 
Ja, es müssten alle Teams nach jeder Saiaon angepasst werden.
Das fände ich v.a. für DFB-Pokal, Europa und Champions League ganz schön umständlich aber natürlich machbar, wenn's sein muss.
Das es für jede Liga ein eigene Tweet von kicker gibt wusst ich nicht, aber das würde die Sache um einiges einfacher gestalten. :)
Hast du da die adressen evtl für mich, dann würde ich mir das auch anschauen.
Unter http://www.kicker.de/news/live-news/twitter/artikel/507014/ kannst Du die möglichen "Einzel-Tweets" nachkucken. Wäre echt cool, wenn Du das schaffen würdest.

Viele Grüße
Hoobert
 
Ich habe das TickerPlugin auf die Wünsche umgebaut.

Es werden nur die Ligen abgefragt, die auch an diesem Spieltga spielen:
Die Liganummer wird beim doOutput in `if_system` hinterlegt und dann bei der doUpdate-funktion ausgelesen. Danach werden im `if_ticker`nur die richtigen Ligaeinträge gelöscht. (wichtig, wenn mehre Ligen am gleichen Tag spielen).
Ich habe eine if then Abfrage im doUpdate eingefügt, die prüft ob im `if_system` der Eintrag `if_ticker`enthalten ist. Wenn nicht wird diese erzeugt. Dies ist eigentlich nur das erste Mal bei "Inbetriebnahme" des Plugins erforderlich. Also wird es beim ersten Update keine Ergebnisse geben.

Nun zur Abfrage:
Gesucht wird nach Ergebnissen: "-:-" oder zB "1:0". Wird so ein string im Tweet gefunden gehe ich von einem richtigen Spiel aus und zerlege den Tweet in fünf Teile:
  • liga
  • datum
  • heim
  • gast
  • ergebins
Das, mit der obligatorischen ID, sind auch die Spalten in der neuen `if_ticker`Tabelle. Also bitte die alte Tabelle einfach löschen und in der /library/dbconn.php den Eintrag für `if_ticker` folgendermaßen abändern/anlegen:
PHP:
       // table "if_ticker"
  	if(mysql_num_rows( mysql_query("SHOW TABLES LIKE 'if_ticker'", self::$connection) ) != 1) {
		$query = "CREATE TABLE `if_ticker` (
  				`ID` int(11) NOT NULL AUTO_INCREMENT,
  				`liga` int(11) NOT NULL,
  				`datum` datetime NOT NULL,
  				`heim` varchar(100) collate latin1_general_cs NOT NULL,
  				`gast` varchar(100) collate latin1_general_cs NOT NULL,
  				`ergebnis` varchar(100) collate latin1_general_cs NOT NULL,
  				PRIMARY KEY (`ID`)
  				) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs; ";
		mysql_query($query, self::$connection) or die('Error, insert query failed: '.mysql_error());
	 }

Ich konnte noch nicht viel Testen, sollte aber klappen. Einiges an code-tweaks ist dazugekommen. Es könnte sein, daß die icons mit Umlauten in den Namen nicht richtig gefunden werden. Ist mal wieder die alte utf-8 zu iso Geschichte. Aber das kann ich erst am Wochenende richtig ausprobieren...

Diesmal ist nur die TickerPlugin.php im zip einthalten für den Rest bitte hier schauen.

€dith:
War ja klar, daß ich was vergessen habe. Wie eigentlich immer... :(
Es wird natürlich keine regex in der config.ini mehr benötigt.
Der Auszug aus meiner config.ini:
Code:
[TickerPlugin1]
;Twitter Login
service.twitter.oauth.username = "XXXXXXXXXXXXXXXXX"
service.twitter.oauth.oauth_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
service.twitter.oauth.oauth_token_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
service.twitter.consumerKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
service.twitter.consumerKey_secret = "SXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

;Bundesliga Ticker
ticker_title_1 = "Bundesliga"
ticker_max_age_in_minutes_1 = 180
ticker_max_displayed_items_1 = 8

;2. Bundesliga Ticker
ticker_title_2 = "2. Bundesliga"
ticker_max_age_in_minutes_2 = 180
ticker_max_displayed_items_2 = 5

;Champions League Ticker
ticker_title_3 = "Champions League"
ticker_max_age_in_minutes_3 = 600
ticker_max_displayed_items_3 = 5

;Euro League Ticker
ticker_title_4 = "Euro League"
ticker_max_age_in_minutes_4 = 600
ticker_max_displayed_items_4 = 5

;DFB Pokal
ticker_title_5 = "DFB Pokal"
ticker_max_age_in_minutes_5 = 180
ticker_max_displayed_items_5 = 5

;WM Qualifikation
ticker_title_6 = "WM Qualifikation"
ticker_max_age_in_minutes_6 = 600
ticker_max_displayed_items_6 = 5
Dafür könnt ihr, müsst aber nicht eine "ticker_max_display_items" angeben.
 

Anhänge

  • TickerPlugin1.zip
    3.1 KB · Aufrufe: 17
Zuletzt bearbeitet:
@ reimundkon:
Mir den aktuellen "erschwinglichen" Rahmen wird es wohl überall nur mit viel tricksen gehen. Mann muss den Framechanell auf die richtige Adressse umleiten, dann bekommt man wohl eine minütlich- , oder welche Aktualisierung auch immer im Bilderrahmen ein zu stellen geht, hin.
Ich besitze leider nicht so einen Rahmen, und kann dir da nicht weiter helfen. Jedoch, wenn du diesen Thread nach Framechannel durchsuchst, sollte es genug Antworten geben. Evtl mal einen user mit so einem Rahmen per PM anschreiben...

TickerPlugin:
Bei mir funktionieren jetzt auch die Icons mit Umlauten. 2 Sachen habe ich geändert:
1. die preg_match regex verändert:
2. noch zwei querys gleich am anfang der doUpdate eingefügt um sicherzustellen, daß die Datenbank mit utf-8 angesprochen wird
PHP:
	// update all tickers
	public function doUpdate() {
		
		// utf-8 connection
				mysql_query("SET NAMES SET 'utf8'");
				mysql_query("SET character_set_client = 'utf8'");
		// connect to twitter API
				$accessToken = new Zend_Oauth_Token_Access();
				$accessToken->setToken($this->config['service.twitter.oauth.oauth_token']);
				$accessToken->setTokenSecret($this->config['service.twitter.oauth.oauth_token_secret']);
				$twitter = new Zend_Service_Twitter(
    						array('username' => $this->config['service.twitter.oauth.username'],
						        	'accessToken' => $accessToken,
						        	'oauthOptions' => array(
						          'consumerKey' => $this->config['service.twitter.consumerKey'],
						          'consumerSecret' => $this->config['service.twitter.consumerKey_secret']
						       		)
						   )
				);
				
		//select screen_name and delete old entries with the given screen_name		
				$query = "SELECT `value` FROM `if_system` WHERE name = 'if_ticker'";
				$result = mysql_query($query, $this->dbconn)or die('TickerPlugin: Error, doUpdate SELECT if_system query failed '.mysql_error());
				if (mysql_num_rows($result) == 0) {
					$query = "INSERT INTO `if_system` (name, value) VALUES ('if_ticker', 0)";
					mysql_query($query, $this->dbconn)or die('TickerPlugin: Error, doUpdate INSERT query failed: '.mysql_error());
				}else {				
					$row = mysql_fetch_assoc($result);
					$liga = $row['value'];
   				$query = "DELETE FROM `if_ticker` WHERE liga = $liga";
					mysql_query($query, $this->dbconn)or die('TickerPlugin: Error, doUpdate DELETE query failed: '.mysql_error());		
					$screen_name = array ( 1=>'kicker_bl_li', 2=>'kicker_2bl_li', 3=>'kicker_cl_li', 4=>'kicker_uefa_li', 5=>'kicker_pokal_li', 6=>'kicker_wmq_li');
				}
		//connect to twitter	
			$options = array(
								'screen_name' => $screen_name[$liga],
								'count' => '100',
								'trim_user' => '1',
								'include_entities' => 'TRUE'
								);										
			$results = $twitter->statusesUserTimeline($options);
		//get content 	
			foreach ($results->toValue() as $result) {
				$text = $result->text;             
			  $text = str_replace("\xE2\x80\xB3", "\"", $text);
			  $datum = strtotime($result->created_at);
			  if ( strtotime('today') < $datum AND preg_match('/^(.*?)\s-\s(.*?)\s([-|\d{1,2}]\:[\-|\d{1,2}].*) #/', $text, $matches) AND strlen($matches[1]) < 35 ) {	
			//insert into db
				  $query = "INSERT 
				  		INTO `if_ticker` (liga, datum, heim, gast, ergebnis) 
VALUES ($liga, '".strftime('%Y-%m-%d %R', $datum)."', '".mysql_real_escape_string($matches[1])."', '".mysql_real_escape_string($matches[2])."', '".mysql_real_escape_string($matches[3])."')";				
					$update = mysql_query($query, $this->dbconn)or die('TickerPlugin: Error, doUpdate INSERT query failed: '.mysql_error());
				}							
			}
	}
Kann sein, daß bei euch die ersten zwei Zeilen mit dem
mysql_query("SET NAMES SET 'utf8'");
mysql_query("SET character_set_client = 'utf8'");
nicht gebraucht werden. Das muss jeder für sich selber ausprobieren...
 

Anhänge

  • ticker2.jpg
    ticker2.jpg
    124.7 KB · Aufrufe: 76
Zuletzt bearbeitet:
@Spoon3er
Hast Du noch eine Idee zu:
Bei mir werden die Tweets mit 0000-00-00 00:00:00 in der DB datum angelegt, somit keine Anzeige.
 
du kannst im insert unter VALUES mal das versuchen:
PHP:
 $query = "INSERT 
	INTO `if_ticker` (liga, datum, heim, gast, ergebnis) 
	VALUES ($liga, FROM_UNIXTIME($datum), '".mysql_real_escape_string($matches[1])."', '".mysql_real_escape_string($matches[2])."', '".mysql_real_escape_string($matches[3])."')";
also statt der php funktion die FROM_UNIXTIME-Funktion aus mysql benutzen
 
@Spoon3er
DANKE funktioniert
 
gerne, das war ja ausnahmsweise mal ein volltreffer beim ersten mal. :)
 
hallo @all

ist es auch möglich von unterwegs aus auf mein infoframe zuzugreifen? also auf das generierte bild?

fürs tanken ist es praktisch, dann kann ich sehen, ob bei mir zuhause oder unterwegs billiger ist.

eine dyndns habe ich. weiß nur nich was ich unterwegs ins smartfon tippen muß
 
Hier die aktualisierten Icons fürs Tickerplugin (1. Bundesliga, 2. Bundesliga, Champions League, deutsche Gruppengegner der Europa League, DFB Pokal vollständig): Anhang anzeigen ticker13-14.zip
Bei den Nationalteams fehlt noch das ein oder andere Icon.

:groesste:Vielen Dank nochmal an Spoon3er, ohne den das TickerPlugin noch nicht auf Twitter API 1.1 umgestellt wäre (ich habe übrigens weiter gebastelt und die Logik meines ursprünglichen Plugins wieder hergestellt, wobei natürlich Spoon3ers Lösung genausogut funktioniert).

Viele Grüße
Hoobert
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
244,982
Beiträge
2,222,175
Mitglieder
371,766
Neuestes Mitglied
Balthasa
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.