Accueil > > > CREER UN FLUX RSS DE SKYBLOG
CREER UN FLUX RSS DE SKYBLOG
Information sur la source
Description
j'utilise depuis pas mal de temps la page d'accueil google, qui me permet d'avoir en un coup d'oeil une ribambelle de flux rss.
Ca me permet par exemple d'avoir directement les derniers articles sur les blogs de mes amis, seulement, certains utilisent skyblog, et la, pas moyen de trouver un flux rss...
alors voila une source php qui le fait, dans ma page d'accueil google, j'ai mis comme flux http://addresse_du_fichier?rss.php?blogger=...
et hop, ca marche.
Ce n'est peut etre pas tres propre, mais comme je n'ai pas compris grand choses aux sources en php, j'ai juste généré un fichier qui a la meme forme qu'un flux rss normal.
edit: voila, j'ai recodé ce qu'il falait recoder pour que ca marche avec la facon dont est fait skyblog depuis quelque temps.
En éspérant que ca dure...
Source
- <?php
-
- /*
- Codé par Pierre GROS
- Si ca peux vous servir, faites vous plaisir
- Changez le tant que vous voulez
- mais si vous pouviez laisser ce bandeau, ca ferais plaisir à mon égo
-
- Ce script permet de créer un flux RSS pour un skyblog (enfin tant que l'architecture de leurs pages sera celle d'aujourd'hui)
-
- Pour que ca marche, mettez ce fichier sur un server web gérant le PHP et le flux rss sera a l'adresse: http://adresse_du_fichier/rss.php?blogger=nom_du_blog
-
- Dernière version: 12 juillet 2006
-
- */
-
- $nb_pages_max=-1;//mettre -1 pour tous
- if (!empty($_GET['blogger'])){
- $blogger=urlencode($_GET['blogger']);//blogger à surveiller
-
-
- function nettoie_phrase ($phrase) //a ameliorer, ce sont les problemes que j'ai rencontré
- {//cette fonction nettoie une ligne de code html pour la renvoyer proprement
-
- $phrase = utf8_encode($phrase);
-
- $phrase = strip_tags($phrase);//enleve les balises html
-
- //pose probleme si ca coupe un code html
- /*if (strlen($phrase) > 100) {
- $phrase = substr($phrase, 0, 100);//ne prends que les 100 1ers caracteres
- $phrase .= "...";
- }*/
-
- $phrase = trim($phrase);//vire les caracteres illisibles en début et fin de phrase
-
- return ($phrase);//renvoie la phrase propre
- }
-
- function retourne_date ($date)//prends la date au format skyblog et la renvoie au format RSS
- {
- //Posté le vendredi 28 avril 2006 à 01:33
- //deviens
- //Fri, 28 Apr 2006 01:33:00 +0200
- $francais = array("Posté le ", "à ", "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "novembre", "décembre", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche");
- $anglais = array("", "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Nov", "Dec", "Mon,", "Tue,", "Wed,", "Thu,", "Fri,", "Sat,", "Sun,");
- $date = str_replace($francais, $anglais, $date);
- $date .= ':00 '.date("O");
- return ($date);
- }
-
-
- if (!$fp = fopen("http://$blogger.skyblog.com/","r")) {
-
- echo 'ERREUR!'."\n";
-
- } else {
-
-
- // NOMBRE DE PAGES
- $page_courante = 1;
- $nb_pages = 0;
- $fini = false;
- while (!$fini AND !feof($fp)) { //on parcours toutes les lignes
- $page = fgets($fp, 4096);
- if (strpos($page,'var blog_nb_page = ') !== false) {//quand on trouve la ligne indiquant le nombre de page, on récupere la donée
- $nb_pages = str_replace('var blog_nb_page = ','',$page);
- $nb_pages = str_replace(';','',$nb_pages);
- $fini = true;
- }
- }
- if ($nb_pages_max<0 or $nb_pages_max > $nb_pages) //remet bien la valeur de $nb_pages_max
- $nb_pages_max = $nb_pages;
-
- // TITRE DU BLOG
- $en_tete = false;
- while (!$en_tete AND !feof($fp)) { //on parcours toutes les lignes
- $page = fgets($fp, 4096);
- if (strpos($page,'Nom du Skyblog :') !== false) {
-
- //en tete du flux rss
- header('Content-type: text/xml');
- echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
- echo '<rss version="2.0">'."\n";
- echo '<channel>'."\n";
- echo '<title>'.$blogger.'</title>'."\n";
- echo '<lastBuildDate>'.date("r").'</lastBuildDate>'."\n";//date de l'instant ou le fichier est appelé
- echo '<link>http://'.$blogger.'.skyblog.com/</link>'."\n";
- echo '<description>' . nettoie_phrase (fgets($fp, 4096)) . '</description>'."\n";
- echo '<language>fr</language>'."\n";
- echo '<copyright>'.$blogger.'</copyright>'."\n";//mets le nom du blogger en copyright
-
- $en_tete = true;
- }
- }
-
- //debut des articles
-
-
- $page_courante = 1;
- while ($page_courante <= $nb_pages_max) {//tant qu'on a pas dépassé la derniere page, on lit
-
- if ($page_courante == 1) $page_a_voir='';
- else $page_a_voir = $page_courante.'.html';//affiche la page de base ou la suivante
-
- if (!$fp = fopen('http://'.$blogger.'.skyblog.com/'.$page_a_voir,"r")) {
- $page_courante = $nb_pages + 1;
- } else {
-
- //articles de la page en cours
- $fini = false;
- while (!$fini AND !feof($fp)) {
- $page = fgets($fp, 4096);
- if ((strpos($page,'<div class="article"') !== false) and (strpos($page,'id="pagination"') === false)) {//$page contiens la ligne ou il y a l'ID et ce n'est pas la merdouille à la fin
-
-
- $id=substr($page,strpos($page,"id=\"")+4); //recupere l'ID du message.
- $id=substr($id,0,strpos($id,"\""));
-
- $title = nettoie_phrase (fgets($fp, 4096)); //récupère le titre
-
- $description = nettoie_phrase (fgets($fp, 4096));//récupere la 1ere ligne non vide de l'article, ca sera la description
- while (strlen($description) == 0) //si la 1ere ligne est vide, on prends la suivante
- $description = nettoie_phrase (fgets($fp, 4096));
-
- while (strpos($page,'<div class="date">') === false and !feof($fp))
- $page = fgets($fp, 4096);//lis jusqu'a trouver la ligne contenant les dates
-
- $creation = "";
- $modification = "";
-
- if (strpos($page, "<div class=\"modified_on\">") === false) {
- $creation = retourne_date(nettoie_phrase($page));
- } else {
- $creation = substr($page, 0, strpos($page, "<div class=\"modified_on\">"));
- //$modification = strstr($page, "<div class=\"modified_on\">");
-
- $creation = retourne_date(nettoie_phrase($creation));
- //$modification = retourne_date(nettoie_phrase($modification));
- }
-
- //on affiche le tout
- echo '<item>'."\n";
- echo ' <title>' . $title . '</title>'."\n";
- echo ' <link>http://'.$blogger.'.skyblog.com/';
- if ($page_courante > 1) echo $page_courante . '.html';
- echo '#'.$id.'</link>'."\n";
- echo ' <pubDate>'.$creation.'</pubDate>'."\n";
- echo ' <description>'.$description.'</description>'."\n";
- echo '</item>'."\n";
-
-
- }
- }
-
- }
-
- $page_courante++;//on passe a la page suivante
-
- }
-
-
- //fin du flux
- if ($en_tete) {
- echo '</channel>'."\n";
- echo '</rss>'."\n";
- } else echo "Blog inexistant!";
- }
- } else {
- echo 'Veuillez indiquer un blogger'."\n";
- }
-
- ?>
<?php
/*
Codé par Pierre GROS
Si ca peux vous servir, faites vous plaisir
Changez le tant que vous voulez
mais si vous pouviez laisser ce bandeau, ca ferais plaisir à mon égo
Ce script permet de créer un flux RSS pour un skyblog (enfin tant que l'architecture de leurs pages sera celle d'aujourd'hui)
Pour que ca marche, mettez ce fichier sur un server web gérant le PHP et le flux rss sera a l'adresse: http://adresse_du_fichier/rss.php?blogger=nom_du_blog
Dernière version: 12 juillet 2006
*/
$nb_pages_max=-1;//mettre -1 pour tous
if (!empty($_GET['blogger'])){
$blogger=urlencode($_GET['blogger']);//blogger à surveiller
function nettoie_phrase ($phrase) //a ameliorer, ce sont les problemes que j'ai rencontré
{//cette fonction nettoie une ligne de code html pour la renvoyer proprement
$phrase = utf8_encode($phrase);
$phrase = strip_tags($phrase);//enleve les balises html
//pose probleme si ca coupe un code html
/*if (strlen($phrase) > 100) {
$phrase = substr($phrase, 0, 100);//ne prends que les 100 1ers caracteres
$phrase .= "...";
}*/
$phrase = trim($phrase);//vire les caracteres illisibles en début et fin de phrase
return ($phrase);//renvoie la phrase propre
}
function retourne_date ($date)//prends la date au format skyblog et la renvoie au format RSS
{
//Posté le vendredi 28 avril 2006 à 01:33
//deviens
//Fri, 28 Apr 2006 01:33:00 +0200
$francais = array("Posté le ", "à ", "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "novembre", "décembre", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche");
$anglais = array("", "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Nov", "Dec", "Mon,", "Tue,", "Wed,", "Thu,", "Fri,", "Sat,", "Sun,");
$date = str_replace($francais, $anglais, $date);
$date .= ':00 '.date("O");
return ($date);
}
if (!$fp = fopen("http://$blogger.skyblog.com/","r")) {
echo 'ERREUR!'."\n";
} else {
// NOMBRE DE PAGES
$page_courante = 1;
$nb_pages = 0;
$fini = false;
while (!$fini AND !feof($fp)) { //on parcours toutes les lignes
$page = fgets($fp, 4096);
if (strpos($page,'var blog_nb_page = ') !== false) {//quand on trouve la ligne indiquant le nombre de page, on récupere la donée
$nb_pages = str_replace('var blog_nb_page = ','',$page);
$nb_pages = str_replace(';','',$nb_pages);
$fini = true;
}
}
if ($nb_pages_max<0 or $nb_pages_max > $nb_pages) //remet bien la valeur de $nb_pages_max
$nb_pages_max = $nb_pages;
// TITRE DU BLOG
$en_tete = false;
while (!$en_tete AND !feof($fp)) { //on parcours toutes les lignes
$page = fgets($fp, 4096);
if (strpos($page,'Nom du Skyblog :') !== false) {
//en tete du flux rss
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
echo '<rss version="2.0">'."\n";
echo '<channel>'."\n";
echo '<title>'.$blogger.'</title>'."\n";
echo '<lastBuildDate>'.date("r").'</lastBuildDate>'."\n";//date de l'instant ou le fichier est appelé
echo '<link>http://'.$blogger.'.skyblog.com/</link>'."\n";
echo '<description>' . nettoie_phrase (fgets($fp, 4096)) . '</description>'."\n";
echo '<language>fr</language>'."\n";
echo '<copyright>'.$blogger.'</copyright>'."\n";//mets le nom du blogger en copyright
$en_tete = true;
}
}
//debut des articles
$page_courante = 1;
while ($page_courante <= $nb_pages_max) {//tant qu'on a pas dépassé la derniere page, on lit
if ($page_courante == 1) $page_a_voir='';
else $page_a_voir = $page_courante.'.html';//affiche la page de base ou la suivante
if (!$fp = fopen('http://'.$blogger.'.skyblog.com/'.$page_a_voir,"r")) {
$page_courante = $nb_pages + 1;
} else {
//articles de la page en cours
$fini = false;
while (!$fini AND !feof($fp)) {
$page = fgets($fp, 4096);
if ((strpos($page,'<div class="article"') !== false) and (strpos($page,'id="pagination"') === false)) {//$page contiens la ligne ou il y a l'ID et ce n'est pas la merdouille à la fin
$id=substr($page,strpos($page,"id=\"")+4); //recupere l'ID du message.
$id=substr($id,0,strpos($id,"\""));
$title = nettoie_phrase (fgets($fp, 4096)); //récupère le titre
$description = nettoie_phrase (fgets($fp, 4096));//récupere la 1ere ligne non vide de l'article, ca sera la description
while (strlen($description) == 0) //si la 1ere ligne est vide, on prends la suivante
$description = nettoie_phrase (fgets($fp, 4096));
while (strpos($page,'<div class="date">') === false and !feof($fp))
$page = fgets($fp, 4096);//lis jusqu'a trouver la ligne contenant les dates
$creation = "";
$modification = "";
if (strpos($page, "<div class=\"modified_on\">") === false) {
$creation = retourne_date(nettoie_phrase($page));
} else {
$creation = substr($page, 0, strpos($page, "<div class=\"modified_on\">"));
//$modification = strstr($page, "<div class=\"modified_on\">");
$creation = retourne_date(nettoie_phrase($creation));
//$modification = retourne_date(nettoie_phrase($modification));
}
//on affiche le tout
echo '<item>'."\n";
echo ' <title>' . $title . '</title>'."\n";
echo ' <link>http://'.$blogger.'.skyblog.com/';
if ($page_courante > 1) echo $page_courante . '.html';
echo '#'.$id.'</link>'."\n";
echo ' <pubDate>'.$creation.'</pubDate>'."\n";
echo ' <description>'.$description.'</description>'."\n";
echo '</item>'."\n";
}
}
}
$page_courante++;//on passe a la page suivante
}
//fin du flux
if ($en_tete) {
echo '</channel>'."\n";
echo '</rss>'."\n";
} else echo "Blog inexistant!";
}
} else {
echo 'Veuillez indiquer un blogger'."\n";
}
?>
Conclusion
Ca as été fait a la va-vite, mais ca donne les résultats que je voulais.
note: le fichier doit etre en UTF-8
Historique
- 07 mai 2006 20:42:33 :
- Rien, juste dire que ca existe déja, j'aurais du pieux chercher, si un admin passe par la, il peux effacer ca
- 07 mai 2006 20:45:47 :
- modification du lien créé pour qu'il pointe vers le bon article dans la page
- 08 mai 2006 00:22:51 :
- ajout de la verification de la presence de ?blogger=....
- 08 mai 2006 01:41:59 :
- mise du rtrim au début plutot qu'un truc bourrin qui enleve le \n
- 08 mai 2006 13:55:38 :
- nettoyage des accolades ne contenant qu'une seule instruction
changement des conditions contenant eregi
rtrim et ltrim remplacés par trim
reste a nettoyer les echo "..."
- 08 mai 2006 18:27:15 :
- passage de echo "blabla $variable blabla\n";
à: echo 'blabla'.$variable.'blabla'."\n";
On m'a dis que c'etais mieux, mais je ne sais pas trop ce que ca apporte :(
- 10 mai 2006 13:07:24 :
- ajout de la gestion des date de creation des articles.
- 11 mai 2006 13:14:48 :
- Permet de lire toutes ou plusieurs pages d'un blog
Vérifie bien l'existance du blog (pas seulement avec !fopen)
- 23 mai 2006 19:24:29 :
- Ajout d'un petit copyright pas méchant au cas ou ce code servirait à des gens.
- 19 juin 2006 02:42:39 :
- découverte que les blogs skyblog ne sont pas toujours formatés pareil, et donc le script ne marche pas sur tous les blogs
- 13 juillet 2006 05:59:27 :
- Mise à jour pour que ca marche, Skyblog ayant modifié la facon de faire ses fichiers.
- 16 juillet 2006 02:45:31 :
- Petite erreur corrigée pour la lecture du blog.
- 16 juillet 2006 02:46:05 :
- Petite erreur corrigée pour la lecture du blog.
- 16 juillet 2006 02:46:18 :
- Petite erreur corrigée pour la lecture du blog.
- 16 juillet 2006 02:46:52 :
- Petite erreur corrigée pour la lecture du blog.
- 20 juillet 2006 12:53:44 :
- Petit réglage pour les liens et les titres qui ne s'affichaient pas comme il faut.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
XML RSS [ par djamine ]
Bonjour J'aimerais bien savoir comment utiliser les RSS sur mon site j'ai trouver pas mal des sites qui proposes des version XML surtout celle est new
Popups zoom type Skyblog [ par AleXsItsMe ]
Bonjour,Je voudrais savoir comment faire pour réaliser un zoom d'image en popups du même genre que dans les skyblog.MerciTilix
Le RSS [ par juki_webmaster ]
BonjourJe voit de plus en plus de sites qui traite le RSS.Je voudrais si possible avoir quelques info sur ce RSS (que'ece que sa signifit, est-ce un u
Flux RSS [ par HagRapMan ]
Salut tout le monde!Je voudrais savoir comment développer un flux RSS valide SANS SQL.Merci@+
generateur RSS [ par maurimaure ]
Cherche parser RSS 0.9 1.0 et 2.0 [ par olid ]
Jour, Je cherche un tit script (ou une classe) ou un debut de source pour parser du RSS... Je veux juste recuperer les titres et URLs, ce qui est dej
Besoin d'aide pour generer un Flux RSS [ par RuSSe_91 ]
Salut tout le monde :) Je viens demander un coup de main pour générer un fichier RSS en XML. Mon site tourne sous mambo, e
Problème avec une classe [ par massacr ]
Cela fait 3 heures que j'essaye de comprendre où est l'erreur.J'ai fait une classe : class creer_RSS { var $fichier_xml;<B
rss pb encodage avec php [ par hdh ]
Hello, Je suis en train de me mettre tout doucement au flux rss pour mon site en php : j'ai malheureusement des soucis... probablement des problè
rss : comment faire un refresh [ par hdh ]
Hello, Je viens de me faire mon flux rss (contenu dynamique) comme un grand... et malheureusement un détail m'échappe : si la lecture se fa
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|