Accueil > > > FLUX RSS DES COMMENTAIRES SUR UN SKYBLOG
FLUX RSS DES COMMENTAIRES SUR UN SKYBLOG
Information sur la source
Description
Basé sur le script de Pierre Gros (sur ce site) qui crée un flux rss a partir des articles d'un skyblog, j'ai commencé un script qui crée un script RSS des commentaires. Le script fonctionne mais il n'est pas terminé,mais il fonctionne, malheureusement, je ne peux pas le terminer par manque de temps, mais je l'améliore et je mettrai à jour chaque améliorations.
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
-
- Modifié par Dell'Aiera Pol.(d.paolino@gmail.com)
-
- Ce script permet de créer un flux RSS pour les commentaires d'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 dotimestamp($date)
- {
- $semaine[1]="Lundi";
- $semaine[2]="Mardi";
- $semaine[3]="Mercredi";
- $semaine[4]="Jeudi";
- $semaine[5]="Vendredi";
- $semaine[6]="Samedi";
- $semaine[7]="Dimanche";
-
- $tabmois[1]="Janvier";
- $tabmois[2]="Février";
- $tabmois[3]="Mars";
- $tabmois[4]="Avril";
- $tabmois[5]="Mai";
- $tabmois[6]="Juin";
- $tabmois[7]="Juillet";
- $tabmois[8]="Août";
- $tabmois[9]="Septembre";
- $tabmois[10]="Octobre";
- $tabmois[11]="Novembre";
- $tabmois[12]="Décembre";
-
- $date = explode(" ",$date);
- $jour = array_search($date[0],$semaine);
- $journum = $date[1];
- $mois = array_search($date[2],$tabmois);
-
- if ($date[3] == "à")
- {
- $an = 2006;
- $temps = explode(":",$date[4]);
- $heure = $temps[0];
- $minute = $temps[1];
- }
- else
- {
- $an = $date[3];
- $temps = explode(":",$date[5]);
- $heure = $temps[0];
- $minute = $temps[1];
- }
-
- $timestamp = mktime($heure,$minute,00,$mois,$journum,$an);
-
- $date = date('l d F Y H:i',$timestamp);
- $string = "$journum/$mois/$an $heure:$minute $timestamp $date";
- return $timestamp;
- }
-
-
- 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))
- {
- $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=\"")+6); //recupere l'ID du message.
- $id=substr($id,0,strpos($id,"\""));
- //on affiche le tout
- $ids[] = $id;
- }
- }
-
- }
-
- $page_courante++;//on passe a la page suivante
-
- }
-
- // La structure de la page est différente si il n'y a qu'un seul article!
-
- foreach ($ids as $id)
- {
-
- $page_a_voir = $id.'_comment_1.html?14';//affiche la page de base ou la suivant
-
- if ($fp = fopen('http://'.$blogger.'.skyblog.com/'.$page_a_voir,"r"))
- {
- //articles de la page en cours
- while (!feof($fp))
- {
- $page = fgets($fp, 4096);
-
- $from = nettoie_phrase($page);
- $from = explode(",",$from);
-
- $who = substr($from[0],3);
- $date = substr($from[1],11);
-
-
- if ((strpos($page,'<p class="title"') !== false))
- {
- $comm = nettoie_phrase (fgets($fp, 4096));
- echo '<item>'."\n";
- echo ' <page>'.$page_a_voir.'</page>'."\n";
- echo ' <from>'.$who.'</from>'."\n";
- echo ' <date>'.dotimestamp($date).'</date>'."\n";
- echo ' <description>'.nettoie_phrase($comm).'</description>'."\n";
- echo '</item>'."\n";
- flush();
- }
- }
- }
-
- }
-
-
-
-
-
- //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
Modifié par Dell'Aiera Pol.(d.paolino@gmail.com)
Ce script permet de créer un flux RSS pour les commentaires d'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 dotimestamp($date)
{
$semaine[1]="Lundi";
$semaine[2]="Mardi";
$semaine[3]="Mercredi";
$semaine[4]="Jeudi";
$semaine[5]="Vendredi";
$semaine[6]="Samedi";
$semaine[7]="Dimanche";
$tabmois[1]="Janvier";
$tabmois[2]="Février";
$tabmois[3]="Mars";
$tabmois[4]="Avril";
$tabmois[5]="Mai";
$tabmois[6]="Juin";
$tabmois[7]="Juillet";
$tabmois[8]="Août";
$tabmois[9]="Septembre";
$tabmois[10]="Octobre";
$tabmois[11]="Novembre";
$tabmois[12]="Décembre";
$date = explode(" ",$date);
$jour = array_search($date[0],$semaine);
$journum = $date[1];
$mois = array_search($date[2],$tabmois);
if ($date[3] == "à")
{
$an = 2006;
$temps = explode(":",$date[4]);
$heure = $temps[0];
$minute = $temps[1];
}
else
{
$an = $date[3];
$temps = explode(":",$date[5]);
$heure = $temps[0];
$minute = $temps[1];
}
$timestamp = mktime($heure,$minute,00,$mois,$journum,$an);
$date = date('l d F Y H:i',$timestamp);
$string = "$journum/$mois/$an $heure:$minute $timestamp $date";
return $timestamp;
}
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))
{
$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=\"")+6); //recupere l'ID du message.
$id=substr($id,0,strpos($id,"\""));
//on affiche le tout
$ids[] = $id;
}
}
}
$page_courante++;//on passe a la page suivante
}
// La structure de la page est différente si il n'y a qu'un seul article!
foreach ($ids as $id)
{
$page_a_voir = $id.'_comment_1.html?14';//affiche la page de base ou la suivant
if ($fp = fopen('http://'.$blogger.'.skyblog.com/'.$page_a_voir,"r"))
{
//articles de la page en cours
while (!feof($fp))
{
$page = fgets($fp, 4096);
$from = nettoie_phrase($page);
$from = explode(",",$from);
$who = substr($from[0],3);
$date = substr($from[1],11);
if ((strpos($page,'<p class="title"') !== false))
{
$comm = nettoie_phrase (fgets($fp, 4096));
echo '<item>'."\n";
echo ' <page>'.$page_a_voir.'</page>'."\n";
echo ' <from>'.$who.'</from>'."\n";
echo ' <date>'.dotimestamp($date).'</date>'."\n";
echo ' <description>'.nettoie_phrase($comm).'</description>'."\n";
echo '</item>'."\n";
flush();
}
}
}
}
//fin du flux
if ($en_tete) {
echo '</channel>'."\n";
echo '</rss>'."\n";
} else echo "Blog inexistant!";
}
} else {
echo 'Veuillez indiquer un blogger'."\n";
}
?>
Conclusion
Bugs connus: Ne gère pas les articles ou il n'y a qu'un seul commentaire, ni même ceux ou il y a plusieurs pages...
A faire: -Gerer les articles ou il n'y a qu'un seul commentaire et plusieurs pages de commentaires. -Améliorer et optimiser le code
N'hésitez pas à contribuer!
Historique
- 25 juillet 2006 13:41:06 :
- correction d'ortographe
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Flux RSS [ par HagRapMan ]
Salut tout le monde!Je voudrais savoir comment développer un flux RSS valide SANS SQL.Merci@+
6 adresse dans le meme lecteur Flux RSS [ par Nexto ]
Bonjour :) J'aimerais rassembler l'actu "A la Une" en utilisant 6 adresses de site qui utilisent le RSS j'emploie magpierss et j'a
pb avec les accents lors de la génération d'un flux RSS(fichier xml) en utilisant domxml [ par maurimaure ]
Bonjour, J'ai essayé de générer un flux RSS en utilisant domxml, Mais j'ai un gros souci, mon navigateur se bloque sur les accen
Recherche de flux xml ou/et rss de prog tv sportif [ par bobganjx ]
Pauvre de moi en stage, exploité par un employeur sans scrupule qui me paye pas (c'est beaux les études) ;<font color="#800080"
Lire un flux RSS [ par ZuGbEn ]
Voilà, je suis un gros débutant en matière de flux rss. J'ai faire un petit script qui lit un flux, vraiment simple. J'aimerais simplem
lecteur de flux rss [ par jul00 ]
salut tou le monde je suis a la recherche d'un lecteur de flux rss simple est commenté si c'était possible j'en ai trouver quelque un dans l
lire un flux rss [ par elmekki ]
BonsoirJe cherche comment lire quelques données apartir d'un fichier xmlpar ex: <a class="b" onfocus="h()" href="http://www.zdnet.fr/fee
Flux rss sécurisé [ par lefter ]
Bonjour,je souhaiterai solicité votre savoir pour vous posez une petite question : Est-il possible de forcer un flux RSS seulement en liaison par
Flux RSS [ par piep14 ]
Bonjour, je cherche a diffuser sur mon site des news provenant de flux rss, c'est a dire en xml, mais je ne trouve pas !!!Merci de votre aide
parser un flux rss contenu et affichage dans un bloc [ par micka75014 ]
Bonjour,Comment parser un flux RSS : avec sax simpleXMLJ'ai besoin de recuperer la balise <contenu> je ne sais pas si elle est toujour disponibl
|
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
|