[imc-france-tech] syndication rss

vaaag_paris imc-france-tech at lists.indymedia.org
Mon, 19 May 2003 00:08:03 +0200


This is a multi-part message in MIME format.
--------------050802030800050006090506
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 8bit

exemple, pour obtenir sur le site de paris une syndication rss du site 
de lille, sachant que le fichier rss de lille est backend.php3
j'appelle
http://paris.indymedia.org/syndic.php3?backend=http://lille.indymedia.org/backend.php3&cache=lille
mais ça marcherait également avec samizdat
http://paris.indymedia.org/syndic.php3?backend=http://samizdat.net/backend.php3&cache=samizdat
ou n'importe quel site qui aurait un fichier backend rss compatible 
(mêmes balises xml)

je joins
- le fichier syndic.php3 (permet de récupérer des fichiers backend)
- nos fichiers backend.php2 et backendg8.php3 : le premier sélectionne 
les articles validés seulement, le second sélectionne en plus ceux qui 
ont le mot-clé "G8"
- et aussi pour la syndication "non rss", le fichier testsyndic.html

--------------050802030800050006090506
Content-Type: text/html;
 name="testsyndic.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="testsyndic.html"

<script src="http://nice.indymedia.org/distrib.php3"></script>
<hr>
<script src="http://lille.indymedia.org/distrib.php3"></script>
<hr>
<script src="http://nantes.indymedia.org/distrib.php3"></script>
<hr>
<script src="http://paris.indymedia.org/distrib.php3"></script>
<hr>
<script src="http://vaaag.org/distrib.php3"></script>
<hr>
<script src="http://www.oulala.net/Portail/distrib.php3"></script>


--------------050802030800050006090506
Content-Type: text/html;
 name="backend.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="backend.html"

<? echo '<?xml version="1.0" encoding="iso-8859-1"?>'; ?>

<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
            "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">

  <channel>
 
  
    <title>#NOM_SITE_SPIP</title>
    <link>#URL_SITE_SPIP</link>
    <description></description>
    <language>fr-fr</language>

    <image>
      <title>#NOM_SITE_SPIP</title>
      <url>#URL_SITE_SPIP/IMG/ruboff0.gif</url>
      <link>#URL_SITE_SPIP</link>
      <description></description>
    </image>
    
<BOUCLE1(articles){id_rubrique=3}{statut!="refuse"}{par date}{inverse}{0,10}>
    <item>
      <title>#TITRE</title>
      <link>#URL_SITE_SPIP/#URL_ARTICLE</link>
      <description>#DESCRIPTIF</description>
      <author><BOUCLE23(auteurs){id_article}{", "}>#NOM</BOUCLE23></author>
    </item>
</BOUCLE1>
 
  </channel>
  
</rss>


--------------050802030800050006090506
Content-Type: text/plain;
 name="backend.php3"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="backend.php3"

<?php
$fond = "backend";
$delais = 3600;

// cette ligne empeche l'affichage des boutons d'administration
$flag_preserver = true;

@header("Content-type: text/plain");

include ("inc-public.php3");

?>

--------------050802030800050006090506
Content-Type: text/html;
 name="backendg8.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="backendg8.html"

<? echo '<?xml version="1.0" encoding="iso-8859-1"?>'; ?>

<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
            "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">

  <channel>
 
  
    <title>#NOM_SITE_SPIP</title>
    <link>#URL_SITE_SPIP</link>
    <description></description>
    <language>fr-fr</language>

    <image>
      <title>#NOM_SITE_SPIP</title>
      <url>#URL_SITE_SPIP/IMG/ruboff0.gif</url>
      <link>#URL_SITE_SPIP</link>
      <description></description>
    </image>
    
    <BOUCLE1(articles){id_rubrique=3}{statut!="refuse"}{id_mot=7}{par date}{inverse}{0,10}>
    <item>
      <title>#TITRE</title>
      <link>#URL_SITE_SPIP/#URL_ARTICLE</link>
      <description>#DESCRIPTIF</description>
      <author><BOUCLE23(auteurs){id_article}{", "}>#NOM</BOUCLE23></author>
    </item>
</BOUCLE1>
 
  </channel>
  
</rss>


--------------050802030800050006090506
Content-Type: text/plain;
 name="backendg8.php3"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="backendg8.php3"

<?php
$fond = "backendg8";
$delais = 3600;

// cette ligne empeche l'affichage des boutons d'administration
$flag_preserver = true;

@header("Content-type: text/plain");

include ("inc-public.php3");

?>

--------------050802030800050006090506
Content-Type: text/plain;
 name="syndic.php3"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
 filename="syndic.php3"

<?
/*
//	syndic_samizdat_fat.php3
//
//	Version:	1.2
//
//	Ce script permet d'afficher, pour les X derniers articles
//	publies sur samizdat.net (http://infos.samizdat.net) avec le titre
//	le resume et l'auteur.
//
//	UTILISATION
//
//	Pour inclusion en PHP appeler ce fichier dans votre page
//	par la ligne de code suivante :
//
//	<?
//	include("syndic_samizdat_fat.php3");
//	?>
//
//	Pour inclusion en SSI appeler ce fichier dans votre page
//	par la ligne de code suivante :
//
//	<!--#include virtual="samizdat_syndic_fat.php3" -->
//	
//	Copyright (c) 2002 samizdat.net
//	Script base sur le code de Kalle Kiviaho (kivi@chl.chalmers.se)
//	"Newsbackend interfaces for PHP" version 2.0.4 (2000-09-24)
//	Homepage:	http://swamp.chl.chalmers.se/backends/
//
//	Ce script est du code libre qui peut etre librement utilise,
//	modifie et adaptate suivant les termes de la GNU General Public
//	License version 2 tel qu'elle est publiee par la Free Software
//	Foundation.
//	
//	Vous devez recevoir un exemplaire de la GNU General Public License
//	avec ce script, ou ecrire a la Free Software Foundation, Inc.,
//	59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
//	pour en recevoir copie.
//	
//	Sources disponibles sur : http://matrix.samizdat.net/sources/scripts
//
*/

//	Personnalisation : modifier les parametres ci dessous

$link_prefix	=	"<li>";
$link_postfix	=	"<BR>\n";

//	Choisir un emplacement et un nom pour le fichier de cache.
//	Le repertoire doit etre en 777 (rwxrwxrwx). Ici le repertoire
//	est nommŽ "tmp"
$cache_file	=	"filsactu/$cache.cache";

//	Fixer le delais de rafraichissement (ici 1 heure)
$cache_time	=	3600;

//	Nombre de titre a recuperer
$max_items	=	10;
$target		=	"_blank";

//$backend	=	"http://infos.samizdat.net/backend.php3";

//	Fin de la personnalisation

$items		=	0;
$time		=	split(" ", microtime());

srand((double)microtime()*1000000);
$cache_time_rnd	=	300 - rand(0, 600);

if ( (!(file_exists($cache_file))) || ((filectime($cache_file) + $cache_time - $time[1]) + $cache_time_rnd < 0) || (!(filesize($cache_file))) ) {

	$fpread = fopen($backend, 'r');
	if(!$fpread) {
		echo "$errstr ($errno)<br>\n";
		exit;
	} else {

		$fpwrite = fopen($cache_file, 'w');
		if(!$fpwrite) {
//			echo "$errstr ($errno)<br>\n";
//			exit;
		} else {

			while(! feof($fpread) ) {

				$buffer = ltrim(Chop(fgets($fpread, 256)));

				if (($buffer == "<item>") && ($items < $max_items)) {
					$title = ltrim(Chop(fgets($fpread, 256)));
					$url = ltrim(Chop(fgets($fpread, 256)));
					$description = ltrim(Chop(fgets($fpread, 1000)));
					$author = ltrim(Chop(fgets($fpread, 256)));

					$title = ereg_replace( "<title>", "", $title );
					$title = ereg_replace( "</title>", "", $title );
					$url = ereg_replace( "<link>", "", $url );
					$url = ereg_replace( "</link>", "", $url );
					//$description = ereg_replace( "<description>", "", $description );
					//$description = ereg_replace( "</description>", "", $description );
					$author = ereg_replace( "<author>", "", $author );
					$author = ereg_replace( "</author>", "", $author );

	fputs($fpwrite, "$link_prefix<A HREF=\"$url\" TARGET=\"$target\">$title</A>$link_postfix");
					//fputs($fpwrite, "$description$link_postfix");
					//fputs($fpwrite, "Par $author$link_postfix");

					$items++;
				}


			}
		}
		fclose($fpread);
	}
	fclose($fpwrite);
}
if (file_exists($cache_file)) {
	include($cache_file);
}
?>

--------------050802030800050006090506--