08/08/2008 - Linux Feed

LINUX « E-Pillole



People DebianClan e TuxFeed: pinguini italiani alla riscossa

Post inserito il 19/07/2007 da Fede in My Feeds

Ringrazio per la considerazione, faccio i miei complimenti per l'idea ai rispettivi staff del DebianClan e di TuxFeed e mando un saluto a tutta la comunità italiana di pinguini!! :)

Pinguini italiani

Questi due aggregatori di feed, ai quali è stata aggiunta la sezione Linux del mio "modestissimo" sito web, avranno sicuramente un impatto positivo sulla nostra comunità open source e sono altrettanto convinto che contribuiranno a migliorare la qualità dei contenuti proposti da ognuno di noi.

Poco importa se spesso ci si ritroverà a parlare e a discutere delle stesse cose, l'importante sarà remare tutti nella stessa direzione sotto il segno del "pinguino" per divulgare nel miglior modo possibile le nostre conoscenze e le nostre esperienze personali :)

Buon "lavoro" a tutti!!

P.S. mi sarebbe piaciuto ricambiare, inserendo nel menu laterale un semplicissimo feed parser in php, ma siccome c'è qualche problema con la formattazione dei caratteri tipo apostrofi e potenze, (maledetto wordpress e chi usa questi caratteri) per il momento ho preferito evitare e linkare esclusivamente le rispettive home pages.

Questo è il codice (lo stesso utilizzato per visualizzare le ultime release del kernel), e siccome conosco davvero poco wordpress e feedburner, se qualcuno ha voglia di impazzire con qualche replace e qualche array, si accomodi pure :)

<?php

$feed = "http://kernel.org/kdist/rss.xml";

if( ! ($fp = fopen( "$feed" , "r" )) ){echo "NO FEED";}

$feed_limit = 5;
$feed_counter = 0;
$feed_data = array();
$feed_current_state = '';

function start_feed_reader( $feed_parser, $feed_element_name, $feed_element_attribs ){
	global $feed_counter;
	global $feed_data;
	global $feed_current_state;
	$feed_current_state = $feed_element_name;
}

function end_feed_reader( $feed_parser, $feed_element_name ){
	global $feed_counter;
	global $feed_data;
	global $feed_current_state;
	$feed_current_state = '';
	if( $feed_element_name == "ITEM" ) {
		$feed_counter++;
	}
}

function character_feed_reader( $feed_parser , $data ){
	global $feed_counter;
	global $feed_data;
	global $feed_current_state;
	if( $feed_current_state == '' ) {
		return;
	}
	if( $feed_current_state == "TITLE" ) {
		$feed_data[$feed_counter]["title"] = $data;
	}
	if( $feed_current_state == "LINK" ) {
		$feed_data[$feed_counter]["link"] = $data;
	}
}

if( !($xml_parser = xml_parser_create()) ){
	die("Impossibile creare l' XML parser!");
}

xml_set_element_handler($xml_parser, "start_feed_reader", "end_feed_reader");
xml_set_character_data_handler($xml_parser, "character_feed_reader");

while( $data = fread($fp, 4096) ){
	if( !xml_parse($xml_parser, $data, feof($fp)) )	{
		break;
	}
}

xml_parser_free($xml_parser);

for( $i=0 ; $i < $feed_limit ; ++$i ){
	echo "<li class='liboxright'><a href='".$feed_data[$i]["link"]."' target='_blank'>".$feed_data[$i]["title"]."</a></li>";
}

?>

Come potete vedere, è davvero elementare e le variabili su cui agire per la personalizzazione sono:

  • $feed = "url_rss_feed";
  • $feed_limit = numero_news_da_visualizzare;

Infine, da questo echo finale:

echo "<li class='liboxright'><a href='".$feed_data[$i]["link"]."' target='_blank'>".$feed_data[$i]["title"]."</a></li>";

è possibile personalizzare l'output html.

Appena avrò un pò di tempo e un pò di voglia, vedrò se riuscirò a risolvere. Nel frattempo ogni consiglio è ben accetto!!


Post letto 926 volte | Commenti (0) | Bookmark   del.icio.us    segnalo


Commenta Post

(opzionale)
(opzionale)


Codice antispam: Codice antispam