RSS sur un site

RSS sur un site - Divers - Programmation

Marsh Posté le 17-04-2006 à 16:49:49    

Bonjour,  
j'aimerai mettre l'actualité téléphonie mobile du site bestofmicro http://www.bestofmicro.com/partena [...] nie-7.html sur mon site  mais comment faire j'ai télecharger MagpieRSS mais je ne comprend pas... :hello:

Reply

Marsh Posté le 17-04-2006 à 16:49:49   

Reply

Marsh Posté le 17-04-2006 à 23:14:06    

> MagpieRSS
- je connais pas.
 
J'ai mis les news de la BBC sur mon site de la façon suivante:
- un script tourne tous les quarts d'heures (le taux de rafraîchissement est 1 minute pour la BBC, mais c'est un peu trop), qui télécharge le flux RSS (comme une page web) et l'enregistre dans un fichier,
- sur la page côté serveur un script PHP lit le fichier, décrypte le flux RSS (qui est en XML), et en extrait les titres et les news,
- sur la page côté client, un script javascript fait défiler les news issues du traitement en PHP.

Reply

Marsh Posté le 18-04-2006 à 11:33:49    

Merci  
Je doit telecharger un logiciel lequel choisir sur http://www.bestofmicro.com/feeds/1 [...] obiles.xml ?
Ensuite une fois telechargé je fait quoi? car avec magpierss aprés l'avoir dezippé il y avait beaucoup de fichier.

Reply

Marsh Posté le 18-04-2006 à 15:34:20    

Ok, je te file le code que j'utilise. Je le metes dans le fichier rss.inc, que j'inclue quand j'en ai besoin avec include("~/phplib/rss.inc" ).
 
rss.inc:

Code :
  1. <?
  2. $depth = array();
  3. $xml_tree = array();
  4. function debutElement($parser, $name, $attrs)
  5. {
  6.   global $depth;
  7.   global $xml_tree;
  8.   $xml_tree[$parser][$depth[$parser]][]=array($name,$attrs);
  9.   $depth[$parser]++;
  10. }
  11. function finElement($parser, $name)
  12. {
  13.   global $depth;
  14.   global $xml_tree;
  15.   $xml_tree[$parser][$depth[$parser]-1][count($xml_tree[$parser][$depth[$parser]-1])-1][2]=$xml_tree[$parser][$depth[$parser]];
  16.   unset($xml_tree[$parser][$depth[$parser]]);
  17.   $depth[$parser]--;
  18. }
  19. function characterData($parser, $data)
  20. {
  21.   global $xml_tree;
  22.   global $depth;
  23.   $xml_tree[$parser][$depth[$parser]-1][count($xml_tree[$parser][$depth[$parser]-1])-1][3].=$data;
  24. }
  25. function xml2array($file)
  26. {
  27.   global $depth;
  28.   global $xml_tree;
  29.   $xml_parser = xml_parser_create();
  30.   $depth[$xml_parser]=0;
  31.   xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
  32.   xml_set_element_handler($xml_parser, "debutElement", "finElement" );
  33.   xml_set_character_data_handler($xml_parser, "characterData" );
  34.   $err=error_reporting(0);
  35.   if (!($fp = fopen($file, "r" ))) {
  36.   error_reporting($err);
  37.   $xml_tree[$xml_parser]=array();
  38.   return array();
  39.   }
  40.   error_reporting($err);
  41.   while ($data = fread($fp, 4096))
  42.   {
  43.   if (!xml_parse($xml_parser, $data, feof($fp)))
  44.   {
  45.     fclose($fp);
  46.     $xml_tree[$xml_parser]=array();
  47.     return array();
  48.   }
  49.   }
  50.   $xml_array=$xml_tree[$xml_parser][0];
  51.   unset($xml_tree[$xml_parser]);
  52.   xml_parser_free($xml_parser);
  53.   fclose($fp);
  54.   return $xml_array;
  55. }
  56. function xmlarray2rss($a)
  57. {
  58.   $r=array();
  59.   if (!$a) return $r;
  60.   if (is_string($a[0]))
  61.   {
  62.     if ($a[0]=='ITEM')
  63.     $r[]=$a[2][0][3].": ".$a[2][1][3];
  64.     if (is_array($a[2]))
  65.     {
  66.       for(reset($a[2]);list(,$v)=each($a[2]);)
  67.       {
  68.         $pr=xmlarray2rss($v);
  69.         if (count($pr))
  70.           for(reset($pr);list(,$vpr)=each($pr);)
  71.             $r[]=$vpr;
  72.       }
  73.     }
  74.   }
  75.   else
  76.     for(reset($a);list(,$v)=each($a);)
  77.     {
  78.       $pr=xmlarray2rss($v);
  79.       if (count($pr))
  80.         for(reset($pr);list(,$vpr)=each($pr);)
  81.           $r[]=$vpr;
  82.     }
  83.   return $r;
  84. }
  85. function show_rss($title,$file,$width, $delay)
  86. {
  87. $xml_array=xml2array($file);
  88. $rss=xmlarray2rss($xml_array);
  89. $rsstxt=ereg_replace("[ \t\n]+"," ",implode(" -=-=-=- ",$rss));
  90. $jsrsstxt=ereg_replace("(['\"\\])","\\\\1",$rsstxt);
  91. ?>
  92. <table cellpadding=0 cellspacing=0 border=0><tr><td>
  93. <? echo htmlentities($title) ?>
  94. &nbsp;</td><td><span id='st' style="white-space:pre;font-family:monospace;"></span>
  95. </td><td>
  96. <SCRIPT language="JavaScript" type="text/javascript">
  97. <!--
  98. var mtt_db = (document.compatMode && document.compatMode != 'BackCompat')? document.documentElement : document.body? document.body : null,
  99. mtt_n = navigator.userAgent.toLowerCase(),
  100. mtt_op = !!(window.opera && document.getElementById),
  101. mtt_ie = mtt_n.indexOf('msie') != -1 && document.all && mtt_db && !mtt_op,
  102. mtt_n4 = (document.layers && typeof document.classes != "undefined" );
  103. var tiptext='<? echo $jsrsstxt ?>';
  104. var tiptextx=Math.random()*tiptext.length;
  105. var tiptextl=<? echo $width ?>;
  106. var tiptextdir=1;
  107. function GetById(t_id)
  108. {
  109. return (
  110. mtt_n4? (document.layers[t_id] || null)
  111. : mtt_ie? (document.all[t_id] || null)
  112. : (document.getElementById(t_id) || null)
  113. );
  114. }
  115. function movetext()
  116. {
  117. var st=GetById('st');
  118. if (!st) return;
  119. var str='';
  120. var i;
  121. var l=0;
  122. if (tiptextx<tiptextl)
  123. {
  124. for(i=0;i<tiptextl-tiptextx;i++,l++) str+='&nbsp;';
  125. var s=tiptext.substr(0, tiptextx);
  126. str+=s;
  127. l+=s.length;
  128. }
  129. else
  130. {
  131. str=tiptext.substr(tiptextx-tiptextl,tiptextl);
  132. l+=str.length;
  133. }
  134. for(i=l;i<tiptextl;i++) str+='&nbsp;';
  135. if (tiptextdir)
  136. {
  137. st.innerHTML='<pre style="margin:0px">'+str+'<'+'/pre>';
  138. tiptextx=(tiptextx+tiptextdir)%(tiptext.length+tiptextl);
  139. if (tiptextx<0) tiptextx+=tiptext.length+tiptextl;
  140. tiptextx=(tiptextx)%(tiptext.length+tiptextl);
  141. }
  142. setTimeout('movetext();',<? echo $delay; ?> );
  143. }
  144. document.write('&nbsp;<INPUT style="font-size:xx-small;" type=button value="&lt;" onclick="javascript:tiptextdir=tiptextdir&gt;0?0:tiptextdir-1;"><INPUT style="font-size:xx-small;" type=button value="&gt;" onclick="javascript:tiptextdir=tiptextdir&lt;0?0:tiptextdir+1;">');
  145. movetext();
  146. // -->
  147. </SCRIPT>
  148. </td></tr></table>
  149. <?
  150. }
  151. function show_rss2($title,$file,$width, $delay)
  152. {
  153. global $skins, $skin, $graphics, $print;
  154. $xml_array=xml2array($file);
  155. $rss=xmlarray2rss($xml_array);
  156. foreach($rss as $k => $v)
  157.   $rss[$k]="<span style=\"white-space:nowrap\"> -===- ".ereg_replace("(['\"\\])","\\\\1",$v)."&nbsp;&nbsp;&nbsp;&nbsp;</span>";
  158. $rsstxt=implode("','",$rss);
  159. ?>
  160. <table style="align:right;" cellpadding=0 cellspacing=0 border=0><tr><td style="white-space:nowrap">
  161. <? echo htmlentities($title) ?>
  162. &nbsp;</td><td width="100%">
  163. <script language="JavaScript" type="text/javascript">
  164. <!--
  165. var messages=new Array('<? echo $rsstxt ?>');
  166. var newsscrollerspeed0=6;
  167. var newsscrollerbgspeed0=2;
  168. var newsscrollerinterval=<? echo $delay ?>;
  169. var newsscrollerspeed=newsscrollerspeed0;
  170. var newsscrollerbgspeed=newsscrollerbgspeed0;
  171. -->
  172. </script>
  173. <DIV style="<? echo ($graphics!='n' && $print!='y'?"background:url(/~nico/pres/".$skins[$skin]['img_bg']." );":"" ) ?>border:inset #efefef 3px;width:<? echo $width ?>%;overflow:hidden;white-space:pre;" onmouseover="javascript:newsscrollerspeed=0;newsscrollerbgspeed=0;" onmouseout="javascript:newsscrollerspeed=newsscrollerspeed0;newsscrollerbgspeed=newsscrollerbgspeed0;" id="scroller">
  174. </div>
  175. <script language="JavaScript" type="text/javascript">
  176. <!--
  177. var scroller=document.getElementById('scroller');
  178. var newsscrolltext='';
  179. for(i=0;i<messages.length;i++)
  180. {
  181.   if(i==0) newsscrolltext+='<table id="scrollercontent" style="cursor:default;position:relative;vertical-align:middle;white-space:pre;" border=0 cellpadding=0 cellspacing=0><tr><td id="scrollercell'+i+'" style="white-space:pre;">';
  182.   else newsscrolltext+='</td><td id="scrollercell'+i+'">';
  183.   newsscrolltext+=messages[i];
  184. }
  185. newsscrolltext+='</td></tr></table>';
  186. scroller.innerHTML=newsscrolltext;
  187. function newsscrollbounds()
  188. {
  189.   var firstcell;
  190.   while(newsscrollerx>(firstcell=document.getElementById('scrollercell0')).offsetWidth)
  191.   {
  192.     newsscrollerx-=firstcell.offsetWidth;
  193.     var firsthtml=firstcell.innerHTML;
  194.     for(i=1;i<messages.length;i++)
  195.     {
  196.       document.getElementById('scrollercell'+(i-1)).innerHTML=
  197.         document.getElementById('scrollercell'+i).innerHTML;
  198.     }
  199.     document.getElementById('scrollercell'+(messages.length-1)).innerHTML=
  200.       firsthtml;
  201.   }
  202. }
  203. var newsscrollerx=parseInt((new Date()).getTime()/newsscrollerinterval*newsscrollerspeed)%document.getElementById('scrollercontent').offsetWidth;
  204. var newsscrollerbgx=newsscrollerx;
  205. function newsscroll()
  206. {
  207.   newsscrollerx+=newsscrollerspeed;
  208.   newsscrollbounds();
  209.   newsscrollerbgx=(newsscrollerbgx+newsscrollerbgspeed);
  210.   var scroller=document.getElementById('scroller');
  211.   newsscrollerbgx%=scroller.offsetWidth;
  212.   scroller.style.backgroundPosition=(-newsscrollerbgx)+'px 0px';
  213.   var scrollercontent=document.getElementById('scrollercontent');
  214.   scrollercontent.style.left=(-newsscrollerx)+'px';
  215.   scrollercontent.visible=true;
  216. }
  217. setInterval('newsscroll()',newsscrollerinterval);
  218. -->
  219. </script>
  220. </td></tr></table>
  221. <?
  222. }
  223. ?>


 
Il y a deux affichages différents, tous deux en javascript. L'un affiche avec un défilement de caractères, l'autre est plus joli.  
Après avoir inclu rss.inc, tu utilise donc l'une des deux fonctions:
show_rss($title,$file,$width, $delay)
show_rss2($title,$file,$width, $delay)
 

  • $title: titre à afficher , par exemple: 'news portables:'
  • $file: flux rss. normalement tu indique ici un nom de fichier, mais si tu n'a pas trop de traffic sur ton site, tu peut indiquer l'adresse web (http://...bestofmicro.....).
  • $width: taille en caractères pour show_rss (par ex. 50), taille CSS pour show_rss2() (en pourcentage '80%', en pixels '400px', en caractères '30ex')
  • $delay: intervalle de défilement, en millisecondes, essaye des valeurs proches de 100.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed