Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#26 04-02-2009 22:31:08

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

Hors ligne

#27 05-02-2009 19:38:11

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

mais par contre je n'ai pas les connaissance pour savoir l'utiliser tongue je doit le mettre ou ?
dans mon script ou sur un fichier du forum ?

Hors ligne

#28 05-02-2009 20:23:22

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

merci !!!!!!

mais sa marche pas .. les balises html sont toujours visibles.

j'ai installez le mod allowhtml (ca permet d'afficher du html dans les post )
comment je peut faire pour que dans le script j'ai la balise [html] qui entoure tout l'article importé du flux rss ?

edit : faudrait aussi décoder l'utf8 des articles rss en ISO-8859-1 pour le forum ..


rhaaa je me sens ignorant T_T

Dernière modification par renkei (05-02-2009 21:09:54)

Hors ligne

#29 05-02-2009 21:14:56

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

ouep voila

{
    $feed = "http://feeds2.feedburner.com/Renkei-IncreaseYourPower"; //adresse du fil rss
    $rss = @simplexml_load_file($feed); 
    if ($rss !== false) 
    {
      $username = $pun_user['username'];
      $fid = 13; // id du forum où doit s'insérer le topic
      foreach ($rss->channel->item as $item) 
      { 
        $now = time();
        $subject = $item->title;
        $message = parse_message(xhtml_to_bbcode($item->description), 0);
        // Create the topic
        $db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', '.$now.', \''.$db->escape($username).'\', '.$fid.')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
        $tid = $db->insert_id();
        // Create the post ("topic post")
        $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
      }
    }
 }

et je test avec les balise html .. mmm ca ne marche pas non plus tongue

faudrait aussi décoder l'utf8 des articles rss en ISO-8859-1 pour le forum ..

désolé je ne m'y connais pas beaucoup .. c'est vraiment sympa de m'aider happy

Dernière modification par renkei (05-02-2009 21:15:57)

Hors ligne

#30 05-02-2009 21:27:35

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

ok donc rien ne marche même le :

    utf8_decode($rss);

(merci d'ailleurs tongue)

Dernière modification par renkei (05-02-2009 21:50:28)

Hors ligne

#31 05-02-2009 21:59:34

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

ca vient peut etre du rss .. voila le xml

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    >

<channel>
    <title>titre</title>
    <atom:link href="url du rss" rel="self" type="application/rss+xml" />
    <link>lien du blog</link>
    <description>blab  bla</description>
    <pubDate>date..</pubDate>

    <generator>http://wordpress.org/?v=2.7</generator>
    <language>en</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
            <item>

        <title>blabla</title>

        <link>url</link>
        <comments>commentaire</comments>
        <pubDate>date</pubDate>
        <dc:creator>auteur</dc:creator>
        
        <description>une petite description</description>
            <content:encoded> le contenu </content:encoded>

        </item>

Dernière modification par renkei (05-02-2009 22:00:05)

Hors ligne

#32 05-02-2009 23:27:03

Lyconide
Membre

Re : Recuperer des flux RSS distant dans un forum

Pour les balises "html". Le but c'est de mettre le message dans la base converti en bbcode je crois.

Donc quand tu crées le message, "parse_message" est de trop (vu que cette fonction permet de passer le bbcode en html... (ouais j'me souvenais plus tongue) et pour le coup, la tu fais html->bbcode->html)

ce qui donne :
$message = xhtml_to_bbcode($item->description);

Logiquement, tu devrais un message correct au niveau balise, enfin je crois tongue

Hors ligne

#33 06-02-2009 00:47:29

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

ouaaa merci énormément sa marche parfait !

et aussi autre problème je voudrais récupérer la balise "content" du flux rss mais le problème c'est que elle s'appelle <content:encoded> du coup quand je fait ça $message = xhtml_to_bbcode($item->content:encoded); 
ba ca peut pas marcher à cause du ":" ...
car dans <description> il n'y a n'y liens ni images ..

et sinon j'ai resolu le problème de codage du texte sa s'affiche parfait avec les accents et tout

Hors ligne

#34 06-02-2009 08:44:36

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

et op la j'ai réussi ! avec ca :

$data = file_get_contents("http://feeds2.feedburner.com/Renkei-IncreaseYourPower?format=xml");
    $data = str_replace("content:encoded>","content>",$data);
    $rss = @simplexml_load_string($data);

bon ba il reste juste le problème de vérifier si le topic na pas déjà été crée ... parce que la a chaque fois ca re-crée tous les articles sur le forum

Hors ligne

#35 06-02-2009 18:44:17

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

j'ai essayé ça siffle:

mysql_connect(mot de passe et toussa);
        mysql_select_db(le nom dla base);
        $titre_deja = mysql_query("SELECT subject FROM  for_topics ");
        
        if ($subject != mysql_fetch_array($titre_deja) )

Mais bon bien sur sa marche pas ... mdr
ou sinon comment je peux faire pour juste prendre le dernier article ?
comme ça je lance une première fois le script et âpres je le relance des que j'écris des nouveaux articles


dzl pour le mutli post... :ange:

Dernière modification par renkei (06-02-2009 18:56:11)

Hors ligne

#36 06-02-2009 21:42:57

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

Cool merci ! ou est ce que je peut apprendre des trucs sur le xml ?


et je trouve pas comment filtrer les messages qui on déjà été crée ...

bonne soirée !

Hors ligne

#37 06-02-2009 23:28:29

Lyconide
Membre

Re : Recuperer des flux RSS distant dans un forum

Si tu n'es pas plus exigeant sur l'unicité d'un post que le nom de son sujet, ce bout de code devrait aller (donc remplacer les 7 lignes à partir de $subject) :

        $subject = $item->title;
        $result = $db->query('SELECT id FROM '.$db->prefix.'topics WHERE subject LIKE '.$subject) or error('Unable to fetch topics subject', __FILE__, __LINE__, $db->error());;
        $num_subject = $db->num_rows($result);

        if ($num_subject == 0) {
            $message = parse_message(xhtml_to_bbcode($item->description), 0);
            
            // Create the topic
            $db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', '.$now.', \''.$db->escape($username).'\', '.$fid.')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
            $tid = $db->insert_id();
            
            // Create the post ("topic post")
            $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
        }

Si je n'ai pas fait d'erreur, ça devrait le faire ^^

Hors ligne

#38 07-02-2009 00:22:35

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

arf erreur :

Error: Unable to fetch topics subject. ..

et un warning au dessus : Warning: ob_start() [ref.outcontrol]: output handler 'ob_gzhandler' cannot be used twice in /homepages/2/d196531865/htdocs/forum/include/functions.php on line 971

Hors ligne

#39 07-02-2009 01:00:34

Lyconide
Membre

Re : Recuperer des flux RSS distant dans un forum

Ouais si j'oublie de mettre $subject entre guillemet, ça va pas le faire :-/

$result = $db->query('SELECT id FROM '.$db->prefix.'topics WHERE subject LIKE "'.$subject.'"') or error('Unable to fetch topics subject', __FILE__, __LINE__, $db->error());

Dernière modification par Lyconide (07-02-2009 01:00:53)

Hors ligne

#40 07-02-2009 02:11:28

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

la ça fait un truc bizarre :
je lance une première fois le script ça crée les topic ok, op justes âpres je le relance pour tester et la il me recopie pas tous les topic mais juste 3 .. Et si je relance encore une fois le script  il me re-recopie les 3 même articles, mais pas les autres ...

mmm c'est peut être pas clair.. en gros ya 10 articles dans le rss, au premier lancement les 10 sont recopiés et quand je relance le script il me recopie 3articles sur les 10

Dernière modification par renkei (07-02-2009 02:11:59)

Hors ligne

#41 07-02-2009 10:02:30

Lyconide
Membre

Re : Recuperer des flux RSS distant dans un forum

$result = $db->query('SELECT id FROM '.$db->prefix.'topics WHERE subject LIKE "'.$db->escape($subject).'"') or error('Unable to fetch topics subject', __FILE__, __LINE__, $db->error());

Et comme ça ? siffle (*avait pas pensé au db->escape* enfin j'espère que c'est ca tongue)

Dernière modification par Lyconide (07-02-2009 10:03:37)

Hors ligne

#42 07-02-2009 11:35:17

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

la ca marche carrément pas tongue ca recopie tous à chaque fois

Hors ligne

#43 07-02-2009 12:08:46

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

non ca ne marche ca doit être un truc que j'ai mal fait tongue

if (!$pun_user['is_guest'])
{
    $data = file_get_contents("http://feeds2.feedburner.com/Renkei-IncreaseYourPower?format=xml");
    $data = str_replace("content:encoded>","content>",$data);
    $rss = @simplexml_load_string($data); 
    if ($rss !== false) 
    {
      $username = $pun_user['username'];
      $fid = 15; // id du forum ou doit s'inserer le topic
      foreach ($rss->channel->item as $item) 

      { 
        $now = time();
        $subject = $item->title;
        $result = $db->query('SELECT id FROM '.$db->prefix.'topics WHERE subject LIKE "'.$db->escape($subject).'"') or error('Unable to fetch topics subject', __FILE__, __LINE__, $db->error());
        $num_subject = $result ? $db->num_rows($result) : 0;        
            if ($num_subject == 0) {
            $message = xhtml_to_bbcode($item->content);
            $message = utf8_decode($message);
            $subject = utf8_decode($subject);
       
            // Create the topic
            $db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', '.$now.', \''.$db->escape($username).'\', '.$fid.')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
            $tid = $db->insert_id();
            
            // Create the post ("topic post")
            $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
        }
      }
    }
 }

Hors ligne

Pied de page des forums